diff --git a/lib/colors.dart b/lib/colors.dart index e120d7c7b..8ec0c9200 100644 --- a/lib/colors.dart +++ b/lib/colors.dart @@ -8,18 +8,18 @@ import 'data/models/static/color_theme_model.dart'; class InvoiceStatusColors { InvoiceStatusColors(this._colorTheme); - final ColorTheme _colorTheme; + final ColorTheme? _colorTheme; - Map get colors { + Map get colors { return { - kInvoiceStatusDraft: _colorTheme.colorLightGray, - kInvoiceStatusSent: _colorTheme.colorInfo, - kInvoiceStatusPartial: _colorTheme.colorPrimary, - kInvoiceStatusPaid: _colorTheme.colorSuccess, - kInvoiceStatusPastDue: _colorTheme.colorDanger, - kInvoiceStatusCancelled: _colorTheme.colorDarkGray, - kInvoiceStatusReversed: _colorTheme.colorDarkGray, - kInvoiceStatusViewed: _colorTheme.colorWarning, + kInvoiceStatusDraft: _colorTheme!.colorLightGray, + kInvoiceStatusSent: _colorTheme!.colorInfo, + kInvoiceStatusPartial: _colorTheme!.colorPrimary, + kInvoiceStatusPaid: _colorTheme!.colorSuccess, + kInvoiceStatusPastDue: _colorTheme!.colorDanger, + kInvoiceStatusCancelled: _colorTheme!.colorDarkGray, + kInvoiceStatusReversed: _colorTheme!.colorDarkGray, + kInvoiceStatusViewed: _colorTheme!.colorWarning, }; } } @@ -27,15 +27,15 @@ class InvoiceStatusColors { class RecurringInvoiceStatusColors { RecurringInvoiceStatusColors(this._colorTheme); - final ColorTheme _colorTheme; + final ColorTheme? _colorTheme; - Map get colors { + Map get colors { return { - kRecurringInvoiceStatusDraft: _colorTheme.colorLightGray, - kRecurringInvoiceStatusActive: _colorTheme.colorSuccess, - kRecurringInvoiceStatusPaused: _colorTheme.colorDarkGray, - kRecurringInvoiceStatusCompleted: _colorTheme.colorInfo, - kRecurringInvoiceStatusPending: _colorTheme.colorPrimary, + kRecurringInvoiceStatusDraft: _colorTheme!.colorLightGray, + kRecurringInvoiceStatusActive: _colorTheme!.colorSuccess, + kRecurringInvoiceStatusPaused: _colorTheme!.colorDarkGray, + kRecurringInvoiceStatusCompleted: _colorTheme!.colorInfo, + kRecurringInvoiceStatusPending: _colorTheme!.colorPrimary, }; } } @@ -43,15 +43,15 @@ class RecurringInvoiceStatusColors { class CreditStatusColors { CreditStatusColors(this._colorTheme); - final ColorTheme _colorTheme; + final ColorTheme? _colorTheme; - Map get colors { + Map get colors { return { - kCreditStatusDraft: _colorTheme.colorLightGray, - kCreditStatusSent: _colorTheme.colorInfo, - kCreditStatusPartial: _colorTheme.colorPrimary, - kCreditStatusApplied: _colorTheme.colorSuccess, - kCreditStatusViewed: _colorTheme.colorWarning, + kCreditStatusDraft: _colorTheme!.colorLightGray, + kCreditStatusSent: _colorTheme!.colorInfo, + kCreditStatusPartial: _colorTheme!.colorPrimary, + kCreditStatusApplied: _colorTheme!.colorSuccess, + kCreditStatusViewed: _colorTheme!.colorWarning, }; } } @@ -59,16 +59,16 @@ class CreditStatusColors { class PurchaseOrderStatusColors { PurchaseOrderStatusColors(this._colorTheme); - final ColorTheme _colorTheme; + final ColorTheme? _colorTheme; - Map get colors { + Map get colors { return { - kPurchaseOrderStatusDraft: _colorTheme.colorLightGray, - kPurchaseOrderStatusSent: _colorTheme.colorInfo, - kPurchaseOrderStatusAccepted: _colorTheme.colorPrimary, - kPurchaseOrderStatusReceived: _colorTheme.colorSuccess, - kPurchaseOrderStatusCancelled: _colorTheme.colorDanger, - kPurchaseOrderStatusViewed: _colorTheme.colorWarning, + kPurchaseOrderStatusDraft: _colorTheme!.colorLightGray, + kPurchaseOrderStatusSent: _colorTheme!.colorInfo, + kPurchaseOrderStatusAccepted: _colorTheme!.colorPrimary, + kPurchaseOrderStatusReceived: _colorTheme!.colorSuccess, + kPurchaseOrderStatusCancelled: _colorTheme!.colorDanger, + kPurchaseOrderStatusViewed: _colorTheme!.colorWarning, }; } } @@ -76,13 +76,13 @@ class PurchaseOrderStatusColors { class TransactionStatusColors { TransactionStatusColors(this._colorTheme); - final ColorTheme _colorTheme; + final ColorTheme? _colorTheme; - Map get colors { + Map get colors { return { - kTransactionStatusUnmatched: _colorTheme.colorInfo, - kTransactionStatusMatched: _colorTheme.colorPrimary, - kTransactionStatusConverted: _colorTheme.colorSuccess, + kTransactionStatusUnmatched: _colorTheme!.colorInfo, + kTransactionStatusMatched: _colorTheme!.colorPrimary, + kTransactionStatusConverted: _colorTheme!.colorSuccess, }; } } @@ -90,16 +90,16 @@ class TransactionStatusColors { class QuoteStatusColors { QuoteStatusColors(this._colorTheme); - final ColorTheme _colorTheme; + final ColorTheme? _colorTheme; - Map get colors { + Map get colors { return { - kQuoteStatusDraft: _colorTheme.colorLightGray, - kQuoteStatusSent: _colorTheme.colorInfo, - kQuoteStatusApproved: _colorTheme.colorPrimary, - kQuoteStatusConverted: _colorTheme.colorSuccess, - kQuoteStatusExpired: _colorTheme.colorDanger, - kQuoteStatusViewed: _colorTheme.colorWarning, + kQuoteStatusDraft: _colorTheme!.colorLightGray, + kQuoteStatusSent: _colorTheme!.colorInfo, + kQuoteStatusApproved: _colorTheme!.colorPrimary, + kQuoteStatusConverted: _colorTheme!.colorSuccess, + kQuoteStatusExpired: _colorTheme!.colorDanger, + kQuoteStatusViewed: _colorTheme!.colorWarning, }; } } @@ -107,18 +107,18 @@ class QuoteStatusColors { class PaymentStatusColors { PaymentStatusColors(this._colorTheme); - final ColorTheme _colorTheme; + final ColorTheme? _colorTheme; - Map get colors { + Map get colors { return { - kPaymentStatusPending: _colorTheme.colorLightGray, - kPaymentStatusCancelled: _colorTheme.colorDarkGray, - kPaymentStatusFailed: _colorTheme.colorDanger, - kPaymentStatusCompleted: _colorTheme.colorSuccess, - kPaymentStatusPartiallyRefunded: _colorTheme.colorPrimary, - kPaymentStatusRefunded: _colorTheme.colorDarkGray, - kPaymentStatusUnapplied: _colorTheme.colorInfo, - kPaymentStatusPartiallyUnapplied: _colorTheme.colorInfo, + kPaymentStatusPending: _colorTheme!.colorLightGray, + kPaymentStatusCancelled: _colorTheme!.colorDarkGray, + kPaymentStatusFailed: _colorTheme!.colorDanger, + kPaymentStatusCompleted: _colorTheme!.colorSuccess, + kPaymentStatusPartiallyRefunded: _colorTheme!.colorPrimary, + kPaymentStatusRefunded: _colorTheme!.colorDarkGray, + kPaymentStatusUnapplied: _colorTheme!.colorInfo, + kPaymentStatusPartiallyUnapplied: _colorTheme!.colorInfo, }; } } @@ -126,14 +126,14 @@ class PaymentStatusColors { class ExpenseStatusColors { ExpenseStatusColors(this._colorTheme); - final ColorTheme _colorTheme; + final ColorTheme? _colorTheme; - Map get colors { + Map get colors { return { - kExpenseStatusLogged: _colorTheme.colorLightGray, - kExpenseStatusPending: _colorTheme.colorPrimary, - kExpenseStatusInvoiced: _colorTheme.colorSuccess, - kExpenseStatusPaid: _colorTheme.colorInfo, + kExpenseStatusLogged: _colorTheme!.colorLightGray, + kExpenseStatusPending: _colorTheme!.colorPrimary, + kExpenseStatusInvoiced: _colorTheme!.colorSuccess, + kExpenseStatusPaid: _colorTheme!.colorInfo, }; } } @@ -141,13 +141,13 @@ class ExpenseStatusColors { class TaskStatusColors { TaskStatusColors(this._colorTheme); - final ColorTheme _colorTheme; + final ColorTheme? _colorTheme; - Map get colors { + Map get colors { return { - kTaskStatusLogged: _colorTheme.colorLightGray, - kTaskStatusRunning: _colorTheme.colorPrimary, - kTaskStatusInvoiced: _colorTheme.colorSuccess, + kTaskStatusLogged: _colorTheme!.colorLightGray, + kTaskStatusRunning: _colorTheme!.colorPrimary, + kTaskStatusInvoiced: _colorTheme!.colorSuccess, }; } } diff --git a/lib/data/file_storage.dart b/lib/data/file_storage.dart index f488de8c8..95bf0de85 100644 --- a/lib/data/file_storage.dart +++ b/lib/data/file_storage.dart @@ -67,7 +67,7 @@ class FileStorage { */ final prefs = await SharedPreferences.getInstance(); - String value = prefs.getString(tag); + String? value = prefs.getString(tag); if (value != null) { return value; @@ -88,7 +88,7 @@ class FileStorage { } } - Future save(String data) async { + Future save(String data) async { if (kIsWeb) { /* final db = await _getIndexedDb(); @@ -104,7 +104,7 @@ class FileStorage { } catch (e) { if ('$e'.contains('QuotaExceededError')) { await prefs.remove(tag); - final gzipBytes = GZipEncoder().encode(utf8.encode(data)); + final gzipBytes = GZipEncoder().encode(utf8.encode(data))!; final zipped = base64Encode(gzipBytes); try { await prefs.setString(tag + GZIP_TAG, zipped); @@ -124,7 +124,7 @@ class FileStorage { } } - Future delete() async { + Future delete() async { if (kIsWeb) { /* final db = await _getIndexedDb(); diff --git a/lib/data/models/account_model.dart b/lib/data/models/account_model.dart index 0c1b28a64..64c527ea2 100644 --- a/lib/data/models/account_model.dart +++ b/lib/data/models/account_model.dart @@ -11,7 +11,7 @@ part 'account_model.g.dart'; abstract class AccountEntity implements Built { - factory AccountEntity(bool reportErrors, {String id, AppState state}) { + factory AccountEntity(bool reportErrors, {String? id, AppState? state}) { return _$AccountEntity._( id: '', key: '', diff --git a/lib/data/models/account_model.g.dart b/lib/data/models/account_model.g.dart index 17b7e3a0f..b6ebaca69 100644 --- a/lib/data/models/account_model.g.dart +++ b/lib/data/models/account_model.g.dart @@ -16,9 +16,9 @@ class _$AccountEntitySerializer implements StructuredSerializer { final String wireName = 'AccountEntity'; @override - Iterable serialize(Serializers serializers, AccountEntity object, + Iterable serialize(Serializers serializers, AccountEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'id', serializers.serialize(object.id, specifiedType: const FullType(String)), 'key', @@ -95,111 +95,111 @@ class _$AccountEntitySerializer implements StructuredSerializer { @override AccountEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new AccountEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'key': result.key = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'trial_started': result.trialStarted = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'default_url': result.defaultUrl = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'report_errors': result.reportErrors = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'plan': result.plan = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'plan_expires': result.planExpires = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'latest_version': result.latestVersion = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'current_version': result.currentVersion = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'debug_enabled': result.debugEnabled = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'is_docker': result.isDocker = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'is_migrated': result.isMigrated = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'is_hosted': result.isHosted = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'is_scheduler_running': result.isSchedulerRunning = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'disable_auto_update': result.disableAutoUpdate = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'default_company_id': result.defaultCompanyId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'hosted_client_count': result.hostedClientCount = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'hosted_company_count': result.hostedCompanyCount = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'set_react_as_default_ap': result.setReactAsDefaultAP = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'account_sms_verified': result.accountSmsVerified = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'trial_days_left': result.trialDaysLeft = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'has_iap_plan': result.hasIapPlan = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'payment_id': result.paymentId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'tax_api_enabled': result.taxApiEnabled = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; } } @@ -258,34 +258,34 @@ class _$AccountEntity extends AccountEntity { @override final bool taxApiEnabled; - factory _$AccountEntity([void Function(AccountEntityBuilder) updates]) => + factory _$AccountEntity([void Function(AccountEntityBuilder)? updates]) => (new AccountEntityBuilder()..update(updates))._build(); _$AccountEntity._( - {this.id, - this.key, - this.trialStarted, - this.defaultUrl, - this.reportErrors, - this.plan, - this.planExpires, - this.latestVersion, - this.currentVersion, - this.debugEnabled, - this.isDocker, - this.isMigrated, - this.isHosted, - this.isSchedulerRunning, - this.disableAutoUpdate, - this.defaultCompanyId, - this.hostedClientCount, - this.hostedCompanyCount, - this.setReactAsDefaultAP, - this.accountSmsVerified, - this.trialDaysLeft, - this.hasIapPlan, - this.paymentId, - this.taxApiEnabled}) + {required this.id, + required this.key, + required this.trialStarted, + required this.defaultUrl, + required this.reportErrors, + required this.plan, + required this.planExpires, + required this.latestVersion, + required this.currentVersion, + required this.debugEnabled, + required this.isDocker, + required this.isMigrated, + required this.isHosted, + required this.isSchedulerRunning, + required this.disableAutoUpdate, + required this.defaultCompanyId, + required this.hostedClientCount, + required this.hostedCompanyCount, + required this.setReactAsDefaultAP, + required this.accountSmsVerified, + required this.trialDaysLeft, + required this.hasIapPlan, + required this.paymentId, + required this.taxApiEnabled}) : super._() { BuiltValueNullFieldError.checkNotNull(id, r'AccountEntity', 'id'); BuiltValueNullFieldError.checkNotNull(key, r'AccountEntity', 'key'); @@ -371,10 +371,10 @@ class _$AccountEntity extends AccountEntity { taxApiEnabled == other.taxApiEnabled; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, id.hashCode); _$hash = $jc(_$hash, key.hashCode); @@ -437,112 +437,113 @@ class _$AccountEntity extends AccountEntity { class AccountEntityBuilder implements Builder { - _$AccountEntity _$v; + _$AccountEntity? _$v; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; - String _key; - String get key => _$this._key; - set key(String key) => _$this._key = key; + String? _key; + String? get key => _$this._key; + set key(String? key) => _$this._key = key; - String _trialStarted; - String get trialStarted => _$this._trialStarted; - set trialStarted(String trialStarted) => _$this._trialStarted = trialStarted; + String? _trialStarted; + String? get trialStarted => _$this._trialStarted; + set trialStarted(String? trialStarted) => _$this._trialStarted = trialStarted; - String _defaultUrl; - String get defaultUrl => _$this._defaultUrl; - set defaultUrl(String defaultUrl) => _$this._defaultUrl = defaultUrl; + String? _defaultUrl; + String? get defaultUrl => _$this._defaultUrl; + set defaultUrl(String? defaultUrl) => _$this._defaultUrl = defaultUrl; - bool _reportErrors; - bool get reportErrors => _$this._reportErrors; - set reportErrors(bool reportErrors) => _$this._reportErrors = reportErrors; + bool? _reportErrors; + bool? get reportErrors => _$this._reportErrors; + set reportErrors(bool? reportErrors) => _$this._reportErrors = reportErrors; - String _plan; - String get plan => _$this._plan; - set plan(String plan) => _$this._plan = plan; + String? _plan; + String? get plan => _$this._plan; + set plan(String? plan) => _$this._plan = plan; - String _planExpires; - String get planExpires => _$this._planExpires; - set planExpires(String planExpires) => _$this._planExpires = planExpires; + String? _planExpires; + String? get planExpires => _$this._planExpires; + set planExpires(String? planExpires) => _$this._planExpires = planExpires; - String _latestVersion; - String get latestVersion => _$this._latestVersion; - set latestVersion(String latestVersion) => + String? _latestVersion; + String? get latestVersion => _$this._latestVersion; + set latestVersion(String? latestVersion) => _$this._latestVersion = latestVersion; - String _currentVersion; - String get currentVersion => _$this._currentVersion; - set currentVersion(String currentVersion) => + String? _currentVersion; + String? get currentVersion => _$this._currentVersion; + set currentVersion(String? currentVersion) => _$this._currentVersion = currentVersion; - bool _debugEnabled; - bool get debugEnabled => _$this._debugEnabled; - set debugEnabled(bool debugEnabled) => _$this._debugEnabled = debugEnabled; + bool? _debugEnabled; + bool? get debugEnabled => _$this._debugEnabled; + set debugEnabled(bool? debugEnabled) => _$this._debugEnabled = debugEnabled; - bool _isDocker; - bool get isDocker => _$this._isDocker; - set isDocker(bool isDocker) => _$this._isDocker = isDocker; + bool? _isDocker; + bool? get isDocker => _$this._isDocker; + set isDocker(bool? isDocker) => _$this._isDocker = isDocker; - bool _isMigrated; - bool get isMigrated => _$this._isMigrated; - set isMigrated(bool isMigrated) => _$this._isMigrated = isMigrated; + bool? _isMigrated; + bool? get isMigrated => _$this._isMigrated; + set isMigrated(bool? isMigrated) => _$this._isMigrated = isMigrated; - bool _isHosted; - bool get isHosted => _$this._isHosted; - set isHosted(bool isHosted) => _$this._isHosted = isHosted; + bool? _isHosted; + bool? get isHosted => _$this._isHosted; + set isHosted(bool? isHosted) => _$this._isHosted = isHosted; - bool _isSchedulerRunning; - bool get isSchedulerRunning => _$this._isSchedulerRunning; - set isSchedulerRunning(bool isSchedulerRunning) => + bool? _isSchedulerRunning; + bool? get isSchedulerRunning => _$this._isSchedulerRunning; + set isSchedulerRunning(bool? isSchedulerRunning) => _$this._isSchedulerRunning = isSchedulerRunning; - bool _disableAutoUpdate; - bool get disableAutoUpdate => _$this._disableAutoUpdate; - set disableAutoUpdate(bool disableAutoUpdate) => + bool? _disableAutoUpdate; + bool? get disableAutoUpdate => _$this._disableAutoUpdate; + set disableAutoUpdate(bool? disableAutoUpdate) => _$this._disableAutoUpdate = disableAutoUpdate; - String _defaultCompanyId; - String get defaultCompanyId => _$this._defaultCompanyId; - set defaultCompanyId(String defaultCompanyId) => + String? _defaultCompanyId; + String? get defaultCompanyId => _$this._defaultCompanyId; + set defaultCompanyId(String? defaultCompanyId) => _$this._defaultCompanyId = defaultCompanyId; - int _hostedClientCount; - int get hostedClientCount => _$this._hostedClientCount; - set hostedClientCount(int hostedClientCount) => + int? _hostedClientCount; + int? get hostedClientCount => _$this._hostedClientCount; + set hostedClientCount(int? hostedClientCount) => _$this._hostedClientCount = hostedClientCount; - int _hostedCompanyCount; - int get hostedCompanyCount => _$this._hostedCompanyCount; - set hostedCompanyCount(int hostedCompanyCount) => + int? _hostedCompanyCount; + int? get hostedCompanyCount => _$this._hostedCompanyCount; + set hostedCompanyCount(int? hostedCompanyCount) => _$this._hostedCompanyCount = hostedCompanyCount; - bool _setReactAsDefaultAP; - bool get setReactAsDefaultAP => _$this._setReactAsDefaultAP; - set setReactAsDefaultAP(bool setReactAsDefaultAP) => + bool? _setReactAsDefaultAP; + bool? get setReactAsDefaultAP => _$this._setReactAsDefaultAP; + set setReactAsDefaultAP(bool? setReactAsDefaultAP) => _$this._setReactAsDefaultAP = setReactAsDefaultAP; - bool _accountSmsVerified; - bool get accountSmsVerified => _$this._accountSmsVerified; - set accountSmsVerified(bool accountSmsVerified) => + bool? _accountSmsVerified; + bool? get accountSmsVerified => _$this._accountSmsVerified; + set accountSmsVerified(bool? accountSmsVerified) => _$this._accountSmsVerified = accountSmsVerified; - int _trialDaysLeft; - int get trialDaysLeft => _$this._trialDaysLeft; - set trialDaysLeft(int trialDaysLeft) => _$this._trialDaysLeft = trialDaysLeft; + int? _trialDaysLeft; + int? get trialDaysLeft => _$this._trialDaysLeft; + set trialDaysLeft(int? trialDaysLeft) => + _$this._trialDaysLeft = trialDaysLeft; - bool _hasIapPlan; - bool get hasIapPlan => _$this._hasIapPlan; - set hasIapPlan(bool hasIapPlan) => _$this._hasIapPlan = hasIapPlan; + bool? _hasIapPlan; + bool? get hasIapPlan => _$this._hasIapPlan; + set hasIapPlan(bool? hasIapPlan) => _$this._hasIapPlan = hasIapPlan; - String _paymentId; - String get paymentId => _$this._paymentId; - set paymentId(String paymentId) => _$this._paymentId = paymentId; + String? _paymentId; + String? get paymentId => _$this._paymentId; + set paymentId(String? paymentId) => _$this._paymentId = paymentId; - bool _taxApiEnabled; - bool get taxApiEnabled => _$this._taxApiEnabled; - set taxApiEnabled(bool taxApiEnabled) => + bool? _taxApiEnabled; + bool? get taxApiEnabled => _$this._taxApiEnabled; + set taxApiEnabled(bool? taxApiEnabled) => _$this._taxApiEnabled = taxApiEnabled; AccountEntityBuilder() { @@ -588,7 +589,7 @@ class AccountEntityBuilder } @override - void update(void Function(AccountEntityBuilder) updates) { + void update(void Function(AccountEntityBuilder)? updates) { if (updates != null) updates(this); } diff --git a/lib/data/models/bank_account_model.dart b/lib/data/models/bank_account_model.dart index a2e0db9c9..bfc117f74 100644 --- a/lib/data/models/bank_account_model.dart +++ b/lib/data/models/bank_account_model.dart @@ -53,7 +53,7 @@ class BankAccountFields { abstract class BankAccountEntity extends Object with BaseEntity implements Built { - factory BankAccountEntity({String id, AppState state}) { + factory BankAccountEntity({String? id, AppState? state}) { return _$BankAccountEntity._( id: id ?? BaseEntity.nextId, isChanged: false, @@ -118,15 +118,15 @@ abstract class BankAccountEntity extends Object bool get isConnected => type.isNotEmpty; @override - List getActions( - {UserCompanyEntity userCompany, - ClientEntity client, + List getActions( + {UserCompanyEntity? userCompany, + ClientEntity? client, bool includeEdit = false, bool multiselect = false}) { - final actions = []; + final actions = []; - if (!isDeleted) { - if (!multiselect && includeEdit && userCompany.canEditEntity(this)) { + if (!isDeleted!) { + if (!multiselect && includeEdit && userCompany!.canEditEntity(this)) { actions.add(EntityAction.edit); } } @@ -135,7 +135,7 @@ abstract class BankAccountEntity extends Object } int compareTo( - BankAccountEntity bankAccount, String sortField, bool sortAscending) { + BankAccountEntity? bankAccount, String sortField, bool sortAscending) { int response = 0; final bankAccountA = sortAscending ? this : bankAccount; final bankAccountB = sortAscending ? bankAccount : this; @@ -143,17 +143,17 @@ abstract class BankAccountEntity extends Object switch (sortField) { // STARTER: sort switch - do not remove comment case BankAccountFields.name: - response = bankAccountA.name + response = bankAccountA!.name .toLowerCase() - .compareTo(bankAccountB.name.toLowerCase()); + .compareTo(bankAccountB!.name.toLowerCase()); break; case BankAccountFields.balance: - response = bankAccountA.balance.compareTo(bankAccountB.balance); + response = bankAccountA!.balance.compareTo(bankAccountB!.balance); break; case BankAccountFields.type: - response = bankAccountA.type + response = bankAccountA!.type .toLowerCase() - .compareTo(bankAccountB.type.toLowerCase()); + .compareTo(bankAccountB!.type.toLowerCase()); break; default: print('## ERROR: sort by bankAccount.$sortField is not implemented'); @@ -162,14 +162,14 @@ abstract class BankAccountEntity extends Object if (response == 0) { // STARTER: sort default - do not remove comment - return bankAccountA.name.compareTo(bankAccountB.name); + return bankAccountA!.name.compareTo(bankAccountB!.name); } else { return response; } } @override - bool matchesFilter(String filter) { + bool matchesFilter(String? filter) { return matchesStrings( haystacks: [ name, @@ -180,7 +180,7 @@ abstract class BankAccountEntity extends Object } @override - String matchesFilterValue(String filter) { + String? matchesFilterValue(String? filter) { return matchesStringsValue( haystacks: [ name, diff --git a/lib/data/models/bank_account_model.g.dart b/lib/data/models/bank_account_model.g.dart index f9a8a400f..4817ae1b7 100644 --- a/lib/data/models/bank_account_model.g.dart +++ b/lib/data/models/bank_account_model.g.dart @@ -24,10 +24,10 @@ class _$BankAccountListResponseSerializer final String wireName = 'BankAccountListResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, BankAccountListResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType( @@ -39,21 +39,21 @@ class _$BankAccountListResponseSerializer @override BankAccountListResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new BankAccountListResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(BankAccountEntity)])) - as BuiltList); + BuiltList, const [const FullType(BankAccountEntity)]))! + as BuiltList); break; } } @@ -73,10 +73,10 @@ class _$BankAccountItemResponseSerializer final String wireName = 'BankAccountItemResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, BankAccountItemResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType(BankAccountEntity)), @@ -87,19 +87,19 @@ class _$BankAccountItemResponseSerializer @override BankAccountItemResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new BankAccountItemResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, - specifiedType: const FullType(BankAccountEntity)) + specifiedType: const FullType(BankAccountEntity))! as BankAccountEntity); break; } @@ -117,9 +117,9 @@ class _$BankAccountEntitySerializer final String wireName = 'BankAccountEntity'; @override - Iterable serialize(Serializers serializers, BankAccountEntity object, + Iterable serialize(Serializers serializers, BankAccountEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'bank_account_name', serializers.serialize(object.name, specifiedType: const FullType(String)), 'bank_account_status', @@ -157,7 +157,7 @@ class _$BankAccountEntitySerializer 'id', serializers.serialize(object.id, specifiedType: const FullType(String)), ]; - Object value; + Object? value; value = object.isChanged; if (value != null) { result @@ -191,83 +191,83 @@ class _$BankAccountEntitySerializer @override BankAccountEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new BankAccountEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'bank_account_name': result.name = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'bank_account_status': result.status = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'bank_account_type': result.type = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'provider_name': result.provider = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'from_date': result.fromDate = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'auto_sync': result.autoSync = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'disabled_upstream': result.disabledUpstream = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'balance': result.balance = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'currency': result.currency = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'isChanged': result.isChanged = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'created_at': result.createdAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'updated_at': result.updatedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'archived_at': result.archivedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'is_deleted': result.isDeleted = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'user_id': result.createdUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'assigned_user_id': result.assignedUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -281,10 +281,10 @@ class _$BankAccountListResponse extends BankAccountListResponse { final BuiltList data; factory _$BankAccountListResponse( - [void Function(BankAccountListResponseBuilder) updates]) => + [void Function(BankAccountListResponseBuilder)? updates]) => (new BankAccountListResponseBuilder()..update(updates))._build(); - _$BankAccountListResponse._({this.data}) : super._() { + _$BankAccountListResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull( data, r'BankAccountListResponse', 'data'); } @@ -304,10 +304,10 @@ class _$BankAccountListResponse extends BankAccountListResponse { return other is BankAccountListResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -325,12 +325,12 @@ class _$BankAccountListResponse extends BankAccountListResponse { class BankAccountListResponseBuilder implements Builder { - _$BankAccountListResponse _$v; + _$BankAccountListResponse? _$v; - ListBuilder _data; + ListBuilder? _data; ListBuilder get data => _$this._data ??= new ListBuilder(); - set data(ListBuilder data) => _$this._data = data; + set data(ListBuilder? data) => _$this._data = data; BankAccountListResponseBuilder(); @@ -350,7 +350,7 @@ class BankAccountListResponseBuilder } @override - void update(void Function(BankAccountListResponseBuilder) updates) { + void update(void Function(BankAccountListResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -362,7 +362,7 @@ class BankAccountListResponseBuilder try { _$result = _$v ?? new _$BankAccountListResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -382,10 +382,10 @@ class _$BankAccountItemResponse extends BankAccountItemResponse { final BankAccountEntity data; factory _$BankAccountItemResponse( - [void Function(BankAccountItemResponseBuilder) updates]) => + [void Function(BankAccountItemResponseBuilder)? updates]) => (new BankAccountItemResponseBuilder()..update(updates))._build(); - _$BankAccountItemResponse._({this.data}) : super._() { + _$BankAccountItemResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull( data, r'BankAccountItemResponse', 'data'); } @@ -405,10 +405,10 @@ class _$BankAccountItemResponse extends BankAccountItemResponse { return other is BankAccountItemResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -426,12 +426,12 @@ class _$BankAccountItemResponse extends BankAccountItemResponse { class BankAccountItemResponseBuilder implements Builder { - _$BankAccountItemResponse _$v; + _$BankAccountItemResponse? _$v; - BankAccountEntityBuilder _data; + BankAccountEntityBuilder? _data; BankAccountEntityBuilder get data => _$this._data ??= new BankAccountEntityBuilder(); - set data(BankAccountEntityBuilder data) => _$this._data = data; + set data(BankAccountEntityBuilder? data) => _$this._data = data; BankAccountItemResponseBuilder(); @@ -451,7 +451,7 @@ class BankAccountItemResponseBuilder } @override - void update(void Function(BankAccountItemResponseBuilder) updates) { + void update(void Function(BankAccountItemResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -463,7 +463,7 @@ class BankAccountItemResponseBuilder try { _$result = _$v ?? new _$BankAccountItemResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -498,7 +498,7 @@ class _$BankAccountEntity extends BankAccountEntity { @override final String currency; @override - final bool isChanged; + final bool? isChanged; @override final int createdAt; @override @@ -506,36 +506,36 @@ class _$BankAccountEntity extends BankAccountEntity { @override final int archivedAt; @override - final bool isDeleted; + final bool? isDeleted; @override - final String createdUserId; + final String? createdUserId; @override - final String assignedUserId; + final String? assignedUserId; @override final String id; factory _$BankAccountEntity( - [void Function(BankAccountEntityBuilder) updates]) => + [void Function(BankAccountEntityBuilder)? updates]) => (new BankAccountEntityBuilder()..update(updates))._build(); _$BankAccountEntity._( - {this.name, - this.status, - this.type, - this.provider, - this.fromDate, - this.autoSync, - this.disabledUpstream, - this.balance, - this.currency, + {required this.name, + required this.status, + required this.type, + required this.provider, + required this.fromDate, + required this.autoSync, + required this.disabledUpstream, + required this.balance, + required this.currency, this.isChanged, - this.createdAt, - this.updatedAt, - this.archivedAt, + required this.createdAt, + required this.updatedAt, + required this.archivedAt, this.isDeleted, this.createdUserId, this.assignedUserId, - this.id}) + required this.id}) : super._() { BuiltValueNullFieldError.checkNotNull(name, r'BankAccountEntity', 'name'); BuiltValueNullFieldError.checkNotNull( @@ -593,10 +593,10 @@ class _$BankAccountEntity extends BankAccountEntity { id == other.id; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, name.hashCode); _$hash = $jc(_$hash, status.hashCode); @@ -645,78 +645,78 @@ class _$BankAccountEntity extends BankAccountEntity { class BankAccountEntityBuilder implements Builder { - _$BankAccountEntity _$v; + _$BankAccountEntity? _$v; - String _name; - String get name => _$this._name; - set name(String name) => _$this._name = name; + String? _name; + String? get name => _$this._name; + set name(String? name) => _$this._name = name; - String _status; - String get status => _$this._status; - set status(String status) => _$this._status = status; + String? _status; + String? get status => _$this._status; + set status(String? status) => _$this._status = status; - String _type; - String get type => _$this._type; - set type(String type) => _$this._type = type; + String? _type; + String? get type => _$this._type; + set type(String? type) => _$this._type = type; - String _provider; - String get provider => _$this._provider; - set provider(String provider) => _$this._provider = provider; + String? _provider; + String? get provider => _$this._provider; + set provider(String? provider) => _$this._provider = provider; - String _fromDate; - String get fromDate => _$this._fromDate; - set fromDate(String fromDate) => _$this._fromDate = fromDate; + String? _fromDate; + String? get fromDate => _$this._fromDate; + set fromDate(String? fromDate) => _$this._fromDate = fromDate; - bool _autoSync; - bool get autoSync => _$this._autoSync; - set autoSync(bool autoSync) => _$this._autoSync = autoSync; + bool? _autoSync; + bool? get autoSync => _$this._autoSync; + set autoSync(bool? autoSync) => _$this._autoSync = autoSync; - bool _disabledUpstream; - bool get disabledUpstream => _$this._disabledUpstream; - set disabledUpstream(bool disabledUpstream) => + bool? _disabledUpstream; + bool? get disabledUpstream => _$this._disabledUpstream; + set disabledUpstream(bool? disabledUpstream) => _$this._disabledUpstream = disabledUpstream; - double _balance; - double get balance => _$this._balance; - set balance(double balance) => _$this._balance = balance; + double? _balance; + double? get balance => _$this._balance; + set balance(double? balance) => _$this._balance = balance; - String _currency; - String get currency => _$this._currency; - set currency(String currency) => _$this._currency = currency; + String? _currency; + String? get currency => _$this._currency; + set currency(String? currency) => _$this._currency = currency; - bool _isChanged; - bool get isChanged => _$this._isChanged; - set isChanged(bool isChanged) => _$this._isChanged = isChanged; + bool? _isChanged; + bool? get isChanged => _$this._isChanged; + set isChanged(bool? isChanged) => _$this._isChanged = isChanged; - int _createdAt; - int get createdAt => _$this._createdAt; - set createdAt(int createdAt) => _$this._createdAt = createdAt; + int? _createdAt; + int? get createdAt => _$this._createdAt; + set createdAt(int? createdAt) => _$this._createdAt = createdAt; - int _updatedAt; - int get updatedAt => _$this._updatedAt; - set updatedAt(int updatedAt) => _$this._updatedAt = updatedAt; + int? _updatedAt; + int? get updatedAt => _$this._updatedAt; + set updatedAt(int? updatedAt) => _$this._updatedAt = updatedAt; - int _archivedAt; - int get archivedAt => _$this._archivedAt; - set archivedAt(int archivedAt) => _$this._archivedAt = archivedAt; + int? _archivedAt; + int? get archivedAt => _$this._archivedAt; + set archivedAt(int? archivedAt) => _$this._archivedAt = archivedAt; - bool _isDeleted; - bool get isDeleted => _$this._isDeleted; - set isDeleted(bool isDeleted) => _$this._isDeleted = isDeleted; + bool? _isDeleted; + bool? get isDeleted => _$this._isDeleted; + set isDeleted(bool? isDeleted) => _$this._isDeleted = isDeleted; - String _createdUserId; - String get createdUserId => _$this._createdUserId; - set createdUserId(String createdUserId) => + String? _createdUserId; + String? get createdUserId => _$this._createdUserId; + set createdUserId(String? createdUserId) => _$this._createdUserId = createdUserId; - String _assignedUserId; - String get assignedUserId => _$this._assignedUserId; - set assignedUserId(String assignedUserId) => + String? _assignedUserId; + String? get assignedUserId => _$this._assignedUserId; + set assignedUserId(String? assignedUserId) => _$this._assignedUserId = assignedUserId; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; BankAccountEntityBuilder() { BankAccountEntity._initializeBuilder(this); @@ -754,7 +754,7 @@ class BankAccountEntityBuilder } @override - void update(void Function(BankAccountEntityBuilder) updates) { + void update(void Function(BankAccountEntityBuilder)? updates) { if (updates != null) updates(this); } diff --git a/lib/data/models/client_model.dart b/lib/data/models/client_model.dart index 019b4090a..40110b90c 100644 --- a/lib/data/models/client_model.dart +++ b/lib/data/models/client_model.dart @@ -1,6 +1,3 @@ -// Flutter imports: -import 'package:flutter/foundation.dart'; - // Package imports: import 'package:built_collection/built_collection.dart'; import 'package:built_value/built_value.dart'; @@ -114,10 +111,10 @@ abstract class ClientEntity extends Object with BaseEntity, SelectableEntity, HasActivities implements Built { factory ClientEntity({ - String id, - AppState state, - UserEntity user, - GroupEntity group, + String? id, + AppState? state, + UserEntity? user, + GroupEntity? group, }) { return _$ClientEntity._( id: id ?? BaseEntity.nextId, @@ -197,18 +194,17 @@ abstract class ClientEntity extends Object @BuiltValueField(wireName: 'group_settings_id') String get groupId; - @nullable @BuiltValueField(compare: false) - int get loadedAt; + int? get loadedAt; - bool get isLoaded => loadedAt != null && loadedAt > 0; + bool get isLoaded => loadedAt != null && loadedAt! > 0; bool get isStale { if (!isLoaded) { return true; } - return DateTime.now().millisecondsSinceEpoch - loadedAt > + return DateTime.now().millisecondsSinceEpoch - loadedAt! > kMillisecondsToRefreshActivities; } @@ -322,7 +318,7 @@ abstract class ClientEntity extends Object String get classification; - BuiltList get contacts; + BuiltList get contacts; @override BuiltList get activities; @@ -345,12 +341,12 @@ abstract class ClientEntity extends Object return displayName; } - bool getManualPaymentEmail( - {@required CompanyEntity company, @required GroupEntity group}) { + bool? getManualPaymentEmail( + {required CompanyEntity company, required GroupEntity? group}) { if (settings.clientManualPaymentNotification != null) { return settings.clientManualPaymentNotification; - } else if (group?.settings?.clientManualPaymentNotification != null) { - return group.settings.clientManualPaymentNotification; + } else if (group?.settings.clientManualPaymentNotification != null) { + return group!.settings.clientManualPaymentNotification; } else { return company.settings.clientManualPaymentNotification; } @@ -372,192 +368,192 @@ abstract class ClientEntity extends Object return template; } - ClientContactEntity get primaryContact => - contacts.firstWhere((contact) => contact.isPrimary, + ClientContactEntity? get primaryContact => + contacts.firstWhere((contact) => contact!.isPrimary, orElse: () => ClientContactEntity()); - List get emailContacts { - final list = contacts.where((contact) => contact.sendEmail).toList(); + List get emailContacts { + final list = contacts.where((contact) => contact!.sendEmail).toList(); return list.isEmpty ? [primaryContact] : list; } - bool get hasGroup => groupId != null && groupId.isNotEmpty; + bool get hasGroup => groupId.isNotEmpty; - bool get hasUser => assignedUserId != null && assignedUserId.isNotEmpty; + bool get hasUser => assignedUserId != null && assignedUserId!.isNotEmpty; bool get hasLanguage => - settings.languageId != null && settings.languageId.isNotEmpty; + settings.languageId != null && settings.languageId!.isNotEmpty; bool get hasEmailAddress => - contacts.where((contact) => contact.email?.isNotEmpty).isNotEmpty; + contacts.where((contact) => contact!.email.isNotEmpty).isNotEmpty; - int compareTo(ClientEntity client, String sortField, bool sortAscending, - BuiltMap userMap, StaticState staticState) { + int compareTo(ClientEntity? client, String sortField, bool sortAscending, + BuiltMap userMap, StaticState staticState) { int response = 0; - final ClientEntity clientA = sortAscending ? this : client; - final ClientEntity clientB = sortAscending ? client : this; + final ClientEntity? clientA = sortAscending ? this : client; + final ClientEntity? clientB = sortAscending ? client : this; switch (sortField) { case ClientFields.name: - response = removeDiacritics(clientA.displayName) + response = removeDiacritics(clientA!.displayName) .toLowerCase() - .compareTo(removeDiacritics(clientB.displayName).toLowerCase()); + .compareTo(removeDiacritics(clientB!.displayName).toLowerCase()); break; case ClientFields.contactName: - response = removeDiacritics(clientA.primaryContact.fullName) + response = removeDiacritics(clientA!.primaryContact!.fullName) .toLowerCase() - .compareTo(removeDiacritics(clientB.primaryContact.fullName) + .compareTo(removeDiacritics(clientB!.primaryContact!.fullName) .toLowerCase()); break; case ClientFields.contactEmail: - response = clientA.primaryContact.email + response = clientA!.primaryContact!.email .toLowerCase() - .compareTo(clientB.primaryContact.email.toLowerCase()); + .compareTo(clientB!.primaryContact!.email.toLowerCase()); break; case ClientFields.balance: - response = clientA.balance.compareTo(clientB.balance); + response = clientA!.balance.compareTo(clientB!.balance); break; case ClientFields.creditBalance: - response = clientA.creditBalance.compareTo(clientB.creditBalance); + response = clientA!.creditBalance.compareTo(clientB!.creditBalance); break; case ClientFields.paymentBalance: - response = clientA.paymentBalance.compareTo(clientB.paymentBalance); + response = clientA!.paymentBalance.compareTo(clientB!.paymentBalance); break; case ClientFields.paidToDate: - response = clientA.paidToDate.compareTo(clientB.paidToDate); + response = clientA!.paidToDate.compareTo(clientB!.paidToDate); break; case ClientFields.updatedAt: - response = clientA.updatedAt.compareTo(clientB.updatedAt); + response = clientA!.updatedAt.compareTo(clientB!.updatedAt); break; case ClientFields.idNumber: - response = clientA.idNumber.compareTo(clientB.idNumber); + response = clientA!.idNumber.compareTo(clientB!.idNumber); break; case ClientFields.number: response = compareNatural( - clientA.number.toLowerCase(), clientB.number.toLowerCase()); + clientA!.number.toLowerCase(), clientB!.number.toLowerCase()); break; case ClientFields.website: - response = clientA.website + response = clientA!.website .toLowerCase() - .compareTo(clientB.website.toLowerCase()); + .compareTo(clientB!.website.toLowerCase()); break; case ClientFields.address1: - response = clientA.address1 + response = clientA!.address1 .toLowerCase() - .compareTo(clientB.address1.toLowerCase()); + .compareTo(clientB!.address1.toLowerCase()); break; case ClientFields.address2: - response = clientA.address2 + response = clientA!.address2 .toLowerCase() - .compareTo(clientB.address2.toLowerCase()); + .compareTo(clientB!.address2.toLowerCase()); break; case ClientFields.phone: - response = - clientA.phone.toLowerCase().compareTo(clientB.phone.toLowerCase()); + response = clientA!.phone + .toLowerCase() + .compareTo(clientB!.phone.toLowerCase()); break; case ClientFields.publicNotes: - response = clientA.publicNotes + response = clientA!.publicNotes .toLowerCase() - .compareTo(clientB.publicNotes.toLowerCase()); + .compareTo(clientB!.publicNotes.toLowerCase()); break; case ClientFields.privateNotes: - response = clientA.privateNotes + response = clientA!.privateNotes .toLowerCase() - .compareTo(clientB.privateNotes.toLowerCase()); + .compareTo(clientB!.privateNotes.toLowerCase()); break; case ClientFields.vatNumber: - response = clientA.vatNumber + response = clientA!.vatNumber .toLowerCase() - .compareTo(clientB.vatNumber.toLowerCase()); + .compareTo(clientB!.vatNumber.toLowerCase()); break; case ClientFields.assignedToId: case EntityFields.assignedTo: - final userA = userMap[clientA.assignedUserId] ?? UserEntity(); - final userB = userMap[clientB.assignedUserId] ?? UserEntity(); + final userA = userMap[clientA!.assignedUserId] ?? UserEntity(); + final userB = userMap[clientB!.assignedUserId] ?? UserEntity(); response = userA.listDisplayName .toLowerCase() .compareTo(userB.listDisplayName.toLowerCase()); break; case ClientFields.createdById: case EntityFields.createdBy: - final userA = userMap[clientA.createdUserId] ?? UserEntity(); - final userB = userMap[clientB.createdUserId] ?? UserEntity(); + final userA = userMap[clientA!.createdUserId] ?? UserEntity(); + final userB = userMap[clientB!.createdUserId] ?? UserEntity(); response = userA.listDisplayName .toLowerCase() .compareTo(userB.listDisplayName.toLowerCase()); break; case ClientFields.country: final countryA = - staticState.countryMap[clientA.countryId] ?? CountryEntity(); + staticState.countryMap[clientA!.countryId] ?? CountryEntity(); final countryB = - staticState.countryMap[clientB.countryId] ?? CountryEntity(); + staticState.countryMap[clientB!.countryId] ?? CountryEntity(); response = countryA.name.toLowerCase().compareTo(countryB.name.toLowerCase()); break; case ClientFields.currency: final currencyA = - staticState.currencyMap[clientA.currencyId] ?? CurrencyEntity(); + staticState.currencyMap[clientA!.currencyId] ?? CurrencyEntity(); final currencyB = - staticState.currencyMap[clientB.currencyId] ?? CurrencyEntity(); + staticState.currencyMap[clientB!.currencyId] ?? CurrencyEntity(); response = currencyA.name .toLowerCase() .compareTo(currencyB.name.toLowerCase()); break; case EntityFields.state: case ClientFields.state: - final stateA = - EntityState.valueOf(clientA.entityState) ?? EntityState.active; - final stateB = - EntityState.valueOf(clientB.entityState) ?? EntityState.active; + final stateA = EntityState.valueOf(clientA!.entityState); + final stateB = EntityState.valueOf(clientB!.entityState); response = stateA.name.toLowerCase().compareTo(stateB.name.toLowerCase()); break; case ClientFields.language: final languageA = - staticState.languageMap[clientA.languageId] ?? LanguageEntity(); + staticState.languageMap[clientA!.languageId] ?? LanguageEntity(); final languageB = - staticState.languageMap[clientB.languageId] ?? LanguageEntity(); + staticState.languageMap[clientB!.languageId] ?? LanguageEntity(); response = languageA.name .toLowerCase() .compareTo(languageB.name.toLowerCase()); break; case ClientFields.createdAt: - response = clientA.createdAt.compareTo(clientB.createdAt); + response = clientA!.createdAt.compareTo(clientB!.createdAt); break; case ClientFields.archivedAt: - response = clientA.archivedAt.compareTo(clientB.archivedAt); + response = clientA!.archivedAt.compareTo(clientB!.archivedAt); break; case ClientFields.lastLoginAt: - response = clientA.lastLogin.compareTo(clientB.lastLogin); + response = clientA!.lastLogin.compareTo(clientB!.lastLogin); break; case ClientFields.custom1: - response = clientA.customValue1 + response = clientA!.customValue1 .toLowerCase() - .compareTo(clientB.customValue1.toLowerCase()); + .compareTo(clientB!.customValue1.toLowerCase()); break; case ClientFields.custom2: - response = clientA.customValue2 + response = clientA!.customValue2 .toLowerCase() - .compareTo(clientB.customValue2.toLowerCase()); + .compareTo(clientB!.customValue2.toLowerCase()); break; case ClientFields.custom3: - response = clientA.customValue3 + response = clientA!.customValue3 .toLowerCase() - .compareTo(clientB.customValue3.toLowerCase()); + .compareTo(clientB!.customValue3.toLowerCase()); break; case ClientFields.custom4: - response = clientA.customValue4 + response = clientA!.customValue4 .toLowerCase() - .compareTo(clientB.customValue4.toLowerCase()); + .compareTo(clientB!.customValue4.toLowerCase()); break; case ClientFields.documents: - response = clientA.documents.length.compareTo(clientA.documents.length); + response = + clientA!.documents.length.compareTo(clientA.documents.length); break; case ClientFields.group: - response = clientA.groupId.compareTo(clientB.groupId); + response = clientA!.groupId.compareTo(clientB!.groupId); break; case ClientFields.classification: - response = clientA.classification.compareTo(clientB.classification); + response = clientA!.classification.compareTo(clientB!.classification); break; default: print('## ERROR: sort by client.$sortField not implemented'); @@ -565,19 +561,19 @@ abstract class ClientEntity extends Object } if (response == 0) { - response = client.number.toLowerCase().compareTo(number.toLowerCase()); + response = client!.number.toLowerCase().compareTo(number.toLowerCase()); } return response; } - bool matchesNameOrEmail(String filter) { + bool matchesNameOrEmail(String? filter) { if (matchesString(haystack: name, needle: filter)) { return true; } for (var i = 0; i < contacts.length; i++) { - final contact = contacts[i]; + final contact = contacts[i]!; if (matchesString(haystack: contact.fullName, needle: filter)) { return true; } @@ -591,9 +587,9 @@ abstract class ClientEntity extends Object } @override - bool matchesFilter(String filter) { + bool matchesFilter(String? filter) { for (var i = 0; i < contacts.length; i++) { - if (contacts[i].matchesFilter(filter)) { + if (contacts[i]!.matchesFilter(filter)) { return true; } } @@ -618,9 +614,9 @@ abstract class ClientEntity extends Object } @override - String matchesFilterValue(String filter) { + String? matchesFilterValue(String? filter) { for (var i = 0; i < contacts.length; i++) { - final value = contacts[i].matchesFilterValue(filter); + final value = contacts[i]!.matchesFilterValue(filter); if (value != null) { return value; } @@ -645,15 +641,15 @@ abstract class ClientEntity extends Object } @override - List getActions( - {UserCompanyEntity userCompany, - ClientEntity client, + List getActions( + {UserCompanyEntity? userCompany, + ClientEntity? client, bool includeEdit = false, bool multiselect = false}) { - final actions = []; + final actions = []; - if (!isDeleted && !multiselect) { - if (includeEdit && userCompany.canEditEntity(this)) { + if (!isDeleted! && !multiselect) { + if (includeEdit && userCompany!.canEditEntity(this)) { actions.add(EntityAction.edit); } @@ -661,21 +657,21 @@ abstract class ClientEntity extends Object actions.add(EntityAction.clientPortal); - if (userCompany.canEditEntity(this)) { + if (userCompany!.canEditEntity(this)) { actions.add(EntityAction.settings); } } - if (!isDeleted && multiselect) { + if (!isDeleted! && multiselect) { actions.add(EntityAction.documents); } - if (!isDeleted && !multiselect) { + if (!isDeleted! && !multiselect) { if (actions.isNotEmpty && actions.last != null) { actions.add(null); } - if (userCompany.canCreate(EntityType.invoice)) { + if (userCompany!.canCreate(EntityType.invoice)) { actions.add(EntityAction.newInvoice); } @@ -700,7 +696,7 @@ abstract class ClientEntity extends Object actions.add(null); } - if (userCompany.isAdmin && !multiselect) { + if (userCompany!.isAdmin && !multiselect) { actions.add(EntityAction.merge); } @@ -714,7 +710,7 @@ abstract class ClientEntity extends Object } @override - double get listDisplayAmount => null; + double? get listDisplayAmount => null; @override FormatNumberType get listDisplayAmountType => FormatNumberType.money; @@ -723,7 +719,7 @@ abstract class ClientEntity extends Object if (name.isNotEmpty) { return name; } else { - return primaryContact.fullNameOrEmail; + return primaryContact!.fullNameOrEmail; } } @@ -741,7 +737,7 @@ abstract class ClientEntity extends Object shippingCity.isNotEmpty || shippingState.isNotEmpty || shippingPostalCode.isNotEmpty || - (shippingCountryId ?? '').isNotEmpty; + shippingCountryId.isNotEmpty; bool get hasBillingAddress => address1.isNotEmpty || @@ -749,19 +745,19 @@ abstract class ClientEntity extends Object city.isNotEmpty || state.isNotEmpty || postalCode.isNotEmpty || - (countryId ?? '').isNotEmpty; + countryId.isNotEmpty; - bool get hasCountry => countryId != null && countryId.isNotEmpty; + bool get hasCountry => countryId.isNotEmpty; - String get currencyId => settings.currencyId; + String? get currencyId => settings.currencyId; bool get hasCurrency => - settings.currencyId != null && settings.currencyId.isNotEmpty; + settings.currencyId != null && settings.currencyId!.isNotEmpty; - String get languageId => settings.languageId; + String? get languageId => settings.languageId; - ClientContactEntity getContact(String contactId) => contacts - .firstWhere((contact) => contact.id == contactId, orElse: () => null); + ClientContactEntity? getContact(String? contactId) => contacts + .firstWhere((contact) => contact!.id == contactId, orElse: () => null); bool get hasNameSet { if (contacts.isEmpty) { @@ -771,7 +767,7 @@ abstract class ClientEntity extends Object final contact = contacts.first; return name.isNotEmpty || - contact.fullName.isNotEmpty || + contact!.fullName.isNotEmpty || contact.email.isNotEmpty; } @@ -914,7 +910,7 @@ abstract class ClientContactEntity extends Object } @override - bool matchesFilter(String filter) { + bool matchesFilter(String? filter) { return matchesStrings( haystacks: [ '$firstName $lastName', @@ -926,7 +922,7 @@ abstract class ClientContactEntity extends Object } @override - String matchesFilterValue(String filter) { + String? matchesFilterValue(String? filter) { return matchesStringsValue( haystacks: [ '$firstName $lastName', @@ -943,7 +939,7 @@ abstract class ClientContactEntity extends Object } @override - double get listDisplayAmount => null; + double? get listDisplayAmount => null; @override FormatNumberType get listDisplayAmountType => FormatNumberType.money; diff --git a/lib/data/models/client_model.g.dart b/lib/data/models/client_model.g.dart index 089136d97..b59728a25 100644 --- a/lib/data/models/client_model.g.dart +++ b/lib/data/models/client_model.g.dart @@ -23,9 +23,10 @@ class _$ClientListResponseSerializer final String wireName = 'ClientListResponse'; @override - Iterable serialize(Serializers serializers, ClientListResponse object, + Iterable serialize( + Serializers serializers, ClientListResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: @@ -37,21 +38,21 @@ class _$ClientListResponseSerializer @override ClientListResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ClientListResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(ClientEntity)])) - as BuiltList); + BuiltList, const [const FullType(ClientEntity)]))! + as BuiltList); break; } } @@ -68,9 +69,10 @@ class _$ClientItemResponseSerializer final String wireName = 'ClientItemResponse'; @override - Iterable serialize(Serializers serializers, ClientItemResponse object, + Iterable serialize( + Serializers serializers, ClientItemResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType(ClientEntity)), @@ -81,19 +83,19 @@ class _$ClientItemResponseSerializer @override ClientItemResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ClientItemResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, - specifiedType: const FullType(ClientEntity)) as ClientEntity); + specifiedType: const FullType(ClientEntity))! as ClientEntity); break; } } @@ -109,9 +111,9 @@ class _$ClientEntitySerializer implements StructuredSerializer { final String wireName = 'ClientEntity'; @override - Iterable serialize(Serializers serializers, ClientEntity object, + Iterable serialize(Serializers serializers, ClientEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'group_settings_id', serializers.serialize(object.groupId, specifiedType: const FullType(String)), @@ -230,7 +232,7 @@ class _$ClientEntitySerializer implements StructuredSerializer { 'contacts', serializers.serialize(object.contacts, specifiedType: const FullType( - BuiltList, const [const FullType(ClientContactEntity)])), + BuiltList, const [const FullType.nullable(ClientContactEntity)])), 'activities', serializers.serialize(object.activities, specifiedType: const FullType( @@ -263,7 +265,7 @@ class _$ClientEntitySerializer implements StructuredSerializer { 'id', serializers.serialize(object.id, specifiedType: const FullType(String)), ]; - Object value; + Object? value; value = object.loadedAt; if (value != null) { result @@ -302,243 +304,245 @@ class _$ClientEntitySerializer implements StructuredSerializer { } @override - ClientEntity deserialize(Serializers serializers, Iterable serialized, + ClientEntity deserialize( + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ClientEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'group_settings_id': result.groupId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'loadedAt': result.loadedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int)) as int?; break; case 'name': result.name = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'display_name': result.displayName = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'balance': result.balance = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'credit_balance': result.creditBalance = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'payment_balance': result.paymentBalance = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'paid_to_date': result.paidToDate = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'client_hash': result.clientHash = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'address1': result.address1 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'address2': result.address2 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'city': result.city = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'state': result.state = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'postal_code': result.postalCode = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'country_id': result.countryId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'phone': result.phone = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'private_notes': result.privateNotes = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'public_notes': result.publicNotes = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'website': result.website = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'industry_id': result.industryId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'size_id': result.sizeId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'vat_number': result.vatNumber = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'id_number': result.idNumber = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'number': result.number = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'shipping_address1': result.shippingAddress1 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'shipping_address2': result.shippingAddress2 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'shipping_city': result.shippingCity = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'shipping_state': result.shippingState = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'shipping_postal_code': result.shippingPostalCode = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'shipping_country_id': result.shippingCountryId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'settings': result.settings.replace(serializers.deserialize(value, - specifiedType: const FullType(SettingsEntity)) as SettingsEntity); + specifiedType: const FullType(SettingsEntity))! + as SettingsEntity); break; case 'last_login': result.lastLogin = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'custom_value1': result.customValue1 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value2': result.customValue2 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value3': result.customValue3 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value4': result.customValue4 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'routing_id': result.routingId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'is_tax_exempt': result.isTaxExempt = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'tax_info': result.taxData.replace(serializers.deserialize(value, - specifiedType: const FullType(TaxDataEntity)) as TaxDataEntity); + specifiedType: const FullType(TaxDataEntity))! as TaxDataEntity); break; case 'classification': result.classification = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'contacts': result.contacts.replace(serializers.deserialize(value, - specifiedType: const FullType( - BuiltList, const [const FullType(ClientContactEntity)])) - as BuiltList); + specifiedType: const FullType(BuiltList, const [ + const FullType.nullable(ClientContactEntity) + ]))! as BuiltList); break; case 'activities': result.activities.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(ActivityEntity)])) - as BuiltList); + BuiltList, const [const FullType(ActivityEntity)]))! + as BuiltList); break; case 'ledger': result.ledger.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(LedgerEntity)])) - as BuiltList); + BuiltList, const [const FullType(LedgerEntity)]))! + as BuiltList); break; case 'gateway_tokens': result.gatewayTokens.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(GatewayTokenEntity)])) - as BuiltList); + BuiltList, const [const FullType(GatewayTokenEntity)]))! + as BuiltList); break; case 'documents': result.documents.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(DocumentEntity)])) - as BuiltList); + BuiltList, const [const FullType(DocumentEntity)]))! + as BuiltList); break; case 'system_logs': result.systemLogs.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(SystemLogEntity)])) - as BuiltList); + BuiltList, const [const FullType(SystemLogEntity)]))! + as BuiltList); break; case 'isChanged': result.isChanged = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'created_at': result.createdAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'updated_at': result.updatedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'archived_at': result.archivedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'is_deleted': result.isDeleted = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'user_id': result.createdUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'assigned_user_id': result.assignedUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -558,10 +562,10 @@ class _$ClientContactEntitySerializer final String wireName = 'ClientContactEntity'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, ClientContactEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'first_name', serializers.serialize(object.firstName, specifiedType: const FullType(String)), @@ -615,7 +619,7 @@ class _$ClientContactEntitySerializer 'id', serializers.serialize(object.id, specifiedType: const FullType(String)), ]; - Object value; + Object? value; value = object.isChanged; if (value != null) { result @@ -649,103 +653,103 @@ class _$ClientContactEntitySerializer @override ClientContactEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ClientContactEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'first_name': result.firstName = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'last_name': result.lastName = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'email': result.email = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'password': result.password = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'phone': result.phone = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'contact_key': result.contactKey = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'is_primary': result.isPrimary = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'send_email': result.sendEmail = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'custom_value1': result.customValue1 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value2': result.customValue2 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value3': result.customValue3 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value4': result.customValue4 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'last_login': result.lastLogin = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'link': result.link = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'isChanged': result.isChanged = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'created_at': result.createdAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'updated_at': result.updatedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'archived_at': result.archivedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'is_deleted': result.isDeleted = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'user_id': result.createdUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'assigned_user_id': result.assignedUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -759,10 +763,10 @@ class _$ClientListResponse extends ClientListResponse { final BuiltList data; factory _$ClientListResponse( - [void Function(ClientListResponseBuilder) updates]) => + [void Function(ClientListResponseBuilder)? updates]) => (new ClientListResponseBuilder()..update(updates))._build(); - _$ClientListResponse._({this.data}) : super._() { + _$ClientListResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull(data, r'ClientListResponse', 'data'); } @@ -781,10 +785,10 @@ class _$ClientListResponse extends ClientListResponse { return other is ClientListResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -801,12 +805,12 @@ class _$ClientListResponse extends ClientListResponse { class ClientListResponseBuilder implements Builder { - _$ClientListResponse _$v; + _$ClientListResponse? _$v; - ListBuilder _data; + ListBuilder? _data; ListBuilder get data => _$this._data ??= new ListBuilder(); - set data(ListBuilder data) => _$this._data = data; + set data(ListBuilder? data) => _$this._data = data; ClientListResponseBuilder(); @@ -826,7 +830,7 @@ class ClientListResponseBuilder } @override - void update(void Function(ClientListResponseBuilder) updates) { + void update(void Function(ClientListResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -838,7 +842,7 @@ class ClientListResponseBuilder try { _$result = _$v ?? new _$ClientListResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -858,10 +862,10 @@ class _$ClientItemResponse extends ClientItemResponse { final ClientEntity data; factory _$ClientItemResponse( - [void Function(ClientItemResponseBuilder) updates]) => + [void Function(ClientItemResponseBuilder)? updates]) => (new ClientItemResponseBuilder()..update(updates))._build(); - _$ClientItemResponse._({this.data}) : super._() { + _$ClientItemResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull(data, r'ClientItemResponse', 'data'); } @@ -880,10 +884,10 @@ class _$ClientItemResponse extends ClientItemResponse { return other is ClientItemResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -900,11 +904,11 @@ class _$ClientItemResponse extends ClientItemResponse { class ClientItemResponseBuilder implements Builder { - _$ClientItemResponse _$v; + _$ClientItemResponse? _$v; - ClientEntityBuilder _data; + ClientEntityBuilder? _data; ClientEntityBuilder get data => _$this._data ??= new ClientEntityBuilder(); - set data(ClientEntityBuilder data) => _$this._data = data; + set data(ClientEntityBuilder? data) => _$this._data = data; ClientItemResponseBuilder(); @@ -924,7 +928,7 @@ class ClientItemResponseBuilder } @override - void update(void Function(ClientItemResponseBuilder) updates) { + void update(void Function(ClientItemResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -936,7 +940,7 @@ class ClientItemResponseBuilder try { _$result = _$v ?? new _$ClientItemResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -955,7 +959,7 @@ class _$ClientEntity extends ClientEntity { @override final String groupId; @override - final int loadedAt; + final int? loadedAt; @override final String name; @override @@ -1033,7 +1037,7 @@ class _$ClientEntity extends ClientEntity { @override final String classification; @override - final BuiltList contacts; + final BuiltList contacts; @override final BuiltList activities; @override @@ -1045,7 +1049,7 @@ class _$ClientEntity extends ClientEntity { @override final BuiltList systemLogs; @override - final bool isChanged; + final bool? isChanged; @override final int createdAt; @override @@ -1053,72 +1057,72 @@ class _$ClientEntity extends ClientEntity { @override final int archivedAt; @override - final bool isDeleted; + final bool? isDeleted; @override - final String createdUserId; + final String? createdUserId; @override - final String assignedUserId; + final String? assignedUserId; @override final String id; - factory _$ClientEntity([void Function(ClientEntityBuilder) updates]) => + factory _$ClientEntity([void Function(ClientEntityBuilder)? updates]) => (new ClientEntityBuilder()..update(updates))._build(); _$ClientEntity._( - {this.groupId, + {required this.groupId, this.loadedAt, - this.name, - this.displayName, - this.balance, - this.creditBalance, - this.paymentBalance, - this.paidToDate, - this.clientHash, - this.address1, - this.address2, - this.city, - this.state, - this.postalCode, - this.countryId, - this.phone, - this.privateNotes, - this.publicNotes, - this.website, - this.industryId, - this.sizeId, - this.vatNumber, - this.idNumber, - this.number, - this.shippingAddress1, - this.shippingAddress2, - this.shippingCity, - this.shippingState, - this.shippingPostalCode, - this.shippingCountryId, - this.settings, - this.lastLogin, - this.customValue1, - this.customValue2, - this.customValue3, - this.customValue4, - this.routingId, - this.isTaxExempt, - this.taxData, - this.classification, - this.contacts, - this.activities, - this.ledger, - this.gatewayTokens, - this.documents, - this.systemLogs, + required this.name, + required this.displayName, + required this.balance, + required this.creditBalance, + required this.paymentBalance, + required this.paidToDate, + required this.clientHash, + required this.address1, + required this.address2, + required this.city, + required this.state, + required this.postalCode, + required this.countryId, + required this.phone, + required this.privateNotes, + required this.publicNotes, + required this.website, + required this.industryId, + required this.sizeId, + required this.vatNumber, + required this.idNumber, + required this.number, + required this.shippingAddress1, + required this.shippingAddress2, + required this.shippingCity, + required this.shippingState, + required this.shippingPostalCode, + required this.shippingCountryId, + required this.settings, + required this.lastLogin, + required this.customValue1, + required this.customValue2, + required this.customValue3, + required this.customValue4, + required this.routingId, + required this.isTaxExempt, + required this.taxData, + required this.classification, + required this.contacts, + required this.activities, + required this.ledger, + required this.gatewayTokens, + required this.documents, + required this.systemLogs, this.isChanged, - this.createdAt, - this.updatedAt, - this.archivedAt, + required this.createdAt, + required this.updatedAt, + required this.archivedAt, this.isDeleted, this.createdUserId, this.assignedUserId, - this.id}) + required this.id}) : super._() { BuiltValueNullFieldError.checkNotNull(groupId, r'ClientEntity', 'groupId'); BuiltValueNullFieldError.checkNotNull(name, r'ClientEntity', 'name'); @@ -1274,10 +1278,10 @@ class _$ClientEntity extends ClientEntity { id == other.id; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, groupId.hashCode); _$hash = $jc(_$hash, name.hashCode); @@ -1399,246 +1403,246 @@ class _$ClientEntity extends ClientEntity { class ClientEntityBuilder implements Builder { - _$ClientEntity _$v; + _$ClientEntity? _$v; - String _groupId; - String get groupId => _$this._groupId; - set groupId(String groupId) => _$this._groupId = groupId; + String? _groupId; + String? get groupId => _$this._groupId; + set groupId(String? groupId) => _$this._groupId = groupId; - int _loadedAt; - int get loadedAt => _$this._loadedAt; - set loadedAt(int loadedAt) => _$this._loadedAt = loadedAt; + int? _loadedAt; + int? get loadedAt => _$this._loadedAt; + set loadedAt(int? loadedAt) => _$this._loadedAt = loadedAt; - String _name; - String get name => _$this._name; - set name(String name) => _$this._name = name; + String? _name; + String? get name => _$this._name; + set name(String? name) => _$this._name = name; - String _displayName; - String get displayName => _$this._displayName; - set displayName(String displayName) => _$this._displayName = displayName; + String? _displayName; + String? get displayName => _$this._displayName; + set displayName(String? displayName) => _$this._displayName = displayName; - double _balance; - double get balance => _$this._balance; - set balance(double balance) => _$this._balance = balance; + double? _balance; + double? get balance => _$this._balance; + set balance(double? balance) => _$this._balance = balance; - double _creditBalance; - double get creditBalance => _$this._creditBalance; - set creditBalance(double creditBalance) => + double? _creditBalance; + double? get creditBalance => _$this._creditBalance; + set creditBalance(double? creditBalance) => _$this._creditBalance = creditBalance; - double _paymentBalance; - double get paymentBalance => _$this._paymentBalance; - set paymentBalance(double paymentBalance) => + double? _paymentBalance; + double? get paymentBalance => _$this._paymentBalance; + set paymentBalance(double? paymentBalance) => _$this._paymentBalance = paymentBalance; - double _paidToDate; - double get paidToDate => _$this._paidToDate; - set paidToDate(double paidToDate) => _$this._paidToDate = paidToDate; + double? _paidToDate; + double? get paidToDate => _$this._paidToDate; + set paidToDate(double? paidToDate) => _$this._paidToDate = paidToDate; - String _clientHash; - String get clientHash => _$this._clientHash; - set clientHash(String clientHash) => _$this._clientHash = clientHash; + String? _clientHash; + String? get clientHash => _$this._clientHash; + set clientHash(String? clientHash) => _$this._clientHash = clientHash; - String _address1; - String get address1 => _$this._address1; - set address1(String address1) => _$this._address1 = address1; + String? _address1; + String? get address1 => _$this._address1; + set address1(String? address1) => _$this._address1 = address1; - String _address2; - String get address2 => _$this._address2; - set address2(String address2) => _$this._address2 = address2; + String? _address2; + String? get address2 => _$this._address2; + set address2(String? address2) => _$this._address2 = address2; - String _city; - String get city => _$this._city; - set city(String city) => _$this._city = city; + String? _city; + String? get city => _$this._city; + set city(String? city) => _$this._city = city; - String _state; - String get state => _$this._state; - set state(String state) => _$this._state = state; + String? _state; + String? get state => _$this._state; + set state(String? state) => _$this._state = state; - String _postalCode; - String get postalCode => _$this._postalCode; - set postalCode(String postalCode) => _$this._postalCode = postalCode; + String? _postalCode; + String? get postalCode => _$this._postalCode; + set postalCode(String? postalCode) => _$this._postalCode = postalCode; - String _countryId; - String get countryId => _$this._countryId; - set countryId(String countryId) => _$this._countryId = countryId; + String? _countryId; + String? get countryId => _$this._countryId; + set countryId(String? countryId) => _$this._countryId = countryId; - String _phone; - String get phone => _$this._phone; - set phone(String phone) => _$this._phone = phone; + String? _phone; + String? get phone => _$this._phone; + set phone(String? phone) => _$this._phone = phone; - String _privateNotes; - String get privateNotes => _$this._privateNotes; - set privateNotes(String privateNotes) => _$this._privateNotes = privateNotes; + String? _privateNotes; + String? get privateNotes => _$this._privateNotes; + set privateNotes(String? privateNotes) => _$this._privateNotes = privateNotes; - String _publicNotes; - String get publicNotes => _$this._publicNotes; - set publicNotes(String publicNotes) => _$this._publicNotes = publicNotes; + String? _publicNotes; + String? get publicNotes => _$this._publicNotes; + set publicNotes(String? publicNotes) => _$this._publicNotes = publicNotes; - String _website; - String get website => _$this._website; - set website(String website) => _$this._website = website; + String? _website; + String? get website => _$this._website; + set website(String? website) => _$this._website = website; - String _industryId; - String get industryId => _$this._industryId; - set industryId(String industryId) => _$this._industryId = industryId; + String? _industryId; + String? get industryId => _$this._industryId; + set industryId(String? industryId) => _$this._industryId = industryId; - String _sizeId; - String get sizeId => _$this._sizeId; - set sizeId(String sizeId) => _$this._sizeId = sizeId; + String? _sizeId; + String? get sizeId => _$this._sizeId; + set sizeId(String? sizeId) => _$this._sizeId = sizeId; - String _vatNumber; - String get vatNumber => _$this._vatNumber; - set vatNumber(String vatNumber) => _$this._vatNumber = vatNumber; + String? _vatNumber; + String? get vatNumber => _$this._vatNumber; + set vatNumber(String? vatNumber) => _$this._vatNumber = vatNumber; - String _idNumber; - String get idNumber => _$this._idNumber; - set idNumber(String idNumber) => _$this._idNumber = idNumber; + String? _idNumber; + String? get idNumber => _$this._idNumber; + set idNumber(String? idNumber) => _$this._idNumber = idNumber; - String _number; - String get number => _$this._number; - set number(String number) => _$this._number = number; + String? _number; + String? get number => _$this._number; + set number(String? number) => _$this._number = number; - String _shippingAddress1; - String get shippingAddress1 => _$this._shippingAddress1; - set shippingAddress1(String shippingAddress1) => + String? _shippingAddress1; + String? get shippingAddress1 => _$this._shippingAddress1; + set shippingAddress1(String? shippingAddress1) => _$this._shippingAddress1 = shippingAddress1; - String _shippingAddress2; - String get shippingAddress2 => _$this._shippingAddress2; - set shippingAddress2(String shippingAddress2) => + String? _shippingAddress2; + String? get shippingAddress2 => _$this._shippingAddress2; + set shippingAddress2(String? shippingAddress2) => _$this._shippingAddress2 = shippingAddress2; - String _shippingCity; - String get shippingCity => _$this._shippingCity; - set shippingCity(String shippingCity) => _$this._shippingCity = shippingCity; + String? _shippingCity; + String? get shippingCity => _$this._shippingCity; + set shippingCity(String? shippingCity) => _$this._shippingCity = shippingCity; - String _shippingState; - String get shippingState => _$this._shippingState; - set shippingState(String shippingState) => + String? _shippingState; + String? get shippingState => _$this._shippingState; + set shippingState(String? shippingState) => _$this._shippingState = shippingState; - String _shippingPostalCode; - String get shippingPostalCode => _$this._shippingPostalCode; - set shippingPostalCode(String shippingPostalCode) => + String? _shippingPostalCode; + String? get shippingPostalCode => _$this._shippingPostalCode; + set shippingPostalCode(String? shippingPostalCode) => _$this._shippingPostalCode = shippingPostalCode; - String _shippingCountryId; - String get shippingCountryId => _$this._shippingCountryId; - set shippingCountryId(String shippingCountryId) => + String? _shippingCountryId; + String? get shippingCountryId => _$this._shippingCountryId; + set shippingCountryId(String? shippingCountryId) => _$this._shippingCountryId = shippingCountryId; - SettingsEntityBuilder _settings; + SettingsEntityBuilder? _settings; SettingsEntityBuilder get settings => _$this._settings ??= new SettingsEntityBuilder(); - set settings(SettingsEntityBuilder settings) => _$this._settings = settings; + set settings(SettingsEntityBuilder? settings) => _$this._settings = settings; - int _lastLogin; - int get lastLogin => _$this._lastLogin; - set lastLogin(int lastLogin) => _$this._lastLogin = lastLogin; + int? _lastLogin; + int? get lastLogin => _$this._lastLogin; + set lastLogin(int? lastLogin) => _$this._lastLogin = lastLogin; - String _customValue1; - String get customValue1 => _$this._customValue1; - set customValue1(String customValue1) => _$this._customValue1 = customValue1; + String? _customValue1; + String? get customValue1 => _$this._customValue1; + set customValue1(String? customValue1) => _$this._customValue1 = customValue1; - String _customValue2; - String get customValue2 => _$this._customValue2; - set customValue2(String customValue2) => _$this._customValue2 = customValue2; + String? _customValue2; + String? get customValue2 => _$this._customValue2; + set customValue2(String? customValue2) => _$this._customValue2 = customValue2; - String _customValue3; - String get customValue3 => _$this._customValue3; - set customValue3(String customValue3) => _$this._customValue3 = customValue3; + String? _customValue3; + String? get customValue3 => _$this._customValue3; + set customValue3(String? customValue3) => _$this._customValue3 = customValue3; - String _customValue4; - String get customValue4 => _$this._customValue4; - set customValue4(String customValue4) => _$this._customValue4 = customValue4; + String? _customValue4; + String? get customValue4 => _$this._customValue4; + set customValue4(String? customValue4) => _$this._customValue4 = customValue4; - String _routingId; - String get routingId => _$this._routingId; - set routingId(String routingId) => _$this._routingId = routingId; + String? _routingId; + String? get routingId => _$this._routingId; + set routingId(String? routingId) => _$this._routingId = routingId; - bool _isTaxExempt; - bool get isTaxExempt => _$this._isTaxExempt; - set isTaxExempt(bool isTaxExempt) => _$this._isTaxExempt = isTaxExempt; + bool? _isTaxExempt; + bool? get isTaxExempt => _$this._isTaxExempt; + set isTaxExempt(bool? isTaxExempt) => _$this._isTaxExempt = isTaxExempt; - TaxDataEntityBuilder _taxData; + TaxDataEntityBuilder? _taxData; TaxDataEntityBuilder get taxData => _$this._taxData ??= new TaxDataEntityBuilder(); - set taxData(TaxDataEntityBuilder taxData) => _$this._taxData = taxData; + set taxData(TaxDataEntityBuilder? taxData) => _$this._taxData = taxData; - String _classification; - String get classification => _$this._classification; - set classification(String classification) => + String? _classification; + String? get classification => _$this._classification; + set classification(String? classification) => _$this._classification = classification; - ListBuilder _contacts; - ListBuilder get contacts => - _$this._contacts ??= new ListBuilder(); - set contacts(ListBuilder contacts) => + ListBuilder? _contacts; + ListBuilder get contacts => + _$this._contacts ??= new ListBuilder(); + set contacts(ListBuilder? contacts) => _$this._contacts = contacts; - ListBuilder _activities; + ListBuilder? _activities; ListBuilder get activities => _$this._activities ??= new ListBuilder(); - set activities(ListBuilder activities) => + set activities(ListBuilder? activities) => _$this._activities = activities; - ListBuilder _ledger; + ListBuilder? _ledger; ListBuilder get ledger => _$this._ledger ??= new ListBuilder(); - set ledger(ListBuilder ledger) => _$this._ledger = ledger; + set ledger(ListBuilder? ledger) => _$this._ledger = ledger; - ListBuilder _gatewayTokens; + ListBuilder? _gatewayTokens; ListBuilder get gatewayTokens => _$this._gatewayTokens ??= new ListBuilder(); - set gatewayTokens(ListBuilder gatewayTokens) => + set gatewayTokens(ListBuilder? gatewayTokens) => _$this._gatewayTokens = gatewayTokens; - ListBuilder _documents; + ListBuilder? _documents; ListBuilder get documents => _$this._documents ??= new ListBuilder(); - set documents(ListBuilder documents) => + set documents(ListBuilder? documents) => _$this._documents = documents; - ListBuilder _systemLogs; + ListBuilder? _systemLogs; ListBuilder get systemLogs => _$this._systemLogs ??= new ListBuilder(); - set systemLogs(ListBuilder systemLogs) => + set systemLogs(ListBuilder? systemLogs) => _$this._systemLogs = systemLogs; - bool _isChanged; - bool get isChanged => _$this._isChanged; - set isChanged(bool isChanged) => _$this._isChanged = isChanged; + bool? _isChanged; + bool? get isChanged => _$this._isChanged; + set isChanged(bool? isChanged) => _$this._isChanged = isChanged; - int _createdAt; - int get createdAt => _$this._createdAt; - set createdAt(int createdAt) => _$this._createdAt = createdAt; + int? _createdAt; + int? get createdAt => _$this._createdAt; + set createdAt(int? createdAt) => _$this._createdAt = createdAt; - int _updatedAt; - int get updatedAt => _$this._updatedAt; - set updatedAt(int updatedAt) => _$this._updatedAt = updatedAt; + int? _updatedAt; + int? get updatedAt => _$this._updatedAt; + set updatedAt(int? updatedAt) => _$this._updatedAt = updatedAt; - int _archivedAt; - int get archivedAt => _$this._archivedAt; - set archivedAt(int archivedAt) => _$this._archivedAt = archivedAt; + int? _archivedAt; + int? get archivedAt => _$this._archivedAt; + set archivedAt(int? archivedAt) => _$this._archivedAt = archivedAt; - bool _isDeleted; - bool get isDeleted => _$this._isDeleted; - set isDeleted(bool isDeleted) => _$this._isDeleted = isDeleted; + bool? _isDeleted; + bool? get isDeleted => _$this._isDeleted; + set isDeleted(bool? isDeleted) => _$this._isDeleted = isDeleted; - String _createdUserId; - String get createdUserId => _$this._createdUserId; - set createdUserId(String createdUserId) => + String? _createdUserId; + String? get createdUserId => _$this._createdUserId; + set createdUserId(String? createdUserId) => _$this._createdUserId = createdUserId; - String _assignedUserId; - String get assignedUserId => _$this._assignedUserId; - set assignedUserId(String assignedUserId) => + String? _assignedUserId; + String? get assignedUserId => _$this._assignedUserId; + set assignedUserId(String? assignedUserId) => _$this._assignedUserId = assignedUserId; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; ClientEntityBuilder() { ClientEntity._initializeBuilder(this); @@ -1713,7 +1717,7 @@ class ClientEntityBuilder } @override - void update(void Function(ClientEntityBuilder) updates) { + void update(void Function(ClientEntityBuilder)? updates) { if (updates != null) updates(this); } @@ -1788,7 +1792,7 @@ class ClientEntityBuilder assignedUserId: assignedUserId, id: BuiltValueNullFieldError.checkNotNull(id, r'ClientEntity', 'id')); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'settings'; settings.build(); @@ -1849,7 +1853,7 @@ class _$ClientContactEntity extends ClientContactEntity { @override final String link; @override - final bool isChanged; + final bool? isChanged; @override final int createdAt; @override @@ -1857,41 +1861,41 @@ class _$ClientContactEntity extends ClientContactEntity { @override final int archivedAt; @override - final bool isDeleted; + final bool? isDeleted; @override - final String createdUserId; + final String? createdUserId; @override - final String assignedUserId; + final String? assignedUserId; @override final String id; factory _$ClientContactEntity( - [void Function(ClientContactEntityBuilder) updates]) => + [void Function(ClientContactEntityBuilder)? updates]) => (new ClientContactEntityBuilder()..update(updates))._build(); _$ClientContactEntity._( - {this.firstName, - this.lastName, - this.email, - this.password, - this.phone, - this.contactKey, - this.isPrimary, - this.sendEmail, - this.customValue1, - this.customValue2, - this.customValue3, - this.customValue4, - this.lastLogin, - this.link, + {required this.firstName, + required this.lastName, + required this.email, + required this.password, + required this.phone, + required this.contactKey, + required this.isPrimary, + required this.sendEmail, + required this.customValue1, + required this.customValue2, + required this.customValue3, + required this.customValue4, + required this.lastLogin, + required this.link, this.isChanged, - this.createdAt, - this.updatedAt, - this.archivedAt, + required this.createdAt, + required this.updatedAt, + required this.archivedAt, this.isDeleted, this.createdUserId, this.assignedUserId, - this.id}) + required this.id}) : super._() { BuiltValueNullFieldError.checkNotNull( firstName, r'ClientContactEntity', 'firstName'); @@ -1966,10 +1970,10 @@ class _$ClientContactEntity extends ClientContactEntity { id == other.id; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, firstName.hashCode); _$hash = $jc(_$hash, lastName.hashCode); @@ -2028,97 +2032,97 @@ class _$ClientContactEntity extends ClientContactEntity { class ClientContactEntityBuilder implements Builder { - _$ClientContactEntity _$v; + _$ClientContactEntity? _$v; - String _firstName; - String get firstName => _$this._firstName; - set firstName(String firstName) => _$this._firstName = firstName; + String? _firstName; + String? get firstName => _$this._firstName; + set firstName(String? firstName) => _$this._firstName = firstName; - String _lastName; - String get lastName => _$this._lastName; - set lastName(String lastName) => _$this._lastName = lastName; + String? _lastName; + String? get lastName => _$this._lastName; + set lastName(String? lastName) => _$this._lastName = lastName; - String _email; - String get email => _$this._email; - set email(String email) => _$this._email = email; + String? _email; + String? get email => _$this._email; + set email(String? email) => _$this._email = email; - String _password; - String get password => _$this._password; - set password(String password) => _$this._password = password; + String? _password; + String? get password => _$this._password; + set password(String? password) => _$this._password = password; - String _phone; - String get phone => _$this._phone; - set phone(String phone) => _$this._phone = phone; + String? _phone; + String? get phone => _$this._phone; + set phone(String? phone) => _$this._phone = phone; - String _contactKey; - String get contactKey => _$this._contactKey; - set contactKey(String contactKey) => _$this._contactKey = contactKey; + String? _contactKey; + String? get contactKey => _$this._contactKey; + set contactKey(String? contactKey) => _$this._contactKey = contactKey; - bool _isPrimary; - bool get isPrimary => _$this._isPrimary; - set isPrimary(bool isPrimary) => _$this._isPrimary = isPrimary; + bool? _isPrimary; + bool? get isPrimary => _$this._isPrimary; + set isPrimary(bool? isPrimary) => _$this._isPrimary = isPrimary; - bool _sendEmail; - bool get sendEmail => _$this._sendEmail; - set sendEmail(bool sendEmail) => _$this._sendEmail = sendEmail; + bool? _sendEmail; + bool? get sendEmail => _$this._sendEmail; + set sendEmail(bool? sendEmail) => _$this._sendEmail = sendEmail; - String _customValue1; - String get customValue1 => _$this._customValue1; - set customValue1(String customValue1) => _$this._customValue1 = customValue1; + String? _customValue1; + String? get customValue1 => _$this._customValue1; + set customValue1(String? customValue1) => _$this._customValue1 = customValue1; - String _customValue2; - String get customValue2 => _$this._customValue2; - set customValue2(String customValue2) => _$this._customValue2 = customValue2; + String? _customValue2; + String? get customValue2 => _$this._customValue2; + set customValue2(String? customValue2) => _$this._customValue2 = customValue2; - String _customValue3; - String get customValue3 => _$this._customValue3; - set customValue3(String customValue3) => _$this._customValue3 = customValue3; + String? _customValue3; + String? get customValue3 => _$this._customValue3; + set customValue3(String? customValue3) => _$this._customValue3 = customValue3; - String _customValue4; - String get customValue4 => _$this._customValue4; - set customValue4(String customValue4) => _$this._customValue4 = customValue4; + String? _customValue4; + String? get customValue4 => _$this._customValue4; + set customValue4(String? customValue4) => _$this._customValue4 = customValue4; - int _lastLogin; - int get lastLogin => _$this._lastLogin; - set lastLogin(int lastLogin) => _$this._lastLogin = lastLogin; + int? _lastLogin; + int? get lastLogin => _$this._lastLogin; + set lastLogin(int? lastLogin) => _$this._lastLogin = lastLogin; - String _link; - String get link => _$this._link; - set link(String link) => _$this._link = link; + String? _link; + String? get link => _$this._link; + set link(String? link) => _$this._link = link; - bool _isChanged; - bool get isChanged => _$this._isChanged; - set isChanged(bool isChanged) => _$this._isChanged = isChanged; + bool? _isChanged; + bool? get isChanged => _$this._isChanged; + set isChanged(bool? isChanged) => _$this._isChanged = isChanged; - int _createdAt; - int get createdAt => _$this._createdAt; - set createdAt(int createdAt) => _$this._createdAt = createdAt; + int? _createdAt; + int? get createdAt => _$this._createdAt; + set createdAt(int? createdAt) => _$this._createdAt = createdAt; - int _updatedAt; - int get updatedAt => _$this._updatedAt; - set updatedAt(int updatedAt) => _$this._updatedAt = updatedAt; + int? _updatedAt; + int? get updatedAt => _$this._updatedAt; + set updatedAt(int? updatedAt) => _$this._updatedAt = updatedAt; - int _archivedAt; - int get archivedAt => _$this._archivedAt; - set archivedAt(int archivedAt) => _$this._archivedAt = archivedAt; + int? _archivedAt; + int? get archivedAt => _$this._archivedAt; + set archivedAt(int? archivedAt) => _$this._archivedAt = archivedAt; - bool _isDeleted; - bool get isDeleted => _$this._isDeleted; - set isDeleted(bool isDeleted) => _$this._isDeleted = isDeleted; + bool? _isDeleted; + bool? get isDeleted => _$this._isDeleted; + set isDeleted(bool? isDeleted) => _$this._isDeleted = isDeleted; - String _createdUserId; - String get createdUserId => _$this._createdUserId; - set createdUserId(String createdUserId) => + String? _createdUserId; + String? get createdUserId => _$this._createdUserId; + set createdUserId(String? createdUserId) => _$this._createdUserId = createdUserId; - String _assignedUserId; - String get assignedUserId => _$this._assignedUserId; - set assignedUserId(String assignedUserId) => + String? _assignedUserId; + String? get assignedUserId => _$this._assignedUserId; + set assignedUserId(String? assignedUserId) => _$this._assignedUserId = assignedUserId; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; ClientContactEntityBuilder(); @@ -2159,7 +2163,7 @@ class ClientContactEntityBuilder } @override - void update(void Function(ClientContactEntityBuilder) updates) { + void update(void Function(ClientContactEntityBuilder)? updates) { if (updates != null) updates(this); } diff --git a/lib/data/models/company_gateway_model.dart b/lib/data/models/company_gateway_model.dart index 6a4af562a..a1f56300e 100644 --- a/lib/data/models/company_gateway_model.dart +++ b/lib/data/models/company_gateway_model.dart @@ -62,7 +62,7 @@ class CompanyGatewayFields { abstract class CompanyGatewayEntity extends Object with BaseEntity, SelectableEntity implements Built { - factory CompanyGatewayEntity({String id, AppState state}) { + factory CompanyGatewayEntity({String? id, AppState? state}) { return _$CompanyGatewayEntity._( id: id ?? BaseEntity.nextId, isChanged: false, @@ -106,18 +106,17 @@ abstract class CompanyGatewayEntity extends Object @memoized int get hashCode; - @nullable @BuiltValueField(compare: false) - int get loadedAt; + int? get loadedAt; - bool get isLoaded => loadedAt != null && loadedAt > 0; + bool get isLoaded => loadedAt != null && loadedAt! > 0; bool get isStale { if (!isLoaded) { return true; } - return DateTime.now().millisecondsSinceEpoch - loadedAt > + return DateTime.now().millisecondsSinceEpoch - loadedAt! > kMillisecondsToRefreshActivities; } @@ -141,9 +140,9 @@ abstract class CompanyGatewayEntity extends Object @BuiltValueField(wireName: 'require_client_name') bool get requireClientName; - @nullable // TODO remove nullable + // TODO remove nullable @BuiltValueField(wireName: 'require_postal_code') - bool get requirePostalCode; + bool? get requirePostalCode; @BuiltValueField(wireName: 'require_client_phone') bool get requireClientPhone; @@ -173,7 +172,7 @@ abstract class CompanyGatewayEntity extends Object bool get updateDetails; @BuiltValueField(wireName: 'fees_and_limits') - BuiltMap get feesAndLimitsMap; + BuiltMap get feesAndLimitsMap; @BuiltValueField(wireName: 'system_logs') BuiltList get systemLogs; @@ -200,15 +199,15 @@ abstract class CompanyGatewayEntity extends Object String get label; - Map get parsedConfig => + Map? get parsedConfig => config.isEmpty ? {} : jsonDecode(config); - FeesAndLimitsSettings getSettingsForGatewayTypeId(String gatewayTypeId) => + FeesAndLimitsSettings getSettingsForGatewayTypeId(String? gatewayTypeId) => feesAndLimitsMap[gatewayTypeId] ?? FeesAndLimitsSettings(); @override String get listDisplayName => - (gatewayId == kGatewayCustom ? parsedConfig['name'] : label) ?? label; + (gatewayId == kGatewayCustom ? parsedConfig!['name'] : label) ?? label; bool get isCustom => gatewayId == kGatewayCustom; @@ -217,36 +216,36 @@ abstract class CompanyGatewayEntity extends Object return true; } - final accountId = (parsedConfig['account_id'] ?? '').toString(); + final accountId = (parsedConfig!['account_id'] ?? '').toString(); return accountId.isNotEmpty; } bool supportsCard(int cardType) => acceptedCreditCards & cardType > 0; - CompanyGatewayEntity addCard(int cardType) => - rebuild((b) => b..acceptedCreditCards = acceptedCreditCards | cardType); + CompanyGatewayEntity addCard(int? cardType) => + rebuild((b) => b..acceptedCreditCards = acceptedCreditCards | cardType!); - CompanyGatewayEntity removeCard(int cardType) => - rebuild((b) => b..acceptedCreditCards = acceptedCreditCards ^ cardType); + CompanyGatewayEntity removeCard(int? cardType) => + rebuild((b) => b..acceptedCreditCards = acceptedCreditCards ^ cardType!); CompanyGatewayEntity updateConfig(String field, dynamic value) { final updatedConfig = parsedConfig; if (value.runtimeType == String && value == '') { - updatedConfig.remove(field); + updatedConfig!.remove(field); } else { - updatedConfig[field] = value; + updatedConfig![field] = value; } return rebuild((b) => b..config = jsonEncode(updatedConfig)); } - int compareTo(CompanyGatewayEntity companyGateway, String sortField, + int compareTo(CompanyGatewayEntity? companyGateway, String sortField, bool sortAscending) => 0; @override - bool matchesFilter(String filter) { + bool matchesFilter(String? filter) { return matchesStrings( haystacks: [ label, @@ -260,7 +259,7 @@ abstract class CompanyGatewayEntity extends Object } @override - String matchesFilterValue(String filter) { + String? matchesFilterValue(String? filter) { return matchesStringsValue( haystacks: [ customValue1, @@ -273,15 +272,15 @@ abstract class CompanyGatewayEntity extends Object } @override - List getActions( - {UserCompanyEntity userCompany, - ClientEntity client, + List getActions( + {UserCompanyEntity? userCompany, + ClientEntity? client, bool includeEdit = false, bool includePreview = false, bool multiselect = false}) { - final actions = []; + final actions = []; - if (!isDeleted && !multiselect && userCompany.canEditEntity(this)) { + if (!isDeleted! && !multiselect && userCompany!.canEditEntity(this)) { if (includeEdit) { actions.add(EntityAction.edit); } @@ -299,10 +298,10 @@ abstract class CompanyGatewayEntity extends Object } @override - double get listDisplayAmount => null; + double? get listDisplayAmount => null; @override - FormatNumberType get listDisplayAmountType => null; + FormatNumberType? get listDisplayAmountType => null; // ignore: unused_element static void _initializeBuilder(CompanyGatewayEntityBuilder builder) => builder @@ -317,7 +316,7 @@ abstract class CompanyGatewayEntity extends Object abstract class FeesAndLimitsSettings implements Built { - factory FeesAndLimitsSettings({String id, bool isEnabled}) { + factory FeesAndLimitsSettings({String? id, bool? isEnabled}) { return _$FeesAndLimitsSettings._( maxLimit: -1, minLimit: -1, diff --git a/lib/data/models/company_gateway_model.g.dart b/lib/data/models/company_gateway_model.g.dart index c9422f9f7..be9ecbf0c 100644 --- a/lib/data/models/company_gateway_model.g.dart +++ b/lib/data/models/company_gateway_model.g.dart @@ -26,10 +26,10 @@ class _$CompanyGatewayListResponseSerializer final String wireName = 'CompanyGatewayListResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, CompanyGatewayListResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType( @@ -41,21 +41,21 @@ class _$CompanyGatewayListResponseSerializer @override CompanyGatewayListResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new CompanyGatewayListResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(CompanyGatewayEntity)])) - as BuiltList); + BuiltList, const [const FullType(CompanyGatewayEntity)]))! + as BuiltList); break; } } @@ -75,10 +75,10 @@ class _$CompanyGatewayItemResponseSerializer final String wireName = 'CompanyGatewayItemResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, CompanyGatewayItemResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType(CompanyGatewayEntity)), @@ -89,19 +89,19 @@ class _$CompanyGatewayItemResponseSerializer @override CompanyGatewayItemResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new CompanyGatewayItemResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, - specifiedType: const FullType(CompanyGatewayEntity)) + specifiedType: const FullType(CompanyGatewayEntity))! as CompanyGatewayEntity); break; } @@ -122,10 +122,10 @@ class _$CompanyGatewayEntitySerializer final String wireName = 'CompanyGatewayEntity'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, CompanyGatewayEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'gateway_key', serializers.serialize(object.gatewayId, specifiedType: const FullType(String)), @@ -171,7 +171,7 @@ class _$CompanyGatewayEntitySerializer 'fees_and_limits', serializers.serialize(object.feesAndLimitsMap, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), + const FullType.nullable(String), const FullType(FeesAndLimitsSettings) ])), 'system_logs', @@ -214,7 +214,7 @@ class _$CompanyGatewayEntitySerializer 'id', serializers.serialize(object.id, specifiedType: const FullType(String)), ]; - Object value; + Object? value; value = object.loadedAt; if (value != null) { result @@ -261,156 +261,156 @@ class _$CompanyGatewayEntitySerializer @override CompanyGatewayEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new CompanyGatewayEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'loadedAt': result.loadedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int)) as int?; break; case 'gateway_key': result.gatewayId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'accepted_credit_cards': result.acceptedCreditCards = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'require_shipping_address': result.requireShippingAddress = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'require_billing_address': result.requireBillingAddress = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'require_client_name': result.requireClientName = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'require_postal_code': result.requirePostalCode = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'require_client_phone': result.requireClientPhone = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'require_contact_name': result.requireContactName = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'require_contact_email': result.requireContactEmail = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'require_custom_value1': result.requireCustomValue1 = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'require_custom_value2': result.requireCustomValue2 = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'require_custom_value3': result.requireCustomValue3 = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'require_custom_value4': result.requireCustomValue4 = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'require_cvv': result.requireCvv = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'update_details': result.updateDetails = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'fees_and_limits': result.feesAndLimitsMap.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), + const FullType.nullable(String), const FullType(FeesAndLimitsSettings) - ]))); + ]))!); break; case 'system_logs': result.systemLogs.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(SystemLogEntity)])) - as BuiltList); + BuiltList, const [const FullType(SystemLogEntity)]))! + as BuiltList); break; case 'custom_value1': result.customValue1 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value2': result.customValue2 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value3': result.customValue3 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value4': result.customValue4 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'config': result.config = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'token_billing': result.tokenBilling = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'test_mode': result.isTestMode = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'label': result.label = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'isChanged': result.isChanged = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'created_at': result.createdAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'updated_at': result.updatedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'archived_at': result.archivedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'is_deleted': result.isDeleted = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'user_id': result.createdUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'assigned_user_id': result.assignedUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -430,10 +430,10 @@ class _$FeesAndLimitsSettingsSerializer final String wireName = 'FeesAndLimitsSettings'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, FeesAndLimitsSettings object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'min_limit', serializers.serialize(object.minLimit, specifiedType: const FullType(double)), @@ -480,67 +480,67 @@ class _$FeesAndLimitsSettingsSerializer @override FeesAndLimitsSettings deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new FeesAndLimitsSettingsBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'min_limit': result.minLimit = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'max_limit': result.maxLimit = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'fee_amount': result.feeAmount = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'fee_percent': result.feePercent = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'fee_cap': result.feeCap = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'fee_tax_rate1': result.taxRate1 = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'fee_tax_name1': result.taxName1 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'fee_tax_rate2': result.taxRate2 = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'fee_tax_name2': result.taxName2 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'fee_tax_rate3': result.taxRate3 = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'fee_tax_name3': result.taxName3 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'adjust_fee_percent': result.adjustFeePercent = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'is_enabled': result.isEnabled = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; } } @@ -554,10 +554,10 @@ class _$CompanyGatewayListResponse extends CompanyGatewayListResponse { final BuiltList data; factory _$CompanyGatewayListResponse( - [void Function(CompanyGatewayListResponseBuilder) updates]) => + [void Function(CompanyGatewayListResponseBuilder)? updates]) => (new CompanyGatewayListResponseBuilder()..update(updates))._build(); - _$CompanyGatewayListResponse._({this.data}) : super._() { + _$CompanyGatewayListResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull( data, r'CompanyGatewayListResponse', 'data'); } @@ -577,10 +577,10 @@ class _$CompanyGatewayListResponse extends CompanyGatewayListResponse { return other is CompanyGatewayListResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -598,12 +598,12 @@ class _$CompanyGatewayListResponse extends CompanyGatewayListResponse { class CompanyGatewayListResponseBuilder implements Builder { - _$CompanyGatewayListResponse _$v; + _$CompanyGatewayListResponse? _$v; - ListBuilder _data; + ListBuilder? _data; ListBuilder get data => _$this._data ??= new ListBuilder(); - set data(ListBuilder data) => _$this._data = data; + set data(ListBuilder? data) => _$this._data = data; CompanyGatewayListResponseBuilder(); @@ -623,7 +623,7 @@ class CompanyGatewayListResponseBuilder } @override - void update(void Function(CompanyGatewayListResponseBuilder) updates) { + void update(void Function(CompanyGatewayListResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -635,7 +635,7 @@ class CompanyGatewayListResponseBuilder try { _$result = _$v ?? new _$CompanyGatewayListResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -655,10 +655,10 @@ class _$CompanyGatewayItemResponse extends CompanyGatewayItemResponse { final CompanyGatewayEntity data; factory _$CompanyGatewayItemResponse( - [void Function(CompanyGatewayItemResponseBuilder) updates]) => + [void Function(CompanyGatewayItemResponseBuilder)? updates]) => (new CompanyGatewayItemResponseBuilder()..update(updates))._build(); - _$CompanyGatewayItemResponse._({this.data}) : super._() { + _$CompanyGatewayItemResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull( data, r'CompanyGatewayItemResponse', 'data'); } @@ -678,10 +678,10 @@ class _$CompanyGatewayItemResponse extends CompanyGatewayItemResponse { return other is CompanyGatewayItemResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -699,12 +699,12 @@ class _$CompanyGatewayItemResponse extends CompanyGatewayItemResponse { class CompanyGatewayItemResponseBuilder implements Builder { - _$CompanyGatewayItemResponse _$v; + _$CompanyGatewayItemResponse? _$v; - CompanyGatewayEntityBuilder _data; + CompanyGatewayEntityBuilder? _data; CompanyGatewayEntityBuilder get data => _$this._data ??= new CompanyGatewayEntityBuilder(); - set data(CompanyGatewayEntityBuilder data) => _$this._data = data; + set data(CompanyGatewayEntityBuilder? data) => _$this._data = data; CompanyGatewayItemResponseBuilder(); @@ -724,7 +724,7 @@ class CompanyGatewayItemResponseBuilder } @override - void update(void Function(CompanyGatewayItemResponseBuilder) updates) { + void update(void Function(CompanyGatewayItemResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -736,7 +736,7 @@ class CompanyGatewayItemResponseBuilder try { _$result = _$v ?? new _$CompanyGatewayItemResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -753,7 +753,7 @@ class CompanyGatewayItemResponseBuilder class _$CompanyGatewayEntity extends CompanyGatewayEntity { @override - final int loadedAt; + final int? loadedAt; @override final String gatewayId; @override @@ -765,7 +765,7 @@ class _$CompanyGatewayEntity extends CompanyGatewayEntity { @override final bool requireClientName; @override - final bool requirePostalCode; + final bool? requirePostalCode; @override final bool requireClientPhone; @override @@ -785,7 +785,7 @@ class _$CompanyGatewayEntity extends CompanyGatewayEntity { @override final bool updateDetails; @override - final BuiltMap feesAndLimitsMap; + final BuiltMap feesAndLimitsMap; @override final BuiltList systemLogs; @override @@ -805,7 +805,7 @@ class _$CompanyGatewayEntity extends CompanyGatewayEntity { @override final String label; @override - final bool isChanged; + final bool? isChanged; @override final int createdAt; @override @@ -813,53 +813,53 @@ class _$CompanyGatewayEntity extends CompanyGatewayEntity { @override final int archivedAt; @override - final bool isDeleted; + final bool? isDeleted; @override - final String createdUserId; + final String? createdUserId; @override - final String assignedUserId; + final String? assignedUserId; @override final String id; factory _$CompanyGatewayEntity( - [void Function(CompanyGatewayEntityBuilder) updates]) => + [void Function(CompanyGatewayEntityBuilder)? updates]) => (new CompanyGatewayEntityBuilder()..update(updates))._build(); _$CompanyGatewayEntity._( {this.loadedAt, - this.gatewayId, - this.acceptedCreditCards, - this.requireShippingAddress, - this.requireBillingAddress, - this.requireClientName, + required this.gatewayId, + required this.acceptedCreditCards, + required this.requireShippingAddress, + required this.requireBillingAddress, + required this.requireClientName, this.requirePostalCode, - this.requireClientPhone, - this.requireContactName, - this.requireContactEmail, - this.requireCustomValue1, - this.requireCustomValue2, - this.requireCustomValue3, - this.requireCustomValue4, - this.requireCvv, - this.updateDetails, - this.feesAndLimitsMap, - this.systemLogs, - this.customValue1, - this.customValue2, - this.customValue3, - this.customValue4, - this.config, - this.tokenBilling, - this.isTestMode, - this.label, + required this.requireClientPhone, + required this.requireContactName, + required this.requireContactEmail, + required this.requireCustomValue1, + required this.requireCustomValue2, + required this.requireCustomValue3, + required this.requireCustomValue4, + required this.requireCvv, + required this.updateDetails, + required this.feesAndLimitsMap, + required this.systemLogs, + required this.customValue1, + required this.customValue2, + required this.customValue3, + required this.customValue4, + required this.config, + required this.tokenBilling, + required this.isTestMode, + required this.label, this.isChanged, - this.createdAt, - this.updatedAt, - this.archivedAt, + required this.createdAt, + required this.updatedAt, + required this.archivedAt, this.isDeleted, this.createdUserId, this.assignedUserId, - this.id}) + required this.id}) : super._() { BuiltValueNullFieldError.checkNotNull( gatewayId, r'CompanyGatewayEntity', 'gatewayId'); @@ -966,10 +966,10 @@ class _$CompanyGatewayEntity extends CompanyGatewayEntity { id == other.id; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, gatewayId.hashCode); _$hash = $jc(_$hash, acceptedCreditCards.hashCode); @@ -1051,164 +1051,164 @@ class _$CompanyGatewayEntity extends CompanyGatewayEntity { class CompanyGatewayEntityBuilder implements Builder { - _$CompanyGatewayEntity _$v; + _$CompanyGatewayEntity? _$v; - int _loadedAt; - int get loadedAt => _$this._loadedAt; - set loadedAt(int loadedAt) => _$this._loadedAt = loadedAt; + int? _loadedAt; + int? get loadedAt => _$this._loadedAt; + set loadedAt(int? loadedAt) => _$this._loadedAt = loadedAt; - String _gatewayId; - String get gatewayId => _$this._gatewayId; - set gatewayId(String gatewayId) => _$this._gatewayId = gatewayId; + String? _gatewayId; + String? get gatewayId => _$this._gatewayId; + set gatewayId(String? gatewayId) => _$this._gatewayId = gatewayId; - int _acceptedCreditCards; - int get acceptedCreditCards => _$this._acceptedCreditCards; - set acceptedCreditCards(int acceptedCreditCards) => + int? _acceptedCreditCards; + int? get acceptedCreditCards => _$this._acceptedCreditCards; + set acceptedCreditCards(int? acceptedCreditCards) => _$this._acceptedCreditCards = acceptedCreditCards; - bool _requireShippingAddress; - bool get requireShippingAddress => _$this._requireShippingAddress; - set requireShippingAddress(bool requireShippingAddress) => + bool? _requireShippingAddress; + bool? get requireShippingAddress => _$this._requireShippingAddress; + set requireShippingAddress(bool? requireShippingAddress) => _$this._requireShippingAddress = requireShippingAddress; - bool _requireBillingAddress; - bool get requireBillingAddress => _$this._requireBillingAddress; - set requireBillingAddress(bool requireBillingAddress) => + bool? _requireBillingAddress; + bool? get requireBillingAddress => _$this._requireBillingAddress; + set requireBillingAddress(bool? requireBillingAddress) => _$this._requireBillingAddress = requireBillingAddress; - bool _requireClientName; - bool get requireClientName => _$this._requireClientName; - set requireClientName(bool requireClientName) => + bool? _requireClientName; + bool? get requireClientName => _$this._requireClientName; + set requireClientName(bool? requireClientName) => _$this._requireClientName = requireClientName; - bool _requirePostalCode; - bool get requirePostalCode => _$this._requirePostalCode; - set requirePostalCode(bool requirePostalCode) => + bool? _requirePostalCode; + bool? get requirePostalCode => _$this._requirePostalCode; + set requirePostalCode(bool? requirePostalCode) => _$this._requirePostalCode = requirePostalCode; - bool _requireClientPhone; - bool get requireClientPhone => _$this._requireClientPhone; - set requireClientPhone(bool requireClientPhone) => + bool? _requireClientPhone; + bool? get requireClientPhone => _$this._requireClientPhone; + set requireClientPhone(bool? requireClientPhone) => _$this._requireClientPhone = requireClientPhone; - bool _requireContactName; - bool get requireContactName => _$this._requireContactName; - set requireContactName(bool requireContactName) => + bool? _requireContactName; + bool? get requireContactName => _$this._requireContactName; + set requireContactName(bool? requireContactName) => _$this._requireContactName = requireContactName; - bool _requireContactEmail; - bool get requireContactEmail => _$this._requireContactEmail; - set requireContactEmail(bool requireContactEmail) => + bool? _requireContactEmail; + bool? get requireContactEmail => _$this._requireContactEmail; + set requireContactEmail(bool? requireContactEmail) => _$this._requireContactEmail = requireContactEmail; - bool _requireCustomValue1; - bool get requireCustomValue1 => _$this._requireCustomValue1; - set requireCustomValue1(bool requireCustomValue1) => + bool? _requireCustomValue1; + bool? get requireCustomValue1 => _$this._requireCustomValue1; + set requireCustomValue1(bool? requireCustomValue1) => _$this._requireCustomValue1 = requireCustomValue1; - bool _requireCustomValue2; - bool get requireCustomValue2 => _$this._requireCustomValue2; - set requireCustomValue2(bool requireCustomValue2) => + bool? _requireCustomValue2; + bool? get requireCustomValue2 => _$this._requireCustomValue2; + set requireCustomValue2(bool? requireCustomValue2) => _$this._requireCustomValue2 = requireCustomValue2; - bool _requireCustomValue3; - bool get requireCustomValue3 => _$this._requireCustomValue3; - set requireCustomValue3(bool requireCustomValue3) => + bool? _requireCustomValue3; + bool? get requireCustomValue3 => _$this._requireCustomValue3; + set requireCustomValue3(bool? requireCustomValue3) => _$this._requireCustomValue3 = requireCustomValue3; - bool _requireCustomValue4; - bool get requireCustomValue4 => _$this._requireCustomValue4; - set requireCustomValue4(bool requireCustomValue4) => + bool? _requireCustomValue4; + bool? get requireCustomValue4 => _$this._requireCustomValue4; + set requireCustomValue4(bool? requireCustomValue4) => _$this._requireCustomValue4 = requireCustomValue4; - bool _requireCvv; - bool get requireCvv => _$this._requireCvv; - set requireCvv(bool requireCvv) => _$this._requireCvv = requireCvv; + bool? _requireCvv; + bool? get requireCvv => _$this._requireCvv; + set requireCvv(bool? requireCvv) => _$this._requireCvv = requireCvv; - bool _updateDetails; - bool get updateDetails => _$this._updateDetails; - set updateDetails(bool updateDetails) => + bool? _updateDetails; + bool? get updateDetails => _$this._updateDetails; + set updateDetails(bool? updateDetails) => _$this._updateDetails = updateDetails; - MapBuilder _feesAndLimitsMap; - MapBuilder get feesAndLimitsMap => + MapBuilder? _feesAndLimitsMap; + MapBuilder get feesAndLimitsMap => _$this._feesAndLimitsMap ??= - new MapBuilder(); + new MapBuilder(); set feesAndLimitsMap( - MapBuilder feesAndLimitsMap) => + MapBuilder? feesAndLimitsMap) => _$this._feesAndLimitsMap = feesAndLimitsMap; - ListBuilder _systemLogs; + ListBuilder? _systemLogs; ListBuilder get systemLogs => _$this._systemLogs ??= new ListBuilder(); - set systemLogs(ListBuilder systemLogs) => + set systemLogs(ListBuilder? systemLogs) => _$this._systemLogs = systemLogs; - String _customValue1; - String get customValue1 => _$this._customValue1; - set customValue1(String customValue1) => _$this._customValue1 = customValue1; + String? _customValue1; + String? get customValue1 => _$this._customValue1; + set customValue1(String? customValue1) => _$this._customValue1 = customValue1; - String _customValue2; - String get customValue2 => _$this._customValue2; - set customValue2(String customValue2) => _$this._customValue2 = customValue2; + String? _customValue2; + String? get customValue2 => _$this._customValue2; + set customValue2(String? customValue2) => _$this._customValue2 = customValue2; - String _customValue3; - String get customValue3 => _$this._customValue3; - set customValue3(String customValue3) => _$this._customValue3 = customValue3; + String? _customValue3; + String? get customValue3 => _$this._customValue3; + set customValue3(String? customValue3) => _$this._customValue3 = customValue3; - String _customValue4; - String get customValue4 => _$this._customValue4; - set customValue4(String customValue4) => _$this._customValue4 = customValue4; + String? _customValue4; + String? get customValue4 => _$this._customValue4; + set customValue4(String? customValue4) => _$this._customValue4 = customValue4; - String _config; - String get config => _$this._config; - set config(String config) => _$this._config = config; + String? _config; + String? get config => _$this._config; + set config(String? config) => _$this._config = config; - String _tokenBilling; - String get tokenBilling => _$this._tokenBilling; - set tokenBilling(String tokenBilling) => _$this._tokenBilling = tokenBilling; + String? _tokenBilling; + String? get tokenBilling => _$this._tokenBilling; + set tokenBilling(String? tokenBilling) => _$this._tokenBilling = tokenBilling; - bool _isTestMode; - bool get isTestMode => _$this._isTestMode; - set isTestMode(bool isTestMode) => _$this._isTestMode = isTestMode; + bool? _isTestMode; + bool? get isTestMode => _$this._isTestMode; + set isTestMode(bool? isTestMode) => _$this._isTestMode = isTestMode; - String _label; - String get label => _$this._label; - set label(String label) => _$this._label = label; + String? _label; + String? get label => _$this._label; + set label(String? label) => _$this._label = label; - bool _isChanged; - bool get isChanged => _$this._isChanged; - set isChanged(bool isChanged) => _$this._isChanged = isChanged; + bool? _isChanged; + bool? get isChanged => _$this._isChanged; + set isChanged(bool? isChanged) => _$this._isChanged = isChanged; - int _createdAt; - int get createdAt => _$this._createdAt; - set createdAt(int createdAt) => _$this._createdAt = createdAt; + int? _createdAt; + int? get createdAt => _$this._createdAt; + set createdAt(int? createdAt) => _$this._createdAt = createdAt; - int _updatedAt; - int get updatedAt => _$this._updatedAt; - set updatedAt(int updatedAt) => _$this._updatedAt = updatedAt; + int? _updatedAt; + int? get updatedAt => _$this._updatedAt; + set updatedAt(int? updatedAt) => _$this._updatedAt = updatedAt; - int _archivedAt; - int get archivedAt => _$this._archivedAt; - set archivedAt(int archivedAt) => _$this._archivedAt = archivedAt; + int? _archivedAt; + int? get archivedAt => _$this._archivedAt; + set archivedAt(int? archivedAt) => _$this._archivedAt = archivedAt; - bool _isDeleted; - bool get isDeleted => _$this._isDeleted; - set isDeleted(bool isDeleted) => _$this._isDeleted = isDeleted; + bool? _isDeleted; + bool? get isDeleted => _$this._isDeleted; + set isDeleted(bool? isDeleted) => _$this._isDeleted = isDeleted; - String _createdUserId; - String get createdUserId => _$this._createdUserId; - set createdUserId(String createdUserId) => + String? _createdUserId; + String? get createdUserId => _$this._createdUserId; + set createdUserId(String? createdUserId) => _$this._createdUserId = createdUserId; - String _assignedUserId; - String get assignedUserId => _$this._assignedUserId; - set assignedUserId(String assignedUserId) => + String? _assignedUserId; + String? get assignedUserId => _$this._assignedUserId; + set assignedUserId(String? assignedUserId) => _$this._assignedUserId = assignedUserId; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; CompanyGatewayEntityBuilder() { CompanyGatewayEntity._initializeBuilder(this); @@ -1263,7 +1263,7 @@ class CompanyGatewayEntityBuilder } @override - void update(void Function(CompanyGatewayEntityBuilder) updates) { + void update(void Function(CompanyGatewayEntityBuilder)? updates) { if (updates != null) updates(this); } @@ -1317,7 +1317,7 @@ class CompanyGatewayEntityBuilder assignedUserId: assignedUserId, id: BuiltValueNullFieldError.checkNotNull(id, r'CompanyGatewayEntity', 'id')); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'feesAndLimitsMap'; feesAndLimitsMap.build(); @@ -1363,23 +1363,23 @@ class _$FeesAndLimitsSettings extends FeesAndLimitsSettings { final bool isEnabled; factory _$FeesAndLimitsSettings( - [void Function(FeesAndLimitsSettingsBuilder) updates]) => + [void Function(FeesAndLimitsSettingsBuilder)? updates]) => (new FeesAndLimitsSettingsBuilder()..update(updates))._build(); _$FeesAndLimitsSettings._( - {this.minLimit, - this.maxLimit, - this.feeAmount, - this.feePercent, - this.feeCap, - this.taxRate1, - this.taxName1, - this.taxRate2, - this.taxName2, - this.taxRate3, - this.taxName3, - this.adjustFeePercent, - this.isEnabled}) + {required this.minLimit, + required this.maxLimit, + required this.feeAmount, + required this.feePercent, + required this.feeCap, + required this.taxRate1, + required this.taxName1, + required this.taxRate2, + required this.taxName2, + required this.taxRate3, + required this.taxName3, + required this.adjustFeePercent, + required this.isEnabled}) : super._() { BuiltValueNullFieldError.checkNotNull( minLimit, r'FeesAndLimitsSettings', 'minLimit'); @@ -1437,10 +1437,10 @@ class _$FeesAndLimitsSettings extends FeesAndLimitsSettings { isEnabled == other.isEnabled; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, minLimit.hashCode); _$hash = $jc(_$hash, maxLimit.hashCode); @@ -1481,60 +1481,60 @@ class _$FeesAndLimitsSettings extends FeesAndLimitsSettings { class FeesAndLimitsSettingsBuilder implements Builder { - _$FeesAndLimitsSettings _$v; + _$FeesAndLimitsSettings? _$v; - double _minLimit; - double get minLimit => _$this._minLimit; - set minLimit(double minLimit) => _$this._minLimit = minLimit; + double? _minLimit; + double? get minLimit => _$this._minLimit; + set minLimit(double? minLimit) => _$this._minLimit = minLimit; - double _maxLimit; - double get maxLimit => _$this._maxLimit; - set maxLimit(double maxLimit) => _$this._maxLimit = maxLimit; + double? _maxLimit; + double? get maxLimit => _$this._maxLimit; + set maxLimit(double? maxLimit) => _$this._maxLimit = maxLimit; - double _feeAmount; - double get feeAmount => _$this._feeAmount; - set feeAmount(double feeAmount) => _$this._feeAmount = feeAmount; + double? _feeAmount; + double? get feeAmount => _$this._feeAmount; + set feeAmount(double? feeAmount) => _$this._feeAmount = feeAmount; - double _feePercent; - double get feePercent => _$this._feePercent; - set feePercent(double feePercent) => _$this._feePercent = feePercent; + double? _feePercent; + double? get feePercent => _$this._feePercent; + set feePercent(double? feePercent) => _$this._feePercent = feePercent; - double _feeCap; - double get feeCap => _$this._feeCap; - set feeCap(double feeCap) => _$this._feeCap = feeCap; + double? _feeCap; + double? get feeCap => _$this._feeCap; + set feeCap(double? feeCap) => _$this._feeCap = feeCap; - double _taxRate1; - double get taxRate1 => _$this._taxRate1; - set taxRate1(double taxRate1) => _$this._taxRate1 = taxRate1; + double? _taxRate1; + double? get taxRate1 => _$this._taxRate1; + set taxRate1(double? taxRate1) => _$this._taxRate1 = taxRate1; - String _taxName1; - String get taxName1 => _$this._taxName1; - set taxName1(String taxName1) => _$this._taxName1 = taxName1; + String? _taxName1; + String? get taxName1 => _$this._taxName1; + set taxName1(String? taxName1) => _$this._taxName1 = taxName1; - double _taxRate2; - double get taxRate2 => _$this._taxRate2; - set taxRate2(double taxRate2) => _$this._taxRate2 = taxRate2; + double? _taxRate2; + double? get taxRate2 => _$this._taxRate2; + set taxRate2(double? taxRate2) => _$this._taxRate2 = taxRate2; - String _taxName2; - String get taxName2 => _$this._taxName2; - set taxName2(String taxName2) => _$this._taxName2 = taxName2; + String? _taxName2; + String? get taxName2 => _$this._taxName2; + set taxName2(String? taxName2) => _$this._taxName2 = taxName2; - double _taxRate3; - double get taxRate3 => _$this._taxRate3; - set taxRate3(double taxRate3) => _$this._taxRate3 = taxRate3; + double? _taxRate3; + double? get taxRate3 => _$this._taxRate3; + set taxRate3(double? taxRate3) => _$this._taxRate3 = taxRate3; - String _taxName3; - String get taxName3 => _$this._taxName3; - set taxName3(String taxName3) => _$this._taxName3 = taxName3; + String? _taxName3; + String? get taxName3 => _$this._taxName3; + set taxName3(String? taxName3) => _$this._taxName3 = taxName3; - bool _adjustFeePercent; - bool get adjustFeePercent => _$this._adjustFeePercent; - set adjustFeePercent(bool adjustFeePercent) => + bool? _adjustFeePercent; + bool? get adjustFeePercent => _$this._adjustFeePercent; + set adjustFeePercent(bool? adjustFeePercent) => _$this._adjustFeePercent = adjustFeePercent; - bool _isEnabled; - bool get isEnabled => _$this._isEnabled; - set isEnabled(bool isEnabled) => _$this._isEnabled = isEnabled; + bool? _isEnabled; + bool? get isEnabled => _$this._isEnabled; + set isEnabled(bool? isEnabled) => _$this._isEnabled = isEnabled; FeesAndLimitsSettingsBuilder() { FeesAndLimitsSettings._initializeBuilder(this); @@ -1568,7 +1568,7 @@ class FeesAndLimitsSettingsBuilder } @override - void update(void Function(FeesAndLimitsSettingsBuilder) updates) { + void update(void Function(FeesAndLimitsSettingsBuilder)? updates) { if (updates != null) updates(this); } diff --git a/lib/data/models/company_model.dart b/lib/data/models/company_model.dart index f7d4c7143..39d84f3de 100644 --- a/lib/data/models/company_model.dart +++ b/lib/data/models/company_model.dart @@ -490,7 +490,7 @@ abstract class CompanyEntity extends Object bool get isActive => true; @override - bool matchesFilter(String filter) { + bool matchesFilter(String? filter) { for (final user in users) { if (user.matchesFilter(filter)) { return true; @@ -514,7 +514,7 @@ abstract class CompanyEntity extends Object } @override - String matchesFilterValue(String filter) { + String? matchesFilterValue(String? filter) { for (final user in users) { final value = user.matchesFilterValue(filter); if (value != null) { @@ -541,10 +541,10 @@ abstract class CompanyEntity extends Object } @override - double get listDisplayAmount => null; + double? get listDisplayAmount => null; @override - FormatNumberType get listDisplayAmountType => null; + FormatNumberType? get listDisplayAmountType => null; @override String get listDisplayName => settings?.name ?? ''; @@ -625,15 +625,15 @@ abstract class CompanyEntity extends Object } if (customFields.containsKey(field)) { - return customFields[field].split('|').first; + return customFields[field]!.split('|').first; } else { return ''; } } - String getCustomFieldType(String field) { + String getCustomFieldType(String? field) { if ((customFields[field] ?? '').contains('|')) { - final value = customFields[field].split('|').last; + final value = customFields[field]!.split('|').last; if ([kFieldTypeSingleLineText, kFieldTypeDate, kFieldTypeSwitch] .contains(value)) { return value; @@ -646,14 +646,14 @@ abstract class CompanyEntity extends Object } String formatCustomFieldValue(String field, String value) { - final context = navigatorKey.currentContext; + final context = navigatorKey.currentContext!; final type = getCustomFieldType(field); final localization = AppLocalization.of(context); if (type == kFieldTypeDate) { value = formatDate(value, context); } else if (type == kFieldTypeSwitch) { - value = value == kSwitchValueYes ? localization.yes : localization.no; + value = value == kSwitchValueYes ? localization!.yes : localization!.no; } return getCustomFieldLabel(field) + ': $value'; @@ -705,7 +705,7 @@ abstract class CompanyEntity extends Object ..companyGateways.clear(), ); - bool isModuleEnabled(EntityType entityType) { + bool isModuleEnabled(EntityType? entityType) { if ((entityType == EntityType.invoice || entityType == EntityType.payment) && enabledModules & kModuleInvoices == 0) { @@ -860,13 +860,13 @@ abstract class GatewayEntity extends Object String get fields; bool get supportsTokenBilling => options.keys - .where((typeId) => options[typeId].supportTokenBilling) + .where((typeId) => options[typeId]!.supportTokenBilling) .isNotEmpty; bool supportsRefunds(String gatewayTypeId) => options[gatewayTypeId]?.supportRefunds ?? false; - Map get parsedFields => + Map? get parsedFields => fields.isEmpty ? {} : jsonDecode(fields); int compareTo(GatewayEntity gateway, String sortField, bool sortAscending) { @@ -887,7 +887,7 @@ abstract class GatewayEntity extends Object } @override - bool matchesFilter(String filter) { + bool matchesFilter(String? filter) { if (filter == null || filter.isEmpty) { return true; } @@ -906,11 +906,11 @@ abstract class GatewayEntity extends Object } final gatewayIds = options.keys.toList(); - final localization = AppLocalization.of(navigatorKey.currentContext); + final localization = AppLocalization.of(navigatorKey.currentContext!); for (var i = 0; i < gatewayIds.length; i++) { final gatewayTypeId = gatewayIds[i]; - final gatewayType = localization.lookup(kGatewayTypes[gatewayTypeId]); + final gatewayType = localization!.lookup(kGatewayTypes[gatewayTypeId])!; if (gatewayType.toLowerCase().contains(filter)) { return true; @@ -921,7 +921,7 @@ abstract class GatewayEntity extends Object } @override - String matchesFilterValue(String filter) { + String? matchesFilterValue(String? filter) { if (filter == null || filter.isEmpty) { return null; } @@ -934,11 +934,11 @@ abstract class GatewayEntity extends Object } final gatewayIds = options.keys.toList(); - final localization = AppLocalization.of(navigatorKey.currentContext); + final localization = AppLocalization.of(navigatorKey.currentContext!); for (var i = 0; i < gatewayIds.length; i++) { final gatewayTypeId = gatewayIds[i]; - final gatewayType = localization.lookup(kGatewayTypes[gatewayTypeId]); + final gatewayType = localization!.lookup(kGatewayTypes[gatewayTypeId])!; if (gatewayType.toLowerCase().contains(filter)) { return gatewayType; @@ -952,9 +952,9 @@ abstract class GatewayEntity extends Object String get listDisplayName => name; @override - double get listDisplayAmount => null; + double? get listDisplayAmount => null; - static String getClientUrl({String gatewayId, String customerReference}) { + static String? getClientUrl({String? gatewayId, String? customerReference}) { switch (gatewayId) { case kGatewayStripe: case kGatewayStripeConnect: @@ -964,11 +964,11 @@ abstract class GatewayEntity extends Object } } - static String getPaymentUrl({String gatewayId, String transactionReference}) { + static String? getPaymentUrl({String? gatewayId, String? transactionReference}) { switch (gatewayId) { case kGatewayStripe: case kGatewayStripeConnect: - if (transactionReference.startsWith('src')) + if (transactionReference!.startsWith('src')) return 'https://dashboard.stripe.com/sources/$transactionReference'; else return 'https://dashboard.stripe.com/payments/$transactionReference'; @@ -989,7 +989,7 @@ abstract class GatewayEntity extends Object } @override - FormatNumberType get listDisplayAmountType => null; + FormatNumberType? get listDisplayAmountType => null; // ignore: unused_element static void _initializeBuilder(GatewayEntityBuilder builder) => @@ -1019,8 +1019,7 @@ abstract class GatewayOptionsEntity @BuiltValueField(wireName: 'token_billing') bool get supportTokenBilling; - @nullable - BuiltList get webhooks; + BuiltList? get webhooks; static Serializer get serializer => _$gatewayOptionsEntitySerializer; @@ -1062,33 +1061,27 @@ abstract class UserCompanyEntity String get permissions; - @nullable - BuiltMap> get notifications; + BuiltMap>? get notifications; - @nullable - CompanyEntity get company; + CompanyEntity? get company; - @nullable - UserEntity get user; + UserEntity? get user; - @nullable - TokenEntity get token; + TokenEntity? get token; - @nullable - AccountEntity get account; + AccountEntity? get account; - @nullable - UserSettingsEntity get settings; + UserSettingsEntity? get settings; @BuiltValueField(wireName: 'ninja_portal_url') String get ninjaPortalUrl; - bool can(UserPermission permission, EntityType entityType) { + bool can(UserPermission permission, EntityType? entityType) { if (entityType == null) { return false; } - if (!company.isModuleEnabled(entityType)) { + if (!company!.isModuleEnabled(entityType)) { return false; } @@ -1105,20 +1098,20 @@ abstract class UserCompanyEntity } bool receivesAllNotifications(String channel) => - notifications.containsKey(channel) && - notifications[channel].contains(kNotificationsAll); + notifications!.containsKey(channel) && + notifications![channel]!.contains(kNotificationsAll); - bool canView(EntityType entityType) => can(UserPermission.view, entityType); + bool canView(EntityType? entityType) => can(UserPermission.view, entityType); - bool canEdit(EntityType entityType) => can(UserPermission.edit, entityType); + bool canEdit(EntityType? entityType) => can(UserPermission.edit, entityType); - bool canCreate(EntityType entityType) => + bool canCreate(EntityType? entityType) => can(UserPermission.create, entityType); - bool canViewCreateOrEdit(EntityType entityType) => + bool canViewCreateOrEdit(EntityType? entityType) => canView(entityType) || canCreate(entityType) || canEdit(entityType); - bool canEditEntity(BaseEntity entity) { + bool canEditEntity(BaseEntity? entity) { if (entity == null) { return false; } @@ -1126,7 +1119,7 @@ abstract class UserCompanyEntity if (entity.isNew) { return canCreate(entity.entityType); } else { - return canEdit(entity.entityType) || user.canEdit(entity); + return canEdit(entity.entityType) || user!.canEdit(entity); } } @@ -1194,9 +1187,8 @@ abstract class UserSettingsEntity @memoized int get hashCode; - @nullable @BuiltValueField(wireName: 'accent_color') - String get accentColor; + String? get accentColor; @BuiltValueField(wireName: 'table_columns') BuiltMap> get tableColumns; @@ -1219,20 +1211,20 @@ abstract class UserSettingsEntity @BuiltValueField(wireName: 'dashboard_fields_per_row_desktop') int get dashboardFieldsPerRowDesktop; - List getTableColumns(EntityType entityType) { + List? getTableColumns(EntityType entityType) { if (tableColumns != null && tableColumns.containsKey('$entityType')) { - return tableColumns['$entityType'].toList(); + return tableColumns['$entityType']!.toList(); } else { return null; } } - String get validatedAccentColor { + String? get validatedAccentColor { if ((accentColor ?? '').isEmpty) { return kDefaultAccentColor; } - if (accentColor.toLowerCase() == '#ffffff') { + if (accentColor!.toLowerCase() == '#ffffff') { return kDefaultAccentColor; } @@ -1270,10 +1262,10 @@ abstract class UserSettingsEntity abstract class ReportSettingsEntity implements Built { factory ReportSettingsEntity({ - String sortColumn, - bool sortAscending, - int sortTotalsIndex, - bool sortTotalsAscending, + String? sortColumn, + bool? sortAscending, + int? sortTotalsIndex, + bool? sortTotalsAscending, }) { return _$ReportSettingsEntity._( sortColumn: sortColumn ?? '', @@ -1380,9 +1372,9 @@ abstract class RegistrationFieldEntity abstract class DashboardField implements Built { factory DashboardField({ - String field, - String period, - String type, + String? field, + String? period, + String? type, }) { return _$DashboardField._( field: field ?? '', diff --git a/lib/data/models/company_model.g.dart b/lib/data/models/company_model.g.dart index 2d828d126..05f53c724 100644 --- a/lib/data/models/company_model.g.dart +++ b/lib/data/models/company_model.g.dart @@ -32,9 +32,9 @@ class _$CompanyEntitySerializer implements StructuredSerializer { final String wireName = 'CompanyEntity'; @override - Iterable serialize(Serializers serializers, CompanyEntity object, + Iterable serialize(Serializers serializers, CompanyEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'custom_surcharge_taxes1', serializers.serialize(object.enableCustomSurchargeTaxes1, specifiedType: const FullType(bool)), @@ -407,7 +407,7 @@ class _$CompanyEntitySerializer implements StructuredSerializer { 'id', serializers.serialize(object.id, specifiedType: const FullType(String)), ]; - Object value; + Object? value; value = object.isChanged; if (value != null) { result @@ -448,552 +448,553 @@ class _$CompanyEntitySerializer implements StructuredSerializer { @override CompanyEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new CompanyEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'custom_surcharge_taxes1': result.enableCustomSurchargeTaxes1 = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'custom_surcharge_taxes2': result.enableCustomSurchargeTaxes2 = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'custom_surcharge_taxes3': result.enableCustomSurchargeTaxes3 = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'custom_surcharge_taxes4': result.enableCustomSurchargeTaxes4 = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'size_id': result.sizeId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'industry_id': result.industryId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'subdomain': result.subdomain = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'portal_mode': result.portalMode = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'portal_domain': result.portalDomain = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'update_products': result.updateProducts = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'convert_products': result.convertProductExchangeRate = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'convert_rate_to_client': result.convertRateToClient = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'fill_products': result.fillProducts = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'enable_product_cost': result.enableProductCost = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'enable_product_quantity': result.enableProductQuantity = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'enable_product_discount': result.enableProductDiscount = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'default_task_is_date_based': result.defaultTaskIsDateBased = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'default_quantity': result.defaultQuantity = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'show_product_details': result.showProductDetails = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'client_can_register': result.clientCanRegister = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'is_large': result.isLarge = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'is_disabled': result.isDisabled = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'enable_shop_api': result.enableShopApi = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'company_key': result.companyKey = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'first_day_of_week': result.firstDayOfWeek = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'first_month_of_year': result.firstMonthOfYear = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'enabled_tax_rates': result.numberOfInvoiceTaxRates = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'enabled_item_tax_rates': result.numberOfItemTaxRates = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'enabled_expense_tax_rates': result.numberOfExpenseTaxRates = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'expense_inclusive_taxes': result.expenseInclusiveTaxes = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'session_timeout': result.sessionTimeout = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'default_password_timeout': result.passwordTimeout = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'oauth_password_required': result.oauthPasswordRequired = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'markdown_enabled': result.markdownEnabled = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'markdown_email_enabled': result.markdownEmailEnabled = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'use_comma_as_decimal_place': result.useCommaAsDecimalPlace = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'report_include_drafts': result.reportIncludeDrafts = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'report_include_deleted': result.reportIncludeDeleted = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'use_quote_terms_on_conversion': result.useQuoteTermsOnConversion = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'enable_applying_payments': result.enableApplyingPayments = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'track_inventory': result.trackInventory = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'inventory_notification_threshold': result.stockNotificationThreshold = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'stock_notification': result.stockNotification = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'invoice_task_lock': result.invoiceTaskLock = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'convert_payment_currency': result.convertPaymentCurrency = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'convert_expense_currency': result.convertExpenseCurrency = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'notify_vendor_when_paid': result.notifyVendorWhenPaid = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'groups': result.groups.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(GroupEntity)])) - as BuiltList); + BuiltList, const [const FullType(GroupEntity)]))! + as BuiltList); break; case 'activities': result.activities.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(ActivityEntity)])) - as BuiltList); + BuiltList, const [const FullType(ActivityEntity)]))! + as BuiltList); break; case 'tax_rates': result.taxRates.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(TaxRateEntity)])) - as BuiltList); + BuiltList, const [const FullType(TaxRateEntity)]))! + as BuiltList); break; case 'task_statuses': result.taskStatuses.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(TaskStatusEntity)])) - as BuiltList); + BuiltList, const [const FullType(TaskStatusEntity)]))! + as BuiltList); break; case 'taskStatusMap': result.taskStatusMap.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ const FullType(String), const FullType(TaskStatusEntity) - ]))); + ]))!); break; case 'company_gateways': result.companyGateways.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(CompanyGatewayEntity)])) - as BuiltList); + BuiltList, const [const FullType(CompanyGatewayEntity)]))! + as BuiltList); break; case 'expense_categories': result.expenseCategories.replace(serializers.deserialize(value, - specifiedType: const FullType( - BuiltList, const [const FullType(ExpenseCategoryEntity)])) - as BuiltList); + specifiedType: const FullType(BuiltList, const [ + const FullType(ExpenseCategoryEntity) + ]))! as BuiltList); break; case 'users': result.users.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(UserEntity)])) - as BuiltList); + BuiltList, const [const FullType(UserEntity)]))! + as BuiltList); break; case 'clients': result.clients.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(ClientEntity)])) - as BuiltList); + BuiltList, const [const FullType(ClientEntity)]))! + as BuiltList); break; case 'products': result.products.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(ProductEntity)])) - as BuiltList); + BuiltList, const [const FullType(ProductEntity)]))! + as BuiltList); break; case 'invoices': result.invoices.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(InvoiceEntity)])) - as BuiltList); + BuiltList, const [const FullType(InvoiceEntity)]))! + as BuiltList); break; case 'recurring_invoices': result.recurringInvoices.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(InvoiceEntity)])) - as BuiltList); + BuiltList, const [const FullType(InvoiceEntity)]))! + as BuiltList); break; case 'recurring_expenses': result.recurringExpenses.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(ExpenseEntity)])) - as BuiltList); + BuiltList, const [const FullType(ExpenseEntity)]))! + as BuiltList); break; case 'payments': result.payments.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(PaymentEntity)])) - as BuiltList); + BuiltList, const [const FullType(PaymentEntity)]))! + as BuiltList); break; case 'quotes': result.quotes.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(InvoiceEntity)])) - as BuiltList); + BuiltList, const [const FullType(InvoiceEntity)]))! + as BuiltList); break; case 'credits': result.credits.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(InvoiceEntity)])) - as BuiltList); + BuiltList, const [const FullType(InvoiceEntity)]))! + as BuiltList); break; case 'purchase_orders': result.purchaseOrders.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(InvoiceEntity)])) - as BuiltList); + BuiltList, const [const FullType(InvoiceEntity)]))! + as BuiltList); break; case 'bank_integrations': result.bankAccounts.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(BankAccountEntity)])) - as BuiltList); + BuiltList, const [const FullType(BankAccountEntity)]))! + as BuiltList); break; case 'bank_transactions': result.transactions.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(TransactionEntity)])) - as BuiltList); + BuiltList, const [const FullType(TransactionEntity)]))! + as BuiltList); break; case 'bank_transaction_rules': result.transactionRules.replace(serializers.deserialize(value, - specifiedType: const FullType( - BuiltList, const [const FullType(TransactionRuleEntity)])) - as BuiltList); + specifiedType: const FullType(BuiltList, const [ + const FullType(TransactionRuleEntity) + ]))! as BuiltList); break; case 'tasks': result.tasks.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(TaskEntity)])) - as BuiltList); + BuiltList, const [const FullType(TaskEntity)]))! + as BuiltList); break; case 'projects': result.projects.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(ProjectEntity)])) - as BuiltList); + BuiltList, const [const FullType(ProjectEntity)]))! + as BuiltList); break; case 'expenses': result.expenses.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(ExpenseEntity)])) - as BuiltList); + BuiltList, const [const FullType(ExpenseEntity)]))! + as BuiltList); break; case 'vendors': result.vendors.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(VendorEntity)])) - as BuiltList); + BuiltList, const [const FullType(VendorEntity)]))! + as BuiltList); break; case 'designs': result.designs.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(DesignEntity)])) - as BuiltList); + BuiltList, const [const FullType(DesignEntity)]))! + as BuiltList); break; case 'documents': result.documents.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(DocumentEntity)])) - as BuiltList); + BuiltList, const [const FullType(DocumentEntity)]))! + as BuiltList); break; case 'task_schedulers': result.schedules.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(ScheduleEntity)])) - as BuiltList); + BuiltList, const [const FullType(ScheduleEntity)]))! + as BuiltList); break; case 'tokens_hashed': result.tokens.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(TokenEntity)])) - as BuiltList); + BuiltList, const [const FullType(TokenEntity)]))! + as BuiltList); break; case 'webhooks': result.webhooks.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(WebhookEntity)])) - as BuiltList); + BuiltList, const [const FullType(WebhookEntity)]))! + as BuiltList); break; case 'subscriptions': result.subscriptions.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(SubscriptionEntity)])) - as BuiltList); + BuiltList, const [const FullType(SubscriptionEntity)]))! + as BuiltList); break; case 'payment_terms': result.paymentTerms.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(PaymentTermEntity)])) - as BuiltList); + BuiltList, const [const FullType(PaymentTermEntity)]))! + as BuiltList); break; case 'system_logs': result.systemLogs.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(SystemLogEntity)])) - as BuiltList); + BuiltList, const [const FullType(SystemLogEntity)]))! + as BuiltList); break; case 'client_registration_fields': result.clientRegistrationFields.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltList, const [ const FullType(RegistrationFieldEntity) - ])) as BuiltList); + ]))! as BuiltList); break; case 'custom_fields': result.customFields.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(String)]))); + const [const FullType(String), const FullType(String)]))!); break; case 'slack_webhook_url': result.slackWebhookUrl = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'google_analytics_key': result.googleAnalyticsKey = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'matomo_url': result.matomoUrl = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'matomo_id': result.matomoId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'mark_expenses_invoiceable': result.markExpensesInvoiceable = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'mark_expenses_paid': result.markExpensesPaid = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'invoice_expense_documents': result.invoiceExpenseDocuments = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'invoice_task_documents': result.invoiceTaskDocuments = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'invoice_task_timelog': result.invoiceTaskTimelog = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'invoice_task_datelog': result.invoiceTaskDatelog = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'invoice_task_project': result.invoiceTaskProject = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'invoice_task_hours': result.invoiceTaskHours = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'invoice_task_item_description': result.invoiceTaskItemDescription = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'invoice_task_project_header': result.invoiceTaskProjectHeader = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'auto_start_tasks': result.autoStartTasks = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'show_tasks_table': result.showTasksTable = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'show_task_end_date': result.showTaskEndDate = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'settings': result.settings.replace(serializers.deserialize(value, - specifiedType: const FullType(SettingsEntity)) as SettingsEntity); + specifiedType: const FullType(SettingsEntity))! + as SettingsEntity); break; case 'enabled_modules': result.enabledModules = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'calculate_expense_tax_by_amount': result.calculateExpenseTaxByAmount = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'stop_on_unpaid_recurring': result.stopOnUnpaidRecurring = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'calculate_taxes': result.calculateTaxes = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'tax_data': result.taxConfig.replace(serializers.deserialize(value, - specifiedType: const FullType(TaxConfigEntity)) + specifiedType: const FullType(TaxConfigEntity))! as TaxConfigEntity); break; case 'origin_tax_data': result.taxData.replace(serializers.deserialize(value, - specifiedType: const FullType(TaxDataEntity)) as TaxDataEntity); + specifiedType: const FullType(TaxDataEntity))! as TaxDataEntity); break; case 'has_e_invoice_certificate': result.hasEInvoiceCertificate = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'has_e_invoice_certificate_passphrase': result.hasEInvoiceCertificatePassphrase = serializers - .deserialize(value, specifiedType: const FullType(bool)) as bool; + .deserialize(value, specifiedType: const FullType(bool))! as bool; break; case 'e_invoice_certificate_passphrase': result.eInvoiceCertificatePassphrase = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'isChanged': result.isChanged = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'created_at': result.createdAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'updated_at': result.updatedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'archived_at': result.archivedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'is_deleted': result.isDeleted = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'user_id': result.createdUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'assigned_user_id': result.assignedUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'entity_type': result.entityType = serializers.deserialize(value, - specifiedType: const FullType(EntityType)) as EntityType; + specifiedType: const FullType(EntityType)) as EntityType?; break; case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -1009,9 +1010,9 @@ class _$GatewayEntitySerializer implements StructuredSerializer { final String wireName = 'GatewayEntity'; @override - Iterable serialize(Serializers serializers, GatewayEntity object, + Iterable serialize(Serializers serializers, GatewayEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'key', serializers.serialize(object.id, specifiedType: const FullType(String)), 'name', @@ -1047,54 +1048,54 @@ class _$GatewayEntitySerializer implements StructuredSerializer { @override GatewayEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new GatewayEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'key': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'name': result.name = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'is_offsite': result.isOffsite = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'visible': result.isVisible = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'sort_order': result.sortOrder = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'default_gateway_type_id': result.defaultGatewayTypeId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'site_url': result.siteUrl = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'options': result.options.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ const FullType(String), const FullType(GatewayOptionsEntity) - ]))); + ]))!); break; case 'fields': result.fields = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -1114,10 +1115,10 @@ class _$GatewayOptionsEntitySerializer final String wireName = 'GatewayOptionsEntity'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, GatewayOptionsEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'refund', serializers.serialize(object.supportRefunds, specifiedType: const FullType(bool)), @@ -1125,7 +1126,7 @@ class _$GatewayOptionsEntitySerializer serializers.serialize(object.supportTokenBilling, specifiedType: const FullType(bool)), ]; - Object value; + Object? value; value = object.webhooks; if (value != null) { result @@ -1139,29 +1140,29 @@ class _$GatewayOptionsEntitySerializer @override GatewayOptionsEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new GatewayOptionsEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'refund': result.supportRefunds = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'token_billing': result.supportTokenBilling = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'webhooks': result.webhooks.replace(serializers.deserialize(value, - specifiedType: - const FullType(BuiltList, const [const FullType(String)])) - as BuiltList); + specifiedType: const FullType( + BuiltList, const [const FullType(String)]))! + as BuiltList); break; } } @@ -1178,9 +1179,9 @@ class _$UserCompanyEntitySerializer final String wireName = 'UserCompanyEntity'; @override - Iterable serialize(Serializers serializers, UserCompanyEntity object, + Iterable serialize(Serializers serializers, UserCompanyEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'is_admin', serializers.serialize(object.isAdmin, specifiedType: const FullType(bool)), @@ -1197,7 +1198,7 @@ class _$UserCompanyEntitySerializer serializers.serialize(object.ninjaPortalUrl, specifiedType: const FullType(String)), ]; - Object value; + Object? value; value = object.notifications; if (value != null) { result @@ -1248,63 +1249,63 @@ class _$UserCompanyEntitySerializer @override UserCompanyEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new UserCompanyEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'is_admin': result.isAdmin = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'is_owner': result.isOwner = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'permissions_updated_at': result.permissionsUpdatedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'permissions': result.permissions = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'notifications': result.notifications.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ const FullType(String), const FullType(BuiltList, const [const FullType(String)]) - ]))); + ]))!); break; case 'company': result.company.replace(serializers.deserialize(value, - specifiedType: const FullType(CompanyEntity)) as CompanyEntity); + specifiedType: const FullType(CompanyEntity))! as CompanyEntity); break; case 'user': result.user.replace(serializers.deserialize(value, - specifiedType: const FullType(UserEntity)) as UserEntity); + specifiedType: const FullType(UserEntity))! as UserEntity); break; case 'token': result.token.replace(serializers.deserialize(value, - specifiedType: const FullType(TokenEntity)) as TokenEntity); + specifiedType: const FullType(TokenEntity))! as TokenEntity); break; case 'account': result.account.replace(serializers.deserialize(value, - specifiedType: const FullType(AccountEntity)) as AccountEntity); + specifiedType: const FullType(AccountEntity))! as AccountEntity); break; case 'settings': result.settings.replace(serializers.deserialize(value, - specifiedType: const FullType(UserSettingsEntity)) + specifiedType: const FullType(UserSettingsEntity))! as UserSettingsEntity); break; case 'ninja_portal_url': result.ninjaPortalUrl = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -1321,9 +1322,10 @@ class _$UserSettingsEntitySerializer final String wireName = 'UserSettingsEntity'; @override - Iterable serialize(Serializers serializers, UserSettingsEntity object, + Iterable serialize( + Serializers serializers, UserSettingsEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'table_columns', serializers.serialize(object.tableColumns, specifiedType: const FullType(BuiltMap, const [ @@ -1353,7 +1355,7 @@ class _$UserSettingsEntitySerializer serializers.serialize(object.dashboardFieldsPerRowDesktop, specifiedType: const FullType(int)), ]; - Object value; + Object? value; value = object.accentColor; if (value != null) { result @@ -1366,55 +1368,55 @@ class _$UserSettingsEntitySerializer @override UserSettingsEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new UserSettingsEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'accent_color': result.accentColor = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'table_columns': result.tableColumns.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ const FullType(String), const FullType(BuiltList, const [const FullType(String)]) - ]))); + ]))!); break; case 'report_settings': result.reportSettings.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ const FullType(String), const FullType(ReportSettingsEntity) - ]))); + ]))!); break; case 'number_years_active': result.numberYearsActive = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'include_deleted_clients': result.includeDeletedClients = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'dashboard_fields': result.dashboardFields.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(DashboardField)])) - as BuiltList); + BuiltList, const [const FullType(DashboardField)]))! + as BuiltList); break; case 'dashboard_fields_per_row_mobile': result.dashboardFieldsPerRowMobile = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'dashboard_fields_per_row_desktop': result.dashboardFieldsPerRowDesktop = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; } } @@ -1434,10 +1436,10 @@ class _$ReportSettingsEntitySerializer final String wireName = 'ReportSettingsEntity'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, ReportSettingsEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'sort_column', serializers.serialize(object.sortColumn, specifiedType: const FullType(String)), @@ -1461,37 +1463,37 @@ class _$ReportSettingsEntitySerializer @override ReportSettingsEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ReportSettingsEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'sort_column': result.sortColumn = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'sort_ascending': result.sortAscending = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'sort_totals_index': result.sortTotalsIndex = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'sort_totals_ascending': result.sortTotalsAscending = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'columns': result.columns.replace(serializers.deserialize(value, - specifiedType: - const FullType(BuiltList, const [const FullType(String)])) - as BuiltList); + specifiedType: const FullType( + BuiltList, const [const FullType(String)]))! + as BuiltList); break; } } @@ -1511,10 +1513,10 @@ class _$CompanyItemResponseSerializer final String wireName = 'CompanyItemResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, CompanyItemResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType(CompanyEntity)), @@ -1525,19 +1527,19 @@ class _$CompanyItemResponseSerializer @override CompanyItemResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new CompanyItemResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, - specifiedType: const FullType(CompanyEntity)) as CompanyEntity); + specifiedType: const FullType(CompanyEntity))! as CompanyEntity); break; } } @@ -1557,10 +1559,10 @@ class _$RegistrationFieldEntitySerializer final String wireName = 'RegistrationFieldEntity'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, RegistrationFieldEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'key', serializers.serialize(object.key, specifiedType: const FullType(String)), 'required', @@ -1576,27 +1578,27 @@ class _$RegistrationFieldEntitySerializer @override RegistrationFieldEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new RegistrationFieldEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'key': result.key = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'required': result.required = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'visible': result.visible = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; } } @@ -1613,9 +1615,9 @@ class _$DashboardFieldSerializer final String wireName = 'DashboardField'; @override - Iterable serialize(Serializers serializers, DashboardField object, + Iterable serialize(Serializers serializers, DashboardField object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'field', serializers.serialize(object.field, specifiedType: const FullType(String)), @@ -1631,27 +1633,27 @@ class _$DashboardFieldSerializer @override DashboardField deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new DashboardFieldBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'field': result.field = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'period': result.period = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'type': result.type = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -1878,7 +1880,7 @@ class _$CompanyEntity extends CompanyEntity { @override final String eInvoiceCertificatePassphrase; @override - final bool isChanged; + final bool? isChanged; @override final int createdAt; @override @@ -1886,137 +1888,137 @@ class _$CompanyEntity extends CompanyEntity { @override final int archivedAt; @override - final bool isDeleted; + final bool? isDeleted; @override - final String createdUserId; + final String? createdUserId; @override - final String assignedUserId; + final String? assignedUserId; @override - final EntityType entityType; + final EntityType? entityType; @override final String id; - factory _$CompanyEntity([void Function(CompanyEntityBuilder) updates]) => + factory _$CompanyEntity([void Function(CompanyEntityBuilder)? updates]) => (new CompanyEntityBuilder()..update(updates))._build(); _$CompanyEntity._( - {this.enableCustomSurchargeTaxes1, - this.enableCustomSurchargeTaxes2, - this.enableCustomSurchargeTaxes3, - this.enableCustomSurchargeTaxes4, - this.sizeId, - this.industryId, - this.subdomain, - this.portalMode, - this.portalDomain, - this.updateProducts, - this.convertProductExchangeRate, - this.convertRateToClient, - this.fillProducts, - this.enableProductCost, - this.enableProductQuantity, - this.enableProductDiscount, - this.defaultTaskIsDateBased, - this.defaultQuantity, - this.showProductDetails, - this.clientCanRegister, - this.isLarge, - this.isDisabled, - this.enableShopApi, - this.companyKey, - this.firstDayOfWeek, - this.firstMonthOfYear, - this.numberOfInvoiceTaxRates, - this.numberOfItemTaxRates, - this.numberOfExpenseTaxRates, - this.expenseInclusiveTaxes, - this.sessionTimeout, - this.passwordTimeout, - this.oauthPasswordRequired, - this.markdownEnabled, - this.markdownEmailEnabled, - this.useCommaAsDecimalPlace, - this.reportIncludeDrafts, - this.reportIncludeDeleted, - this.useQuoteTermsOnConversion, - this.enableApplyingPayments, - this.trackInventory, - this.stockNotificationThreshold, - this.stockNotification, - this.invoiceTaskLock, - this.convertPaymentCurrency, - this.convertExpenseCurrency, - this.notifyVendorWhenPaid, - this.groups, - this.activities, - this.taxRates, - this.taskStatuses, - this.taskStatusMap, - this.companyGateways, - this.expenseCategories, - this.users, - this.clients, - this.products, - this.invoices, - this.recurringInvoices, - this.recurringExpenses, - this.payments, - this.quotes, - this.credits, - this.purchaseOrders, - this.bankAccounts, - this.transactions, - this.transactionRules, - this.tasks, - this.projects, - this.expenses, - this.vendors, - this.designs, - this.documents, - this.schedules, - this.tokens, - this.webhooks, - this.subscriptions, - this.paymentTerms, - this.systemLogs, - this.clientRegistrationFields, - this.customFields, - this.slackWebhookUrl, - this.googleAnalyticsKey, - this.matomoUrl, - this.matomoId, - this.markExpensesInvoiceable, - this.markExpensesPaid, - this.invoiceExpenseDocuments, - this.invoiceTaskDocuments, - this.invoiceTaskTimelog, - this.invoiceTaskDatelog, - this.invoiceTaskProject, - this.invoiceTaskHours, - this.invoiceTaskItemDescription, - this.invoiceTaskProjectHeader, - this.autoStartTasks, - this.showTasksTable, - this.showTaskEndDate, - this.settings, - this.enabledModules, - this.calculateExpenseTaxByAmount, - this.stopOnUnpaidRecurring, - this.calculateTaxes, - this.taxConfig, - this.taxData, - this.hasEInvoiceCertificate, - this.hasEInvoiceCertificatePassphrase, - this.eInvoiceCertificatePassphrase, + {required this.enableCustomSurchargeTaxes1, + required this.enableCustomSurchargeTaxes2, + required this.enableCustomSurchargeTaxes3, + required this.enableCustomSurchargeTaxes4, + required this.sizeId, + required this.industryId, + required this.subdomain, + required this.portalMode, + required this.portalDomain, + required this.updateProducts, + required this.convertProductExchangeRate, + required this.convertRateToClient, + required this.fillProducts, + required this.enableProductCost, + required this.enableProductQuantity, + required this.enableProductDiscount, + required this.defaultTaskIsDateBased, + required this.defaultQuantity, + required this.showProductDetails, + required this.clientCanRegister, + required this.isLarge, + required this.isDisabled, + required this.enableShopApi, + required this.companyKey, + required this.firstDayOfWeek, + required this.firstMonthOfYear, + required this.numberOfInvoiceTaxRates, + required this.numberOfItemTaxRates, + required this.numberOfExpenseTaxRates, + required this.expenseInclusiveTaxes, + required this.sessionTimeout, + required this.passwordTimeout, + required this.oauthPasswordRequired, + required this.markdownEnabled, + required this.markdownEmailEnabled, + required this.useCommaAsDecimalPlace, + required this.reportIncludeDrafts, + required this.reportIncludeDeleted, + required this.useQuoteTermsOnConversion, + required this.enableApplyingPayments, + required this.trackInventory, + required this.stockNotificationThreshold, + required this.stockNotification, + required this.invoiceTaskLock, + required this.convertPaymentCurrency, + required this.convertExpenseCurrency, + required this.notifyVendorWhenPaid, + required this.groups, + required this.activities, + required this.taxRates, + required this.taskStatuses, + required this.taskStatusMap, + required this.companyGateways, + required this.expenseCategories, + required this.users, + required this.clients, + required this.products, + required this.invoices, + required this.recurringInvoices, + required this.recurringExpenses, + required this.payments, + required this.quotes, + required this.credits, + required this.purchaseOrders, + required this.bankAccounts, + required this.transactions, + required this.transactionRules, + required this.tasks, + required this.projects, + required this.expenses, + required this.vendors, + required this.designs, + required this.documents, + required this.schedules, + required this.tokens, + required this.webhooks, + required this.subscriptions, + required this.paymentTerms, + required this.systemLogs, + required this.clientRegistrationFields, + required this.customFields, + required this.slackWebhookUrl, + required this.googleAnalyticsKey, + required this.matomoUrl, + required this.matomoId, + required this.markExpensesInvoiceable, + required this.markExpensesPaid, + required this.invoiceExpenseDocuments, + required this.invoiceTaskDocuments, + required this.invoiceTaskTimelog, + required this.invoiceTaskDatelog, + required this.invoiceTaskProject, + required this.invoiceTaskHours, + required this.invoiceTaskItemDescription, + required this.invoiceTaskProjectHeader, + required this.autoStartTasks, + required this.showTasksTable, + required this.showTaskEndDate, + required this.settings, + required this.enabledModules, + required this.calculateExpenseTaxByAmount, + required this.stopOnUnpaidRecurring, + required this.calculateTaxes, + required this.taxConfig, + required this.taxData, + required this.hasEInvoiceCertificate, + required this.hasEInvoiceCertificatePassphrase, + required this.eInvoiceCertificatePassphrase, this.isChanged, - this.createdAt, - this.updatedAt, - this.archivedAt, + required this.createdAt, + required this.updatedAt, + required this.archivedAt, this.isDeleted, this.createdUserId, this.assignedUserId, this.entityType, - this.id}) + required this.id}) : super._() { BuiltValueNullFieldError.checkNotNull(enableCustomSurchargeTaxes1, r'CompanyEntity', 'enableCustomSurchargeTaxes1'); @@ -2362,10 +2364,10 @@ class _$CompanyEntity extends CompanyEntity { id == other.id; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, enableCustomSurchargeTaxes1.hashCode); _$hash = $jc(_$hash, enableCustomSurchargeTaxes2.hashCode); @@ -2615,605 +2617,607 @@ class _$CompanyEntity extends CompanyEntity { class CompanyEntityBuilder implements Builder { - _$CompanyEntity _$v; + _$CompanyEntity? _$v; - bool _enableCustomSurchargeTaxes1; - bool get enableCustomSurchargeTaxes1 => _$this._enableCustomSurchargeTaxes1; - set enableCustomSurchargeTaxes1(bool enableCustomSurchargeTaxes1) => + bool? _enableCustomSurchargeTaxes1; + bool? get enableCustomSurchargeTaxes1 => _$this._enableCustomSurchargeTaxes1; + set enableCustomSurchargeTaxes1(bool? enableCustomSurchargeTaxes1) => _$this._enableCustomSurchargeTaxes1 = enableCustomSurchargeTaxes1; - bool _enableCustomSurchargeTaxes2; - bool get enableCustomSurchargeTaxes2 => _$this._enableCustomSurchargeTaxes2; - set enableCustomSurchargeTaxes2(bool enableCustomSurchargeTaxes2) => + bool? _enableCustomSurchargeTaxes2; + bool? get enableCustomSurchargeTaxes2 => _$this._enableCustomSurchargeTaxes2; + set enableCustomSurchargeTaxes2(bool? enableCustomSurchargeTaxes2) => _$this._enableCustomSurchargeTaxes2 = enableCustomSurchargeTaxes2; - bool _enableCustomSurchargeTaxes3; - bool get enableCustomSurchargeTaxes3 => _$this._enableCustomSurchargeTaxes3; - set enableCustomSurchargeTaxes3(bool enableCustomSurchargeTaxes3) => + bool? _enableCustomSurchargeTaxes3; + bool? get enableCustomSurchargeTaxes3 => _$this._enableCustomSurchargeTaxes3; + set enableCustomSurchargeTaxes3(bool? enableCustomSurchargeTaxes3) => _$this._enableCustomSurchargeTaxes3 = enableCustomSurchargeTaxes3; - bool _enableCustomSurchargeTaxes4; - bool get enableCustomSurchargeTaxes4 => _$this._enableCustomSurchargeTaxes4; - set enableCustomSurchargeTaxes4(bool enableCustomSurchargeTaxes4) => + bool? _enableCustomSurchargeTaxes4; + bool? get enableCustomSurchargeTaxes4 => _$this._enableCustomSurchargeTaxes4; + set enableCustomSurchargeTaxes4(bool? enableCustomSurchargeTaxes4) => _$this._enableCustomSurchargeTaxes4 = enableCustomSurchargeTaxes4; - String _sizeId; - String get sizeId => _$this._sizeId; - set sizeId(String sizeId) => _$this._sizeId = sizeId; + String? _sizeId; + String? get sizeId => _$this._sizeId; + set sizeId(String? sizeId) => _$this._sizeId = sizeId; - String _industryId; - String get industryId => _$this._industryId; - set industryId(String industryId) => _$this._industryId = industryId; + String? _industryId; + String? get industryId => _$this._industryId; + set industryId(String? industryId) => _$this._industryId = industryId; - String _subdomain; - String get subdomain => _$this._subdomain; - set subdomain(String subdomain) => _$this._subdomain = subdomain; + String? _subdomain; + String? get subdomain => _$this._subdomain; + set subdomain(String? subdomain) => _$this._subdomain = subdomain; - String _portalMode; - String get portalMode => _$this._portalMode; - set portalMode(String portalMode) => _$this._portalMode = portalMode; + String? _portalMode; + String? get portalMode => _$this._portalMode; + set portalMode(String? portalMode) => _$this._portalMode = portalMode; - String _portalDomain; - String get portalDomain => _$this._portalDomain; - set portalDomain(String portalDomain) => _$this._portalDomain = portalDomain; + String? _portalDomain; + String? get portalDomain => _$this._portalDomain; + set portalDomain(String? portalDomain) => _$this._portalDomain = portalDomain; - bool _updateProducts; - bool get updateProducts => _$this._updateProducts; - set updateProducts(bool updateProducts) => + bool? _updateProducts; + bool? get updateProducts => _$this._updateProducts; + set updateProducts(bool? updateProducts) => _$this._updateProducts = updateProducts; - bool _convertProductExchangeRate; - bool get convertProductExchangeRate => _$this._convertProductExchangeRate; - set convertProductExchangeRate(bool convertProductExchangeRate) => + bool? _convertProductExchangeRate; + bool? get convertProductExchangeRate => _$this._convertProductExchangeRate; + set convertProductExchangeRate(bool? convertProductExchangeRate) => _$this._convertProductExchangeRate = convertProductExchangeRate; - bool _convertRateToClient; - bool get convertRateToClient => _$this._convertRateToClient; - set convertRateToClient(bool convertRateToClient) => + bool? _convertRateToClient; + bool? get convertRateToClient => _$this._convertRateToClient; + set convertRateToClient(bool? convertRateToClient) => _$this._convertRateToClient = convertRateToClient; - bool _fillProducts; - bool get fillProducts => _$this._fillProducts; - set fillProducts(bool fillProducts) => _$this._fillProducts = fillProducts; + bool? _fillProducts; + bool? get fillProducts => _$this._fillProducts; + set fillProducts(bool? fillProducts) => _$this._fillProducts = fillProducts; - bool _enableProductCost; - bool get enableProductCost => _$this._enableProductCost; - set enableProductCost(bool enableProductCost) => + bool? _enableProductCost; + bool? get enableProductCost => _$this._enableProductCost; + set enableProductCost(bool? enableProductCost) => _$this._enableProductCost = enableProductCost; - bool _enableProductQuantity; - bool get enableProductQuantity => _$this._enableProductQuantity; - set enableProductQuantity(bool enableProductQuantity) => + bool? _enableProductQuantity; + bool? get enableProductQuantity => _$this._enableProductQuantity; + set enableProductQuantity(bool? enableProductQuantity) => _$this._enableProductQuantity = enableProductQuantity; - bool _enableProductDiscount; - bool get enableProductDiscount => _$this._enableProductDiscount; - set enableProductDiscount(bool enableProductDiscount) => + bool? _enableProductDiscount; + bool? get enableProductDiscount => _$this._enableProductDiscount; + set enableProductDiscount(bool? enableProductDiscount) => _$this._enableProductDiscount = enableProductDiscount; - bool _defaultTaskIsDateBased; - bool get defaultTaskIsDateBased => _$this._defaultTaskIsDateBased; - set defaultTaskIsDateBased(bool defaultTaskIsDateBased) => + bool? _defaultTaskIsDateBased; + bool? get defaultTaskIsDateBased => _$this._defaultTaskIsDateBased; + set defaultTaskIsDateBased(bool? defaultTaskIsDateBased) => _$this._defaultTaskIsDateBased = defaultTaskIsDateBased; - bool _defaultQuantity; - bool get defaultQuantity => _$this._defaultQuantity; - set defaultQuantity(bool defaultQuantity) => + bool? _defaultQuantity; + bool? get defaultQuantity => _$this._defaultQuantity; + set defaultQuantity(bool? defaultQuantity) => _$this._defaultQuantity = defaultQuantity; - bool _showProductDetails; - bool get showProductDetails => _$this._showProductDetails; - set showProductDetails(bool showProductDetails) => + bool? _showProductDetails; + bool? get showProductDetails => _$this._showProductDetails; + set showProductDetails(bool? showProductDetails) => _$this._showProductDetails = showProductDetails; - bool _clientCanRegister; - bool get clientCanRegister => _$this._clientCanRegister; - set clientCanRegister(bool clientCanRegister) => + bool? _clientCanRegister; + bool? get clientCanRegister => _$this._clientCanRegister; + set clientCanRegister(bool? clientCanRegister) => _$this._clientCanRegister = clientCanRegister; - bool _isLarge; - bool get isLarge => _$this._isLarge; - set isLarge(bool isLarge) => _$this._isLarge = isLarge; + bool? _isLarge; + bool? get isLarge => _$this._isLarge; + set isLarge(bool? isLarge) => _$this._isLarge = isLarge; - bool _isDisabled; - bool get isDisabled => _$this._isDisabled; - set isDisabled(bool isDisabled) => _$this._isDisabled = isDisabled; + bool? _isDisabled; + bool? get isDisabled => _$this._isDisabled; + set isDisabled(bool? isDisabled) => _$this._isDisabled = isDisabled; - bool _enableShopApi; - bool get enableShopApi => _$this._enableShopApi; - set enableShopApi(bool enableShopApi) => + bool? _enableShopApi; + bool? get enableShopApi => _$this._enableShopApi; + set enableShopApi(bool? enableShopApi) => _$this._enableShopApi = enableShopApi; - String _companyKey; - String get companyKey => _$this._companyKey; - set companyKey(String companyKey) => _$this._companyKey = companyKey; + String? _companyKey; + String? get companyKey => _$this._companyKey; + set companyKey(String? companyKey) => _$this._companyKey = companyKey; - String _firstDayOfWeek; - String get firstDayOfWeek => _$this._firstDayOfWeek; - set firstDayOfWeek(String firstDayOfWeek) => + String? _firstDayOfWeek; + String? get firstDayOfWeek => _$this._firstDayOfWeek; + set firstDayOfWeek(String? firstDayOfWeek) => _$this._firstDayOfWeek = firstDayOfWeek; - String _firstMonthOfYear; - String get firstMonthOfYear => _$this._firstMonthOfYear; - set firstMonthOfYear(String firstMonthOfYear) => + String? _firstMonthOfYear; + String? get firstMonthOfYear => _$this._firstMonthOfYear; + set firstMonthOfYear(String? firstMonthOfYear) => _$this._firstMonthOfYear = firstMonthOfYear; - int _numberOfInvoiceTaxRates; - int get numberOfInvoiceTaxRates => _$this._numberOfInvoiceTaxRates; - set numberOfInvoiceTaxRates(int numberOfInvoiceTaxRates) => + int? _numberOfInvoiceTaxRates; + int? get numberOfInvoiceTaxRates => _$this._numberOfInvoiceTaxRates; + set numberOfInvoiceTaxRates(int? numberOfInvoiceTaxRates) => _$this._numberOfInvoiceTaxRates = numberOfInvoiceTaxRates; - int _numberOfItemTaxRates; - int get numberOfItemTaxRates => _$this._numberOfItemTaxRates; - set numberOfItemTaxRates(int numberOfItemTaxRates) => + int? _numberOfItemTaxRates; + int? get numberOfItemTaxRates => _$this._numberOfItemTaxRates; + set numberOfItemTaxRates(int? numberOfItemTaxRates) => _$this._numberOfItemTaxRates = numberOfItemTaxRates; - int _numberOfExpenseTaxRates; - int get numberOfExpenseTaxRates => _$this._numberOfExpenseTaxRates; - set numberOfExpenseTaxRates(int numberOfExpenseTaxRates) => + int? _numberOfExpenseTaxRates; + int? get numberOfExpenseTaxRates => _$this._numberOfExpenseTaxRates; + set numberOfExpenseTaxRates(int? numberOfExpenseTaxRates) => _$this._numberOfExpenseTaxRates = numberOfExpenseTaxRates; - bool _expenseInclusiveTaxes; - bool get expenseInclusiveTaxes => _$this._expenseInclusiveTaxes; - set expenseInclusiveTaxes(bool expenseInclusiveTaxes) => + bool? _expenseInclusiveTaxes; + bool? get expenseInclusiveTaxes => _$this._expenseInclusiveTaxes; + set expenseInclusiveTaxes(bool? expenseInclusiveTaxes) => _$this._expenseInclusiveTaxes = expenseInclusiveTaxes; - int _sessionTimeout; - int get sessionTimeout => _$this._sessionTimeout; - set sessionTimeout(int sessionTimeout) => + int? _sessionTimeout; + int? get sessionTimeout => _$this._sessionTimeout; + set sessionTimeout(int? sessionTimeout) => _$this._sessionTimeout = sessionTimeout; - int _passwordTimeout; - int get passwordTimeout => _$this._passwordTimeout; - set passwordTimeout(int passwordTimeout) => + int? _passwordTimeout; + int? get passwordTimeout => _$this._passwordTimeout; + set passwordTimeout(int? passwordTimeout) => _$this._passwordTimeout = passwordTimeout; - bool _oauthPasswordRequired; - bool get oauthPasswordRequired => _$this._oauthPasswordRequired; - set oauthPasswordRequired(bool oauthPasswordRequired) => + bool? _oauthPasswordRequired; + bool? get oauthPasswordRequired => _$this._oauthPasswordRequired; + set oauthPasswordRequired(bool? oauthPasswordRequired) => _$this._oauthPasswordRequired = oauthPasswordRequired; - bool _markdownEnabled; - bool get markdownEnabled => _$this._markdownEnabled; - set markdownEnabled(bool markdownEnabled) => + bool? _markdownEnabled; + bool? get markdownEnabled => _$this._markdownEnabled; + set markdownEnabled(bool? markdownEnabled) => _$this._markdownEnabled = markdownEnabled; - bool _markdownEmailEnabled; - bool get markdownEmailEnabled => _$this._markdownEmailEnabled; - set markdownEmailEnabled(bool markdownEmailEnabled) => + bool? _markdownEmailEnabled; + bool? get markdownEmailEnabled => _$this._markdownEmailEnabled; + set markdownEmailEnabled(bool? markdownEmailEnabled) => _$this._markdownEmailEnabled = markdownEmailEnabled; - bool _useCommaAsDecimalPlace; - bool get useCommaAsDecimalPlace => _$this._useCommaAsDecimalPlace; - set useCommaAsDecimalPlace(bool useCommaAsDecimalPlace) => + bool? _useCommaAsDecimalPlace; + bool? get useCommaAsDecimalPlace => _$this._useCommaAsDecimalPlace; + set useCommaAsDecimalPlace(bool? useCommaAsDecimalPlace) => _$this._useCommaAsDecimalPlace = useCommaAsDecimalPlace; - bool _reportIncludeDrafts; - bool get reportIncludeDrafts => _$this._reportIncludeDrafts; - set reportIncludeDrafts(bool reportIncludeDrafts) => + bool? _reportIncludeDrafts; + bool? get reportIncludeDrafts => _$this._reportIncludeDrafts; + set reportIncludeDrafts(bool? reportIncludeDrafts) => _$this._reportIncludeDrafts = reportIncludeDrafts; - bool _reportIncludeDeleted; - bool get reportIncludeDeleted => _$this._reportIncludeDeleted; - set reportIncludeDeleted(bool reportIncludeDeleted) => + bool? _reportIncludeDeleted; + bool? get reportIncludeDeleted => _$this._reportIncludeDeleted; + set reportIncludeDeleted(bool? reportIncludeDeleted) => _$this._reportIncludeDeleted = reportIncludeDeleted; - bool _useQuoteTermsOnConversion; - bool get useQuoteTermsOnConversion => _$this._useQuoteTermsOnConversion; - set useQuoteTermsOnConversion(bool useQuoteTermsOnConversion) => + bool? _useQuoteTermsOnConversion; + bool? get useQuoteTermsOnConversion => _$this._useQuoteTermsOnConversion; + set useQuoteTermsOnConversion(bool? useQuoteTermsOnConversion) => _$this._useQuoteTermsOnConversion = useQuoteTermsOnConversion; - bool _enableApplyingPayments; - bool get enableApplyingPayments => _$this._enableApplyingPayments; - set enableApplyingPayments(bool enableApplyingPayments) => + bool? _enableApplyingPayments; + bool? get enableApplyingPayments => _$this._enableApplyingPayments; + set enableApplyingPayments(bool? enableApplyingPayments) => _$this._enableApplyingPayments = enableApplyingPayments; - bool _trackInventory; - bool get trackInventory => _$this._trackInventory; - set trackInventory(bool trackInventory) => + bool? _trackInventory; + bool? get trackInventory => _$this._trackInventory; + set trackInventory(bool? trackInventory) => _$this._trackInventory = trackInventory; - int _stockNotificationThreshold; - int get stockNotificationThreshold => _$this._stockNotificationThreshold; - set stockNotificationThreshold(int stockNotificationThreshold) => + int? _stockNotificationThreshold; + int? get stockNotificationThreshold => _$this._stockNotificationThreshold; + set stockNotificationThreshold(int? stockNotificationThreshold) => _$this._stockNotificationThreshold = stockNotificationThreshold; - bool _stockNotification; - bool get stockNotification => _$this._stockNotification; - set stockNotification(bool stockNotification) => + bool? _stockNotification; + bool? get stockNotification => _$this._stockNotification; + set stockNotification(bool? stockNotification) => _$this._stockNotification = stockNotification; - bool _invoiceTaskLock; - bool get invoiceTaskLock => _$this._invoiceTaskLock; - set invoiceTaskLock(bool invoiceTaskLock) => + bool? _invoiceTaskLock; + bool? get invoiceTaskLock => _$this._invoiceTaskLock; + set invoiceTaskLock(bool? invoiceTaskLock) => _$this._invoiceTaskLock = invoiceTaskLock; - bool _convertPaymentCurrency; - bool get convertPaymentCurrency => _$this._convertPaymentCurrency; - set convertPaymentCurrency(bool convertPaymentCurrency) => + bool? _convertPaymentCurrency; + bool? get convertPaymentCurrency => _$this._convertPaymentCurrency; + set convertPaymentCurrency(bool? convertPaymentCurrency) => _$this._convertPaymentCurrency = convertPaymentCurrency; - bool _convertExpenseCurrency; - bool get convertExpenseCurrency => _$this._convertExpenseCurrency; - set convertExpenseCurrency(bool convertExpenseCurrency) => + bool? _convertExpenseCurrency; + bool? get convertExpenseCurrency => _$this._convertExpenseCurrency; + set convertExpenseCurrency(bool? convertExpenseCurrency) => _$this._convertExpenseCurrency = convertExpenseCurrency; - bool _notifyVendorWhenPaid; - bool get notifyVendorWhenPaid => _$this._notifyVendorWhenPaid; - set notifyVendorWhenPaid(bool notifyVendorWhenPaid) => + bool? _notifyVendorWhenPaid; + bool? get notifyVendorWhenPaid => _$this._notifyVendorWhenPaid; + set notifyVendorWhenPaid(bool? notifyVendorWhenPaid) => _$this._notifyVendorWhenPaid = notifyVendorWhenPaid; - ListBuilder _groups; + ListBuilder? _groups; ListBuilder get groups => _$this._groups ??= new ListBuilder(); - set groups(ListBuilder groups) => _$this._groups = groups; + set groups(ListBuilder? groups) => _$this._groups = groups; - ListBuilder _activities; + ListBuilder? _activities; ListBuilder get activities => _$this._activities ??= new ListBuilder(); - set activities(ListBuilder activities) => + set activities(ListBuilder? activities) => _$this._activities = activities; - ListBuilder _taxRates; + ListBuilder? _taxRates; ListBuilder get taxRates => _$this._taxRates ??= new ListBuilder(); - set taxRates(ListBuilder taxRates) => + set taxRates(ListBuilder? taxRates) => _$this._taxRates = taxRates; - ListBuilder _taskStatuses; + ListBuilder? _taskStatuses; ListBuilder get taskStatuses => _$this._taskStatuses ??= new ListBuilder(); - set taskStatuses(ListBuilder taskStatuses) => + set taskStatuses(ListBuilder? taskStatuses) => _$this._taskStatuses = taskStatuses; - MapBuilder _taskStatusMap; + MapBuilder? _taskStatusMap; MapBuilder get taskStatusMap => _$this._taskStatusMap ??= new MapBuilder(); - set taskStatusMap(MapBuilder taskStatusMap) => + set taskStatusMap(MapBuilder? taskStatusMap) => _$this._taskStatusMap = taskStatusMap; - ListBuilder _companyGateways; + ListBuilder? _companyGateways; ListBuilder get companyGateways => _$this._companyGateways ??= new ListBuilder(); - set companyGateways(ListBuilder companyGateways) => + set companyGateways(ListBuilder? companyGateways) => _$this._companyGateways = companyGateways; - ListBuilder _expenseCategories; + ListBuilder? _expenseCategories; ListBuilder get expenseCategories => _$this._expenseCategories ??= new ListBuilder(); - set expenseCategories(ListBuilder expenseCategories) => + set expenseCategories( + ListBuilder? expenseCategories) => _$this._expenseCategories = expenseCategories; - ListBuilder _users; + ListBuilder? _users; ListBuilder get users => _$this._users ??= new ListBuilder(); - set users(ListBuilder users) => _$this._users = users; + set users(ListBuilder? users) => _$this._users = users; - ListBuilder _clients; + ListBuilder? _clients; ListBuilder get clients => _$this._clients ??= new ListBuilder(); - set clients(ListBuilder clients) => _$this._clients = clients; + set clients(ListBuilder? clients) => _$this._clients = clients; - ListBuilder _products; + ListBuilder? _products; ListBuilder get products => _$this._products ??= new ListBuilder(); - set products(ListBuilder products) => + set products(ListBuilder? products) => _$this._products = products; - ListBuilder _invoices; + ListBuilder? _invoices; ListBuilder get invoices => _$this._invoices ??= new ListBuilder(); - set invoices(ListBuilder invoices) => + set invoices(ListBuilder? invoices) => _$this._invoices = invoices; - ListBuilder _recurringInvoices; + ListBuilder? _recurringInvoices; ListBuilder get recurringInvoices => _$this._recurringInvoices ??= new ListBuilder(); - set recurringInvoices(ListBuilder recurringInvoices) => + set recurringInvoices(ListBuilder? recurringInvoices) => _$this._recurringInvoices = recurringInvoices; - ListBuilder _recurringExpenses; + ListBuilder? _recurringExpenses; ListBuilder get recurringExpenses => _$this._recurringExpenses ??= new ListBuilder(); - set recurringExpenses(ListBuilder recurringExpenses) => + set recurringExpenses(ListBuilder? recurringExpenses) => _$this._recurringExpenses = recurringExpenses; - ListBuilder _payments; + ListBuilder? _payments; ListBuilder get payments => _$this._payments ??= new ListBuilder(); - set payments(ListBuilder payments) => + set payments(ListBuilder? payments) => _$this._payments = payments; - ListBuilder _quotes; + ListBuilder? _quotes; ListBuilder get quotes => _$this._quotes ??= new ListBuilder(); - set quotes(ListBuilder quotes) => _$this._quotes = quotes; + set quotes(ListBuilder? quotes) => _$this._quotes = quotes; - ListBuilder _credits; + ListBuilder? _credits; ListBuilder get credits => _$this._credits ??= new ListBuilder(); - set credits(ListBuilder credits) => _$this._credits = credits; + set credits(ListBuilder? credits) => _$this._credits = credits; - ListBuilder _purchaseOrders; + ListBuilder? _purchaseOrders; ListBuilder get purchaseOrders => _$this._purchaseOrders ??= new ListBuilder(); - set purchaseOrders(ListBuilder purchaseOrders) => + set purchaseOrders(ListBuilder? purchaseOrders) => _$this._purchaseOrders = purchaseOrders; - ListBuilder _bankAccounts; + ListBuilder? _bankAccounts; ListBuilder get bankAccounts => _$this._bankAccounts ??= new ListBuilder(); - set bankAccounts(ListBuilder bankAccounts) => + set bankAccounts(ListBuilder? bankAccounts) => _$this._bankAccounts = bankAccounts; - ListBuilder _transactions; + ListBuilder? _transactions; ListBuilder get transactions => _$this._transactions ??= new ListBuilder(); - set transactions(ListBuilder transactions) => + set transactions(ListBuilder? transactions) => _$this._transactions = transactions; - ListBuilder _transactionRules; + ListBuilder? _transactionRules; ListBuilder get transactionRules => _$this._transactionRules ??= new ListBuilder(); - set transactionRules(ListBuilder transactionRules) => + set transactionRules(ListBuilder? transactionRules) => _$this._transactionRules = transactionRules; - ListBuilder _tasks; + ListBuilder? _tasks; ListBuilder get tasks => _$this._tasks ??= new ListBuilder(); - set tasks(ListBuilder tasks) => _$this._tasks = tasks; + set tasks(ListBuilder? tasks) => _$this._tasks = tasks; - ListBuilder _projects; + ListBuilder? _projects; ListBuilder get projects => _$this._projects ??= new ListBuilder(); - set projects(ListBuilder projects) => + set projects(ListBuilder? projects) => _$this._projects = projects; - ListBuilder _expenses; + ListBuilder? _expenses; ListBuilder get expenses => _$this._expenses ??= new ListBuilder(); - set expenses(ListBuilder expenses) => + set expenses(ListBuilder? expenses) => _$this._expenses = expenses; - ListBuilder _vendors; + ListBuilder? _vendors; ListBuilder get vendors => _$this._vendors ??= new ListBuilder(); - set vendors(ListBuilder vendors) => _$this._vendors = vendors; + set vendors(ListBuilder? vendors) => _$this._vendors = vendors; - ListBuilder _designs; + ListBuilder? _designs; ListBuilder get designs => _$this._designs ??= new ListBuilder(); - set designs(ListBuilder designs) => _$this._designs = designs; + set designs(ListBuilder? designs) => _$this._designs = designs; - ListBuilder _documents; + ListBuilder? _documents; ListBuilder get documents => _$this._documents ??= new ListBuilder(); - set documents(ListBuilder documents) => + set documents(ListBuilder? documents) => _$this._documents = documents; - ListBuilder _schedules; + ListBuilder? _schedules; ListBuilder get schedules => _$this._schedules ??= new ListBuilder(); - set schedules(ListBuilder schedules) => + set schedules(ListBuilder? schedules) => _$this._schedules = schedules; - ListBuilder _tokens; + ListBuilder? _tokens; ListBuilder get tokens => _$this._tokens ??= new ListBuilder(); - set tokens(ListBuilder tokens) => _$this._tokens = tokens; + set tokens(ListBuilder? tokens) => _$this._tokens = tokens; - ListBuilder _webhooks; + ListBuilder? _webhooks; ListBuilder get webhooks => _$this._webhooks ??= new ListBuilder(); - set webhooks(ListBuilder webhooks) => + set webhooks(ListBuilder? webhooks) => _$this._webhooks = webhooks; - ListBuilder _subscriptions; + ListBuilder? _subscriptions; ListBuilder get subscriptions => _$this._subscriptions ??= new ListBuilder(); - set subscriptions(ListBuilder subscriptions) => + set subscriptions(ListBuilder? subscriptions) => _$this._subscriptions = subscriptions; - ListBuilder _paymentTerms; + ListBuilder? _paymentTerms; ListBuilder get paymentTerms => _$this._paymentTerms ??= new ListBuilder(); - set paymentTerms(ListBuilder paymentTerms) => + set paymentTerms(ListBuilder? paymentTerms) => _$this._paymentTerms = paymentTerms; - ListBuilder _systemLogs; + ListBuilder? _systemLogs; ListBuilder get systemLogs => _$this._systemLogs ??= new ListBuilder(); - set systemLogs(ListBuilder systemLogs) => + set systemLogs(ListBuilder? systemLogs) => _$this._systemLogs = systemLogs; - ListBuilder _clientRegistrationFields; + ListBuilder? _clientRegistrationFields; ListBuilder get clientRegistrationFields => _$this._clientRegistrationFields ??= new ListBuilder(); set clientRegistrationFields( - ListBuilder clientRegistrationFields) => + ListBuilder? clientRegistrationFields) => _$this._clientRegistrationFields = clientRegistrationFields; - MapBuilder _customFields; + MapBuilder? _customFields; MapBuilder get customFields => _$this._customFields ??= new MapBuilder(); - set customFields(MapBuilder customFields) => + set customFields(MapBuilder? customFields) => _$this._customFields = customFields; - String _slackWebhookUrl; - String get slackWebhookUrl => _$this._slackWebhookUrl; - set slackWebhookUrl(String slackWebhookUrl) => + String? _slackWebhookUrl; + String? get slackWebhookUrl => _$this._slackWebhookUrl; + set slackWebhookUrl(String? slackWebhookUrl) => _$this._slackWebhookUrl = slackWebhookUrl; - String _googleAnalyticsKey; - String get googleAnalyticsKey => _$this._googleAnalyticsKey; - set googleAnalyticsKey(String googleAnalyticsKey) => + String? _googleAnalyticsKey; + String? get googleAnalyticsKey => _$this._googleAnalyticsKey; + set googleAnalyticsKey(String? googleAnalyticsKey) => _$this._googleAnalyticsKey = googleAnalyticsKey; - String _matomoUrl; - String get matomoUrl => _$this._matomoUrl; - set matomoUrl(String matomoUrl) => _$this._matomoUrl = matomoUrl; + String? _matomoUrl; + String? get matomoUrl => _$this._matomoUrl; + set matomoUrl(String? matomoUrl) => _$this._matomoUrl = matomoUrl; - String _matomoId; - String get matomoId => _$this._matomoId; - set matomoId(String matomoId) => _$this._matomoId = matomoId; + String? _matomoId; + String? get matomoId => _$this._matomoId; + set matomoId(String? matomoId) => _$this._matomoId = matomoId; - bool _markExpensesInvoiceable; - bool get markExpensesInvoiceable => _$this._markExpensesInvoiceable; - set markExpensesInvoiceable(bool markExpensesInvoiceable) => + bool? _markExpensesInvoiceable; + bool? get markExpensesInvoiceable => _$this._markExpensesInvoiceable; + set markExpensesInvoiceable(bool? markExpensesInvoiceable) => _$this._markExpensesInvoiceable = markExpensesInvoiceable; - bool _markExpensesPaid; - bool get markExpensesPaid => _$this._markExpensesPaid; - set markExpensesPaid(bool markExpensesPaid) => + bool? _markExpensesPaid; + bool? get markExpensesPaid => _$this._markExpensesPaid; + set markExpensesPaid(bool? markExpensesPaid) => _$this._markExpensesPaid = markExpensesPaid; - bool _invoiceExpenseDocuments; - bool get invoiceExpenseDocuments => _$this._invoiceExpenseDocuments; - set invoiceExpenseDocuments(bool invoiceExpenseDocuments) => + bool? _invoiceExpenseDocuments; + bool? get invoiceExpenseDocuments => _$this._invoiceExpenseDocuments; + set invoiceExpenseDocuments(bool? invoiceExpenseDocuments) => _$this._invoiceExpenseDocuments = invoiceExpenseDocuments; - bool _invoiceTaskDocuments; - bool get invoiceTaskDocuments => _$this._invoiceTaskDocuments; - set invoiceTaskDocuments(bool invoiceTaskDocuments) => + bool? _invoiceTaskDocuments; + bool? get invoiceTaskDocuments => _$this._invoiceTaskDocuments; + set invoiceTaskDocuments(bool? invoiceTaskDocuments) => _$this._invoiceTaskDocuments = invoiceTaskDocuments; - bool _invoiceTaskTimelog; - bool get invoiceTaskTimelog => _$this._invoiceTaskTimelog; - set invoiceTaskTimelog(bool invoiceTaskTimelog) => + bool? _invoiceTaskTimelog; + bool? get invoiceTaskTimelog => _$this._invoiceTaskTimelog; + set invoiceTaskTimelog(bool? invoiceTaskTimelog) => _$this._invoiceTaskTimelog = invoiceTaskTimelog; - bool _invoiceTaskDatelog; - bool get invoiceTaskDatelog => _$this._invoiceTaskDatelog; - set invoiceTaskDatelog(bool invoiceTaskDatelog) => + bool? _invoiceTaskDatelog; + bool? get invoiceTaskDatelog => _$this._invoiceTaskDatelog; + set invoiceTaskDatelog(bool? invoiceTaskDatelog) => _$this._invoiceTaskDatelog = invoiceTaskDatelog; - bool _invoiceTaskProject; - bool get invoiceTaskProject => _$this._invoiceTaskProject; - set invoiceTaskProject(bool invoiceTaskProject) => + bool? _invoiceTaskProject; + bool? get invoiceTaskProject => _$this._invoiceTaskProject; + set invoiceTaskProject(bool? invoiceTaskProject) => _$this._invoiceTaskProject = invoiceTaskProject; - bool _invoiceTaskHours; - bool get invoiceTaskHours => _$this._invoiceTaskHours; - set invoiceTaskHours(bool invoiceTaskHours) => + bool? _invoiceTaskHours; + bool? get invoiceTaskHours => _$this._invoiceTaskHours; + set invoiceTaskHours(bool? invoiceTaskHours) => _$this._invoiceTaskHours = invoiceTaskHours; - bool _invoiceTaskItemDescription; - bool get invoiceTaskItemDescription => _$this._invoiceTaskItemDescription; - set invoiceTaskItemDescription(bool invoiceTaskItemDescription) => + bool? _invoiceTaskItemDescription; + bool? get invoiceTaskItemDescription => _$this._invoiceTaskItemDescription; + set invoiceTaskItemDescription(bool? invoiceTaskItemDescription) => _$this._invoiceTaskItemDescription = invoiceTaskItemDescription; - bool _invoiceTaskProjectHeader; - bool get invoiceTaskProjectHeader => _$this._invoiceTaskProjectHeader; - set invoiceTaskProjectHeader(bool invoiceTaskProjectHeader) => + bool? _invoiceTaskProjectHeader; + bool? get invoiceTaskProjectHeader => _$this._invoiceTaskProjectHeader; + set invoiceTaskProjectHeader(bool? invoiceTaskProjectHeader) => _$this._invoiceTaskProjectHeader = invoiceTaskProjectHeader; - bool _autoStartTasks; - bool get autoStartTasks => _$this._autoStartTasks; - set autoStartTasks(bool autoStartTasks) => + bool? _autoStartTasks; + bool? get autoStartTasks => _$this._autoStartTasks; + set autoStartTasks(bool? autoStartTasks) => _$this._autoStartTasks = autoStartTasks; - bool _showTasksTable; - bool get showTasksTable => _$this._showTasksTable; - set showTasksTable(bool showTasksTable) => + bool? _showTasksTable; + bool? get showTasksTable => _$this._showTasksTable; + set showTasksTable(bool? showTasksTable) => _$this._showTasksTable = showTasksTable; - bool _showTaskEndDate; - bool get showTaskEndDate => _$this._showTaskEndDate; - set showTaskEndDate(bool showTaskEndDate) => + bool? _showTaskEndDate; + bool? get showTaskEndDate => _$this._showTaskEndDate; + set showTaskEndDate(bool? showTaskEndDate) => _$this._showTaskEndDate = showTaskEndDate; - SettingsEntityBuilder _settings; + SettingsEntityBuilder? _settings; SettingsEntityBuilder get settings => _$this._settings ??= new SettingsEntityBuilder(); - set settings(SettingsEntityBuilder settings) => _$this._settings = settings; + set settings(SettingsEntityBuilder? settings) => _$this._settings = settings; - int _enabledModules; - int get enabledModules => _$this._enabledModules; - set enabledModules(int enabledModules) => + int? _enabledModules; + int? get enabledModules => _$this._enabledModules; + set enabledModules(int? enabledModules) => _$this._enabledModules = enabledModules; - bool _calculateExpenseTaxByAmount; - bool get calculateExpenseTaxByAmount => _$this._calculateExpenseTaxByAmount; - set calculateExpenseTaxByAmount(bool calculateExpenseTaxByAmount) => + bool? _calculateExpenseTaxByAmount; + bool? get calculateExpenseTaxByAmount => _$this._calculateExpenseTaxByAmount; + set calculateExpenseTaxByAmount(bool? calculateExpenseTaxByAmount) => _$this._calculateExpenseTaxByAmount = calculateExpenseTaxByAmount; - bool _stopOnUnpaidRecurring; - bool get stopOnUnpaidRecurring => _$this._stopOnUnpaidRecurring; - set stopOnUnpaidRecurring(bool stopOnUnpaidRecurring) => + bool? _stopOnUnpaidRecurring; + bool? get stopOnUnpaidRecurring => _$this._stopOnUnpaidRecurring; + set stopOnUnpaidRecurring(bool? stopOnUnpaidRecurring) => _$this._stopOnUnpaidRecurring = stopOnUnpaidRecurring; - bool _calculateTaxes; - bool get calculateTaxes => _$this._calculateTaxes; - set calculateTaxes(bool calculateTaxes) => + bool? _calculateTaxes; + bool? get calculateTaxes => _$this._calculateTaxes; + set calculateTaxes(bool? calculateTaxes) => _$this._calculateTaxes = calculateTaxes; - TaxConfigEntityBuilder _taxConfig; + TaxConfigEntityBuilder? _taxConfig; TaxConfigEntityBuilder get taxConfig => _$this._taxConfig ??= new TaxConfigEntityBuilder(); - set taxConfig(TaxConfigEntityBuilder taxConfig) => + set taxConfig(TaxConfigEntityBuilder? taxConfig) => _$this._taxConfig = taxConfig; - TaxDataEntityBuilder _taxData; + TaxDataEntityBuilder? _taxData; TaxDataEntityBuilder get taxData => _$this._taxData ??= new TaxDataEntityBuilder(); - set taxData(TaxDataEntityBuilder taxData) => _$this._taxData = taxData; + set taxData(TaxDataEntityBuilder? taxData) => _$this._taxData = taxData; - bool _hasEInvoiceCertificate; - bool get hasEInvoiceCertificate => _$this._hasEInvoiceCertificate; - set hasEInvoiceCertificate(bool hasEInvoiceCertificate) => + bool? _hasEInvoiceCertificate; + bool? get hasEInvoiceCertificate => _$this._hasEInvoiceCertificate; + set hasEInvoiceCertificate(bool? hasEInvoiceCertificate) => _$this._hasEInvoiceCertificate = hasEInvoiceCertificate; - bool _hasEInvoiceCertificatePassphrase; - bool get hasEInvoiceCertificatePassphrase => + bool? _hasEInvoiceCertificatePassphrase; + bool? get hasEInvoiceCertificatePassphrase => _$this._hasEInvoiceCertificatePassphrase; - set hasEInvoiceCertificatePassphrase(bool hasEInvoiceCertificatePassphrase) => + set hasEInvoiceCertificatePassphrase( + bool? hasEInvoiceCertificatePassphrase) => _$this._hasEInvoiceCertificatePassphrase = hasEInvoiceCertificatePassphrase; - String _eInvoiceCertificatePassphrase; - String get eInvoiceCertificatePassphrase => + String? _eInvoiceCertificatePassphrase; + String? get eInvoiceCertificatePassphrase => _$this._eInvoiceCertificatePassphrase; - set eInvoiceCertificatePassphrase(String eInvoiceCertificatePassphrase) => + set eInvoiceCertificatePassphrase(String? eInvoiceCertificatePassphrase) => _$this._eInvoiceCertificatePassphrase = eInvoiceCertificatePassphrase; - bool _isChanged; - bool get isChanged => _$this._isChanged; - set isChanged(bool isChanged) => _$this._isChanged = isChanged; + bool? _isChanged; + bool? get isChanged => _$this._isChanged; + set isChanged(bool? isChanged) => _$this._isChanged = isChanged; - int _createdAt; - int get createdAt => _$this._createdAt; - set createdAt(int createdAt) => _$this._createdAt = createdAt; + int? _createdAt; + int? get createdAt => _$this._createdAt; + set createdAt(int? createdAt) => _$this._createdAt = createdAt; - int _updatedAt; - int get updatedAt => _$this._updatedAt; - set updatedAt(int updatedAt) => _$this._updatedAt = updatedAt; + int? _updatedAt; + int? get updatedAt => _$this._updatedAt; + set updatedAt(int? updatedAt) => _$this._updatedAt = updatedAt; - int _archivedAt; - int get archivedAt => _$this._archivedAt; - set archivedAt(int archivedAt) => _$this._archivedAt = archivedAt; + int? _archivedAt; + int? get archivedAt => _$this._archivedAt; + set archivedAt(int? archivedAt) => _$this._archivedAt = archivedAt; - bool _isDeleted; - bool get isDeleted => _$this._isDeleted; - set isDeleted(bool isDeleted) => _$this._isDeleted = isDeleted; + bool? _isDeleted; + bool? get isDeleted => _$this._isDeleted; + set isDeleted(bool? isDeleted) => _$this._isDeleted = isDeleted; - String _createdUserId; - String get createdUserId => _$this._createdUserId; - set createdUserId(String createdUserId) => + String? _createdUserId; + String? get createdUserId => _$this._createdUserId; + set createdUserId(String? createdUserId) => _$this._createdUserId = createdUserId; - String _assignedUserId; - String get assignedUserId => _$this._assignedUserId; - set assignedUserId(String assignedUserId) => + String? _assignedUserId; + String? get assignedUserId => _$this._assignedUserId; + set assignedUserId(String? assignedUserId) => _$this._assignedUserId = assignedUserId; - EntityType _entityType; - EntityType get entityType => _$this._entityType; - set entityType(EntityType entityType) => _$this._entityType = entityType; + EntityType? _entityType; + EntityType? get entityType => _$this._entityType; + set entityType(EntityType? entityType) => _$this._entityType = entityType; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; CompanyEntityBuilder() { CompanyEntity._initializeBuilder(this); @@ -3351,7 +3355,7 @@ class CompanyEntityBuilder } @override - void update(void Function(CompanyEntityBuilder) updates) { + void update(void Function(CompanyEntityBuilder)? updates) { if (updates != null) updates(this); } @@ -3495,7 +3499,7 @@ class CompanyEntityBuilder entityType: entityType, id: BuiltValueNullFieldError.checkNotNull(id, r'CompanyEntity', 'id')); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'groups'; groups.build(); @@ -3604,19 +3608,19 @@ class _$GatewayEntity extends GatewayEntity { @override final String fields; - factory _$GatewayEntity([void Function(GatewayEntityBuilder) updates]) => + factory _$GatewayEntity([void Function(GatewayEntityBuilder)? updates]) => (new GatewayEntityBuilder()..update(updates))._build(); _$GatewayEntity._( - {this.id, - this.name, - this.isOffsite, - this.isVisible, - this.sortOrder, - this.defaultGatewayTypeId, - this.siteUrl, - this.options, - this.fields}) + {required this.id, + required this.name, + required this.isOffsite, + required this.isVisible, + required this.sortOrder, + required this.defaultGatewayTypeId, + required this.siteUrl, + required this.options, + required this.fields}) : super._() { BuiltValueNullFieldError.checkNotNull(id, r'GatewayEntity', 'id'); BuiltValueNullFieldError.checkNotNull(name, r'GatewayEntity', 'name'); @@ -3655,10 +3659,10 @@ class _$GatewayEntity extends GatewayEntity { fields == other.fields; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, id.hashCode); _$hash = $jc(_$hash, name.hashCode); @@ -3691,46 +3695,46 @@ class _$GatewayEntity extends GatewayEntity { class GatewayEntityBuilder implements Builder { - _$GatewayEntity _$v; + _$GatewayEntity? _$v; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; - String _name; - String get name => _$this._name; - set name(String name) => _$this._name = name; + String? _name; + String? get name => _$this._name; + set name(String? name) => _$this._name = name; - bool _isOffsite; - bool get isOffsite => _$this._isOffsite; - set isOffsite(bool isOffsite) => _$this._isOffsite = isOffsite; + bool? _isOffsite; + bool? get isOffsite => _$this._isOffsite; + set isOffsite(bool? isOffsite) => _$this._isOffsite = isOffsite; - bool _isVisible; - bool get isVisible => _$this._isVisible; - set isVisible(bool isVisible) => _$this._isVisible = isVisible; + bool? _isVisible; + bool? get isVisible => _$this._isVisible; + set isVisible(bool? isVisible) => _$this._isVisible = isVisible; - int _sortOrder; - int get sortOrder => _$this._sortOrder; - set sortOrder(int sortOrder) => _$this._sortOrder = sortOrder; + int? _sortOrder; + int? get sortOrder => _$this._sortOrder; + set sortOrder(int? sortOrder) => _$this._sortOrder = sortOrder; - String _defaultGatewayTypeId; - String get defaultGatewayTypeId => _$this._defaultGatewayTypeId; - set defaultGatewayTypeId(String defaultGatewayTypeId) => + String? _defaultGatewayTypeId; + String? get defaultGatewayTypeId => _$this._defaultGatewayTypeId; + set defaultGatewayTypeId(String? defaultGatewayTypeId) => _$this._defaultGatewayTypeId = defaultGatewayTypeId; - String _siteUrl; - String get siteUrl => _$this._siteUrl; - set siteUrl(String siteUrl) => _$this._siteUrl = siteUrl; + String? _siteUrl; + String? get siteUrl => _$this._siteUrl; + set siteUrl(String? siteUrl) => _$this._siteUrl = siteUrl; - MapBuilder _options; + MapBuilder? _options; MapBuilder get options => _$this._options ??= new MapBuilder(); - set options(MapBuilder options) => + set options(MapBuilder? options) => _$this._options = options; - String _fields; - String get fields => _$this._fields; - set fields(String fields) => _$this._fields = fields; + String? _fields; + String? get fields => _$this._fields; + set fields(String? fields) => _$this._fields = fields; GatewayEntityBuilder() { GatewayEntity._initializeBuilder(this); @@ -3760,7 +3764,7 @@ class GatewayEntityBuilder } @override - void update(void Function(GatewayEntityBuilder) updates) { + void update(void Function(GatewayEntityBuilder)? updates) { if (updates != null) updates(this); } @@ -3792,7 +3796,7 @@ class GatewayEntityBuilder fields: BuiltValueNullFieldError.checkNotNull( fields, r'GatewayEntity', 'fields')); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'options'; options.build(); @@ -3813,14 +3817,16 @@ class _$GatewayOptionsEntity extends GatewayOptionsEntity { @override final bool supportTokenBilling; @override - final BuiltList webhooks; + final BuiltList? webhooks; factory _$GatewayOptionsEntity( - [void Function(GatewayOptionsEntityBuilder) updates]) => + [void Function(GatewayOptionsEntityBuilder)? updates]) => (new GatewayOptionsEntityBuilder()..update(updates))._build(); _$GatewayOptionsEntity._( - {this.supportRefunds, this.supportTokenBilling, this.webhooks}) + {required this.supportRefunds, + required this.supportTokenBilling, + this.webhooks}) : super._() { BuiltValueNullFieldError.checkNotNull( supportRefunds, r'GatewayOptionsEntity', 'supportRefunds'); @@ -3846,10 +3852,10 @@ class _$GatewayOptionsEntity extends GatewayOptionsEntity { webhooks == other.webhooks; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, supportRefunds.hashCode); _$hash = $jc(_$hash, supportTokenBilling.hashCode); @@ -3870,22 +3876,22 @@ class _$GatewayOptionsEntity extends GatewayOptionsEntity { class GatewayOptionsEntityBuilder implements Builder { - _$GatewayOptionsEntity _$v; + _$GatewayOptionsEntity? _$v; - bool _supportRefunds; - bool get supportRefunds => _$this._supportRefunds; - set supportRefunds(bool supportRefunds) => + bool? _supportRefunds; + bool? get supportRefunds => _$this._supportRefunds; + set supportRefunds(bool? supportRefunds) => _$this._supportRefunds = supportRefunds; - bool _supportTokenBilling; - bool get supportTokenBilling => _$this._supportTokenBilling; - set supportTokenBilling(bool supportTokenBilling) => + bool? _supportTokenBilling; + bool? get supportTokenBilling => _$this._supportTokenBilling; + set supportTokenBilling(bool? supportTokenBilling) => _$this._supportTokenBilling = supportTokenBilling; - ListBuilder _webhooks; + ListBuilder? _webhooks; ListBuilder get webhooks => _$this._webhooks ??= new ListBuilder(); - set webhooks(ListBuilder webhooks) => _$this._webhooks = webhooks; + set webhooks(ListBuilder? webhooks) => _$this._webhooks = webhooks; GatewayOptionsEntityBuilder(); @@ -3907,7 +3913,7 @@ class GatewayOptionsEntityBuilder } @override - void update(void Function(GatewayOptionsEntityBuilder) updates) { + void update(void Function(GatewayOptionsEntityBuilder)? updates) { if (updates != null) updates(this); } @@ -3927,7 +3933,7 @@ class GatewayOptionsEntityBuilder 'supportTokenBilling'), webhooks: _webhooks?.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'webhooks'; _webhooks?.build(); @@ -3952,36 +3958,36 @@ class _$UserCompanyEntity extends UserCompanyEntity { @override final String permissions; @override - final BuiltMap> notifications; + final BuiltMap>? notifications; @override - final CompanyEntity company; + final CompanyEntity? company; @override - final UserEntity user; + final UserEntity? user; @override - final TokenEntity token; + final TokenEntity? token; @override - final AccountEntity account; + final AccountEntity? account; @override - final UserSettingsEntity settings; + final UserSettingsEntity? settings; @override final String ninjaPortalUrl; factory _$UserCompanyEntity( - [void Function(UserCompanyEntityBuilder) updates]) => + [void Function(UserCompanyEntityBuilder)? updates]) => (new UserCompanyEntityBuilder()..update(updates))._build(); _$UserCompanyEntity._( - {this.isAdmin, - this.isOwner, - this.permissionsUpdatedAt, - this.permissions, + {required this.isAdmin, + required this.isOwner, + required this.permissionsUpdatedAt, + required this.permissions, this.notifications, this.company, this.user, this.token, this.account, this.settings, - this.ninjaPortalUrl}) + required this.ninjaPortalUrl}) : super._() { BuiltValueNullFieldError.checkNotNull( isAdmin, r'UserCompanyEntity', 'isAdmin'); @@ -4020,10 +4026,10 @@ class _$UserCompanyEntity extends UserCompanyEntity { ninjaPortalUrl == other.ninjaPortalUrl; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, isAdmin.hashCode); _$hash = $jc(_$hash, isOwner.hashCode); @@ -4060,58 +4066,58 @@ class _$UserCompanyEntity extends UserCompanyEntity { class UserCompanyEntityBuilder implements Builder { - _$UserCompanyEntity _$v; + _$UserCompanyEntity? _$v; - bool _isAdmin; - bool get isAdmin => _$this._isAdmin; - set isAdmin(bool isAdmin) => _$this._isAdmin = isAdmin; + bool? _isAdmin; + bool? get isAdmin => _$this._isAdmin; + set isAdmin(bool? isAdmin) => _$this._isAdmin = isAdmin; - bool _isOwner; - bool get isOwner => _$this._isOwner; - set isOwner(bool isOwner) => _$this._isOwner = isOwner; + bool? _isOwner; + bool? get isOwner => _$this._isOwner; + set isOwner(bool? isOwner) => _$this._isOwner = isOwner; - int _permissionsUpdatedAt; - int get permissionsUpdatedAt => _$this._permissionsUpdatedAt; - set permissionsUpdatedAt(int permissionsUpdatedAt) => + int? _permissionsUpdatedAt; + int? get permissionsUpdatedAt => _$this._permissionsUpdatedAt; + set permissionsUpdatedAt(int? permissionsUpdatedAt) => _$this._permissionsUpdatedAt = permissionsUpdatedAt; - String _permissions; - String get permissions => _$this._permissions; - set permissions(String permissions) => _$this._permissions = permissions; + String? _permissions; + String? get permissions => _$this._permissions; + set permissions(String? permissions) => _$this._permissions = permissions; - MapBuilder> _notifications; + MapBuilder>? _notifications; MapBuilder> get notifications => _$this._notifications ??= new MapBuilder>(); - set notifications(MapBuilder> notifications) => + set notifications(MapBuilder>? notifications) => _$this._notifications = notifications; - CompanyEntityBuilder _company; + CompanyEntityBuilder? _company; CompanyEntityBuilder get company => _$this._company ??= new CompanyEntityBuilder(); - set company(CompanyEntityBuilder company) => _$this._company = company; + set company(CompanyEntityBuilder? company) => _$this._company = company; - UserEntityBuilder _user; + UserEntityBuilder? _user; UserEntityBuilder get user => _$this._user ??= new UserEntityBuilder(); - set user(UserEntityBuilder user) => _$this._user = user; + set user(UserEntityBuilder? user) => _$this._user = user; - TokenEntityBuilder _token; + TokenEntityBuilder? _token; TokenEntityBuilder get token => _$this._token ??= new TokenEntityBuilder(); - set token(TokenEntityBuilder token) => _$this._token = token; + set token(TokenEntityBuilder? token) => _$this._token = token; - AccountEntityBuilder _account; + AccountEntityBuilder? _account; AccountEntityBuilder get account => _$this._account ??= new AccountEntityBuilder(); - set account(AccountEntityBuilder account) => _$this._account = account; + set account(AccountEntityBuilder? account) => _$this._account = account; - UserSettingsEntityBuilder _settings; + UserSettingsEntityBuilder? _settings; UserSettingsEntityBuilder get settings => _$this._settings ??= new UserSettingsEntityBuilder(); - set settings(UserSettingsEntityBuilder settings) => + set settings(UserSettingsEntityBuilder? settings) => _$this._settings = settings; - String _ninjaPortalUrl; - String get ninjaPortalUrl => _$this._ninjaPortalUrl; - set ninjaPortalUrl(String ninjaPortalUrl) => + String? _ninjaPortalUrl; + String? get ninjaPortalUrl => _$this._ninjaPortalUrl; + set ninjaPortalUrl(String? ninjaPortalUrl) => _$this._ninjaPortalUrl = ninjaPortalUrl; UserCompanyEntityBuilder() { @@ -4144,7 +4150,7 @@ class UserCompanyEntityBuilder } @override - void update(void Function(UserCompanyEntityBuilder) updates) { + void update(void Function(UserCompanyEntityBuilder)? updates) { if (updates != null) updates(this); } @@ -4175,7 +4181,7 @@ class UserCompanyEntityBuilder ninjaPortalUrl: BuiltValueNullFieldError.checkNotNull( ninjaPortalUrl, r'UserCompanyEntity', 'ninjaPortalUrl')); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'notifications'; _notifications?.build(); @@ -4202,7 +4208,7 @@ class UserCompanyEntityBuilder class _$UserSettingsEntity extends UserSettingsEntity { @override - final String accentColor; + final String? accentColor; @override final BuiltMap> tableColumns; @override @@ -4219,18 +4225,18 @@ class _$UserSettingsEntity extends UserSettingsEntity { final int dashboardFieldsPerRowDesktop; factory _$UserSettingsEntity( - [void Function(UserSettingsEntityBuilder) updates]) => + [void Function(UserSettingsEntityBuilder)? updates]) => (new UserSettingsEntityBuilder()..update(updates))._build(); _$UserSettingsEntity._( {this.accentColor, - this.tableColumns, - this.reportSettings, - this.numberYearsActive, - this.includeDeletedClients, - this.dashboardFields, - this.dashboardFieldsPerRowMobile, - this.dashboardFieldsPerRowDesktop}) + required this.tableColumns, + required this.reportSettings, + required this.numberYearsActive, + required this.includeDeletedClients, + required this.dashboardFields, + required this.dashboardFieldsPerRowMobile, + required this.dashboardFieldsPerRowDesktop}) : super._() { BuiltValueNullFieldError.checkNotNull( tableColumns, r'UserSettingsEntity', 'tableColumns'); @@ -4271,10 +4277,10 @@ class _$UserSettingsEntity extends UserSettingsEntity { dashboardFieldsPerRowDesktop == other.dashboardFieldsPerRowDesktop; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, accentColor.hashCode); _$hash = $jc(_$hash, tableColumns.hashCode); @@ -4305,48 +4311,49 @@ class _$UserSettingsEntity extends UserSettingsEntity { class UserSettingsEntityBuilder implements Builder { - _$UserSettingsEntity _$v; + _$UserSettingsEntity? _$v; - String _accentColor; - String get accentColor => _$this._accentColor; - set accentColor(String accentColor) => _$this._accentColor = accentColor; + String? _accentColor; + String? get accentColor => _$this._accentColor; + set accentColor(String? accentColor) => _$this._accentColor = accentColor; - MapBuilder> _tableColumns; + MapBuilder>? _tableColumns; MapBuilder> get tableColumns => _$this._tableColumns ??= new MapBuilder>(); - set tableColumns(MapBuilder> tableColumns) => + set tableColumns(MapBuilder>? tableColumns) => _$this._tableColumns = tableColumns; - MapBuilder _reportSettings; + MapBuilder? _reportSettings; MapBuilder get reportSettings => _$this._reportSettings ??= new MapBuilder(); - set reportSettings(MapBuilder reportSettings) => + set reportSettings( + MapBuilder? reportSettings) => _$this._reportSettings = reportSettings; - int _numberYearsActive; - int get numberYearsActive => _$this._numberYearsActive; - set numberYearsActive(int numberYearsActive) => + int? _numberYearsActive; + int? get numberYearsActive => _$this._numberYearsActive; + set numberYearsActive(int? numberYearsActive) => _$this._numberYearsActive = numberYearsActive; - bool _includeDeletedClients; - bool get includeDeletedClients => _$this._includeDeletedClients; - set includeDeletedClients(bool includeDeletedClients) => + bool? _includeDeletedClients; + bool? get includeDeletedClients => _$this._includeDeletedClients; + set includeDeletedClients(bool? includeDeletedClients) => _$this._includeDeletedClients = includeDeletedClients; - ListBuilder _dashboardFields; + ListBuilder? _dashboardFields; ListBuilder get dashboardFields => _$this._dashboardFields ??= new ListBuilder(); - set dashboardFields(ListBuilder dashboardFields) => + set dashboardFields(ListBuilder? dashboardFields) => _$this._dashboardFields = dashboardFields; - int _dashboardFieldsPerRowMobile; - int get dashboardFieldsPerRowMobile => _$this._dashboardFieldsPerRowMobile; - set dashboardFieldsPerRowMobile(int dashboardFieldsPerRowMobile) => + int? _dashboardFieldsPerRowMobile; + int? get dashboardFieldsPerRowMobile => _$this._dashboardFieldsPerRowMobile; + set dashboardFieldsPerRowMobile(int? dashboardFieldsPerRowMobile) => _$this._dashboardFieldsPerRowMobile = dashboardFieldsPerRowMobile; - int _dashboardFieldsPerRowDesktop; - int get dashboardFieldsPerRowDesktop => _$this._dashboardFieldsPerRowDesktop; - set dashboardFieldsPerRowDesktop(int dashboardFieldsPerRowDesktop) => + int? _dashboardFieldsPerRowDesktop; + int? get dashboardFieldsPerRowDesktop => _$this._dashboardFieldsPerRowDesktop; + set dashboardFieldsPerRowDesktop(int? dashboardFieldsPerRowDesktop) => _$this._dashboardFieldsPerRowDesktop = dashboardFieldsPerRowDesktop; UserSettingsEntityBuilder() { @@ -4376,7 +4383,7 @@ class UserSettingsEntityBuilder } @override - void update(void Function(UserSettingsEntityBuilder) updates) { + void update(void Function(UserSettingsEntityBuilder)? updates) { if (updates != null) updates(this); } @@ -4411,7 +4418,7 @@ class UserSettingsEntityBuilder r'UserSettingsEntity', 'dashboardFieldsPerRowDesktop')); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'tableColumns'; tableColumns.build(); @@ -4444,15 +4451,15 @@ class _$ReportSettingsEntity extends ReportSettingsEntity { final BuiltList columns; factory _$ReportSettingsEntity( - [void Function(ReportSettingsEntityBuilder) updates]) => + [void Function(ReportSettingsEntityBuilder)? updates]) => (new ReportSettingsEntityBuilder()..update(updates))._build(); _$ReportSettingsEntity._( - {this.sortColumn, - this.sortAscending, - this.sortTotalsIndex, - this.sortTotalsAscending, - this.columns}) + {required this.sortColumn, + required this.sortAscending, + required this.sortTotalsIndex, + required this.sortTotalsAscending, + required this.columns}) : super._() { BuiltValueNullFieldError.checkNotNull( sortColumn, r'ReportSettingsEntity', 'sortColumn'); @@ -4486,10 +4493,10 @@ class _$ReportSettingsEntity extends ReportSettingsEntity { columns == other.columns; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, sortColumn.hashCode); _$hash = $jc(_$hash, sortAscending.hashCode); @@ -4514,31 +4521,31 @@ class _$ReportSettingsEntity extends ReportSettingsEntity { class ReportSettingsEntityBuilder implements Builder { - _$ReportSettingsEntity _$v; + _$ReportSettingsEntity? _$v; - String _sortColumn; - String get sortColumn => _$this._sortColumn; - set sortColumn(String sortColumn) => _$this._sortColumn = sortColumn; + String? _sortColumn; + String? get sortColumn => _$this._sortColumn; + set sortColumn(String? sortColumn) => _$this._sortColumn = sortColumn; - bool _sortAscending; - bool get sortAscending => _$this._sortAscending; - set sortAscending(bool sortAscending) => + bool? _sortAscending; + bool? get sortAscending => _$this._sortAscending; + set sortAscending(bool? sortAscending) => _$this._sortAscending = sortAscending; - int _sortTotalsIndex; - int get sortTotalsIndex => _$this._sortTotalsIndex; - set sortTotalsIndex(int sortTotalsIndex) => + int? _sortTotalsIndex; + int? get sortTotalsIndex => _$this._sortTotalsIndex; + set sortTotalsIndex(int? sortTotalsIndex) => _$this._sortTotalsIndex = sortTotalsIndex; - bool _sortTotalsAscending; - bool get sortTotalsAscending => _$this._sortTotalsAscending; - set sortTotalsAscending(bool sortTotalsAscending) => + bool? _sortTotalsAscending; + bool? get sortTotalsAscending => _$this._sortTotalsAscending; + set sortTotalsAscending(bool? sortTotalsAscending) => _$this._sortTotalsAscending = sortTotalsAscending; - ListBuilder _columns; + ListBuilder? _columns; ListBuilder get columns => _$this._columns ??= new ListBuilder(); - set columns(ListBuilder columns) => _$this._columns = columns; + set columns(ListBuilder? columns) => _$this._columns = columns; ReportSettingsEntityBuilder() { ReportSettingsEntity._initializeBuilder(this); @@ -4564,7 +4571,7 @@ class ReportSettingsEntityBuilder } @override - void update(void Function(ReportSettingsEntityBuilder) updates) { + void update(void Function(ReportSettingsEntityBuilder)? updates) { if (updates != null) updates(this); } @@ -4588,7 +4595,7 @@ class ReportSettingsEntityBuilder 'sortTotalsAscending'), columns: columns.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'columns'; columns.build(); @@ -4608,10 +4615,10 @@ class _$CompanyItemResponse extends CompanyItemResponse { final CompanyEntity data; factory _$CompanyItemResponse( - [void Function(CompanyItemResponseBuilder) updates]) => + [void Function(CompanyItemResponseBuilder)? updates]) => (new CompanyItemResponseBuilder()..update(updates))._build(); - _$CompanyItemResponse._({this.data}) : super._() { + _$CompanyItemResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull(data, r'CompanyItemResponse', 'data'); } @@ -4630,10 +4637,10 @@ class _$CompanyItemResponse extends CompanyItemResponse { return other is CompanyItemResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -4650,11 +4657,11 @@ class _$CompanyItemResponse extends CompanyItemResponse { class CompanyItemResponseBuilder implements Builder { - _$CompanyItemResponse _$v; + _$CompanyItemResponse? _$v; - CompanyEntityBuilder _data; + CompanyEntityBuilder? _data; CompanyEntityBuilder get data => _$this._data ??= new CompanyEntityBuilder(); - set data(CompanyEntityBuilder data) => _$this._data = data; + set data(CompanyEntityBuilder? data) => _$this._data = data; CompanyItemResponseBuilder(); @@ -4674,7 +4681,7 @@ class CompanyItemResponseBuilder } @override - void update(void Function(CompanyItemResponseBuilder) updates) { + void update(void Function(CompanyItemResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -4686,7 +4693,7 @@ class CompanyItemResponseBuilder try { _$result = _$v ?? new _$CompanyItemResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -4710,10 +4717,11 @@ class _$RegistrationFieldEntity extends RegistrationFieldEntity { final bool visible; factory _$RegistrationFieldEntity( - [void Function(RegistrationFieldEntityBuilder) updates]) => + [void Function(RegistrationFieldEntityBuilder)? updates]) => (new RegistrationFieldEntityBuilder()..update(updates))._build(); - _$RegistrationFieldEntity._({this.key, this.required, this.visible}) + _$RegistrationFieldEntity._( + {required this.key, required this.required, required this.visible}) : super._() { BuiltValueNullFieldError.checkNotNull( key, r'RegistrationFieldEntity', 'key'); @@ -4741,10 +4749,10 @@ class _$RegistrationFieldEntity extends RegistrationFieldEntity { visible == other.visible; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, key.hashCode); _$hash = $jc(_$hash, required.hashCode); @@ -4766,19 +4774,19 @@ class _$RegistrationFieldEntity extends RegistrationFieldEntity { class RegistrationFieldEntityBuilder implements Builder { - _$RegistrationFieldEntity _$v; + _$RegistrationFieldEntity? _$v; - String _key; - String get key => _$this._key; - set key(String key) => _$this._key = key; + String? _key; + String? get key => _$this._key; + set key(String? key) => _$this._key = key; - bool _required; - bool get required => _$this._required; - set required(bool required) => _$this._required = required; + bool? _required; + bool? get required => _$this._required; + set required(bool? required) => _$this._required = required; - bool _visible; - bool get visible => _$this._visible; - set visible(bool visible) => _$this._visible = visible; + bool? _visible; + bool? get visible => _$this._visible; + set visible(bool? visible) => _$this._visible = visible; RegistrationFieldEntityBuilder() { RegistrationFieldEntity._initializeBuilder(this); @@ -4802,7 +4810,7 @@ class RegistrationFieldEntityBuilder } @override - void update(void Function(RegistrationFieldEntityBuilder) updates) { + void update(void Function(RegistrationFieldEntityBuilder)? updates) { if (updates != null) updates(this); } @@ -4831,10 +4839,12 @@ class _$DashboardField extends DashboardField { @override final String type; - factory _$DashboardField([void Function(DashboardFieldBuilder) updates]) => + factory _$DashboardField([void Function(DashboardFieldBuilder)? updates]) => (new DashboardFieldBuilder()..update(updates))._build(); - _$DashboardField._({this.field, this.period, this.type}) : super._() { + _$DashboardField._( + {required this.field, required this.period, required this.type}) + : super._() { BuiltValueNullFieldError.checkNotNull(field, r'DashboardField', 'field'); BuiltValueNullFieldError.checkNotNull(period, r'DashboardField', 'period'); BuiltValueNullFieldError.checkNotNull(type, r'DashboardField', 'type'); @@ -4857,10 +4867,10 @@ class _$DashboardField extends DashboardField { type == other.type; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, field.hashCode); _$hash = $jc(_$hash, period.hashCode); @@ -4881,19 +4891,19 @@ class _$DashboardField extends DashboardField { class DashboardFieldBuilder implements Builder { - _$DashboardField _$v; + _$DashboardField? _$v; - String _field; - String get field => _$this._field; - set field(String field) => _$this._field = field; + String? _field; + String? get field => _$this._field; + set field(String? field) => _$this._field = field; - String _period; - String get period => _$this._period; - set period(String period) => _$this._period = period; + String? _period; + String? get period => _$this._period; + set period(String? period) => _$this._period = period; - String _type; - String get type => _$this._type; - set type(String type) => _$this._type = type; + String? _type; + String? get type => _$this._type; + set type(String? type) => _$this._type = type; DashboardFieldBuilder() { DashboardField._initializeBuilder(this); @@ -4917,7 +4927,7 @@ class DashboardFieldBuilder } @override - void update(void Function(DashboardFieldBuilder) updates) { + void update(void Function(DashboardFieldBuilder)? updates) { if (updates != null) updates(this); } diff --git a/lib/data/models/credit_model.g.dart b/lib/data/models/credit_model.g.dart index f2a6f5fe2..7dce91e2a 100644 --- a/lib/data/models/credit_model.g.dart +++ b/lib/data/models/credit_model.g.dart @@ -19,9 +19,10 @@ class _$CreditListResponseSerializer final String wireName = 'CreditListResponse'; @override - Iterable serialize(Serializers serializers, CreditListResponse object, + Iterable serialize( + Serializers serializers, CreditListResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: @@ -33,21 +34,21 @@ class _$CreditListResponseSerializer @override CreditListResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new CreditListResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(InvoiceEntity)])) - as BuiltList); + BuiltList, const [const FullType(InvoiceEntity)]))! + as BuiltList); break; } } @@ -64,9 +65,10 @@ class _$CreditItemResponseSerializer final String wireName = 'CreditItemResponse'; @override - Iterable serialize(Serializers serializers, CreditItemResponse object, + Iterable serialize( + Serializers serializers, CreditItemResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType(InvoiceEntity)), @@ -77,19 +79,19 @@ class _$CreditItemResponseSerializer @override CreditItemResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new CreditItemResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, - specifiedType: const FullType(InvoiceEntity)) as InvoiceEntity); + specifiedType: const FullType(InvoiceEntity))! as InvoiceEntity); break; } } @@ -103,10 +105,10 @@ class _$CreditListResponse extends CreditListResponse { final BuiltList data; factory _$CreditListResponse( - [void Function(CreditListResponseBuilder) updates]) => + [void Function(CreditListResponseBuilder)? updates]) => (new CreditListResponseBuilder()..update(updates))._build(); - _$CreditListResponse._({this.data}) : super._() { + _$CreditListResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull(data, r'CreditListResponse', 'data'); } @@ -125,10 +127,10 @@ class _$CreditListResponse extends CreditListResponse { return other is CreditListResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -145,12 +147,12 @@ class _$CreditListResponse extends CreditListResponse { class CreditListResponseBuilder implements Builder { - _$CreditListResponse _$v; + _$CreditListResponse? _$v; - ListBuilder _data; + ListBuilder? _data; ListBuilder get data => _$this._data ??= new ListBuilder(); - set data(ListBuilder data) => _$this._data = data; + set data(ListBuilder? data) => _$this._data = data; CreditListResponseBuilder(); @@ -170,7 +172,7 @@ class CreditListResponseBuilder } @override - void update(void Function(CreditListResponseBuilder) updates) { + void update(void Function(CreditListResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -182,7 +184,7 @@ class CreditListResponseBuilder try { _$result = _$v ?? new _$CreditListResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -202,10 +204,10 @@ class _$CreditItemResponse extends CreditItemResponse { final InvoiceEntity data; factory _$CreditItemResponse( - [void Function(CreditItemResponseBuilder) updates]) => + [void Function(CreditItemResponseBuilder)? updates]) => (new CreditItemResponseBuilder()..update(updates))._build(); - _$CreditItemResponse._({this.data}) : super._() { + _$CreditItemResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull(data, r'CreditItemResponse', 'data'); } @@ -224,10 +226,10 @@ class _$CreditItemResponse extends CreditItemResponse { return other is CreditItemResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -244,11 +246,11 @@ class _$CreditItemResponse extends CreditItemResponse { class CreditItemResponseBuilder implements Builder { - _$CreditItemResponse _$v; + _$CreditItemResponse? _$v; - InvoiceEntityBuilder _data; + InvoiceEntityBuilder? _data; InvoiceEntityBuilder get data => _$this._data ??= new InvoiceEntityBuilder(); - set data(InvoiceEntityBuilder data) => _$this._data = data; + set data(InvoiceEntityBuilder? data) => _$this._data = data; CreditItemResponseBuilder(); @@ -268,7 +270,7 @@ class CreditItemResponseBuilder } @override - void update(void Function(CreditItemResponseBuilder) updates) { + void update(void Function(CreditItemResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -280,7 +282,7 @@ class CreditItemResponseBuilder try { _$result = _$v ?? new _$CreditItemResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); diff --git a/lib/data/models/dashboard_model.dart b/lib/data/models/dashboard_model.dart index e3278f98f..3f6db03ab 100644 --- a/lib/data/models/dashboard_model.dart +++ b/lib/data/models/dashboard_model.dart @@ -49,13 +49,13 @@ class DateRangeComparison extends EnumClass { } class DashboardSettings { - DateRange dateRange; - String startDate; - String endDate; - bool enableComparison; - DateRangeComparison compareDateRange; - String compareStartDate; - String compareEndDate; + DateRange? dateRange; + String? startDate; + String? endDate; + bool? enableComparison; + DateRangeComparison? compareDateRange; + String? compareStartDate; + String? compareEndDate; static DashboardSettings fromState(DashboardUIState state) { final settings = state.settings; diff --git a/lib/data/models/design_model.dart b/lib/data/models/design_model.dart index 68c9be422..405f85123 100644 --- a/lib/data/models/design_model.dart +++ b/lib/data/models/design_model.dart @@ -49,9 +49,9 @@ abstract class DesignItemResponse abstract class DesignPreviewRequest implements Built { factory DesignPreviewRequest({ - EntityType entityType, - String entityId, - DesignEntity design, + EntityType? entityType, + String? entityId, + required DesignEntity design, }) { return _$DesignPreviewRequest._( entityType: entityType ?? EntityType.invoice, @@ -87,10 +87,10 @@ abstract class DesignEntity extends Object with BaseEntity implements Built { factory DesignEntity( - {String id, AppState state, BuiltMap design}) { + {String? id, AppState? state, BuiltMap? design}) { if (design == null && state != null) { final designMap = state.designState.map; - design = designMap[state.company.settings.defaultInvoiceDesignId]?.design; + design = designMap[state.company!.settings.defaultInvoiceDesignId]?.design; } return _$DesignEntity._( @@ -141,23 +141,23 @@ abstract class DesignEntity extends Object String get displayName => name; - String getSection(String section) => design[section]; + String? getSection(String section) => design[section]; @override - List getActions( - {UserCompanyEntity userCompany, - ClientEntity client, + List getActions( + {UserCompanyEntity? userCompany, + ClientEntity? client, bool includeEdit = false, bool includePreview = false, bool multiselect = false}) { - final actions = []; + final actions = []; - if (!isDeleted && !multiselect) { - if (includeEdit && userCompany.canEditEntity(this)) { + if (!isDeleted! && !multiselect) { + if (includeEdit && userCompany!.canEditEntity(this)) { actions.add(EntityAction.edit); } - if (userCompany.canCreate(EntityType.invoice)) { + if (userCompany!.canCreate(EntityType.invoice)) { actions.add(EntityAction.newInvoice); } if (userCompany.canCreate(EntityType.quote)) { @@ -171,7 +171,7 @@ abstract class DesignEntity extends Object } } - if (userCompany.canCreate(EntityType.design) && !multiselect) { + if (userCompany!.canCreate(EntityType.design) && !multiselect) { actions.add(EntityAction.clone); } @@ -182,25 +182,25 @@ abstract class DesignEntity extends Object return actions..addAll(super.getActions(userCompany: userCompany)); } - int compareTo(DesignEntity design, String sortField, bool sortAscending) { + int compareTo(DesignEntity? design, String sortField, bool sortAscending) { int response = 0; final designA = sortAscending ? this : design; final designB = sortAscending ? design : this; switch (sortField) { case DesignFields.updatedAt: - response = designA.updatedAt.compareTo(designB.updatedAt); + response = designA!.updatedAt.compareTo(designB!.updatedAt); } if (response == 0) { - return designA.name.toLowerCase().compareTo(designB.name.toLowerCase()); + return designA!.name.toLowerCase().compareTo(designB!.name.toLowerCase()); } else { return response; } } @override - bool matchesFilter(String filter) { + bool matchesFilter(String? filter) { return matchesStrings( haystacks: [name], needle: filter, @@ -208,7 +208,7 @@ abstract class DesignEntity extends Object } @override - String matchesFilterValue(String filter) { + String? matchesFilterValue(String? filter) { return matchesStringsValue( haystacks: [name], needle: filter, @@ -219,10 +219,10 @@ abstract class DesignEntity extends Object String get listDisplayName => name; @override - double get listDisplayAmount => null; + double? get listDisplayAmount => null; @override - FormatNumberType get listDisplayAmountType => null; + FormatNumberType? get listDisplayAmountType => null; // ignore: unused_element static void _initializeBuilder(DesignEntityBuilder builder) => diff --git a/lib/data/models/design_model.g.dart b/lib/data/models/design_model.g.dart index 2cbe69acb..782e87e40 100644 --- a/lib/data/models/design_model.g.dart +++ b/lib/data/models/design_model.g.dart @@ -23,9 +23,10 @@ class _$DesignListResponseSerializer final String wireName = 'DesignListResponse'; @override - Iterable serialize(Serializers serializers, DesignListResponse object, + Iterable serialize( + Serializers serializers, DesignListResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: @@ -37,21 +38,21 @@ class _$DesignListResponseSerializer @override DesignListResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new DesignListResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(DesignEntity)])) - as BuiltList); + BuiltList, const [const FullType(DesignEntity)]))! + as BuiltList); break; } } @@ -68,9 +69,10 @@ class _$DesignItemResponseSerializer final String wireName = 'DesignItemResponse'; @override - Iterable serialize(Serializers serializers, DesignItemResponse object, + Iterable serialize( + Serializers serializers, DesignItemResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType(DesignEntity)), @@ -81,19 +83,19 @@ class _$DesignItemResponseSerializer @override DesignItemResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new DesignItemResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, - specifiedType: const FullType(DesignEntity)) as DesignEntity); + specifiedType: const FullType(DesignEntity))! as DesignEntity); break; } } @@ -113,10 +115,10 @@ class _$DesignPreviewRequestSerializer final String wireName = 'DesignPreviewRequest'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, DesignPreviewRequest object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'entity_type', serializers.serialize(object.entityType, specifiedType: const FullType(EntityType)), @@ -133,27 +135,27 @@ class _$DesignPreviewRequestSerializer @override DesignPreviewRequest deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new DesignPreviewRequestBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'entity_type': result.entityType = serializers.deserialize(value, - specifiedType: const FullType(EntityType)) as EntityType; + specifiedType: const FullType(EntityType))! as EntityType; break; case 'entity_id': result.entityId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'design': result.design.replace(serializers.deserialize(value, - specifiedType: const FullType(DesignEntity)) as DesignEntity); + specifiedType: const FullType(DesignEntity))! as DesignEntity); break; } } @@ -169,9 +171,9 @@ class _$DesignEntitySerializer implements StructuredSerializer { final String wireName = 'DesignEntity'; @override - Iterable serialize(Serializers serializers, DesignEntity object, + Iterable serialize(Serializers serializers, DesignEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'name', serializers.serialize(object.name, specifiedType: const FullType(String)), 'design', @@ -195,7 +197,7 @@ class _$DesignEntitySerializer implements StructuredSerializer { 'id', serializers.serialize(object.id, specifiedType: const FullType(String)), ]; - Object value; + Object? value; value = object.isChanged; if (value != null) { result @@ -228,64 +230,65 @@ class _$DesignEntitySerializer implements StructuredSerializer { } @override - DesignEntity deserialize(Serializers serializers, Iterable serialized, + DesignEntity deserialize( + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new DesignEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'name': result.name = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'design': result.design.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(String)]))); + const [const FullType(String), const FullType(String)]))!); break; case 'is_custom': result.isCustom = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'is_free': result.isFree = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'isChanged': result.isChanged = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'created_at': result.createdAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'updated_at': result.updatedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'archived_at': result.archivedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'is_deleted': result.isDeleted = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'user_id': result.createdUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'assigned_user_id': result.assignedUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -299,10 +302,10 @@ class _$DesignListResponse extends DesignListResponse { final BuiltList data; factory _$DesignListResponse( - [void Function(DesignListResponseBuilder) updates]) => + [void Function(DesignListResponseBuilder)? updates]) => (new DesignListResponseBuilder()..update(updates))._build(); - _$DesignListResponse._({this.data}) : super._() { + _$DesignListResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull(data, r'DesignListResponse', 'data'); } @@ -321,10 +324,10 @@ class _$DesignListResponse extends DesignListResponse { return other is DesignListResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -341,12 +344,12 @@ class _$DesignListResponse extends DesignListResponse { class DesignListResponseBuilder implements Builder { - _$DesignListResponse _$v; + _$DesignListResponse? _$v; - ListBuilder _data; + ListBuilder? _data; ListBuilder get data => _$this._data ??= new ListBuilder(); - set data(ListBuilder data) => _$this._data = data; + set data(ListBuilder? data) => _$this._data = data; DesignListResponseBuilder(); @@ -366,7 +369,7 @@ class DesignListResponseBuilder } @override - void update(void Function(DesignListResponseBuilder) updates) { + void update(void Function(DesignListResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -378,7 +381,7 @@ class DesignListResponseBuilder try { _$result = _$v ?? new _$DesignListResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -398,10 +401,10 @@ class _$DesignItemResponse extends DesignItemResponse { final DesignEntity data; factory _$DesignItemResponse( - [void Function(DesignItemResponseBuilder) updates]) => + [void Function(DesignItemResponseBuilder)? updates]) => (new DesignItemResponseBuilder()..update(updates))._build(); - _$DesignItemResponse._({this.data}) : super._() { + _$DesignItemResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull(data, r'DesignItemResponse', 'data'); } @@ -420,10 +423,10 @@ class _$DesignItemResponse extends DesignItemResponse { return other is DesignItemResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -440,11 +443,11 @@ class _$DesignItemResponse extends DesignItemResponse { class DesignItemResponseBuilder implements Builder { - _$DesignItemResponse _$v; + _$DesignItemResponse? _$v; - DesignEntityBuilder _data; + DesignEntityBuilder? _data; DesignEntityBuilder get data => _$this._data ??= new DesignEntityBuilder(); - set data(DesignEntityBuilder data) => _$this._data = data; + set data(DesignEntityBuilder? data) => _$this._data = data; DesignItemResponseBuilder(); @@ -464,7 +467,7 @@ class DesignItemResponseBuilder } @override - void update(void Function(DesignItemResponseBuilder) updates) { + void update(void Function(DesignItemResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -476,7 +479,7 @@ class DesignItemResponseBuilder try { _$result = _$v ?? new _$DesignItemResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -500,10 +503,11 @@ class _$DesignPreviewRequest extends DesignPreviewRequest { final DesignEntity design; factory _$DesignPreviewRequest( - [void Function(DesignPreviewRequestBuilder) updates]) => + [void Function(DesignPreviewRequestBuilder)? updates]) => (new DesignPreviewRequestBuilder()..update(updates))._build(); - _$DesignPreviewRequest._({this.entityType, this.entityId, this.design}) + _$DesignPreviewRequest._( + {required this.entityType, required this.entityId, required this.design}) : super._() { BuiltValueNullFieldError.checkNotNull( entityType, r'DesignPreviewRequest', 'entityType'); @@ -531,10 +535,10 @@ class _$DesignPreviewRequest extends DesignPreviewRequest { design == other.design; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, entityType.hashCode); _$hash = $jc(_$hash, entityId.hashCode); @@ -555,20 +559,20 @@ class _$DesignPreviewRequest extends DesignPreviewRequest { class DesignPreviewRequestBuilder implements Builder { - _$DesignPreviewRequest _$v; + _$DesignPreviewRequest? _$v; - EntityType _entityType; - EntityType get entityType => _$this._entityType; - set entityType(EntityType entityType) => _$this._entityType = entityType; + EntityType? _entityType; + EntityType? get entityType => _$this._entityType; + set entityType(EntityType? entityType) => _$this._entityType = entityType; - String _entityId; - String get entityId => _$this._entityId; - set entityId(String entityId) => _$this._entityId = entityId; + String? _entityId; + String? get entityId => _$this._entityId; + set entityId(String? entityId) => _$this._entityId = entityId; - DesignEntityBuilder _design; + DesignEntityBuilder? _design; DesignEntityBuilder get design => _$this._design ??= new DesignEntityBuilder(); - set design(DesignEntityBuilder design) => _$this._design = design; + set design(DesignEntityBuilder? design) => _$this._design = design; DesignPreviewRequestBuilder(); @@ -590,7 +594,7 @@ class DesignPreviewRequestBuilder } @override - void update(void Function(DesignPreviewRequestBuilder) updates) { + void update(void Function(DesignPreviewRequestBuilder)? updates) { if (updates != null) updates(this); } @@ -608,7 +612,7 @@ class DesignPreviewRequestBuilder entityId, r'DesignPreviewRequest', 'entityId'), design: design.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'design'; design.build(); @@ -633,7 +637,7 @@ class _$DesignEntity extends DesignEntity { @override final bool isFree; @override - final bool isChanged; + final bool? isChanged; @override final int createdAt; @override @@ -641,30 +645,30 @@ class _$DesignEntity extends DesignEntity { @override final int archivedAt; @override - final bool isDeleted; + final bool? isDeleted; @override - final String createdUserId; + final String? createdUserId; @override - final String assignedUserId; + final String? assignedUserId; @override final String id; - factory _$DesignEntity([void Function(DesignEntityBuilder) updates]) => + factory _$DesignEntity([void Function(DesignEntityBuilder)? updates]) => (new DesignEntityBuilder()..update(updates))._build(); _$DesignEntity._( - {this.name, - this.design, - this.isCustom, - this.isFree, + {required this.name, + required this.design, + required this.isCustom, + required this.isFree, this.isChanged, - this.createdAt, - this.updatedAt, - this.archivedAt, + required this.createdAt, + required this.updatedAt, + required this.archivedAt, this.isDeleted, this.createdUserId, this.assignedUserId, - this.id}) + required this.id}) : super._() { BuiltValueNullFieldError.checkNotNull(name, r'DesignEntity', 'name'); BuiltValueNullFieldError.checkNotNull(design, r'DesignEntity', 'design'); @@ -705,10 +709,10 @@ class _$DesignEntity extends DesignEntity { id == other.id; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, name.hashCode); _$hash = $jc(_$hash, design.hashCode); @@ -747,58 +751,58 @@ class _$DesignEntity extends DesignEntity { class DesignEntityBuilder implements Builder { - _$DesignEntity _$v; + _$DesignEntity? _$v; - String _name; - String get name => _$this._name; - set name(String name) => _$this._name = name; + String? _name; + String? get name => _$this._name; + set name(String? name) => _$this._name = name; - MapBuilder _design; + MapBuilder? _design; MapBuilder get design => _$this._design ??= new MapBuilder(); - set design(MapBuilder design) => _$this._design = design; + set design(MapBuilder? design) => _$this._design = design; - bool _isCustom; - bool get isCustom => _$this._isCustom; - set isCustom(bool isCustom) => _$this._isCustom = isCustom; + bool? _isCustom; + bool? get isCustom => _$this._isCustom; + set isCustom(bool? isCustom) => _$this._isCustom = isCustom; - bool _isFree; - bool get isFree => _$this._isFree; - set isFree(bool isFree) => _$this._isFree = isFree; + bool? _isFree; + bool? get isFree => _$this._isFree; + set isFree(bool? isFree) => _$this._isFree = isFree; - bool _isChanged; - bool get isChanged => _$this._isChanged; - set isChanged(bool isChanged) => _$this._isChanged = isChanged; + bool? _isChanged; + bool? get isChanged => _$this._isChanged; + set isChanged(bool? isChanged) => _$this._isChanged = isChanged; - int _createdAt; - int get createdAt => _$this._createdAt; - set createdAt(int createdAt) => _$this._createdAt = createdAt; + int? _createdAt; + int? get createdAt => _$this._createdAt; + set createdAt(int? createdAt) => _$this._createdAt = createdAt; - int _updatedAt; - int get updatedAt => _$this._updatedAt; - set updatedAt(int updatedAt) => _$this._updatedAt = updatedAt; + int? _updatedAt; + int? get updatedAt => _$this._updatedAt; + set updatedAt(int? updatedAt) => _$this._updatedAt = updatedAt; - int _archivedAt; - int get archivedAt => _$this._archivedAt; - set archivedAt(int archivedAt) => _$this._archivedAt = archivedAt; + int? _archivedAt; + int? get archivedAt => _$this._archivedAt; + set archivedAt(int? archivedAt) => _$this._archivedAt = archivedAt; - bool _isDeleted; - bool get isDeleted => _$this._isDeleted; - set isDeleted(bool isDeleted) => _$this._isDeleted = isDeleted; + bool? _isDeleted; + bool? get isDeleted => _$this._isDeleted; + set isDeleted(bool? isDeleted) => _$this._isDeleted = isDeleted; - String _createdUserId; - String get createdUserId => _$this._createdUserId; - set createdUserId(String createdUserId) => + String? _createdUserId; + String? get createdUserId => _$this._createdUserId; + set createdUserId(String? createdUserId) => _$this._createdUserId = createdUserId; - String _assignedUserId; - String get assignedUserId => _$this._assignedUserId; - set assignedUserId(String assignedUserId) => + String? _assignedUserId; + String? get assignedUserId => _$this._assignedUserId; + set assignedUserId(String? assignedUserId) => _$this._assignedUserId = assignedUserId; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; DesignEntityBuilder() { DesignEntity._initializeBuilder(this); @@ -831,7 +835,7 @@ class DesignEntityBuilder } @override - void update(void Function(DesignEntityBuilder) updates) { + void update(void Function(DesignEntityBuilder)? updates) { if (updates != null) updates(this); } @@ -863,7 +867,7 @@ class DesignEntityBuilder id: BuiltValueNullFieldError.checkNotNull( id, r'DesignEntity', 'id')); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'design'; design.build(); diff --git a/lib/data/models/document_model.dart b/lib/data/models/document_model.dart index 1e8e70a97..6c7c048fc 100644 --- a/lib/data/models/document_model.dart +++ b/lib/data/models/document_model.dart @@ -67,7 +67,7 @@ class DocumentFields { abstract class DocumentEntity extends Object with BaseEntity, SelectableEntity implements Built { - factory DocumentEntity({String id}) { + factory DocumentEntity({String? id}) { return _$DocumentEntity._( id: id ?? BaseEntity.nextId, isChanged: false, @@ -129,9 +129,8 @@ abstract class DocumentEntity extends Object String get preview; - @nullable @BuiltValueField(serialize: false) - Uint8List get data; + Uint8List? get data; @BuiltValueField(wireName: 'is_default') bool get isDefault; @@ -139,13 +138,11 @@ abstract class DocumentEntity extends Object @BuiltValueField(wireName: 'is_public') bool get isPublic; - @nullable @BuiltValueField(wireName: 'parent_id') - String get parentId; + String? get parentId; - @nullable @BuiltValueField(wireName: 'parent_type') - EntityType get parentType; + EntityType? get parentType; DocumentEntity get clone => rebuild((b) => b ..id = BaseEntity.nextId @@ -163,7 +160,7 @@ abstract class DocumentEntity extends Object } @override - double get listDisplayAmount => null; + double? get listDisplayAmount => null; @override FormatNumberType get listDisplayAmountType => FormatNumberType.money; @@ -189,42 +186,42 @@ abstract class DocumentEntity extends Object return fileName.endsWith('.pdf'); } - int compareTo(DocumentEntity document, - [String sortField, bool sortAscending = true]) { + int compareTo(DocumentEntity? document, + [String? sortField, bool sortAscending = true]) { int response = 0; - final DocumentEntity documentA = sortAscending ? this : document; - final DocumentEntity documentB = sortAscending ? document : this; + final DocumentEntity? documentA = sortAscending ? this : document; + final DocumentEntity? documentB = sortAscending ? document : this; switch (sortField) { case DocumentFields.name: - response = documentA.name + response = documentA!.name .toLowerCase() - .compareTo(documentB.name.toLowerCase()); + .compareTo(documentB!.name.toLowerCase()); break; case DocumentFields.id: - response = documentA.id.compareTo(documentB.id); + response = documentA!.id.compareTo(documentB!.id); break; case DocumentFields.createdAt: - response = documentA.createdAt.compareTo(documentB.createdAt); + response = documentA!.createdAt.compareTo(documentB!.createdAt); break; case DocumentFields.type: - response = documentA.type.compareTo(documentB.type); + response = documentA!.type.compareTo(documentB!.type); break; case DocumentFields.size: - response = documentA.size.compareTo(documentB.size); + response = documentA!.size.compareTo(documentB!.size); break; case DocumentFields.width: - response = documentA.width.compareTo(documentB.width); + response = documentA!.width.compareTo(documentB!.width); break; case DocumentFields.height: - response = documentA.height.compareTo(documentB.height); + response = documentA!.height.compareTo(documentB!.height); break; case DocumentFields.hash: - response = documentA.hash.compareTo(documentB.hash); + response = documentA!.hash.compareTo(documentB!.hash); break; case DocumentFields.linkedTo: - if (documentA.parentType == documentB.parentType) { - response = documentA.parentId.compareTo(documentB.parentId); + if (documentA!.parentType == documentB!.parentType) { + response = documentA.parentId!.compareTo(documentB.parentId!); } else { response = '${documentA.parentType}'.compareTo('${documentB.parentType}'); @@ -272,7 +269,7 @@ abstract class DocumentEntity extends Object } @override - bool matchesFilter(String filter) { + bool matchesFilter(String? filter) { return matchesStrings( haystacks: [ name, @@ -287,7 +284,7 @@ abstract class DocumentEntity extends Object } @override - String matchesFilterValue(String filter) { + String? matchesFilterValue(String? filter) { return matchesStringsValue( haystacks: [ name, @@ -299,16 +296,16 @@ abstract class DocumentEntity extends Object } @override - List getActions( - {UserCompanyEntity userCompany, - ClientEntity client, + List getActions( + {UserCompanyEntity? userCompany, + ClientEntity? client, bool includeEdit = false, bool includePreview = false, bool multiselect = false}) { - final actions = []; + final actions = []; - if (!isDeleted && !multiselect) { - if (includeEdit && userCompany.canEditEntity(this)) { + if (!isDeleted! && !multiselect) { + if (includeEdit && userCompany!.canEditEntity(this)) { actions.add(EntityAction.edit); } } @@ -317,7 +314,7 @@ abstract class DocumentEntity extends Object actions.add(EntityAction.viewDocument); } - if (!isDeleted) { + if (!isDeleted!) { if (multiselect) { actions.add(EntityAction.bulkDownload); } else { @@ -329,7 +326,7 @@ abstract class DocumentEntity extends Object actions.add(null); } - if (userCompany.canEditEntity(this) && !multiselect) { + if (userCompany!.canEditEntity(this) && !multiselect) { actions.add(EntityAction.delete); } diff --git a/lib/data/models/document_model.g.dart b/lib/data/models/document_model.g.dart index 7676c36a6..37b3b3a96 100644 --- a/lib/data/models/document_model.g.dart +++ b/lib/data/models/document_model.g.dart @@ -24,10 +24,10 @@ class _$DocumentListResponseSerializer final String wireName = 'DocumentListResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, DocumentListResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType( @@ -39,21 +39,21 @@ class _$DocumentListResponseSerializer @override DocumentListResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new DocumentListResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(DocumentEntity)])) - as BuiltList); + BuiltList, const [const FullType(DocumentEntity)]))! + as BuiltList); break; } } @@ -73,10 +73,10 @@ class _$DocumentItemResponseSerializer final String wireName = 'DocumentItemResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, DocumentItemResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType(DocumentEntity)), @@ -87,19 +87,20 @@ class _$DocumentItemResponseSerializer @override DocumentItemResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new DocumentItemResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, - specifiedType: const FullType(DocumentEntity)) as DocumentEntity); + specifiedType: const FullType(DocumentEntity))! + as DocumentEntity); break; } } @@ -116,9 +117,9 @@ class _$DocumentEntitySerializer final String wireName = 'DocumentEntity'; @override - Iterable serialize(Serializers serializers, DocumentEntity object, + Iterable serialize(Serializers serializers, DocumentEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'name', serializers.serialize(object.name, specifiedType: const FullType(String)), 'hash', @@ -154,7 +155,7 @@ class _$DocumentEntitySerializer 'id', serializers.serialize(object.id, specifiedType: const FullType(String)), ]; - Object value; + Object? value; value = object.parentId; if (value != null) { result @@ -202,95 +203,95 @@ class _$DocumentEntitySerializer @override DocumentEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new DocumentEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'name': result.name = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'hash': result.hash = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'type': result.type = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'url': result.url = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'width': result.width = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'height': result.height = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'size': result.size = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'preview': result.preview = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'is_default': result.isDefault = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'is_public': result.isPublic = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'parent_id': result.parentId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'parent_type': result.parentType = serializers.deserialize(value, - specifiedType: const FullType(EntityType)) as EntityType; + specifiedType: const FullType(EntityType)) as EntityType?; break; case 'isChanged': result.isChanged = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'created_at': result.createdAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'updated_at': result.updatedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'archived_at': result.archivedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'is_deleted': result.isDeleted = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'user_id': result.createdUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'assigned_user_id': result.assignedUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -304,10 +305,10 @@ class _$DocumentListResponse extends DocumentListResponse { final BuiltList data; factory _$DocumentListResponse( - [void Function(DocumentListResponseBuilder) updates]) => + [void Function(DocumentListResponseBuilder)? updates]) => (new DocumentListResponseBuilder()..update(updates))._build(); - _$DocumentListResponse._({this.data}) : super._() { + _$DocumentListResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull( data, r'DocumentListResponse', 'data'); } @@ -327,10 +328,10 @@ class _$DocumentListResponse extends DocumentListResponse { return other is DocumentListResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -347,12 +348,12 @@ class _$DocumentListResponse extends DocumentListResponse { class DocumentListResponseBuilder implements Builder { - _$DocumentListResponse _$v; + _$DocumentListResponse? _$v; - ListBuilder _data; + ListBuilder? _data; ListBuilder get data => _$this._data ??= new ListBuilder(); - set data(ListBuilder data) => _$this._data = data; + set data(ListBuilder? data) => _$this._data = data; DocumentListResponseBuilder(); @@ -372,7 +373,7 @@ class DocumentListResponseBuilder } @override - void update(void Function(DocumentListResponseBuilder) updates) { + void update(void Function(DocumentListResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -384,7 +385,7 @@ class DocumentListResponseBuilder try { _$result = _$v ?? new _$DocumentListResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -404,10 +405,10 @@ class _$DocumentItemResponse extends DocumentItemResponse { final DocumentEntity data; factory _$DocumentItemResponse( - [void Function(DocumentItemResponseBuilder) updates]) => + [void Function(DocumentItemResponseBuilder)? updates]) => (new DocumentItemResponseBuilder()..update(updates))._build(); - _$DocumentItemResponse._({this.data}) : super._() { + _$DocumentItemResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull( data, r'DocumentItemResponse', 'data'); } @@ -427,10 +428,10 @@ class _$DocumentItemResponse extends DocumentItemResponse { return other is DocumentItemResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -447,12 +448,12 @@ class _$DocumentItemResponse extends DocumentItemResponse { class DocumentItemResponseBuilder implements Builder { - _$DocumentItemResponse _$v; + _$DocumentItemResponse? _$v; - DocumentEntityBuilder _data; + DocumentEntityBuilder? _data; DocumentEntityBuilder get data => _$this._data ??= new DocumentEntityBuilder(); - set data(DocumentEntityBuilder data) => _$this._data = data; + set data(DocumentEntityBuilder? data) => _$this._data = data; DocumentItemResponseBuilder(); @@ -472,7 +473,7 @@ class DocumentItemResponseBuilder } @override - void update(void Function(DocumentItemResponseBuilder) updates) { + void update(void Function(DocumentItemResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -484,7 +485,7 @@ class DocumentItemResponseBuilder try { _$result = _$v ?? new _$DocumentItemResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -517,17 +518,17 @@ class _$DocumentEntity extends DocumentEntity { @override final String preview; @override - final Uint8List data; + final Uint8List? data; @override final bool isDefault; @override final bool isPublic; @override - final String parentId; + final String? parentId; @override - final EntityType parentType; + final EntityType? parentType; @override - final bool isChanged; + final bool? isChanged; @override final int createdAt; @override @@ -535,39 +536,39 @@ class _$DocumentEntity extends DocumentEntity { @override final int archivedAt; @override - final bool isDeleted; + final bool? isDeleted; @override - final String createdUserId; + final String? createdUserId; @override - final String assignedUserId; + final String? assignedUserId; @override final String id; - factory _$DocumentEntity([void Function(DocumentEntityBuilder) updates]) => + factory _$DocumentEntity([void Function(DocumentEntityBuilder)? updates]) => (new DocumentEntityBuilder()..update(updates))._build(); _$DocumentEntity._( - {this.name, - this.hash, - this.type, - this.url, - this.width, - this.height, - this.size, - this.preview, + {required this.name, + required this.hash, + required this.type, + required this.url, + required this.width, + required this.height, + required this.size, + required this.preview, this.data, - this.isDefault, - this.isPublic, + required this.isDefault, + required this.isPublic, this.parentId, this.parentType, this.isChanged, - this.createdAt, - this.updatedAt, - this.archivedAt, + required this.createdAt, + required this.updatedAt, + required this.archivedAt, this.isDeleted, this.createdUserId, this.assignedUserId, - this.id}) + required this.id}) : super._() { BuiltValueNullFieldError.checkNotNull(name, r'DocumentEntity', 'name'); BuiltValueNullFieldError.checkNotNull(hash, r'DocumentEntity', 'hash'); @@ -626,10 +627,10 @@ class _$DocumentEntity extends DocumentEntity { id == other.id; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, name.hashCode); _$hash = $jc(_$hash, hash.hashCode); @@ -686,93 +687,93 @@ class _$DocumentEntity extends DocumentEntity { class DocumentEntityBuilder implements Builder { - _$DocumentEntity _$v; + _$DocumentEntity? _$v; - String _name; - String get name => _$this._name; - set name(String name) => _$this._name = name; + String? _name; + String? get name => _$this._name; + set name(String? name) => _$this._name = name; - String _hash; - String get hash => _$this._hash; - set hash(String hash) => _$this._hash = hash; + String? _hash; + String? get hash => _$this._hash; + set hash(String? hash) => _$this._hash = hash; - String _type; - String get type => _$this._type; - set type(String type) => _$this._type = type; + String? _type; + String? get type => _$this._type; + set type(String? type) => _$this._type = type; - String _url; - String get url => _$this._url; - set url(String url) => _$this._url = url; + String? _url; + String? get url => _$this._url; + set url(String? url) => _$this._url = url; - int _width; - int get width => _$this._width; - set width(int width) => _$this._width = width; + int? _width; + int? get width => _$this._width; + set width(int? width) => _$this._width = width; - int _height; - int get height => _$this._height; - set height(int height) => _$this._height = height; + int? _height; + int? get height => _$this._height; + set height(int? height) => _$this._height = height; - int _size; - int get size => _$this._size; - set size(int size) => _$this._size = size; + int? _size; + int? get size => _$this._size; + set size(int? size) => _$this._size = size; - String _preview; - String get preview => _$this._preview; - set preview(String preview) => _$this._preview = preview; + String? _preview; + String? get preview => _$this._preview; + set preview(String? preview) => _$this._preview = preview; - Uint8List _data; - Uint8List get data => _$this._data; - set data(Uint8List data) => _$this._data = data; + Uint8List? _data; + Uint8List? get data => _$this._data; + set data(Uint8List? data) => _$this._data = data; - bool _isDefault; - bool get isDefault => _$this._isDefault; - set isDefault(bool isDefault) => _$this._isDefault = isDefault; + bool? _isDefault; + bool? get isDefault => _$this._isDefault; + set isDefault(bool? isDefault) => _$this._isDefault = isDefault; - bool _isPublic; - bool get isPublic => _$this._isPublic; - set isPublic(bool isPublic) => _$this._isPublic = isPublic; + bool? _isPublic; + bool? get isPublic => _$this._isPublic; + set isPublic(bool? isPublic) => _$this._isPublic = isPublic; - String _parentId; - String get parentId => _$this._parentId; - set parentId(String parentId) => _$this._parentId = parentId; + String? _parentId; + String? get parentId => _$this._parentId; + set parentId(String? parentId) => _$this._parentId = parentId; - EntityType _parentType; - EntityType get parentType => _$this._parentType; - set parentType(EntityType parentType) => _$this._parentType = parentType; + EntityType? _parentType; + EntityType? get parentType => _$this._parentType; + set parentType(EntityType? parentType) => _$this._parentType = parentType; - bool _isChanged; - bool get isChanged => _$this._isChanged; - set isChanged(bool isChanged) => _$this._isChanged = isChanged; + bool? _isChanged; + bool? get isChanged => _$this._isChanged; + set isChanged(bool? isChanged) => _$this._isChanged = isChanged; - int _createdAt; - int get createdAt => _$this._createdAt; - set createdAt(int createdAt) => _$this._createdAt = createdAt; + int? _createdAt; + int? get createdAt => _$this._createdAt; + set createdAt(int? createdAt) => _$this._createdAt = createdAt; - int _updatedAt; - int get updatedAt => _$this._updatedAt; - set updatedAt(int updatedAt) => _$this._updatedAt = updatedAt; + int? _updatedAt; + int? get updatedAt => _$this._updatedAt; + set updatedAt(int? updatedAt) => _$this._updatedAt = updatedAt; - int _archivedAt; - int get archivedAt => _$this._archivedAt; - set archivedAt(int archivedAt) => _$this._archivedAt = archivedAt; + int? _archivedAt; + int? get archivedAt => _$this._archivedAt; + set archivedAt(int? archivedAt) => _$this._archivedAt = archivedAt; - bool _isDeleted; - bool get isDeleted => _$this._isDeleted; - set isDeleted(bool isDeleted) => _$this._isDeleted = isDeleted; + bool? _isDeleted; + bool? get isDeleted => _$this._isDeleted; + set isDeleted(bool? isDeleted) => _$this._isDeleted = isDeleted; - String _createdUserId; - String get createdUserId => _$this._createdUserId; - set createdUserId(String createdUserId) => + String? _createdUserId; + String? get createdUserId => _$this._createdUserId; + set createdUserId(String? createdUserId) => _$this._createdUserId = createdUserId; - String _assignedUserId; - String get assignedUserId => _$this._assignedUserId; - set assignedUserId(String assignedUserId) => + String? _assignedUserId; + String? get assignedUserId => _$this._assignedUserId; + set assignedUserId(String? assignedUserId) => _$this._assignedUserId = assignedUserId; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; DocumentEntityBuilder() { DocumentEntity._initializeBuilder(this); @@ -814,7 +815,7 @@ class DocumentEntityBuilder } @override - void update(void Function(DocumentEntityBuilder) updates) { + void update(void Function(DocumentEntityBuilder)? updates) { if (updates != null) updates(this); } diff --git a/lib/data/models/entities.dart b/lib/data/models/entities.dart index 3e63a91f1..d6acb51b3 100644 --- a/lib/data/models/entities.dart +++ b/lib/data/models/entities.dart @@ -329,23 +329,23 @@ class EntityStats { this.currencyId, }); - final int countActive; + final int? countActive; - final int countArchived; + final int? countArchived; - final double total; + final double? total; - final String currencyId; + final String? currencyId; String present(String activeLabel, String archivedLabel) { String str = ''; - if (countActive > 0) { + if (countActive! > 0) { str = '$countActive $activeLabel'; - if (countArchived > 0) { + if (countArchived! > 0) { str += ' • '; } } - if (countArchived > 0) { + if (countArchived! > 0) { str += '$countArchived $archivedLabel'; } return str; @@ -355,15 +355,15 @@ class EntityStats { abstract class SelectableEntity { String get id; - bool matchesFilter(String filter) => true; + bool matchesFilter(String? filter) => true; - String matchesFilterValue(String filter) => null; + String? matchesFilterValue(String? filter) => null; - String get listDisplayName => 'Error: listDisplayName not set'; + String? get listDisplayName => 'Error: listDisplayName not set'; - double get listDisplayAmount => null; + double? get listDisplayAmount => null; - FormatNumberType get listDisplayAmountType => FormatNumberType.money; + FormatNumberType? get listDisplayAmountType => FormatNumberType.money; } class EntityFields { @@ -383,8 +383,7 @@ abstract class BaseEntity implements SelectableEntity { static String get nextIdempotencyKey => getRandomString(); - @nullable - bool get isChanged; + bool? get isChanged; @BuiltValueField(wireName: 'created_at') int get createdAt; @@ -395,37 +394,33 @@ abstract class BaseEntity implements SelectableEntity { @BuiltValueField(wireName: 'archived_at') int get archivedAt; - @nullable @BuiltValueField(wireName: 'is_deleted') - bool get isDeleted; + bool? get isDeleted; - @nullable @BuiltValueField(wireName: 'user_id') - String get createdUserId; + String? get createdUserId; - @nullable @BuiltValueField(wireName: 'assigned_user_id') - String get assignedUserId; + String? get assignedUserId; - @nullable @BuiltValueField(wireName: 'entity_type') - EntityType get entityType; + EntityType? get entityType; String get entityKey => '__${entityType}__${id}__'; - bool get isNew => (id ?? '').isEmpty || (int.tryParse(id) ?? 0) < 0; + bool get isNew => id.isEmpty || (int.tryParse(id) ?? 0) < 0; bool get isOld => !isNew; bool get isDeletable => true; - bool get isActive => !isArchived && !isDeleted; + bool get isActive => !isArchived && !isDeleted!; - bool get isNotActive => isArchived || isDeleted; + bool get isNotActive => isArchived || isDeleted!; - bool get isArchived => archivedAt != null && archivedAt > 0 && !isDeleted; + bool get isArchived => archivedAt != null && archivedAt > 0 && !isDeleted!; - bool get isEditable => !isDeleted; + bool get isEditable => !isDeleted!; bool get isRestorable => true; @@ -436,22 +431,23 @@ abstract class BaseEntity implements SelectableEntity { ? kEntityStateActive : (isArchived ? kEntityStateArchived : kEntityStateDeleted); - ReportStringValue getReportString({String value}) => + ReportStringValue getReportString({String? value}) => ReportStringValue(entityId: id, entityType: entityType, value: value); ReportEntityTypeValue getReportEntityType() => ReportEntityTypeValue( entityId: id, entityType: entityType, value: entityType); - ReportBoolValue getReportBool({bool value}) => + ReportBoolValue getReportBool({bool? value}) => ReportBoolValue(entityId: id, entityType: entityType, value: value); - ReportAgeValue getReportAge({int value, String currencyId}) => ReportAgeValue( - entityType: entityType, - entityId: id, - value: value, - currencyId: currencyId); + ReportAgeValue getReportAge({int? value, String? currencyId}) => + ReportAgeValue( + entityType: entityType, + entityId: id, + value: value, + currencyId: currencyId); - ReportDurationValue getReportDuration({int value, String currencyId}) => + ReportDurationValue getReportDuration({int? value, String? currencyId}) => ReportDurationValue( entityType: entityType, entityId: id, @@ -460,10 +456,10 @@ abstract class BaseEntity implements SelectableEntity { ); ReportNumberValue getReportDouble( - {double value, - String currencyId, - double exchangeRate, - FormatNumberType formatNumberType}) => + {double? value, + String? currencyId, + double? exchangeRate, + FormatNumberType? formatNumberType}) => ReportNumberValue( entityId: id, entityType: entityType, @@ -473,16 +469,18 @@ abstract class BaseEntity implements SelectableEntity { formatNumberType: formatNumberType); ReportIntValue getReportInt( - {int value, String currencyId, FormatNumberType formatNumberType}) => + {int? value, + String? currencyId, + FormatNumberType? formatNumberType}) => ReportIntValue( entityId: id, entityType: entityType, value: value, ); - List getActions( - {UserCompanyEntity userCompany, - ClientEntity client, + List getActions( + {UserCompanyEntity? userCompany, + ClientEntity? client, bool includeEdit = false, bool multiselect = false}) { if (isNew || entityType == EntityType.company) { @@ -491,7 +489,7 @@ abstract class BaseEntity implements SelectableEntity { final actions = []; - if (userCompany.canEditEntity(this) && (isArchived || isDeleted)) { + if (userCompany!.canEditEntity(this) && (isArchived || isDeleted!)) { actions.add(EntityAction.restore); } @@ -506,7 +504,8 @@ abstract class BaseEntity implements SelectableEntity { return actions; } - bool matchesEntityFilter(EntityType filterEntityType, String filterEntityId) { + bool matchesEntityFilter( + EntityType? filterEntityType, String? filterEntityId) { return id == filterEntityId && entityType == filterEntityType; } @@ -527,7 +526,7 @@ abstract class BaseEntity implements SelectableEntity { return true; } - if (states.contains(EntityState.deleted) && isDeleted) { + if (states.contains(EntityState.deleted) && isDeleted!) { return true; } @@ -538,7 +537,7 @@ abstract class BaseEntity implements SelectableEntity { abstract class HasActivities { BuiltList get activities; - Iterable getActivities({String invoiceId, String typeId}) { + Iterable getActivities({String? invoiceId, String? typeId}) { return activities.where((activity) { if (invoiceId != null && activity.invoiceId != invoiceId) { return false; @@ -552,7 +551,7 @@ abstract class HasActivities { } abstract class BelongsToClient { - String get clientId; + String? get clientId; } abstract class BelongsToVendor { @@ -692,40 +691,32 @@ abstract class ActivityEntity @BuiltValueField(wireName: 'activity_type_id') String get activityTypeId; - @nullable @BuiltValueField(wireName: 'client_id') - String get clientId; + String? get clientId; @BuiltValueField(wireName: 'user_id') String get userId; - @nullable @BuiltValueField(wireName: 'invoice_id') - String get invoiceId; + String? get invoiceId; - @nullable @BuiltValueField(wireName: 'recurring_invoice_id') - String get recurringInvoiceId; + String? get recurringInvoiceId; - @nullable @BuiltValueField(wireName: 'recurring_expense_id') - String get recurringExpenseId; + String? get recurringExpenseId; - @nullable @BuiltValueField(wireName: 'purchase_order_id') - String get purchaseOrderId; + String? get purchaseOrderId; - @nullable @BuiltValueField(wireName: 'quote_id') - String get quoteId; + String? get quoteId; - @nullable @BuiltValueField(wireName: 'payment_id') - String get paymentId; + String? get paymentId; - @nullable @BuiltValueField(wireName: 'credit_id') - String get creditId; + String? get creditId; @BuiltValueField(wireName: 'updated_at') int get updatedAt; @@ -733,45 +724,35 @@ abstract class ActivityEntity @BuiltValueField(wireName: 'created_at') int get createdAt; - @nullable @BuiltValueField(wireName: 'expense_id') - String get expenseId; + String? get expenseId; - @nullable @BuiltValueField(wireName: 'is_system') - bool get isSystem; + bool? get isSystem; - @nullable - String get ip; + String? get ip; - @nullable @BuiltValueField(wireName: 'contact_id') - String get contactId; + String? get contactId; - @nullable @BuiltValueField(wireName: 'task_id') - String get taskId; + String? get taskId; - @nullable @BuiltValueField(wireName: 'project_id') - String get projectId; + String? get projectId; - @nullable @BuiltValueField(wireName: 'vendor_id') - String get vendorId; + String? get vendorId; - @nullable @BuiltValueField(wireName: 'vendor_contact_id') - String get vendorContactId; + String? get vendorContactId; - @nullable @BuiltValueField(wireName: 'token_id') - String get tokenId; + String? get tokenId; - @nullable - InvoiceHistoryEntity get history; + InvoiceHistoryEntity? get history; - EntityType get entityType { + EntityType? get entityType { if ([ kActivityCreateClient, kActivityUpdateClient, @@ -906,43 +887,43 @@ abstract class ActivityEntity } String getDescription( - String activity, - String systemString, - String recurringString, { - UserEntity user, - ClientEntity client, - InvoiceEntity invoice, - PaymentEntity payment, - InvoiceEntity credit, - InvoiceEntity quote, - TaskEntity task, - ExpenseEntity expense, - VendorEntity vendor, - InvoiceEntity recurringInvoice, - ExpenseEntity recurringExpense, - InvoiceEntity purchaseOrder, + String? activity, + String? systemString, + String? recurringString, { + UserEntity? user, + ClientEntity? client, + InvoiceEntity? invoice, + PaymentEntity? payment, + InvoiceEntity? credit, + InvoiceEntity? quote, + TaskEntity? task, + ExpenseEntity? expense, + VendorEntity? vendor, + InvoiceEntity? recurringInvoice, + ExpenseEntity? recurringExpense, + InvoiceEntity? purchaseOrder, }) { - ClientContactEntity clientContact; - VendorContactEntity vendorContact; - if (client != null && contactId != null && contactId.isNotEmpty) { + ClientContactEntity? clientContact; + VendorContactEntity? vendorContact; + if (client != null && contactId != null && contactId!.isNotEmpty) { clientContact = client.getContact(contactId); } if (vendor != null && vendorContactId != null && - vendorContactId.isNotEmpty) { + vendorContactId!.isNotEmpty) { vendorContact = vendor.getContact(vendorContactId); } if ((recurringInvoice?.isOld ?? false) && (invoice?.isOld ?? false)) { - activity = activity.replaceFirst( - ':user', '$recurringString ${recurringInvoice.number}'); + activity = activity!.replaceFirst( + ':user', '$recurringString ${recurringInvoice!.number}'); } else if ((recurringExpense?.isOld ?? false) && (expense?.isOld ?? false)) { - activity = activity.replaceFirst( - ':user', '$recurringString ${recurringExpense.number}'); + activity = activity!.replaceFirst( + ':user', '$recurringString ${recurringExpense!.number}'); } else { - activity = - activity.replaceFirst(':user', user?.listDisplayName ?? systemString); + activity = activity! + .replaceFirst(':user', user?.listDisplayName ?? systemString!); } activity = activity.replaceFirst(':client', client?.displayName ?? ''); @@ -957,14 +938,14 @@ abstract class ActivityEntity kActivityAcceptPurchaseOrder, ].contains(activityTypeId)) { final name = (vendorContact?.fullName ?? '').isNotEmpty - ? (vendorContact.fullName + ' (' + (vendor?.name ?? '') + ')') + ? (vendorContact!.fullName + ' (' + (vendor?.name ?? '') + ')') : (vendor?.name ?? ''); activity = activity.replaceFirst(':contact', name); } else { final name = (clientContact?.fullName ?? '').isNotEmpty - ? clientContact.fullName + + ? clientContact!.fullName + ((client?.name ?? '').isNotEmpty - ? (' (' + client.name + ')') + ? (' (' + client!.name + ')') : '') : (client?.displayName ?? ''); activity = activity.replaceFirst(':contact', name); @@ -1011,17 +992,14 @@ abstract class LedgerEntity @BuiltValueField(wireName: 'created_at') int get createdAt; - @nullable @BuiltValueField(wireName: 'invoice_id') - String get invoiceId; + String? get invoiceId; - @nullable @BuiltValueField(wireName: 'credit_id') - String get creditId; + String? get creditId; - @nullable @BuiltValueField(wireName: 'payment_id') - String get paymentId; + String? get paymentId; EntityType get entityType { if (creditId != null) { @@ -1033,7 +1011,7 @@ abstract class LedgerEntity } } - String get entityId { + String? get entityId { if (creditId != null) { return creditId; } else if (paymentId != null) { diff --git a/lib/data/models/entities.g.dart b/lib/data/models/entities.g.dart index c95e96bec..58cdbb391 100644 --- a/lib/data/models/entities.g.dart +++ b/lib/data/models/entities.g.dart @@ -419,9 +419,9 @@ class _$ErrorMessageSerializer implements StructuredSerializer { final String wireName = 'ErrorMessage'; @override - Iterable serialize(Serializers serializers, ErrorMessage object, + Iterable serialize(Serializers serializers, ErrorMessage object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'message', serializers.serialize(object.message, specifiedType: const FullType(String)), @@ -431,19 +431,20 @@ class _$ErrorMessageSerializer implements StructuredSerializer { } @override - ErrorMessage deserialize(Serializers serializers, Iterable serialized, + ErrorMessage deserialize( + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ErrorMessageBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'message': result.message = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -459,9 +460,9 @@ class _$LoginResponseSerializer implements StructuredSerializer { final String wireName = 'LoginResponse'; @override - Iterable serialize(Serializers serializers, LoginResponse object, + Iterable serialize(Serializers serializers, LoginResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.userCompanies, specifiedType: const FullType( @@ -476,25 +477,25 @@ class _$LoginResponseSerializer implements StructuredSerializer { @override LoginResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new LoginResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.userCompanies.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(UserCompanyEntity)])) - as BuiltList); + BuiltList, const [const FullType(UserCompanyEntity)]))! + as BuiltList); break; case 'static': result.static.replace(serializers.deserialize(value, - specifiedType: const FullType(StaticDataEntity)) + specifiedType: const FullType(StaticDataEntity))! as StaticDataEntity); break; } @@ -512,9 +513,9 @@ class _$ActivityEntitySerializer final String wireName = 'ActivityEntity'; @override - Iterable serialize(Serializers serializers, ActivityEntity object, + Iterable serialize(Serializers serializers, ActivityEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'notes', serializers.serialize(object.notes, specifiedType: const FullType(String)), @@ -533,7 +534,7 @@ class _$ActivityEntitySerializer serializers.serialize(object.createdAt, specifiedType: const FullType(int)), ]; - Object value; + Object? value; value = object.clientId; if (value != null) { result @@ -665,111 +666,111 @@ class _$ActivityEntitySerializer @override ActivityEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ActivityEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'notes': result.notes = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'id': result.key = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'activity_type_id': result.activityTypeId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'client_id': result.clientId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'user_id': result.userId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'invoice_id': result.invoiceId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'recurring_invoice_id': result.recurringInvoiceId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'recurring_expense_id': result.recurringExpenseId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'purchase_order_id': result.purchaseOrderId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'quote_id': result.quoteId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'payment_id': result.paymentId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'credit_id': result.creditId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'updated_at': result.updatedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'created_at': result.createdAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'expense_id': result.expenseId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'is_system': result.isSystem = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'ip': result.ip = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'contact_id': result.contactId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'task_id': result.taskId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'project_id': result.projectId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'vendor_id': result.vendorId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'vendor_contact_id': result.vendorContactId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'token_id': result.tokenId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'history': result.history.replace(serializers.deserialize(value, - specifiedType: const FullType(InvoiceHistoryEntity)) + specifiedType: const FullType(InvoiceHistoryEntity))! as InvoiceHistoryEntity); break; } @@ -786,9 +787,9 @@ class _$LedgerEntitySerializer implements StructuredSerializer { final String wireName = 'LedgerEntity'; @override - Iterable serialize(Serializers serializers, LedgerEntity object, + Iterable serialize(Serializers serializers, LedgerEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'notes', serializers.serialize(object.notes, specifiedType: const FullType(String)), @@ -802,7 +803,7 @@ class _$LedgerEntitySerializer implements StructuredSerializer { serializers.serialize(object.createdAt, specifiedType: const FullType(int)), ]; - Object value; + Object? value; value = object.invoiceId; if (value != null) { result @@ -828,43 +829,44 @@ class _$LedgerEntitySerializer implements StructuredSerializer { } @override - LedgerEntity deserialize(Serializers serializers, Iterable serialized, + LedgerEntity deserialize( + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new LedgerEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'notes': result.notes = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'balance': result.balance = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'adjustment': result.adjustment = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'created_at': result.createdAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'invoice_id': result.invoiceId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'credit_id': result.creditId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'payment_id': result.paymentId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; } } @@ -877,10 +879,10 @@ class _$ErrorMessage extends ErrorMessage { @override final String message; - factory _$ErrorMessage([void Function(ErrorMessageBuilder) updates]) => + factory _$ErrorMessage([void Function(ErrorMessageBuilder)? updates]) => (new ErrorMessageBuilder()..update(updates))._build(); - _$ErrorMessage._({this.message}) : super._() { + _$ErrorMessage._({required this.message}) : super._() { BuiltValueNullFieldError.checkNotNull(message, r'ErrorMessage', 'message'); } @@ -897,10 +899,10 @@ class _$ErrorMessage extends ErrorMessage { return other is ErrorMessage && message == other.message; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, message.hashCode); _$hash = $jf(_$hash); @@ -917,11 +919,11 @@ class _$ErrorMessage extends ErrorMessage { class ErrorMessageBuilder implements Builder { - _$ErrorMessage _$v; + _$ErrorMessage? _$v; - String _message; - String get message => _$this._message; - set message(String message) => _$this._message = message; + String? _message; + String? get message => _$this._message; + set message(String? message) => _$this._message = message; ErrorMessageBuilder(); @@ -941,7 +943,7 @@ class ErrorMessageBuilder } @override - void update(void Function(ErrorMessageBuilder) updates) { + void update(void Function(ErrorMessageBuilder)? updates) { if (updates != null) updates(this); } @@ -964,10 +966,11 @@ class _$LoginResponse extends LoginResponse { @override final StaticDataEntity static; - factory _$LoginResponse([void Function(LoginResponseBuilder) updates]) => + factory _$LoginResponse([void Function(LoginResponseBuilder)? updates]) => (new LoginResponseBuilder()..update(updates))._build(); - _$LoginResponse._({this.userCompanies, this.static}) : super._() { + _$LoginResponse._({required this.userCompanies, required this.static}) + : super._() { BuiltValueNullFieldError.checkNotNull( userCompanies, r'LoginResponse', 'userCompanies'); BuiltValueNullFieldError.checkNotNull(static, r'LoginResponse', 'static'); @@ -988,10 +991,10 @@ class _$LoginResponse extends LoginResponse { static == other.static; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, userCompanies.hashCode); _$hash = $jc(_$hash, static.hashCode); @@ -1010,18 +1013,18 @@ class _$LoginResponse extends LoginResponse { class LoginResponseBuilder implements Builder { - _$LoginResponse _$v; + _$LoginResponse? _$v; - ListBuilder _userCompanies; + ListBuilder? _userCompanies; ListBuilder get userCompanies => _$this._userCompanies ??= new ListBuilder(); - set userCompanies(ListBuilder userCompanies) => + set userCompanies(ListBuilder? userCompanies) => _$this._userCompanies = userCompanies; - StaticDataEntityBuilder _static; + StaticDataEntityBuilder? _static; StaticDataEntityBuilder get static => _$this._static ??= new StaticDataEntityBuilder(); - set static(StaticDataEntityBuilder static) => _$this._static = static; + set static(StaticDataEntityBuilder? static) => _$this._static = static; LoginResponseBuilder(); @@ -1042,7 +1045,7 @@ class LoginResponseBuilder } @override - void update(void Function(LoginResponseBuilder) updates) { + void update(void Function(LoginResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -1056,7 +1059,7 @@ class LoginResponseBuilder new _$LoginResponse._( userCompanies: userCompanies.build(), static: static.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'userCompanies'; userCompanies.build(); @@ -1081,57 +1084,57 @@ class _$ActivityEntity extends ActivityEntity { @override final String activityTypeId; @override - final String clientId; + final String? clientId; @override final String userId; @override - final String invoiceId; + final String? invoiceId; @override - final String recurringInvoiceId; + final String? recurringInvoiceId; @override - final String recurringExpenseId; + final String? recurringExpenseId; @override - final String purchaseOrderId; + final String? purchaseOrderId; @override - final String quoteId; + final String? quoteId; @override - final String paymentId; + final String? paymentId; @override - final String creditId; + final String? creditId; @override final int updatedAt; @override final int createdAt; @override - final String expenseId; + final String? expenseId; @override - final bool isSystem; + final bool? isSystem; @override - final String ip; + final String? ip; @override - final String contactId; + final String? contactId; @override - final String taskId; + final String? taskId; @override - final String projectId; + final String? projectId; @override - final String vendorId; + final String? vendorId; @override - final String vendorContactId; + final String? vendorContactId; @override - final String tokenId; + final String? tokenId; @override - final InvoiceHistoryEntity history; + final InvoiceHistoryEntity? history; - factory _$ActivityEntity([void Function(ActivityEntityBuilder) updates]) => + factory _$ActivityEntity([void Function(ActivityEntityBuilder)? updates]) => (new ActivityEntityBuilder()..update(updates))._build(); _$ActivityEntity._( - {this.notes, - this.key, - this.activityTypeId, + {required this.notes, + required this.key, + required this.activityTypeId, this.clientId, - this.userId, + required this.userId, this.invoiceId, this.recurringInvoiceId, this.recurringExpenseId, @@ -1139,8 +1142,8 @@ class _$ActivityEntity extends ActivityEntity { this.quoteId, this.paymentId, this.creditId, - this.updatedAt, - this.createdAt, + required this.updatedAt, + required this.createdAt, this.expenseId, this.isSystem, this.ip, @@ -1201,10 +1204,10 @@ class _$ActivityEntity extends ActivityEntity { history == other.history; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, notes.hashCode); _$hash = $jc(_$hash, key.hashCode); @@ -1267,109 +1270,110 @@ class _$ActivityEntity extends ActivityEntity { class ActivityEntityBuilder implements Builder { - _$ActivityEntity _$v; + _$ActivityEntity? _$v; - String _notes; - String get notes => _$this._notes; - set notes(String notes) => _$this._notes = notes; + String? _notes; + String? get notes => _$this._notes; + set notes(String? notes) => _$this._notes = notes; - String _key; - String get key => _$this._key; - set key(String key) => _$this._key = key; + String? _key; + String? get key => _$this._key; + set key(String? key) => _$this._key = key; - String _activityTypeId; - String get activityTypeId => _$this._activityTypeId; - set activityTypeId(String activityTypeId) => + String? _activityTypeId; + String? get activityTypeId => _$this._activityTypeId; + set activityTypeId(String? activityTypeId) => _$this._activityTypeId = activityTypeId; - String _clientId; - String get clientId => _$this._clientId; - set clientId(String clientId) => _$this._clientId = clientId; + String? _clientId; + String? get clientId => _$this._clientId; + set clientId(String? clientId) => _$this._clientId = clientId; - String _userId; - String get userId => _$this._userId; - set userId(String userId) => _$this._userId = userId; + String? _userId; + String? get userId => _$this._userId; + set userId(String? userId) => _$this._userId = userId; - String _invoiceId; - String get invoiceId => _$this._invoiceId; - set invoiceId(String invoiceId) => _$this._invoiceId = invoiceId; + String? _invoiceId; + String? get invoiceId => _$this._invoiceId; + set invoiceId(String? invoiceId) => _$this._invoiceId = invoiceId; - String _recurringInvoiceId; - String get recurringInvoiceId => _$this._recurringInvoiceId; - set recurringInvoiceId(String recurringInvoiceId) => + String? _recurringInvoiceId; + String? get recurringInvoiceId => _$this._recurringInvoiceId; + set recurringInvoiceId(String? recurringInvoiceId) => _$this._recurringInvoiceId = recurringInvoiceId; - String _recurringExpenseId; - String get recurringExpenseId => _$this._recurringExpenseId; - set recurringExpenseId(String recurringExpenseId) => + String? _recurringExpenseId; + String? get recurringExpenseId => _$this._recurringExpenseId; + set recurringExpenseId(String? recurringExpenseId) => _$this._recurringExpenseId = recurringExpenseId; - String _purchaseOrderId; - String get purchaseOrderId => _$this._purchaseOrderId; - set purchaseOrderId(String purchaseOrderId) => + String? _purchaseOrderId; + String? get purchaseOrderId => _$this._purchaseOrderId; + set purchaseOrderId(String? purchaseOrderId) => _$this._purchaseOrderId = purchaseOrderId; - String _quoteId; - String get quoteId => _$this._quoteId; - set quoteId(String quoteId) => _$this._quoteId = quoteId; + String? _quoteId; + String? get quoteId => _$this._quoteId; + set quoteId(String? quoteId) => _$this._quoteId = quoteId; - String _paymentId; - String get paymentId => _$this._paymentId; - set paymentId(String paymentId) => _$this._paymentId = paymentId; + String? _paymentId; + String? get paymentId => _$this._paymentId; + set paymentId(String? paymentId) => _$this._paymentId = paymentId; - String _creditId; - String get creditId => _$this._creditId; - set creditId(String creditId) => _$this._creditId = creditId; + String? _creditId; + String? get creditId => _$this._creditId; + set creditId(String? creditId) => _$this._creditId = creditId; - int _updatedAt; - int get updatedAt => _$this._updatedAt; - set updatedAt(int updatedAt) => _$this._updatedAt = updatedAt; + int? _updatedAt; + int? get updatedAt => _$this._updatedAt; + set updatedAt(int? updatedAt) => _$this._updatedAt = updatedAt; - int _createdAt; - int get createdAt => _$this._createdAt; - set createdAt(int createdAt) => _$this._createdAt = createdAt; + int? _createdAt; + int? get createdAt => _$this._createdAt; + set createdAt(int? createdAt) => _$this._createdAt = createdAt; - String _expenseId; - String get expenseId => _$this._expenseId; - set expenseId(String expenseId) => _$this._expenseId = expenseId; + String? _expenseId; + String? get expenseId => _$this._expenseId; + set expenseId(String? expenseId) => _$this._expenseId = expenseId; - bool _isSystem; - bool get isSystem => _$this._isSystem; - set isSystem(bool isSystem) => _$this._isSystem = isSystem; + bool? _isSystem; + bool? get isSystem => _$this._isSystem; + set isSystem(bool? isSystem) => _$this._isSystem = isSystem; - String _ip; - String get ip => _$this._ip; - set ip(String ip) => _$this._ip = ip; + String? _ip; + String? get ip => _$this._ip; + set ip(String? ip) => _$this._ip = ip; - String _contactId; - String get contactId => _$this._contactId; - set contactId(String contactId) => _$this._contactId = contactId; + String? _contactId; + String? get contactId => _$this._contactId; + set contactId(String? contactId) => _$this._contactId = contactId; - String _taskId; - String get taskId => _$this._taskId; - set taskId(String taskId) => _$this._taskId = taskId; + String? _taskId; + String? get taskId => _$this._taskId; + set taskId(String? taskId) => _$this._taskId = taskId; - String _projectId; - String get projectId => _$this._projectId; - set projectId(String projectId) => _$this._projectId = projectId; + String? _projectId; + String? get projectId => _$this._projectId; + set projectId(String? projectId) => _$this._projectId = projectId; - String _vendorId; - String get vendorId => _$this._vendorId; - set vendorId(String vendorId) => _$this._vendorId = vendorId; + String? _vendorId; + String? get vendorId => _$this._vendorId; + set vendorId(String? vendorId) => _$this._vendorId = vendorId; - String _vendorContactId; - String get vendorContactId => _$this._vendorContactId; - set vendorContactId(String vendorContactId) => + String? _vendorContactId; + String? get vendorContactId => _$this._vendorContactId; + set vendorContactId(String? vendorContactId) => _$this._vendorContactId = vendorContactId; - String _tokenId; - String get tokenId => _$this._tokenId; - set tokenId(String tokenId) => _$this._tokenId = tokenId; + String? _tokenId; + String? get tokenId => _$this._tokenId; + set tokenId(String? tokenId) => _$this._tokenId = tokenId; - InvoiceHistoryEntityBuilder _history; + InvoiceHistoryEntityBuilder? _history; InvoiceHistoryEntityBuilder get history => _$this._history ??= new InvoiceHistoryEntityBuilder(); - set history(InvoiceHistoryEntityBuilder history) => _$this._history = history; + set history(InvoiceHistoryEntityBuilder? history) => + _$this._history = history; ActivityEntityBuilder() { ActivityEntity._initializeBuilder(this); @@ -1414,7 +1418,7 @@ class ActivityEntityBuilder } @override - void update(void Function(ActivityEntityBuilder) updates) { + void update(void Function(ActivityEntityBuilder)? updates) { if (updates != null) updates(this); } @@ -1457,7 +1461,7 @@ class ActivityEntityBuilder tokenId: tokenId, history: _history?.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'history'; _history?.build(); @@ -1482,20 +1486,20 @@ class _$LedgerEntity extends LedgerEntity { @override final int createdAt; @override - final String invoiceId; + final String? invoiceId; @override - final String creditId; + final String? creditId; @override - final String paymentId; + final String? paymentId; - factory _$LedgerEntity([void Function(LedgerEntityBuilder) updates]) => + factory _$LedgerEntity([void Function(LedgerEntityBuilder)? updates]) => (new LedgerEntityBuilder()..update(updates))._build(); _$LedgerEntity._( - {this.notes, - this.balance, - this.adjustment, - this.createdAt, + {required this.notes, + required this.balance, + required this.adjustment, + required this.createdAt, this.invoiceId, this.creditId, this.paymentId}) @@ -1528,10 +1532,10 @@ class _$LedgerEntity extends LedgerEntity { paymentId == other.paymentId; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, notes.hashCode); _$hash = $jc(_$hash, balance.hashCode); @@ -1560,35 +1564,35 @@ class _$LedgerEntity extends LedgerEntity { class LedgerEntityBuilder implements Builder { - _$LedgerEntity _$v; + _$LedgerEntity? _$v; - String _notes; - String get notes => _$this._notes; - set notes(String notes) => _$this._notes = notes; + String? _notes; + String? get notes => _$this._notes; + set notes(String? notes) => _$this._notes = notes; - double _balance; - double get balance => _$this._balance; - set balance(double balance) => _$this._balance = balance; + double? _balance; + double? get balance => _$this._balance; + set balance(double? balance) => _$this._balance = balance; - double _adjustment; - double get adjustment => _$this._adjustment; - set adjustment(double adjustment) => _$this._adjustment = adjustment; + double? _adjustment; + double? get adjustment => _$this._adjustment; + set adjustment(double? adjustment) => _$this._adjustment = adjustment; - int _createdAt; - int get createdAt => _$this._createdAt; - set createdAt(int createdAt) => _$this._createdAt = createdAt; + int? _createdAt; + int? get createdAt => _$this._createdAt; + set createdAt(int? createdAt) => _$this._createdAt = createdAt; - String _invoiceId; - String get invoiceId => _$this._invoiceId; - set invoiceId(String invoiceId) => _$this._invoiceId = invoiceId; + String? _invoiceId; + String? get invoiceId => _$this._invoiceId; + set invoiceId(String? invoiceId) => _$this._invoiceId = invoiceId; - String _creditId; - String get creditId => _$this._creditId; - set creditId(String creditId) => _$this._creditId = creditId; + String? _creditId; + String? get creditId => _$this._creditId; + set creditId(String? creditId) => _$this._creditId = creditId; - String _paymentId; - String get paymentId => _$this._paymentId; - set paymentId(String paymentId) => _$this._paymentId = paymentId; + String? _paymentId; + String? get paymentId => _$this._paymentId; + set paymentId(String? paymentId) => _$this._paymentId = paymentId; LedgerEntityBuilder(); @@ -1614,7 +1618,7 @@ class LedgerEntityBuilder } @override - void update(void Function(LedgerEntityBuilder) updates) { + void update(void Function(LedgerEntityBuilder)? updates) { if (updates != null) updates(this); } diff --git a/lib/data/models/expense_category_model.dart b/lib/data/models/expense_category_model.dart index 10491d846..96d640ada 100644 --- a/lib/data/models/expense_category_model.dart +++ b/lib/data/models/expense_category_model.dart @@ -55,7 +55,7 @@ class ExpenseCategoryFields { abstract class ExpenseCategoryEntity extends Object with BaseEntity, SelectableEntity implements Built { - factory ExpenseCategoryEntity({String id, AppState state}) { + factory ExpenseCategoryEntity({String? id, AppState? state}) { return _$ExpenseCategoryEntity._( id: id ?? BaseEntity.nextId, isChanged: false, @@ -82,16 +82,16 @@ abstract class ExpenseCategoryEntity extends Object int get hashCode; @override - List getActions( - {UserCompanyEntity userCompany, - ClientEntity client, + List getActions( + {UserCompanyEntity? userCompany, + ClientEntity? client, bool includeEdit = false, bool includePreview = false, bool multiselect = false}) { - final actions = []; + final actions = []; - if (!isDeleted && !multiselect) { - if (includeEdit && userCompany.canEditEntity(this)) { + if (!isDeleted! && !multiselect) { + if (includeEdit && userCompany!.canEditEntity(this)) { actions.add(EntityAction.edit); } @@ -104,7 +104,7 @@ abstract class ExpenseCategoryEntity extends Object } @override - bool matchesFilter(String filter) { + bool matchesFilter(String? filter) { if (filter == null || filter.isEmpty) { return true; } @@ -118,7 +118,7 @@ abstract class ExpenseCategoryEntity extends Object } @override - String matchesFilterValue(String filter) { + String? matchesFilterValue(String? filter) { if (filter == null || filter.isEmpty) { return null; } @@ -132,7 +132,7 @@ abstract class ExpenseCategoryEntity extends Object } @override - double get listDisplayAmount => null; + double? get listDisplayAmount => null; @override FormatNumberType get listDisplayAmountType => FormatNumberType.money; @@ -142,20 +142,20 @@ abstract class ExpenseCategoryEntity extends Object String get color; int compareTo( - {ExpenseCategoryEntity expenseCategory, - String sortField, - bool sortAscending}) { + {ExpenseCategoryEntity? expenseCategory, + String? sortField, + required bool sortAscending}) { int response = 0; - final ExpenseCategoryEntity categoryA = + final ExpenseCategoryEntity? categoryA = sortAscending ? this : expenseCategory; - final ExpenseCategoryEntity categoryB = + final ExpenseCategoryEntity? categoryB = sortAscending ? expenseCategory : this; switch (sortField) { case ExpenseCategoryFields.name: - response = categoryA.name + response = categoryA!.name .toLowerCase() - .compareTo(categoryB.name.toLowerCase()); + .compareTo(categoryB!.name.toLowerCase()); break; default: print( diff --git a/lib/data/models/expense_category_model.g.dart b/lib/data/models/expense_category_model.g.dart index 816614106..e54ee9bda 100644 --- a/lib/data/models/expense_category_model.g.dart +++ b/lib/data/models/expense_category_model.g.dart @@ -26,10 +26,10 @@ class _$ExpenseCategoryListResponseSerializer final String wireName = 'ExpenseCategoryListResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, ExpenseCategoryListResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType( @@ -41,21 +41,21 @@ class _$ExpenseCategoryListResponseSerializer @override ExpenseCategoryListResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ExpenseCategoryListResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, - specifiedType: const FullType( - BuiltList, const [const FullType(ExpenseCategoryEntity)])) - as BuiltList); + specifiedType: const FullType(BuiltList, const [ + const FullType(ExpenseCategoryEntity) + ]))! as BuiltList); break; } } @@ -75,10 +75,10 @@ class _$ExpenseCategoryItemResponseSerializer final String wireName = 'ExpenseCategoryItemResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, ExpenseCategoryItemResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType(ExpenseCategoryEntity)), @@ -89,19 +89,19 @@ class _$ExpenseCategoryItemResponseSerializer @override ExpenseCategoryItemResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ExpenseCategoryItemResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, - specifiedType: const FullType(ExpenseCategoryEntity)) + specifiedType: const FullType(ExpenseCategoryEntity))! as ExpenseCategoryEntity); break; } @@ -122,10 +122,10 @@ class _$ExpenseCategoryEntitySerializer final String wireName = 'ExpenseCategoryEntity'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, ExpenseCategoryEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'name', serializers.serialize(object.name, specifiedType: const FullType(String)), 'color', @@ -143,7 +143,7 @@ class _$ExpenseCategoryEntitySerializer 'id', serializers.serialize(object.id, specifiedType: const FullType(String)), ]; - Object value; + Object? value; value = object.isChanged; if (value != null) { result @@ -177,55 +177,55 @@ class _$ExpenseCategoryEntitySerializer @override ExpenseCategoryEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ExpenseCategoryEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'name': result.name = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'color': result.color = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'isChanged': result.isChanged = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'created_at': result.createdAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'updated_at': result.updatedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'archived_at': result.archivedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'is_deleted': result.isDeleted = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'user_id': result.createdUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'assigned_user_id': result.assignedUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -239,10 +239,10 @@ class _$ExpenseCategoryListResponse extends ExpenseCategoryListResponse { final BuiltList data; factory _$ExpenseCategoryListResponse( - [void Function(ExpenseCategoryListResponseBuilder) updates]) => + [void Function(ExpenseCategoryListResponseBuilder)? updates]) => (new ExpenseCategoryListResponseBuilder()..update(updates))._build(); - _$ExpenseCategoryListResponse._({this.data}) : super._() { + _$ExpenseCategoryListResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull( data, r'ExpenseCategoryListResponse', 'data'); } @@ -262,10 +262,10 @@ class _$ExpenseCategoryListResponse extends ExpenseCategoryListResponse { return other is ExpenseCategoryListResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -284,12 +284,12 @@ class ExpenseCategoryListResponseBuilder implements Builder { - _$ExpenseCategoryListResponse _$v; + _$ExpenseCategoryListResponse? _$v; - ListBuilder _data; + ListBuilder? _data; ListBuilder get data => _$this._data ??= new ListBuilder(); - set data(ListBuilder data) => _$this._data = data; + set data(ListBuilder? data) => _$this._data = data; ExpenseCategoryListResponseBuilder(); @@ -309,7 +309,7 @@ class ExpenseCategoryListResponseBuilder } @override - void update(void Function(ExpenseCategoryListResponseBuilder) updates) { + void update(void Function(ExpenseCategoryListResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -321,7 +321,7 @@ class ExpenseCategoryListResponseBuilder try { _$result = _$v ?? new _$ExpenseCategoryListResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -341,10 +341,10 @@ class _$ExpenseCategoryItemResponse extends ExpenseCategoryItemResponse { final ExpenseCategoryEntity data; factory _$ExpenseCategoryItemResponse( - [void Function(ExpenseCategoryItemResponseBuilder) updates]) => + [void Function(ExpenseCategoryItemResponseBuilder)? updates]) => (new ExpenseCategoryItemResponseBuilder()..update(updates))._build(); - _$ExpenseCategoryItemResponse._({this.data}) : super._() { + _$ExpenseCategoryItemResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull( data, r'ExpenseCategoryItemResponse', 'data'); } @@ -364,10 +364,10 @@ class _$ExpenseCategoryItemResponse extends ExpenseCategoryItemResponse { return other is ExpenseCategoryItemResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -386,12 +386,12 @@ class ExpenseCategoryItemResponseBuilder implements Builder { - _$ExpenseCategoryItemResponse _$v; + _$ExpenseCategoryItemResponse? _$v; - ExpenseCategoryEntityBuilder _data; + ExpenseCategoryEntityBuilder? _data; ExpenseCategoryEntityBuilder get data => _$this._data ??= new ExpenseCategoryEntityBuilder(); - set data(ExpenseCategoryEntityBuilder data) => _$this._data = data; + set data(ExpenseCategoryEntityBuilder? data) => _$this._data = data; ExpenseCategoryItemResponseBuilder(); @@ -411,7 +411,7 @@ class ExpenseCategoryItemResponseBuilder } @override - void update(void Function(ExpenseCategoryItemResponseBuilder) updates) { + void update(void Function(ExpenseCategoryItemResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -423,7 +423,7 @@ class ExpenseCategoryItemResponseBuilder try { _$result = _$v ?? new _$ExpenseCategoryItemResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -444,7 +444,7 @@ class _$ExpenseCategoryEntity extends ExpenseCategoryEntity { @override final String color; @override - final bool isChanged; + final bool? isChanged; @override final int createdAt; @override @@ -452,29 +452,29 @@ class _$ExpenseCategoryEntity extends ExpenseCategoryEntity { @override final int archivedAt; @override - final bool isDeleted; + final bool? isDeleted; @override - final String createdUserId; + final String? createdUserId; @override - final String assignedUserId; + final String? assignedUserId; @override final String id; factory _$ExpenseCategoryEntity( - [void Function(ExpenseCategoryEntityBuilder) updates]) => + [void Function(ExpenseCategoryEntityBuilder)? updates]) => (new ExpenseCategoryEntityBuilder()..update(updates))._build(); _$ExpenseCategoryEntity._( - {this.name, - this.color, + {required this.name, + required this.color, this.isChanged, - this.createdAt, - this.updatedAt, - this.archivedAt, + required this.createdAt, + required this.updatedAt, + required this.archivedAt, this.isDeleted, this.createdUserId, this.assignedUserId, - this.id}) + required this.id}) : super._() { BuiltValueNullFieldError.checkNotNull( name, r'ExpenseCategoryEntity', 'name'); @@ -514,10 +514,10 @@ class _$ExpenseCategoryEntity extends ExpenseCategoryEntity { id == other.id; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, name.hashCode); _$hash = $jc(_$hash, color.hashCode); @@ -552,49 +552,49 @@ class _$ExpenseCategoryEntity extends ExpenseCategoryEntity { class ExpenseCategoryEntityBuilder implements Builder { - _$ExpenseCategoryEntity _$v; + _$ExpenseCategoryEntity? _$v; - String _name; - String get name => _$this._name; - set name(String name) => _$this._name = name; + String? _name; + String? get name => _$this._name; + set name(String? name) => _$this._name = name; - String _color; - String get color => _$this._color; - set color(String color) => _$this._color = color; + String? _color; + String? get color => _$this._color; + set color(String? color) => _$this._color = color; - bool _isChanged; - bool get isChanged => _$this._isChanged; - set isChanged(bool isChanged) => _$this._isChanged = isChanged; + bool? _isChanged; + bool? get isChanged => _$this._isChanged; + set isChanged(bool? isChanged) => _$this._isChanged = isChanged; - int _createdAt; - int get createdAt => _$this._createdAt; - set createdAt(int createdAt) => _$this._createdAt = createdAt; + int? _createdAt; + int? get createdAt => _$this._createdAt; + set createdAt(int? createdAt) => _$this._createdAt = createdAt; - int _updatedAt; - int get updatedAt => _$this._updatedAt; - set updatedAt(int updatedAt) => _$this._updatedAt = updatedAt; + int? _updatedAt; + int? get updatedAt => _$this._updatedAt; + set updatedAt(int? updatedAt) => _$this._updatedAt = updatedAt; - int _archivedAt; - int get archivedAt => _$this._archivedAt; - set archivedAt(int archivedAt) => _$this._archivedAt = archivedAt; + int? _archivedAt; + int? get archivedAt => _$this._archivedAt; + set archivedAt(int? archivedAt) => _$this._archivedAt = archivedAt; - bool _isDeleted; - bool get isDeleted => _$this._isDeleted; - set isDeleted(bool isDeleted) => _$this._isDeleted = isDeleted; + bool? _isDeleted; + bool? get isDeleted => _$this._isDeleted; + set isDeleted(bool? isDeleted) => _$this._isDeleted = isDeleted; - String _createdUserId; - String get createdUserId => _$this._createdUserId; - set createdUserId(String createdUserId) => + String? _createdUserId; + String? get createdUserId => _$this._createdUserId; + set createdUserId(String? createdUserId) => _$this._createdUserId = createdUserId; - String _assignedUserId; - String get assignedUserId => _$this._assignedUserId; - set assignedUserId(String assignedUserId) => + String? _assignedUserId; + String? get assignedUserId => _$this._assignedUserId; + set assignedUserId(String? assignedUserId) => _$this._assignedUserId = assignedUserId; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; ExpenseCategoryEntityBuilder() { ExpenseCategoryEntity._initializeBuilder(this); @@ -625,7 +625,7 @@ class ExpenseCategoryEntityBuilder } @override - void update(void Function(ExpenseCategoryEntityBuilder) updates) { + void update(void Function(ExpenseCategoryEntityBuilder)? updates) { if (updates != null) updates(this); } diff --git a/lib/data/models/expense_model.dart b/lib/data/models/expense_model.dart index 654763449..7bc0cb582 100644 --- a/lib/data/models/expense_model.dart +++ b/lib/data/models/expense_model.dart @@ -101,13 +101,13 @@ abstract class ExpenseEntity extends Object with BaseEntity, SelectableEntity, BelongsToClient implements Built { factory ExpenseEntity({ - String id, - AppState state, - VendorEntity vendor, - ClientEntity client, - UserEntity user, - ProjectEntity project, - EntityType entityType, + String? id, + AppState? state, + VendorEntity? vendor, + ClientEntity? client, + UserEntity? user, + ProjectEntity? project, + EntityType? entityType, }) { final company = state?.company; return _$ExpenseEntity._( @@ -134,7 +134,7 @@ abstract class ExpenseEntity extends Object ? vendor.currencyId : (state?.company?.currencyId ?? kDefaultCurrencyId), invoiceCurrencyId: (client != null && client.hasCurrency) - ? client.settings.currencyId // TODO handle group currency + ? client.settings.currencyId! // TODO handle group currency : (state?.company?.currencyId ?? kDefaultCurrencyId), documents: BuiltList(), taxName1: '', @@ -219,9 +219,9 @@ abstract class ExpenseEntity extends Object double get amount; - @nullable // TODO remove this + // TODO remove this @BuiltValueField(wireName: 'date') - String get date; + String? get date; @BuiltValueField(wireName: 'payment_date') String get paymentDate; @@ -253,26 +253,21 @@ abstract class ExpenseEntity extends Object @BuiltValueField(wireName: 'tax_rate3') double get taxRate3; - @nullable @override @BuiltValueField(wireName: 'client_id') - String get clientId; + String? get clientId; - @nullable @BuiltValueField(wireName: 'invoice_id') - String get invoiceId; + String? get invoiceId; - @nullable @BuiltValueField(wireName: 'vendor_id') - String get vendorId; + String? get vendorId; - @nullable @BuiltValueField(wireName: 'project_id') - String get projectId; + String? get projectId; - @nullable @BuiltValueField(wireName: 'status_id') - String get statusId; + String? get statusId; @BuiltValueField(wireName: 'custom_value1') String get customValue1; @@ -298,17 +293,16 @@ abstract class ExpenseEntity extends Object @BuiltValueField(wireName: 'uses_inclusive_taxes') bool get usesInclusiveTaxes; - @nullable @BuiltValueField(wireName: 'calculate_tax_by_amount') - bool get calculateTaxByAmount; + bool? get calculateTaxByAmount; BuiltList get documents; String get number; - @nullable // TODO remove this + // TODO remove this @BuiltValueField(wireName: 'recurring_expense_id') - String get recurringExpenseId; + String? get recurringExpenseId; @BuiltValueField(wireName: 'frequency_id') String get frequencyId; @@ -322,23 +316,22 @@ abstract class ExpenseEntity extends Object @BuiltValueField(wireName: 'remaining_cycles') int get remainingCycles; - @nullable @BuiltValueField(wireName: 'recurring_dates') - BuiltList get recurringDates; + BuiltList? get recurringDates; @override - List getActions( - {UserCompanyEntity userCompany, - ClientEntity client, + List getActions( + {UserCompanyEntity? userCompany, + ClientEntity? client, bool includeEdit = false, bool includePreview = false, bool multiselect = false}) { - final actions = []; + final actions = []; - if (!isDeleted) { + if (!isDeleted!) { if (includeEdit && !multiselect && - userCompany.canEditEntity(this) && + userCompany!.canEditEntity(this) && !multiselect) { actions.add(EntityAction.edit); } @@ -354,7 +347,7 @@ abstract class ExpenseEntity extends Object if (!isInvoiced && !isRecurring && shouldBeInvoiced && - userCompany.canCreate(EntityType.invoice)) { + userCompany!.canCreate(EntityType.invoice)) { actions.add(EntityAction.invoiceExpense); if ((clientId ?? '').isNotEmpty) { actions.add(EntityAction.addToInvoice); @@ -363,7 +356,7 @@ abstract class ExpenseEntity extends Object } if (!multiselect && isOld) { - if (userCompany.canCreate(EntityType.expense) && !isRecurring) { + if (userCompany!.canCreate(EntityType.expense) && !isRecurring) { actions.add(EntityAction.cloneToExpense); } @@ -376,7 +369,7 @@ abstract class ExpenseEntity extends Object } } - if (!isDeleted && multiselect) { + if (!isDeleted! && multiselect) { actions.add(EntityAction.documents); } @@ -390,112 +383,112 @@ abstract class ExpenseEntity extends Object } int compareTo( - ExpenseEntity expense, + ExpenseEntity? expense, String sortField, bool sortAscending, - BuiltMap clientMap, - BuiltMap userMap, - BuiltMap vendorMap, - BuiltMap invoiceMap, - BuiltMap expenseCategoryMap, + BuiltMap clientMap, + BuiltMap userMap, + BuiltMap vendorMap, + BuiltMap invoiceMap, + BuiltMap expenseCategoryMap, StaticState staticState) { int response = 0; - final ExpenseEntity expenseA = sortAscending ? this : expense; - final ExpenseEntity expenseB = sortAscending ? expense : this; + final ExpenseEntity? expenseA = sortAscending ? this : expense; + final ExpenseEntity? expenseB = sortAscending ? expense : this; switch (sortField) { case ExpenseFields.netAmount: - response = expenseA.netAmount.compareTo(expenseB.netAmount); + response = expenseA!.netAmount.compareTo(expenseB!.netAmount); break; case ExpenseFields.amount: - response = expenseA.amount.compareTo(expenseB.amount); + response = expenseA!.amount.compareTo(expenseB!.amount); break; case EntityFields.assignedTo: - final userA = userMap[expenseA.assignedUserId] ?? UserEntity(); - final userB = userMap[expenseB.assignedUserId] ?? UserEntity(); + final userA = userMap[expenseA!.assignedUserId] ?? UserEntity(); + final userB = userMap[expenseB!.assignedUserId] ?? UserEntity(); response = userA.listDisplayName .toLowerCase() .compareTo(userB.listDisplayName.toLowerCase()); break; case EntityFields.createdBy: - final userA = userMap[expenseA.createdUserId] ?? UserEntity(); - final userB = userMap[expenseB.createdUserId] ?? UserEntity(); + final userA = userMap[expenseA!.createdUserId] ?? UserEntity(); + final userB = userMap[expenseB!.createdUserId] ?? UserEntity(); response = userA.listDisplayName .toLowerCase() .compareTo(userB.listDisplayName.toLowerCase()); break; case ExpenseFields.clientId: case ExpenseFields.client: - final clientA = clientMap[expenseA.clientId] ?? ClientEntity(); - final clientB = clientMap[expenseB.clientId] ?? ClientEntity(); + final clientA = clientMap[expenseA!.clientId] ?? ClientEntity(); + final clientB = clientMap[expenseB!.clientId] ?? ClientEntity(); response = removeDiacritics(clientA.listDisplayName) .toLowerCase() .compareTo(removeDiacritics(clientB.listDisplayName).toLowerCase()); break; case ExpenseFields.vendorId: case ExpenseFields.vendor: - final vendorA = vendorMap[expenseA.vendorId] ?? VendorEntity(); - final vendorB = vendorMap[expenseB.vendorId] ?? VendorEntity(); + final vendorA = vendorMap[expenseA!.vendorId] ?? VendorEntity(); + final vendorB = vendorMap[expenseB!.vendorId] ?? VendorEntity(); response = removeDiacritics(vendorA.listDisplayName) .toLowerCase() .compareTo(removeDiacritics(vendorB.listDisplayName).toLowerCase()); break; case EntityFields.state: final stateA = - EntityState.valueOf(expenseA.entityState) ?? EntityState.active; + EntityState.valueOf(expenseA!.entityState) ?? EntityState.active; final stateB = - EntityState.valueOf(expenseB.entityState) ?? EntityState.active; + EntityState.valueOf(expenseB!.entityState) ?? EntityState.active; response = stateA.name.toLowerCase().compareTo(stateB.name.toLowerCase()); break; case ExpenseFields.publicNotes: - response = expenseA.publicNotes + response = expenseA!.publicNotes .toLowerCase() - .compareTo(expenseB.publicNotes.toLowerCase()); + .compareTo(expenseB!.publicNotes.toLowerCase()); break; case ExpenseFields.expenseDate: response = - expenseA.date.toLowerCase().compareTo(expenseB.date.toLowerCase()); + expenseA!.date!.toLowerCase().compareTo(expenseB!.date!.toLowerCase()); break; case ExpenseFields.paymentDate: - response = expenseA.paymentDate + response = expenseA!.paymentDate .toLowerCase() - .compareTo(expenseB.paymentDate.toLowerCase()); + .compareTo(expenseB!.paymentDate.toLowerCase()); break; case EntityFields.createdAt: - response = expenseA.createdAt.compareTo(expenseB.createdAt); + response = expenseA!.createdAt.compareTo(expenseB!.createdAt); break; case ExpenseFields.updatedAt: - response = expenseA.updatedAt.compareTo(expenseB.updatedAt); + response = expenseA!.updatedAt.compareTo(expenseB!.updatedAt); break; case ExpenseFields.archivedAt: - response = expenseA.archivedAt.compareTo(expenseB.archivedAt); + response = expenseA!.archivedAt.compareTo(expenseB!.archivedAt); break; case ExpenseFields.documents: response = - expenseA.documents.length.compareTo(expenseB.documents.length); + expenseA!.documents.length.compareTo(expenseB!.documents.length); break; case ExpenseFields.number: response = compareNatural( - expenseA.number.toLowerCase(), expenseB.number.toLowerCase()); + expenseA!.number.toLowerCase(), expenseB!.number.toLowerCase()); break; case ExpenseFields.privateNotes: - response = expenseA.privateNotes.compareTo(expenseB.privateNotes); + response = expenseA!.privateNotes.compareTo(expenseB!.privateNotes); break; case ExpenseFields.transactionId: - response = expenseA.transactionId.compareTo(expenseB.transactionId); + response = expenseA!.transactionId.compareTo(expenseB!.transactionId); break; case ExpenseFields.transactionReference: - response = expenseA.transactionReference - .compareTo(expenseB.transactionReference); + response = expenseA!.transactionReference + .compareTo(expenseB!.transactionReference); break; case ExpenseFields.bankId: - response = expenseA.bankId.compareTo(expenseB.bankId); + response = expenseA!.bankId.compareTo(expenseB!.bankId); break; case ExpenseFields.currencyId: final currencyMap = staticState.currencyMap; - final currencyA = currencyMap[expenseA.currencyId] ?? CurrencyEntity(); - final currencyB = currencyMap[expenseB.currencyId] ?? CurrencyEntity(); + final currencyA = currencyMap[expenseA!.currencyId] ?? CurrencyEntity(); + final currencyB = currencyMap[expenseB!.currencyId] ?? CurrencyEntity(); response = currencyA.name .toLowerCase() .compareTo(currencyB.name.toLowerCase()); @@ -503,67 +496,67 @@ abstract class ExpenseEntity extends Object case ExpenseFields.categoryId: case ExpenseFields.category: final categoryA = - expenseCategoryMap[expenseA.categoryId] ?? ExpenseCategoryEntity(); + expenseCategoryMap[expenseA!.categoryId] ?? ExpenseCategoryEntity(); final categoryB = - expenseCategoryMap[expenseB.categoryId] ?? ExpenseCategoryEntity(); + expenseCategoryMap[expenseB!.categoryId] ?? ExpenseCategoryEntity(); response = categoryA.name .toLowerCase() .compareTo(categoryB.name.toLowerCase()); break; case ExpenseFields.exchangeRate: - response = expenseA.exchangeRate.compareTo(expenseB.exchangeRate); + response = expenseA!.exchangeRate.compareTo(expenseB!.exchangeRate); break; case ExpenseFields.invoiceCurrencyId: final currencyMap = staticState.currencyMap; final currencyA = - currencyMap[expenseA.invoiceCurrencyId] ?? CurrencyEntity(); + currencyMap[expenseA!.invoiceCurrencyId] ?? CurrencyEntity(); final currencyB = - currencyMap[expenseB.invoiceCurrencyId] ?? CurrencyEntity(); + currencyMap[expenseB!.invoiceCurrencyId] ?? CurrencyEntity(); response = currencyA.name .toLowerCase() .compareTo(currencyB.name.toLowerCase()); break; case ExpenseFields.taxName1: - response = expenseA.taxName1.compareTo(expenseB.taxName1); + response = expenseA!.taxName1.compareTo(expenseB!.taxName1); break; case ExpenseFields.taxName2: - response = expenseA.taxName2.compareTo(expenseB.taxName2); + response = expenseA!.taxName2.compareTo(expenseB!.taxName2); break; case ExpenseFields.taxRate1: - response = expenseA.taxRate1.compareTo(expenseB.taxRate1); + response = expenseA!.taxRate1.compareTo(expenseB!.taxRate1); break; case ExpenseFields.taxRate2: - response = expenseA.taxRate2.compareTo(expenseB.taxRate2); + response = expenseA!.taxRate2.compareTo(expenseB!.taxRate2); break; case ExpenseFields.invoiceId: - final invoiceA = invoiceMap[expenseA.invoiceId] ?? InvoiceEntity(); - final invoiceB = invoiceMap[expenseB.invoiceId] ?? InvoiceEntity(); + final invoiceA = invoiceMap[expenseA!.invoiceId] ?? InvoiceEntity(); + final invoiceB = invoiceMap[expenseB!.invoiceId] ?? InvoiceEntity(); response = invoiceA.listDisplayName.compareTo(invoiceB.listDisplayName); break; case ExpenseFields.customValue1: - response = expenseA.customValue1.compareTo(expenseB.customValue1); + response = expenseA!.customValue1.compareTo(expenseB!.customValue1); break; case ExpenseFields.customValue2: - response = expenseA.customValue2.compareTo(expenseB.customValue2); + response = expenseA!.customValue2.compareTo(expenseB!.customValue2); break; case ExpenseFields.customValue3: - response = expenseA.customValue3.compareTo(expenseB.customValue3); + response = expenseA!.customValue3.compareTo(expenseB!.customValue3); break; case ExpenseFields.customValue4: - response = expenseA.customValue4.compareTo(expenseB.customValue4); + response = expenseA!.customValue4.compareTo(expenseB!.customValue4); break; case RecurringExpenseFields.frequency: - response = expenseA.frequencyId.compareTo(expenseB.frequencyId); + response = expenseA!.frequencyId.compareTo(expenseB!.frequencyId); break; case RecurringExpenseFields.nextSendDate: - response = expenseA.nextSendDate.compareTo(expenseB.nextSendDate); + response = expenseA!.nextSendDate.compareTo(expenseB!.nextSendDate); break; case RecurringExpenseFields.lastSentDate: - response = expenseA.lastSentDate.compareTo(expenseB.lastSentDate); + response = expenseA!.lastSentDate.compareTo(expenseB!.lastSentDate); break; case ExpenseFields.status: response = - expenseA.calculatedStatusId.compareTo(expenseB.calculatedStatusId); + expenseA!.calculatedStatusId!.compareTo(expenseB!.calculatedStatusId!); break; default: print('## ERROR: sort by expense.$sortField is not implemented'); @@ -571,14 +564,14 @@ abstract class ExpenseEntity extends Object } if (response == 0) { - response = expense.number.toLowerCase().compareTo(number.toLowerCase()); + response = expense!.number.toLowerCase().compareTo(number.toLowerCase()); } return response; } @override - bool matchesFilter(String filter) { + bool matchesFilter(String? filter) { return matchesStrings( haystacks: [ number, @@ -600,7 +593,7 @@ abstract class ExpenseEntity extends Object } @override - String matchesFilterValue(String filter) { + String? matchesFilterValue(String? filter) { return matchesStringsValue( haystacks: [ number, @@ -661,28 +654,27 @@ abstract class ExpenseEntity extends Object @override String get listDisplayName => number ?? ''; - @nullable @BuiltValueField(compare: false) - int get loadedAt; + int? get loadedAt; bool get isPaid => paymentDate.isNotEmpty || paymentTypeId.isNotEmpty || transactionReference.isNotEmpty; - bool isBetween(String startDate, String endDate) { + bool isBetween(String? startDate, String? endDate) { return (startDate ?? '').compareTo(date ?? '') <= 0 && (endDate ?? '').compareTo(date ?? '') >= 0; } - bool get isLoaded => loadedAt != null && loadedAt > 0; + bool get isLoaded => loadedAt != null && loadedAt! > 0; bool get isStale { if (!isLoaded) { return true; } - return DateTime.now().millisecondsSinceEpoch - loadedAt > + return DateTime.now().millisecondsSinceEpoch - loadedAt! > kMillisecondsToRefreshActivities; } @@ -705,7 +697,7 @@ abstract class ExpenseEntity extends Object .contains(calculatedStatusId); @override - double get listDisplayAmount => null; + double? get listDisplayAmount => null; @override FormatNumberType get listDisplayAmountType => FormatNumberType.money; @@ -807,7 +799,7 @@ abstract class ExpenseEntity extends Object double get grossAmount => usesInclusiveTaxes ? amount : amount + taxAmount; - String get calculatedStatusId { + String? get calculatedStatusId { if (isRecurring) { if (remainingCycles == 0) { return kRecurringInvoiceStatusCompleted; @@ -838,7 +830,7 @@ abstract class ExpenseEntity extends Object double get convertedAmountWithTax => round(grossAmount * convertedExchangeRate, 2); - bool get isInvoiced => invoiceId != null && invoiceId.isNotEmpty; + bool get isInvoiced => invoiceId != null && invoiceId!.isNotEmpty; bool get isPending { if (isRecurring) { diff --git a/lib/data/models/expense_model.g.dart b/lib/data/models/expense_model.g.dart index 87130e020..cf4f84319 100644 --- a/lib/data/models/expense_model.g.dart +++ b/lib/data/models/expense_model.g.dart @@ -28,10 +28,10 @@ class _$ExpenseListResponseSerializer final String wireName = 'ExpenseListResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, ExpenseListResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: @@ -43,21 +43,21 @@ class _$ExpenseListResponseSerializer @override ExpenseListResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ExpenseListResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(ExpenseEntity)])) - as BuiltList); + BuiltList, const [const FullType(ExpenseEntity)]))! + as BuiltList); break; } } @@ -77,10 +77,10 @@ class _$ExpenseItemResponseSerializer final String wireName = 'ExpenseItemResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, ExpenseItemResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType(ExpenseEntity)), @@ -91,19 +91,19 @@ class _$ExpenseItemResponseSerializer @override ExpenseItemResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ExpenseItemResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, - specifiedType: const FullType(ExpenseEntity)) as ExpenseEntity); + specifiedType: const FullType(ExpenseEntity))! as ExpenseEntity); break; } } @@ -119,9 +119,9 @@ class _$ExpenseEntitySerializer implements StructuredSerializer { final String wireName = 'ExpenseEntity'; @override - Iterable serialize(Serializers serializers, ExpenseEntity object, + Iterable serialize(Serializers serializers, ExpenseEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'private_notes', serializers.serialize(object.privateNotes, specifiedType: const FullType(String)), @@ -237,7 +237,7 @@ class _$ExpenseEntitySerializer implements StructuredSerializer { 'id', serializers.serialize(object.id, specifiedType: const FullType(String)), ]; - Object value; + Object? value; value = object.date; if (value != null) { result @@ -348,231 +348,231 @@ class _$ExpenseEntitySerializer implements StructuredSerializer { @override ExpenseEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ExpenseEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'private_notes': result.privateNotes = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'public_notes': result.publicNotes = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'should_be_invoiced': result.shouldBeInvoiced = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'invoice_documents': result.invoiceDocuments = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'transaction_id': result.transactionId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'transaction_reference': result.transactionReference = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'bank_id': result.bankId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'currency_id': result.currencyId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'category_id': result.categoryId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'amount': result.amount = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'date': result.date = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'payment_date': result.paymentDate = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'exchange_rate': result.exchangeRate = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'invoice_currency_id': result.invoiceCurrencyId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'payment_type_id': result.paymentTypeId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'tax_name1': result.taxName1 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'tax_name2': result.taxName2 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'tax_rate1': result.taxRate1 = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'tax_rate2': result.taxRate2 = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'tax_name3': result.taxName3 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'tax_rate3': result.taxRate3 = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'client_id': result.clientId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'invoice_id': result.invoiceId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'vendor_id': result.vendorId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'project_id': result.projectId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'status_id': result.statusId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'custom_value1': result.customValue1 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value2': result.customValue2 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value3': result.customValue3 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value4': result.customValue4 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'tax_amount1': result.taxAmount1 = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'tax_amount2': result.taxAmount2 = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'tax_amount3': result.taxAmount3 = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'uses_inclusive_taxes': result.usesInclusiveTaxes = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'calculate_tax_by_amount': result.calculateTaxByAmount = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'documents': result.documents.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(DocumentEntity)])) - as BuiltList); + BuiltList, const [const FullType(DocumentEntity)]))! + as BuiltList); break; case 'number': result.number = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'recurring_expense_id': result.recurringExpenseId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'frequency_id': result.frequencyId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'last_sent_date': result.lastSentDate = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'next_send_date': result.nextSendDate = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'remaining_cycles': result.remainingCycles = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'recurring_dates': result.recurringDates.replace(serializers.deserialize(value, - specifiedType: const FullType( - BuiltList, const [const FullType(ExpenseScheduleEntity)])) - as BuiltList); + specifiedType: const FullType(BuiltList, const [ + const FullType(ExpenseScheduleEntity) + ]))! as BuiltList); break; case 'loadedAt': result.loadedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int)) as int?; break; case 'isChanged': result.isChanged = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'created_at': result.createdAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'updated_at': result.updatedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'archived_at': result.archivedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'is_deleted': result.isDeleted = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'user_id': result.createdUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'assigned_user_id': result.assignedUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'entity_type': result.entityType = serializers.deserialize(value, - specifiedType: const FullType(EntityType)) as EntityType; + specifiedType: const FullType(EntityType)) as EntityType?; break; case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -592,10 +592,10 @@ class _$ExpenseScheduleEntitySerializer final String wireName = 'ExpenseScheduleEntity'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, ExpenseScheduleEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'send_date', serializers.serialize(object.sendDate, specifiedType: const FullType(String)), @@ -606,19 +606,19 @@ class _$ExpenseScheduleEntitySerializer @override ExpenseScheduleEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ExpenseScheduleEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'send_date': result.sendDate = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -638,10 +638,10 @@ class _$ExpenseStatusEntitySerializer final String wireName = 'ExpenseStatusEntity'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, ExpenseStatusEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'id', serializers.serialize(object.id, specifiedType: const FullType(String)), 'name', @@ -653,23 +653,23 @@ class _$ExpenseStatusEntitySerializer @override ExpenseStatusEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ExpenseStatusEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'name': result.name = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -683,10 +683,10 @@ class _$ExpenseListResponse extends ExpenseListResponse { final BuiltList data; factory _$ExpenseListResponse( - [void Function(ExpenseListResponseBuilder) updates]) => + [void Function(ExpenseListResponseBuilder)? updates]) => (new ExpenseListResponseBuilder()..update(updates))._build(); - _$ExpenseListResponse._({this.data}) : super._() { + _$ExpenseListResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull(data, r'ExpenseListResponse', 'data'); } @@ -705,10 +705,10 @@ class _$ExpenseListResponse extends ExpenseListResponse { return other is ExpenseListResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -725,12 +725,12 @@ class _$ExpenseListResponse extends ExpenseListResponse { class ExpenseListResponseBuilder implements Builder { - _$ExpenseListResponse _$v; + _$ExpenseListResponse? _$v; - ListBuilder _data; + ListBuilder? _data; ListBuilder get data => _$this._data ??= new ListBuilder(); - set data(ListBuilder data) => _$this._data = data; + set data(ListBuilder? data) => _$this._data = data; ExpenseListResponseBuilder(); @@ -750,7 +750,7 @@ class ExpenseListResponseBuilder } @override - void update(void Function(ExpenseListResponseBuilder) updates) { + void update(void Function(ExpenseListResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -762,7 +762,7 @@ class ExpenseListResponseBuilder try { _$result = _$v ?? new _$ExpenseListResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -782,10 +782,10 @@ class _$ExpenseItemResponse extends ExpenseItemResponse { final ExpenseEntity data; factory _$ExpenseItemResponse( - [void Function(ExpenseItemResponseBuilder) updates]) => + [void Function(ExpenseItemResponseBuilder)? updates]) => (new ExpenseItemResponseBuilder()..update(updates))._build(); - _$ExpenseItemResponse._({this.data}) : super._() { + _$ExpenseItemResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull(data, r'ExpenseItemResponse', 'data'); } @@ -804,10 +804,10 @@ class _$ExpenseItemResponse extends ExpenseItemResponse { return other is ExpenseItemResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -824,11 +824,11 @@ class _$ExpenseItemResponse extends ExpenseItemResponse { class ExpenseItemResponseBuilder implements Builder { - _$ExpenseItemResponse _$v; + _$ExpenseItemResponse? _$v; - ExpenseEntityBuilder _data; + ExpenseEntityBuilder? _data; ExpenseEntityBuilder get data => _$this._data ??= new ExpenseEntityBuilder(); - set data(ExpenseEntityBuilder data) => _$this._data = data; + set data(ExpenseEntityBuilder? data) => _$this._data = data; ExpenseItemResponseBuilder(); @@ -848,7 +848,7 @@ class ExpenseItemResponseBuilder } @override - void update(void Function(ExpenseItemResponseBuilder) updates) { + void update(void Function(ExpenseItemResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -860,7 +860,7 @@ class ExpenseItemResponseBuilder try { _$result = _$v ?? new _$ExpenseItemResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -897,7 +897,7 @@ class _$ExpenseEntity extends ExpenseEntity { @override final double amount; @override - final String date; + final String? date; @override final String paymentDate; @override @@ -919,15 +919,15 @@ class _$ExpenseEntity extends ExpenseEntity { @override final double taxRate3; @override - final String clientId; + final String? clientId; @override - final String invoiceId; + final String? invoiceId; @override - final String vendorId; + final String? vendorId; @override - final String projectId; + final String? projectId; @override - final String statusId; + final String? statusId; @override final String customValue1; @override @@ -945,13 +945,13 @@ class _$ExpenseEntity extends ExpenseEntity { @override final bool usesInclusiveTaxes; @override - final bool calculateTaxByAmount; + final bool? calculateTaxByAmount; @override final BuiltList documents; @override final String number; @override - final String recurringExpenseId; + final String? recurringExpenseId; @override final String frequencyId; @override @@ -961,11 +961,11 @@ class _$ExpenseEntity extends ExpenseEntity { @override final int remainingCycles; @override - final BuiltList recurringDates; + final BuiltList? recurringDates; @override - final int loadedAt; + final int? loadedAt; @override - final bool isChanged; + final bool? isChanged; @override final int createdAt; @override @@ -973,73 +973,73 @@ class _$ExpenseEntity extends ExpenseEntity { @override final int archivedAt; @override - final bool isDeleted; + final bool? isDeleted; @override - final String createdUserId; + final String? createdUserId; @override - final String assignedUserId; + final String? assignedUserId; @override - final EntityType entityType; + final EntityType? entityType; @override final String id; - factory _$ExpenseEntity([void Function(ExpenseEntityBuilder) updates]) => + factory _$ExpenseEntity([void Function(ExpenseEntityBuilder)? updates]) => (new ExpenseEntityBuilder()..update(updates))._build(); _$ExpenseEntity._( - {this.privateNotes, - this.publicNotes, - this.shouldBeInvoiced, - this.invoiceDocuments, - this.transactionId, - this.transactionReference, - this.bankId, - this.currencyId, - this.categoryId, - this.amount, + {required this.privateNotes, + required this.publicNotes, + required this.shouldBeInvoiced, + required this.invoiceDocuments, + required this.transactionId, + required this.transactionReference, + required this.bankId, + required this.currencyId, + required this.categoryId, + required this.amount, this.date, - this.paymentDate, - this.exchangeRate, - this.invoiceCurrencyId, - this.paymentTypeId, - this.taxName1, - this.taxName2, - this.taxRate1, - this.taxRate2, - this.taxName3, - this.taxRate3, + required this.paymentDate, + required this.exchangeRate, + required this.invoiceCurrencyId, + required this.paymentTypeId, + required this.taxName1, + required this.taxName2, + required this.taxRate1, + required this.taxRate2, + required this.taxName3, + required this.taxRate3, this.clientId, this.invoiceId, this.vendorId, this.projectId, this.statusId, - this.customValue1, - this.customValue2, - this.customValue3, - this.customValue4, - this.taxAmount1, - this.taxAmount2, - this.taxAmount3, - this.usesInclusiveTaxes, + required this.customValue1, + required this.customValue2, + required this.customValue3, + required this.customValue4, + required this.taxAmount1, + required this.taxAmount2, + required this.taxAmount3, + required this.usesInclusiveTaxes, this.calculateTaxByAmount, - this.documents, - this.number, + required this.documents, + required this.number, this.recurringExpenseId, - this.frequencyId, - this.lastSentDate, - this.nextSendDate, - this.remainingCycles, + required this.frequencyId, + required this.lastSentDate, + required this.nextSendDate, + required this.remainingCycles, this.recurringDates, this.loadedAt, this.isChanged, - this.createdAt, - this.updatedAt, - this.archivedAt, + required this.createdAt, + required this.updatedAt, + required this.archivedAt, this.isDeleted, this.createdUserId, this.assignedUserId, this.entityType, - this.id}) + required this.id}) : super._() { BuiltValueNullFieldError.checkNotNull( privateNotes, r'ExpenseEntity', 'privateNotes'); @@ -1180,10 +1180,10 @@ class _$ExpenseEntity extends ExpenseEntity { id == other.id; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, privateNotes.hashCode); _$hash = $jc(_$hash, publicNotes.hashCode); @@ -1303,235 +1303,235 @@ class _$ExpenseEntity extends ExpenseEntity { class ExpenseEntityBuilder implements Builder { - _$ExpenseEntity _$v; + _$ExpenseEntity? _$v; - String _privateNotes; - String get privateNotes => _$this._privateNotes; - set privateNotes(String privateNotes) => _$this._privateNotes = privateNotes; + String? _privateNotes; + String? get privateNotes => _$this._privateNotes; + set privateNotes(String? privateNotes) => _$this._privateNotes = privateNotes; - String _publicNotes; - String get publicNotes => _$this._publicNotes; - set publicNotes(String publicNotes) => _$this._publicNotes = publicNotes; + String? _publicNotes; + String? get publicNotes => _$this._publicNotes; + set publicNotes(String? publicNotes) => _$this._publicNotes = publicNotes; - bool _shouldBeInvoiced; - bool get shouldBeInvoiced => _$this._shouldBeInvoiced; - set shouldBeInvoiced(bool shouldBeInvoiced) => + bool? _shouldBeInvoiced; + bool? get shouldBeInvoiced => _$this._shouldBeInvoiced; + set shouldBeInvoiced(bool? shouldBeInvoiced) => _$this._shouldBeInvoiced = shouldBeInvoiced; - bool _invoiceDocuments; - bool get invoiceDocuments => _$this._invoiceDocuments; - set invoiceDocuments(bool invoiceDocuments) => + bool? _invoiceDocuments; + bool? get invoiceDocuments => _$this._invoiceDocuments; + set invoiceDocuments(bool? invoiceDocuments) => _$this._invoiceDocuments = invoiceDocuments; - String _transactionId; - String get transactionId => _$this._transactionId; - set transactionId(String transactionId) => + String? _transactionId; + String? get transactionId => _$this._transactionId; + set transactionId(String? transactionId) => _$this._transactionId = transactionId; - String _transactionReference; - String get transactionReference => _$this._transactionReference; - set transactionReference(String transactionReference) => + String? _transactionReference; + String? get transactionReference => _$this._transactionReference; + set transactionReference(String? transactionReference) => _$this._transactionReference = transactionReference; - String _bankId; - String get bankId => _$this._bankId; - set bankId(String bankId) => _$this._bankId = bankId; + String? _bankId; + String? get bankId => _$this._bankId; + set bankId(String? bankId) => _$this._bankId = bankId; - String _currencyId; - String get currencyId => _$this._currencyId; - set currencyId(String currencyId) => _$this._currencyId = currencyId; + String? _currencyId; + String? get currencyId => _$this._currencyId; + set currencyId(String? currencyId) => _$this._currencyId = currencyId; - String _categoryId; - String get categoryId => _$this._categoryId; - set categoryId(String categoryId) => _$this._categoryId = categoryId; + String? _categoryId; + String? get categoryId => _$this._categoryId; + set categoryId(String? categoryId) => _$this._categoryId = categoryId; - double _amount; - double get amount => _$this._amount; - set amount(double amount) => _$this._amount = amount; + double? _amount; + double? get amount => _$this._amount; + set amount(double? amount) => _$this._amount = amount; - String _date; - String get date => _$this._date; - set date(String date) => _$this._date = date; + String? _date; + String? get date => _$this._date; + set date(String? date) => _$this._date = date; - String _paymentDate; - String get paymentDate => _$this._paymentDate; - set paymentDate(String paymentDate) => _$this._paymentDate = paymentDate; + String? _paymentDate; + String? get paymentDate => _$this._paymentDate; + set paymentDate(String? paymentDate) => _$this._paymentDate = paymentDate; - double _exchangeRate; - double get exchangeRate => _$this._exchangeRate; - set exchangeRate(double exchangeRate) => _$this._exchangeRate = exchangeRate; + double? _exchangeRate; + double? get exchangeRate => _$this._exchangeRate; + set exchangeRate(double? exchangeRate) => _$this._exchangeRate = exchangeRate; - String _invoiceCurrencyId; - String get invoiceCurrencyId => _$this._invoiceCurrencyId; - set invoiceCurrencyId(String invoiceCurrencyId) => + String? _invoiceCurrencyId; + String? get invoiceCurrencyId => _$this._invoiceCurrencyId; + set invoiceCurrencyId(String? invoiceCurrencyId) => _$this._invoiceCurrencyId = invoiceCurrencyId; - String _paymentTypeId; - String get paymentTypeId => _$this._paymentTypeId; - set paymentTypeId(String paymentTypeId) => + String? _paymentTypeId; + String? get paymentTypeId => _$this._paymentTypeId; + set paymentTypeId(String? paymentTypeId) => _$this._paymentTypeId = paymentTypeId; - String _taxName1; - String get taxName1 => _$this._taxName1; - set taxName1(String taxName1) => _$this._taxName1 = taxName1; + String? _taxName1; + String? get taxName1 => _$this._taxName1; + set taxName1(String? taxName1) => _$this._taxName1 = taxName1; - String _taxName2; - String get taxName2 => _$this._taxName2; - set taxName2(String taxName2) => _$this._taxName2 = taxName2; + String? _taxName2; + String? get taxName2 => _$this._taxName2; + set taxName2(String? taxName2) => _$this._taxName2 = taxName2; - double _taxRate1; - double get taxRate1 => _$this._taxRate1; - set taxRate1(double taxRate1) => _$this._taxRate1 = taxRate1; + double? _taxRate1; + double? get taxRate1 => _$this._taxRate1; + set taxRate1(double? taxRate1) => _$this._taxRate1 = taxRate1; - double _taxRate2; - double get taxRate2 => _$this._taxRate2; - set taxRate2(double taxRate2) => _$this._taxRate2 = taxRate2; + double? _taxRate2; + double? get taxRate2 => _$this._taxRate2; + set taxRate2(double? taxRate2) => _$this._taxRate2 = taxRate2; - String _taxName3; - String get taxName3 => _$this._taxName3; - set taxName3(String taxName3) => _$this._taxName3 = taxName3; + String? _taxName3; + String? get taxName3 => _$this._taxName3; + set taxName3(String? taxName3) => _$this._taxName3 = taxName3; - double _taxRate3; - double get taxRate3 => _$this._taxRate3; - set taxRate3(double taxRate3) => _$this._taxRate3 = taxRate3; + double? _taxRate3; + double? get taxRate3 => _$this._taxRate3; + set taxRate3(double? taxRate3) => _$this._taxRate3 = taxRate3; - String _clientId; - String get clientId => _$this._clientId; - set clientId(String clientId) => _$this._clientId = clientId; + String? _clientId; + String? get clientId => _$this._clientId; + set clientId(String? clientId) => _$this._clientId = clientId; - String _invoiceId; - String get invoiceId => _$this._invoiceId; - set invoiceId(String invoiceId) => _$this._invoiceId = invoiceId; + String? _invoiceId; + String? get invoiceId => _$this._invoiceId; + set invoiceId(String? invoiceId) => _$this._invoiceId = invoiceId; - String _vendorId; - String get vendorId => _$this._vendorId; - set vendorId(String vendorId) => _$this._vendorId = vendorId; + String? _vendorId; + String? get vendorId => _$this._vendorId; + set vendorId(String? vendorId) => _$this._vendorId = vendorId; - String _projectId; - String get projectId => _$this._projectId; - set projectId(String projectId) => _$this._projectId = projectId; + String? _projectId; + String? get projectId => _$this._projectId; + set projectId(String? projectId) => _$this._projectId = projectId; - String _statusId; - String get statusId => _$this._statusId; - set statusId(String statusId) => _$this._statusId = statusId; + String? _statusId; + String? get statusId => _$this._statusId; + set statusId(String? statusId) => _$this._statusId = statusId; - String _customValue1; - String get customValue1 => _$this._customValue1; - set customValue1(String customValue1) => _$this._customValue1 = customValue1; + String? _customValue1; + String? get customValue1 => _$this._customValue1; + set customValue1(String? customValue1) => _$this._customValue1 = customValue1; - String _customValue2; - String get customValue2 => _$this._customValue2; - set customValue2(String customValue2) => _$this._customValue2 = customValue2; + String? _customValue2; + String? get customValue2 => _$this._customValue2; + set customValue2(String? customValue2) => _$this._customValue2 = customValue2; - String _customValue3; - String get customValue3 => _$this._customValue3; - set customValue3(String customValue3) => _$this._customValue3 = customValue3; + String? _customValue3; + String? get customValue3 => _$this._customValue3; + set customValue3(String? customValue3) => _$this._customValue3 = customValue3; - String _customValue4; - String get customValue4 => _$this._customValue4; - set customValue4(String customValue4) => _$this._customValue4 = customValue4; + String? _customValue4; + String? get customValue4 => _$this._customValue4; + set customValue4(String? customValue4) => _$this._customValue4 = customValue4; - double _taxAmount1; - double get taxAmount1 => _$this._taxAmount1; - set taxAmount1(double taxAmount1) => _$this._taxAmount1 = taxAmount1; + double? _taxAmount1; + double? get taxAmount1 => _$this._taxAmount1; + set taxAmount1(double? taxAmount1) => _$this._taxAmount1 = taxAmount1; - double _taxAmount2; - double get taxAmount2 => _$this._taxAmount2; - set taxAmount2(double taxAmount2) => _$this._taxAmount2 = taxAmount2; + double? _taxAmount2; + double? get taxAmount2 => _$this._taxAmount2; + set taxAmount2(double? taxAmount2) => _$this._taxAmount2 = taxAmount2; - double _taxAmount3; - double get taxAmount3 => _$this._taxAmount3; - set taxAmount3(double taxAmount3) => _$this._taxAmount3 = taxAmount3; + double? _taxAmount3; + double? get taxAmount3 => _$this._taxAmount3; + set taxAmount3(double? taxAmount3) => _$this._taxAmount3 = taxAmount3; - bool _usesInclusiveTaxes; - bool get usesInclusiveTaxes => _$this._usesInclusiveTaxes; - set usesInclusiveTaxes(bool usesInclusiveTaxes) => + bool? _usesInclusiveTaxes; + bool? get usesInclusiveTaxes => _$this._usesInclusiveTaxes; + set usesInclusiveTaxes(bool? usesInclusiveTaxes) => _$this._usesInclusiveTaxes = usesInclusiveTaxes; - bool _calculateTaxByAmount; - bool get calculateTaxByAmount => _$this._calculateTaxByAmount; - set calculateTaxByAmount(bool calculateTaxByAmount) => + bool? _calculateTaxByAmount; + bool? get calculateTaxByAmount => _$this._calculateTaxByAmount; + set calculateTaxByAmount(bool? calculateTaxByAmount) => _$this._calculateTaxByAmount = calculateTaxByAmount; - ListBuilder _documents; + ListBuilder? _documents; ListBuilder get documents => _$this._documents ??= new ListBuilder(); - set documents(ListBuilder documents) => + set documents(ListBuilder? documents) => _$this._documents = documents; - String _number; - String get number => _$this._number; - set number(String number) => _$this._number = number; + String? _number; + String? get number => _$this._number; + set number(String? number) => _$this._number = number; - String _recurringExpenseId; - String get recurringExpenseId => _$this._recurringExpenseId; - set recurringExpenseId(String recurringExpenseId) => + String? _recurringExpenseId; + String? get recurringExpenseId => _$this._recurringExpenseId; + set recurringExpenseId(String? recurringExpenseId) => _$this._recurringExpenseId = recurringExpenseId; - String _frequencyId; - String get frequencyId => _$this._frequencyId; - set frequencyId(String frequencyId) => _$this._frequencyId = frequencyId; + String? _frequencyId; + String? get frequencyId => _$this._frequencyId; + set frequencyId(String? frequencyId) => _$this._frequencyId = frequencyId; - String _lastSentDate; - String get lastSentDate => _$this._lastSentDate; - set lastSentDate(String lastSentDate) => _$this._lastSentDate = lastSentDate; + String? _lastSentDate; + String? get lastSentDate => _$this._lastSentDate; + set lastSentDate(String? lastSentDate) => _$this._lastSentDate = lastSentDate; - String _nextSendDate; - String get nextSendDate => _$this._nextSendDate; - set nextSendDate(String nextSendDate) => _$this._nextSendDate = nextSendDate; + String? _nextSendDate; + String? get nextSendDate => _$this._nextSendDate; + set nextSendDate(String? nextSendDate) => _$this._nextSendDate = nextSendDate; - int _remainingCycles; - int get remainingCycles => _$this._remainingCycles; - set remainingCycles(int remainingCycles) => + int? _remainingCycles; + int? get remainingCycles => _$this._remainingCycles; + set remainingCycles(int? remainingCycles) => _$this._remainingCycles = remainingCycles; - ListBuilder _recurringDates; + ListBuilder? _recurringDates; ListBuilder get recurringDates => _$this._recurringDates ??= new ListBuilder(); - set recurringDates(ListBuilder recurringDates) => + set recurringDates(ListBuilder? recurringDates) => _$this._recurringDates = recurringDates; - int _loadedAt; - int get loadedAt => _$this._loadedAt; - set loadedAt(int loadedAt) => _$this._loadedAt = loadedAt; + int? _loadedAt; + int? get loadedAt => _$this._loadedAt; + set loadedAt(int? loadedAt) => _$this._loadedAt = loadedAt; - bool _isChanged; - bool get isChanged => _$this._isChanged; - set isChanged(bool isChanged) => _$this._isChanged = isChanged; + bool? _isChanged; + bool? get isChanged => _$this._isChanged; + set isChanged(bool? isChanged) => _$this._isChanged = isChanged; - int _createdAt; - int get createdAt => _$this._createdAt; - set createdAt(int createdAt) => _$this._createdAt = createdAt; + int? _createdAt; + int? get createdAt => _$this._createdAt; + set createdAt(int? createdAt) => _$this._createdAt = createdAt; - int _updatedAt; - int get updatedAt => _$this._updatedAt; - set updatedAt(int updatedAt) => _$this._updatedAt = updatedAt; + int? _updatedAt; + int? get updatedAt => _$this._updatedAt; + set updatedAt(int? updatedAt) => _$this._updatedAt = updatedAt; - int _archivedAt; - int get archivedAt => _$this._archivedAt; - set archivedAt(int archivedAt) => _$this._archivedAt = archivedAt; + int? _archivedAt; + int? get archivedAt => _$this._archivedAt; + set archivedAt(int? archivedAt) => _$this._archivedAt = archivedAt; - bool _isDeleted; - bool get isDeleted => _$this._isDeleted; - set isDeleted(bool isDeleted) => _$this._isDeleted = isDeleted; + bool? _isDeleted; + bool? get isDeleted => _$this._isDeleted; + set isDeleted(bool? isDeleted) => _$this._isDeleted = isDeleted; - String _createdUserId; - String get createdUserId => _$this._createdUserId; - set createdUserId(String createdUserId) => + String? _createdUserId; + String? get createdUserId => _$this._createdUserId; + set createdUserId(String? createdUserId) => _$this._createdUserId = createdUserId; - String _assignedUserId; - String get assignedUserId => _$this._assignedUserId; - set assignedUserId(String assignedUserId) => + String? _assignedUserId; + String? get assignedUserId => _$this._assignedUserId; + set assignedUserId(String? assignedUserId) => _$this._assignedUserId = assignedUserId; - EntityType _entityType; - EntityType get entityType => _$this._entityType; - set entityType(EntityType entityType) => _$this._entityType = entityType; + EntityType? _entityType; + EntityType? get entityType => _$this._entityType; + set entityType(EntityType? entityType) => _$this._entityType = entityType; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; ExpenseEntityBuilder() { ExpenseEntity._initializeBuilder(this); @@ -1605,7 +1605,7 @@ class ExpenseEntityBuilder } @override - void update(void Function(ExpenseEntityBuilder) updates) { + void update(void Function(ExpenseEntityBuilder)? updates) { if (updates != null) updates(this); } @@ -1678,7 +1678,7 @@ class ExpenseEntityBuilder entityType: entityType, id: BuiltValueNullFieldError.checkNotNull(id, r'ExpenseEntity', 'id')); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'documents'; documents.build(); @@ -1701,10 +1701,10 @@ class _$ExpenseScheduleEntity extends ExpenseScheduleEntity { final String sendDate; factory _$ExpenseScheduleEntity( - [void Function(ExpenseScheduleEntityBuilder) updates]) => + [void Function(ExpenseScheduleEntityBuilder)? updates]) => (new ExpenseScheduleEntityBuilder()..update(updates))._build(); - _$ExpenseScheduleEntity._({this.sendDate}) : super._() { + _$ExpenseScheduleEntity._({required this.sendDate}) : super._() { BuiltValueNullFieldError.checkNotNull( sendDate, r'ExpenseScheduleEntity', 'sendDate'); } @@ -1724,10 +1724,10 @@ class _$ExpenseScheduleEntity extends ExpenseScheduleEntity { return other is ExpenseScheduleEntity && sendDate == other.sendDate; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, sendDate.hashCode); _$hash = $jf(_$hash); @@ -1744,11 +1744,11 @@ class _$ExpenseScheduleEntity extends ExpenseScheduleEntity { class ExpenseScheduleEntityBuilder implements Builder { - _$ExpenseScheduleEntity _$v; + _$ExpenseScheduleEntity? _$v; - String _sendDate; - String get sendDate => _$this._sendDate; - set sendDate(String sendDate) => _$this._sendDate = sendDate; + String? _sendDate; + String? get sendDate => _$this._sendDate; + set sendDate(String? sendDate) => _$this._sendDate = sendDate; ExpenseScheduleEntityBuilder(); @@ -1768,7 +1768,7 @@ class ExpenseScheduleEntityBuilder } @override - void update(void Function(ExpenseScheduleEntityBuilder) updates) { + void update(void Function(ExpenseScheduleEntityBuilder)? updates) { if (updates != null) updates(this); } @@ -1792,10 +1792,10 @@ class _$ExpenseStatusEntity extends ExpenseStatusEntity { final String name; factory _$ExpenseStatusEntity( - [void Function(ExpenseStatusEntityBuilder) updates]) => + [void Function(ExpenseStatusEntityBuilder)? updates]) => (new ExpenseStatusEntityBuilder()..update(updates))._build(); - _$ExpenseStatusEntity._({this.id, this.name}) : super._() { + _$ExpenseStatusEntity._({required this.id, required this.name}) : super._() { BuiltValueNullFieldError.checkNotNull(id, r'ExpenseStatusEntity', 'id'); BuiltValueNullFieldError.checkNotNull(name, r'ExpenseStatusEntity', 'name'); } @@ -1815,10 +1815,10 @@ class _$ExpenseStatusEntity extends ExpenseStatusEntity { return other is ExpenseStatusEntity && id == other.id && name == other.name; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, id.hashCode); _$hash = $jc(_$hash, name.hashCode); @@ -1837,15 +1837,15 @@ class _$ExpenseStatusEntity extends ExpenseStatusEntity { class ExpenseStatusEntityBuilder implements Builder { - _$ExpenseStatusEntity _$v; + _$ExpenseStatusEntity? _$v; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; - String _name; - String get name => _$this._name; - set name(String name) => _$this._name = name; + String? _name; + String? get name => _$this._name; + set name(String? name) => _$this._name = name; ExpenseStatusEntityBuilder(); @@ -1866,7 +1866,7 @@ class ExpenseStatusEntityBuilder } @override - void update(void Function(ExpenseStatusEntityBuilder) updates) { + void update(void Function(ExpenseStatusEntityBuilder)? updates) { if (updates != null) updates(this); } diff --git a/lib/data/models/gateway_token_model.dart b/lib/data/models/gateway_token_model.dart index 5b74de970..5c8c3c8cd 100644 --- a/lib/data/models/gateway_token_model.dart +++ b/lib/data/models/gateway_token_model.dart @@ -57,7 +57,7 @@ class GatewayTokenFields { abstract class GatewayTokenEntity extends Object with BaseEntity, SelectableEntity implements Built { - factory GatewayTokenEntity({String id}) { + factory GatewayTokenEntity({String? id}) { return _$GatewayTokenEntity._( id: id ?? BaseEntity.nextId, isChanged: false, @@ -132,7 +132,7 @@ abstract class GatewayTokenEntity extends Object } @override - bool matchesFilter(String filter) { + bool matchesFilter(String? filter) { return matchesStrings( haystacks: [customerReference], needle: filter, @@ -140,7 +140,7 @@ abstract class GatewayTokenEntity extends Object } @override - String matchesFilterValue(String filter) { + String? matchesFilterValue(String? filter) { return matchesStringsValue( haystacks: [customerReference], needle: filter, @@ -148,16 +148,16 @@ abstract class GatewayTokenEntity extends Object } @override - List getActions( - {UserCompanyEntity userCompany, - ClientEntity client, + List getActions( + {UserCompanyEntity? userCompany, + ClientEntity? client, bool includeEdit = false, bool includePreview = false, bool multiselect = false}) { - final actions = []; + final actions = []; - if (!isDeleted && !multiselect) { - if (includeEdit && userCompany.canEditEntity(this)) { + if (!isDeleted! && !multiselect) { + if (includeEdit && userCompany!.canEditEntity(this)) { actions.add(EntityAction.edit); } } @@ -170,10 +170,10 @@ abstract class GatewayTokenEntity extends Object } @override - double get listDisplayAmount => null; + double? get listDisplayAmount => null; @override - FormatNumberType get listDisplayAmountType => null; + FormatNumberType? get listDisplayAmountType => null; static Serializer get serializer => _$gatewayTokenEntitySerializer; @@ -191,22 +191,17 @@ abstract class GatewayTokenMetaEntity @memoized int get hashCode; - @nullable - String get brand; + String? get brand; - @nullable - String get last4; + String? get last4; - @nullable - int get type; + int? get type; - @nullable @BuiltValueField(wireName: 'exp_month') - String get expMonth; + String? get expMonth; - @nullable @BuiltValueField(wireName: 'exp_year') - String get expYear; + String? get expYear; static Serializer get serializer => _$gatewayTokenMetaEntitySerializer; diff --git a/lib/data/models/gateway_token_model.g.dart b/lib/data/models/gateway_token_model.g.dart index ebfe41883..7922470a2 100644 --- a/lib/data/models/gateway_token_model.g.dart +++ b/lib/data/models/gateway_token_model.g.dart @@ -26,10 +26,10 @@ class _$GatewayTokenListResponseSerializer final String wireName = 'GatewayTokenListResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, GatewayTokenListResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType( @@ -41,21 +41,21 @@ class _$GatewayTokenListResponseSerializer @override GatewayTokenListResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new GatewayTokenListResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(GatewayTokenEntity)])) - as BuiltList); + BuiltList, const [const FullType(GatewayTokenEntity)]))! + as BuiltList); break; } } @@ -75,10 +75,10 @@ class _$GatewayTokenItemResponseSerializer final String wireName = 'GatewayTokenItemResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, GatewayTokenItemResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType(GatewayTokenEntity)), @@ -89,19 +89,19 @@ class _$GatewayTokenItemResponseSerializer @override GatewayTokenItemResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new GatewayTokenItemResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, - specifiedType: const FullType(GatewayTokenEntity)) + specifiedType: const FullType(GatewayTokenEntity))! as GatewayTokenEntity); break; } @@ -119,9 +119,10 @@ class _$GatewayTokenEntitySerializer final String wireName = 'GatewayTokenEntity'; @override - Iterable serialize(Serializers serializers, GatewayTokenEntity object, + Iterable serialize( + Serializers serializers, GatewayTokenEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'token', serializers.serialize(object.token, specifiedType: const FullType(String)), @@ -152,7 +153,7 @@ class _$GatewayTokenEntitySerializer 'id', serializers.serialize(object.id, specifiedType: const FullType(String)), ]; - Object value; + Object? value; value = object.isChanged; if (value != null) { result @@ -186,72 +187,72 @@ class _$GatewayTokenEntitySerializer @override GatewayTokenEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new GatewayTokenEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'token': result.token = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'gateway_customer_reference': result.customerReference = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'company_gateway_id': result.companyGatewayId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'gateway_type_id': result.gatewayTypeId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'is_default': result.isDefault = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'meta': result.meta.replace(serializers.deserialize(value, - specifiedType: const FullType(GatewayTokenMetaEntity)) + specifiedType: const FullType(GatewayTokenMetaEntity))! as GatewayTokenMetaEntity); break; case 'isChanged': result.isChanged = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'created_at': result.createdAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'updated_at': result.updatedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'archived_at': result.archivedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'is_deleted': result.isDeleted = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'user_id': result.createdUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'assigned_user_id': result.assignedUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -271,11 +272,11 @@ class _$GatewayTokenMetaEntitySerializer final String wireName = 'GatewayTokenMetaEntity'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, GatewayTokenMetaEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = []; - Object value; + final result = []; + Object? value; value = object.brand; if (value != null) { result @@ -315,35 +316,35 @@ class _$GatewayTokenMetaEntitySerializer @override GatewayTokenMetaEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new GatewayTokenMetaEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'brand': result.brand = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'last4': result.last4 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'type': result.type = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int)) as int?; break; case 'exp_month': result.expMonth = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'exp_year': result.expYear = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; } } @@ -357,10 +358,10 @@ class _$GatewayTokenListResponse extends GatewayTokenListResponse { final BuiltList data; factory _$GatewayTokenListResponse( - [void Function(GatewayTokenListResponseBuilder) updates]) => + [void Function(GatewayTokenListResponseBuilder)? updates]) => (new GatewayTokenListResponseBuilder()..update(updates))._build(); - _$GatewayTokenListResponse._({this.data}) : super._() { + _$GatewayTokenListResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull( data, r'GatewayTokenListResponse', 'data'); } @@ -380,10 +381,10 @@ class _$GatewayTokenListResponse extends GatewayTokenListResponse { return other is GatewayTokenListResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -401,12 +402,12 @@ class _$GatewayTokenListResponse extends GatewayTokenListResponse { class GatewayTokenListResponseBuilder implements Builder { - _$GatewayTokenListResponse _$v; + _$GatewayTokenListResponse? _$v; - ListBuilder _data; + ListBuilder? _data; ListBuilder get data => _$this._data ??= new ListBuilder(); - set data(ListBuilder data) => _$this._data = data; + set data(ListBuilder? data) => _$this._data = data; GatewayTokenListResponseBuilder(); @@ -426,7 +427,7 @@ class GatewayTokenListResponseBuilder } @override - void update(void Function(GatewayTokenListResponseBuilder) updates) { + void update(void Function(GatewayTokenListResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -438,7 +439,7 @@ class GatewayTokenListResponseBuilder try { _$result = _$v ?? new _$GatewayTokenListResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -458,10 +459,10 @@ class _$GatewayTokenItemResponse extends GatewayTokenItemResponse { final GatewayTokenEntity data; factory _$GatewayTokenItemResponse( - [void Function(GatewayTokenItemResponseBuilder) updates]) => + [void Function(GatewayTokenItemResponseBuilder)? updates]) => (new GatewayTokenItemResponseBuilder()..update(updates))._build(); - _$GatewayTokenItemResponse._({this.data}) : super._() { + _$GatewayTokenItemResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull( data, r'GatewayTokenItemResponse', 'data'); } @@ -481,10 +482,10 @@ class _$GatewayTokenItemResponse extends GatewayTokenItemResponse { return other is GatewayTokenItemResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -502,12 +503,12 @@ class _$GatewayTokenItemResponse extends GatewayTokenItemResponse { class GatewayTokenItemResponseBuilder implements Builder { - _$GatewayTokenItemResponse _$v; + _$GatewayTokenItemResponse? _$v; - GatewayTokenEntityBuilder _data; + GatewayTokenEntityBuilder? _data; GatewayTokenEntityBuilder get data => _$this._data ??= new GatewayTokenEntityBuilder(); - set data(GatewayTokenEntityBuilder data) => _$this._data = data; + set data(GatewayTokenEntityBuilder? data) => _$this._data = data; GatewayTokenItemResponseBuilder(); @@ -527,7 +528,7 @@ class GatewayTokenItemResponseBuilder } @override - void update(void Function(GatewayTokenItemResponseBuilder) updates) { + void update(void Function(GatewayTokenItemResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -539,7 +540,7 @@ class GatewayTokenItemResponseBuilder try { _$result = _$v ?? new _$GatewayTokenItemResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -568,7 +569,7 @@ class _$GatewayTokenEntity extends GatewayTokenEntity { @override final GatewayTokenMetaEntity meta; @override - final bool isChanged; + final bool? isChanged; @override final int createdAt; @override @@ -576,33 +577,33 @@ class _$GatewayTokenEntity extends GatewayTokenEntity { @override final int archivedAt; @override - final bool isDeleted; + final bool? isDeleted; @override - final String createdUserId; + final String? createdUserId; @override - final String assignedUserId; + final String? assignedUserId; @override final String id; factory _$GatewayTokenEntity( - [void Function(GatewayTokenEntityBuilder) updates]) => + [void Function(GatewayTokenEntityBuilder)? updates]) => (new GatewayTokenEntityBuilder()..update(updates))._build(); _$GatewayTokenEntity._( - {this.token, - this.customerReference, - this.companyGatewayId, - this.gatewayTypeId, - this.isDefault, - this.meta, + {required this.token, + required this.customerReference, + required this.companyGatewayId, + required this.gatewayTypeId, + required this.isDefault, + required this.meta, this.isChanged, - this.createdAt, - this.updatedAt, - this.archivedAt, + required this.createdAt, + required this.updatedAt, + required this.archivedAt, this.isDeleted, this.createdUserId, this.assignedUserId, - this.id}) + required this.id}) : super._() { BuiltValueNullFieldError.checkNotNull( token, r'GatewayTokenEntity', 'token'); @@ -653,10 +654,10 @@ class _$GatewayTokenEntity extends GatewayTokenEntity { id == other.id; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, token.hashCode); _$hash = $jc(_$hash, customerReference.hashCode); @@ -699,69 +700,69 @@ class _$GatewayTokenEntity extends GatewayTokenEntity { class GatewayTokenEntityBuilder implements Builder { - _$GatewayTokenEntity _$v; + _$GatewayTokenEntity? _$v; - String _token; - String get token => _$this._token; - set token(String token) => _$this._token = token; + String? _token; + String? get token => _$this._token; + set token(String? token) => _$this._token = token; - String _customerReference; - String get customerReference => _$this._customerReference; - set customerReference(String customerReference) => + String? _customerReference; + String? get customerReference => _$this._customerReference; + set customerReference(String? customerReference) => _$this._customerReference = customerReference; - String _companyGatewayId; - String get companyGatewayId => _$this._companyGatewayId; - set companyGatewayId(String companyGatewayId) => + String? _companyGatewayId; + String? get companyGatewayId => _$this._companyGatewayId; + set companyGatewayId(String? companyGatewayId) => _$this._companyGatewayId = companyGatewayId; - String _gatewayTypeId; - String get gatewayTypeId => _$this._gatewayTypeId; - set gatewayTypeId(String gatewayTypeId) => + String? _gatewayTypeId; + String? get gatewayTypeId => _$this._gatewayTypeId; + set gatewayTypeId(String? gatewayTypeId) => _$this._gatewayTypeId = gatewayTypeId; - bool _isDefault; - bool get isDefault => _$this._isDefault; - set isDefault(bool isDefault) => _$this._isDefault = isDefault; + bool? _isDefault; + bool? get isDefault => _$this._isDefault; + set isDefault(bool? isDefault) => _$this._isDefault = isDefault; - GatewayTokenMetaEntityBuilder _meta; + GatewayTokenMetaEntityBuilder? _meta; GatewayTokenMetaEntityBuilder get meta => _$this._meta ??= new GatewayTokenMetaEntityBuilder(); - set meta(GatewayTokenMetaEntityBuilder meta) => _$this._meta = meta; + set meta(GatewayTokenMetaEntityBuilder? meta) => _$this._meta = meta; - bool _isChanged; - bool get isChanged => _$this._isChanged; - set isChanged(bool isChanged) => _$this._isChanged = isChanged; + bool? _isChanged; + bool? get isChanged => _$this._isChanged; + set isChanged(bool? isChanged) => _$this._isChanged = isChanged; - int _createdAt; - int get createdAt => _$this._createdAt; - set createdAt(int createdAt) => _$this._createdAt = createdAt; + int? _createdAt; + int? get createdAt => _$this._createdAt; + set createdAt(int? createdAt) => _$this._createdAt = createdAt; - int _updatedAt; - int get updatedAt => _$this._updatedAt; - set updatedAt(int updatedAt) => _$this._updatedAt = updatedAt; + int? _updatedAt; + int? get updatedAt => _$this._updatedAt; + set updatedAt(int? updatedAt) => _$this._updatedAt = updatedAt; - int _archivedAt; - int get archivedAt => _$this._archivedAt; - set archivedAt(int archivedAt) => _$this._archivedAt = archivedAt; + int? _archivedAt; + int? get archivedAt => _$this._archivedAt; + set archivedAt(int? archivedAt) => _$this._archivedAt = archivedAt; - bool _isDeleted; - bool get isDeleted => _$this._isDeleted; - set isDeleted(bool isDeleted) => _$this._isDeleted = isDeleted; + bool? _isDeleted; + bool? get isDeleted => _$this._isDeleted; + set isDeleted(bool? isDeleted) => _$this._isDeleted = isDeleted; - String _createdUserId; - String get createdUserId => _$this._createdUserId; - set createdUserId(String createdUserId) => + String? _createdUserId; + String? get createdUserId => _$this._createdUserId; + set createdUserId(String? createdUserId) => _$this._createdUserId = createdUserId; - String _assignedUserId; - String get assignedUserId => _$this._assignedUserId; - set assignedUserId(String assignedUserId) => + String? _assignedUserId; + String? get assignedUserId => _$this._assignedUserId; + set assignedUserId(String? assignedUserId) => _$this._assignedUserId = assignedUserId; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; GatewayTokenEntityBuilder(); @@ -794,7 +795,7 @@ class GatewayTokenEntityBuilder } @override - void update(void Function(GatewayTokenEntityBuilder) updates) { + void update(void Function(GatewayTokenEntityBuilder)? updates) { if (updates != null) updates(this); } @@ -829,7 +830,7 @@ class GatewayTokenEntityBuilder assignedUserId: assignedUserId, id: BuiltValueNullFieldError.checkNotNull(id, r'GatewayTokenEntity', 'id')); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'meta'; meta.build(); @@ -846,18 +847,18 @@ class GatewayTokenEntityBuilder class _$GatewayTokenMetaEntity extends GatewayTokenMetaEntity { @override - final String brand; + final String? brand; @override - final String last4; + final String? last4; @override - final int type; + final int? type; @override - final String expMonth; + final String? expMonth; @override - final String expYear; + final String? expYear; factory _$GatewayTokenMetaEntity( - [void Function(GatewayTokenMetaEntityBuilder) updates]) => + [void Function(GatewayTokenMetaEntityBuilder)? updates]) => (new GatewayTokenMetaEntityBuilder()..update(updates))._build(); _$GatewayTokenMetaEntity._( @@ -884,10 +885,10 @@ class _$GatewayTokenMetaEntity extends GatewayTokenMetaEntity { expYear == other.expYear; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, brand.hashCode); _$hash = $jc(_$hash, last4.hashCode); @@ -912,27 +913,27 @@ class _$GatewayTokenMetaEntity extends GatewayTokenMetaEntity { class GatewayTokenMetaEntityBuilder implements Builder { - _$GatewayTokenMetaEntity _$v; + _$GatewayTokenMetaEntity? _$v; - String _brand; - String get brand => _$this._brand; - set brand(String brand) => _$this._brand = brand; + String? _brand; + String? get brand => _$this._brand; + set brand(String? brand) => _$this._brand = brand; - String _last4; - String get last4 => _$this._last4; - set last4(String last4) => _$this._last4 = last4; + String? _last4; + String? get last4 => _$this._last4; + set last4(String? last4) => _$this._last4 = last4; - int _type; - int get type => _$this._type; - set type(int type) => _$this._type = type; + int? _type; + int? get type => _$this._type; + set type(int? type) => _$this._type = type; - String _expMonth; - String get expMonth => _$this._expMonth; - set expMonth(String expMonth) => _$this._expMonth = expMonth; + String? _expMonth; + String? get expMonth => _$this._expMonth; + set expMonth(String? expMonth) => _$this._expMonth = expMonth; - String _expYear; - String get expYear => _$this._expYear; - set expYear(String expYear) => _$this._expYear = expYear; + String? _expYear; + String? get expYear => _$this._expYear; + set expYear(String? expYear) => _$this._expYear = expYear; GatewayTokenMetaEntityBuilder(); @@ -956,7 +957,7 @@ class GatewayTokenMetaEntityBuilder } @override - void update(void Function(GatewayTokenMetaEntityBuilder) updates) { + void update(void Function(GatewayTokenMetaEntityBuilder)? updates) { if (updates != null) updates(this); } diff --git a/lib/data/models/group_model.dart b/lib/data/models/group_model.dart index 587ce1be7..7ac73f879 100644 --- a/lib/data/models/group_model.dart +++ b/lib/data/models/group_model.dart @@ -53,7 +53,7 @@ class GroupFields { abstract class GroupEntity extends Object with BaseEntity, SelectableEntity implements Built { - factory GroupEntity({String id, AppState state}) { + factory GroupEntity({String? id, AppState? state}) { return _$GroupEntity._( id: id ?? BaseEntity.nextId, isChanged: false, @@ -92,24 +92,24 @@ abstract class GroupEntity extends Object } bool get hasCurrency => - settings.currencyId != null && settings.currencyId.isNotEmpty; + settings.currencyId != null && settings.currencyId!.isNotEmpty; - String get currencyId => settings.currencyId; + String? get currencyId => settings.currencyId; bool get hasLanguage => - settings.languageId != null && settings.languageId.isNotEmpty; + settings.languageId != null && settings.languageId!.isNotEmpty; - String get languageId => settings.languageId; + String? get languageId => settings.languageId; - int compareTo(GroupEntity group, String sortField, bool sortAscending) { + int compareTo(GroupEntity? group, String sortField, bool sortAscending) { int response = 0; - final GroupEntity groupA = sortAscending ? this : group; - final GroupEntity groupB = sortAscending ? group : this; + final GroupEntity? groupA = sortAscending ? this : group; + final GroupEntity? groupB = sortAscending ? group : this; switch (sortField) { case GroupFields.name: response = - groupA.name.toLowerCase().compareTo(groupB.name.toLowerCase()); + groupA!.name.toLowerCase().compareTo(groupB!.name.toLowerCase()); break; default: print('## ERROR: sort by group.$sortField is not implemented'); @@ -120,7 +120,7 @@ abstract class GroupEntity extends Object } @override - bool matchesFilter(String filter) { + bool matchesFilter(String? filter) { return matchesStrings( haystacks: [ name, @@ -130,7 +130,7 @@ abstract class GroupEntity extends Object } @override - String matchesFilterValue(String filter) { + String? matchesFilterValue(String? filter) { return matchesStringsValue( haystacks: [], needle: filter, @@ -138,20 +138,20 @@ abstract class GroupEntity extends Object } @override - List getActions( - {UserCompanyEntity userCompany, - ClientEntity client, + List getActions( + {UserCompanyEntity? userCompany, + ClientEntity? client, bool includeEdit = false, bool includePreview = false, bool multiselect = false}) { - final actions = []; + final actions = []; - if (!isDeleted && !multiselect) { - if (includeEdit && userCompany.canEditEntity(this)) { + if (!isDeleted! && !multiselect) { + if (includeEdit && userCompany!.canEditEntity(this)) { actions.add(EntityAction.edit); } - if (userCompany.canEditEntity(this)) { + if (userCompany!.canEditEntity(this)) { actions.add(EntityAction.settings); } @@ -168,10 +168,10 @@ abstract class GroupEntity extends Object } @override - double get listDisplayAmount => null; + double? get listDisplayAmount => null; @override - FormatNumberType get listDisplayAmountType => null; + FormatNumberType? get listDisplayAmountType => null; // ignore: unused_element static void _initializeBuilder(GroupEntityBuilder builder) => diff --git a/lib/data/models/group_model.g.dart b/lib/data/models/group_model.g.dart index fd19375f6..fff7e24e8 100644 --- a/lib/data/models/group_model.g.dart +++ b/lib/data/models/group_model.g.dart @@ -20,9 +20,9 @@ class _$GroupListResponseSerializer final String wireName = 'GroupListResponse'; @override - Iterable serialize(Serializers serializers, GroupListResponse object, + Iterable serialize(Serializers serializers, GroupListResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: @@ -34,21 +34,21 @@ class _$GroupListResponseSerializer @override GroupListResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new GroupListResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(GroupEntity)])) - as BuiltList); + BuiltList, const [const FullType(GroupEntity)]))! + as BuiltList); break; } } @@ -65,9 +65,9 @@ class _$GroupItemResponseSerializer final String wireName = 'GroupItemResponse'; @override - Iterable serialize(Serializers serializers, GroupItemResponse object, + Iterable serialize(Serializers serializers, GroupItemResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType(GroupEntity)), @@ -78,19 +78,19 @@ class _$GroupItemResponseSerializer @override GroupItemResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new GroupItemResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, - specifiedType: const FullType(GroupEntity)) as GroupEntity); + specifiedType: const FullType(GroupEntity))! as GroupEntity); break; } } @@ -106,9 +106,9 @@ class _$GroupEntitySerializer implements StructuredSerializer { final String wireName = 'GroupEntity'; @override - Iterable serialize(Serializers serializers, GroupEntity object, + Iterable serialize(Serializers serializers, GroupEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'name', serializers.serialize(object.name, specifiedType: const FullType(String)), 'settings', @@ -130,7 +130,7 @@ class _$GroupEntitySerializer implements StructuredSerializer { 'id', serializers.serialize(object.id, specifiedType: const FullType(String)), ]; - Object value; + Object? value; value = object.isChanged; if (value != null) { result @@ -163,61 +163,62 @@ class _$GroupEntitySerializer implements StructuredSerializer { } @override - GroupEntity deserialize(Serializers serializers, Iterable serialized, + GroupEntity deserialize(Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new GroupEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'name': result.name = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'settings': result.settings.replace(serializers.deserialize(value, - specifiedType: const FullType(SettingsEntity)) as SettingsEntity); + specifiedType: const FullType(SettingsEntity))! + as SettingsEntity); break; case 'documents': result.documents.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(DocumentEntity)])) - as BuiltList); + BuiltList, const [const FullType(DocumentEntity)]))! + as BuiltList); break; case 'isChanged': result.isChanged = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'created_at': result.createdAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'updated_at': result.updatedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'archived_at': result.archivedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'is_deleted': result.isDeleted = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'user_id': result.createdUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'assigned_user_id': result.assignedUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -231,10 +232,10 @@ class _$GroupListResponse extends GroupListResponse { final BuiltList data; factory _$GroupListResponse( - [void Function(GroupListResponseBuilder) updates]) => + [void Function(GroupListResponseBuilder)? updates]) => (new GroupListResponseBuilder()..update(updates))._build(); - _$GroupListResponse._({this.data}) : super._() { + _$GroupListResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull(data, r'GroupListResponse', 'data'); } @@ -252,10 +253,10 @@ class _$GroupListResponse extends GroupListResponse { return other is GroupListResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -272,12 +273,12 @@ class _$GroupListResponse extends GroupListResponse { class GroupListResponseBuilder implements Builder { - _$GroupListResponse _$v; + _$GroupListResponse? _$v; - ListBuilder _data; + ListBuilder? _data; ListBuilder get data => _$this._data ??= new ListBuilder(); - set data(ListBuilder data) => _$this._data = data; + set data(ListBuilder? data) => _$this._data = data; GroupListResponseBuilder(); @@ -297,7 +298,7 @@ class GroupListResponseBuilder } @override - void update(void Function(GroupListResponseBuilder) updates) { + void update(void Function(GroupListResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -309,7 +310,7 @@ class GroupListResponseBuilder try { _$result = _$v ?? new _$GroupListResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -329,10 +330,10 @@ class _$GroupItemResponse extends GroupItemResponse { final GroupEntity data; factory _$GroupItemResponse( - [void Function(GroupItemResponseBuilder) updates]) => + [void Function(GroupItemResponseBuilder)? updates]) => (new GroupItemResponseBuilder()..update(updates))._build(); - _$GroupItemResponse._({this.data}) : super._() { + _$GroupItemResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull(data, r'GroupItemResponse', 'data'); } @@ -350,10 +351,10 @@ class _$GroupItemResponse extends GroupItemResponse { return other is GroupItemResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -370,11 +371,11 @@ class _$GroupItemResponse extends GroupItemResponse { class GroupItemResponseBuilder implements Builder { - _$GroupItemResponse _$v; + _$GroupItemResponse? _$v; - GroupEntityBuilder _data; + GroupEntityBuilder? _data; GroupEntityBuilder get data => _$this._data ??= new GroupEntityBuilder(); - set data(GroupEntityBuilder data) => _$this._data = data; + set data(GroupEntityBuilder? data) => _$this._data = data; GroupItemResponseBuilder(); @@ -394,7 +395,7 @@ class GroupItemResponseBuilder } @override - void update(void Function(GroupItemResponseBuilder) updates) { + void update(void Function(GroupItemResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -406,7 +407,7 @@ class GroupItemResponseBuilder try { _$result = _$v ?? new _$GroupItemResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -429,7 +430,7 @@ class _$GroupEntity extends GroupEntity { @override final BuiltList documents; @override - final bool isChanged; + final bool? isChanged; @override final int createdAt; @override @@ -437,29 +438,29 @@ class _$GroupEntity extends GroupEntity { @override final int archivedAt; @override - final bool isDeleted; + final bool? isDeleted; @override - final String createdUserId; + final String? createdUserId; @override - final String assignedUserId; + final String? assignedUserId; @override final String id; - factory _$GroupEntity([void Function(GroupEntityBuilder) updates]) => + factory _$GroupEntity([void Function(GroupEntityBuilder)? updates]) => (new GroupEntityBuilder()..update(updates))._build(); _$GroupEntity._( - {this.name, - this.settings, - this.documents, + {required this.name, + required this.settings, + required this.documents, this.isChanged, - this.createdAt, - this.updatedAt, - this.archivedAt, + required this.createdAt, + required this.updatedAt, + required this.archivedAt, this.isDeleted, this.createdUserId, this.assignedUserId, - this.id}) + required this.id}) : super._() { BuiltValueNullFieldError.checkNotNull(name, r'GroupEntity', 'name'); BuiltValueNullFieldError.checkNotNull(settings, r'GroupEntity', 'settings'); @@ -498,10 +499,10 @@ class _$GroupEntity extends GroupEntity { id == other.id; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, name.hashCode); _$hash = $jc(_$hash, settings.hashCode); @@ -537,56 +538,56 @@ class _$GroupEntity extends GroupEntity { } class GroupEntityBuilder implements Builder { - _$GroupEntity _$v; + _$GroupEntity? _$v; - String _name; - String get name => _$this._name; - set name(String name) => _$this._name = name; + String? _name; + String? get name => _$this._name; + set name(String? name) => _$this._name = name; - SettingsEntityBuilder _settings; + SettingsEntityBuilder? _settings; SettingsEntityBuilder get settings => _$this._settings ??= new SettingsEntityBuilder(); - set settings(SettingsEntityBuilder settings) => _$this._settings = settings; + set settings(SettingsEntityBuilder? settings) => _$this._settings = settings; - ListBuilder _documents; + ListBuilder? _documents; ListBuilder get documents => _$this._documents ??= new ListBuilder(); - set documents(ListBuilder documents) => + set documents(ListBuilder? documents) => _$this._documents = documents; - bool _isChanged; - bool get isChanged => _$this._isChanged; - set isChanged(bool isChanged) => _$this._isChanged = isChanged; + bool? _isChanged; + bool? get isChanged => _$this._isChanged; + set isChanged(bool? isChanged) => _$this._isChanged = isChanged; - int _createdAt; - int get createdAt => _$this._createdAt; - set createdAt(int createdAt) => _$this._createdAt = createdAt; + int? _createdAt; + int? get createdAt => _$this._createdAt; + set createdAt(int? createdAt) => _$this._createdAt = createdAt; - int _updatedAt; - int get updatedAt => _$this._updatedAt; - set updatedAt(int updatedAt) => _$this._updatedAt = updatedAt; + int? _updatedAt; + int? get updatedAt => _$this._updatedAt; + set updatedAt(int? updatedAt) => _$this._updatedAt = updatedAt; - int _archivedAt; - int get archivedAt => _$this._archivedAt; - set archivedAt(int archivedAt) => _$this._archivedAt = archivedAt; + int? _archivedAt; + int? get archivedAt => _$this._archivedAt; + set archivedAt(int? archivedAt) => _$this._archivedAt = archivedAt; - bool _isDeleted; - bool get isDeleted => _$this._isDeleted; - set isDeleted(bool isDeleted) => _$this._isDeleted = isDeleted; + bool? _isDeleted; + bool? get isDeleted => _$this._isDeleted; + set isDeleted(bool? isDeleted) => _$this._isDeleted = isDeleted; - String _createdUserId; - String get createdUserId => _$this._createdUserId; - set createdUserId(String createdUserId) => + String? _createdUserId; + String? get createdUserId => _$this._createdUserId; + set createdUserId(String? createdUserId) => _$this._createdUserId = createdUserId; - String _assignedUserId; - String get assignedUserId => _$this._assignedUserId; - set assignedUserId(String assignedUserId) => + String? _assignedUserId; + String? get assignedUserId => _$this._assignedUserId; + set assignedUserId(String? assignedUserId) => _$this._assignedUserId = assignedUserId; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; GroupEntityBuilder() { GroupEntity._initializeBuilder(this); @@ -618,7 +619,7 @@ class GroupEntityBuilder implements Builder { } @override - void update(void Function(GroupEntityBuilder) updates) { + void update(void Function(GroupEntityBuilder)? updates) { if (updates != null) updates(this); } @@ -647,7 +648,7 @@ class GroupEntityBuilder implements Builder { id: BuiltValueNullFieldError.checkNotNull( id, r'GroupEntity', 'id')); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'settings'; settings.build(); diff --git a/lib/data/models/health_check_model.dart b/lib/data/models/health_check_model.dart index ec068d7d9..92e6a5c9f 100644 --- a/lib/data/models/health_check_model.dart +++ b/lib/data/models/health_check_model.dart @@ -7,7 +7,23 @@ part 'health_check_model.g.dart'; abstract class HealthCheckResponse implements Built { factory HealthCheckResponse() { - return _$HealthCheckResponse._(); + return _$HealthCheckResponse._( + cacheEnabled: false, + dbCheck: false, + emailDriver: '', + envWritable: false, + exchangeRateApiNotConfigured: false, + execEnabled: false, + filePermissions: '', + openBasedir: false, + pdfEngine: '', + pendingJobs: 0, + phantomEnabled: false, + phpVersion: HealthCheckPHPResponse(), + queue: '', + systemHealth: false, + trailingSlash: false, + ); } HealthCheckResponse._(); @@ -72,7 +88,13 @@ abstract class HealthCheckResponse abstract class HealthCheckPHPResponse implements Built { factory HealthCheckPHPResponse() { - return _$HealthCheckPHPResponse._(); + return _$HealthCheckPHPResponse._( + currentPHPCLIVersion: '', + currentPHPVersion: '', + isOkay: false, + memoryLimit: '', + minimumPHPVersion: '', + ); } HealthCheckPHPResponse._(); diff --git a/lib/data/models/health_check_model.g.dart b/lib/data/models/health_check_model.g.dart index d096326e5..484ff5e4c 100644 --- a/lib/data/models/health_check_model.g.dart +++ b/lib/data/models/health_check_model.g.dart @@ -22,10 +22,10 @@ class _$HealthCheckResponseSerializer final String wireName = 'HealthCheckResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, HealthCheckResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'system_health', serializers.serialize(object.systemHealth, specifiedType: const FullType(bool)), @@ -78,76 +78,76 @@ class _$HealthCheckResponseSerializer @override HealthCheckResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new HealthCheckResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'system_health': result.systemHealth = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'php_version': result.phpVersion.replace(serializers.deserialize(value, - specifiedType: const FullType(HealthCheckPHPResponse)) + specifiedType: const FullType(HealthCheckPHPResponse))! as HealthCheckPHPResponse); break; case 'env_writable': result.envWritable = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'simple_db_check': result.dbCheck = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'cache_enabled': result.cacheEnabled = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'phantom_enabled': result.phantomEnabled = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'open_basedir': result.openBasedir = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'file_permissions': result.filePermissions = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'exec': result.execEnabled = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'mail_mailer': result.emailDriver = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'jobs_pending': result.pendingJobs = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'pdf_engine': result.pdfEngine = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'trailing_slash': result.trailingSlash = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'exchange_rate_api_not_configured': result.exchangeRateApiNotConfigured = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'queue': result.queue = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -167,10 +167,10 @@ class _$HealthCheckPHPResponseSerializer final String wireName = 'HealthCheckPHPResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, HealthCheckPHPResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'minimum_php_version', serializers.serialize(object.minimumPHPVersion, specifiedType: const FullType(String)), @@ -192,35 +192,35 @@ class _$HealthCheckPHPResponseSerializer @override HealthCheckPHPResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new HealthCheckPHPResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'minimum_php_version': result.minimumPHPVersion = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'current_php_version': result.currentPHPVersion = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'current_php_cli_version': result.currentPHPCLIVersion = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'is_okay': result.isOkay = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'memory_limit': result.memoryLimit = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -262,25 +262,25 @@ class _$HealthCheckResponse extends HealthCheckResponse { final String queue; factory _$HealthCheckResponse( - [void Function(HealthCheckResponseBuilder) updates]) => + [void Function(HealthCheckResponseBuilder)? updates]) => (new HealthCheckResponseBuilder()..update(updates))._build(); _$HealthCheckResponse._( - {this.systemHealth, - this.phpVersion, - this.envWritable, - this.dbCheck, - this.cacheEnabled, - this.phantomEnabled, - this.openBasedir, - this.filePermissions, - this.execEnabled, - this.emailDriver, - this.pendingJobs, - this.pdfEngine, - this.trailingSlash, - this.exchangeRateApiNotConfigured, - this.queue}) + {required this.systemHealth, + required this.phpVersion, + required this.envWritable, + required this.dbCheck, + required this.cacheEnabled, + required this.phantomEnabled, + required this.openBasedir, + required this.filePermissions, + required this.execEnabled, + required this.emailDriver, + required this.pendingJobs, + required this.pdfEngine, + required this.trailingSlash, + required this.exchangeRateApiNotConfigured, + required this.queue}) : super._() { BuiltValueNullFieldError.checkNotNull( systemHealth, r'HealthCheckResponse', 'systemHealth'); @@ -344,10 +344,10 @@ class _$HealthCheckResponse extends HealthCheckResponse { queue == other.queue; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, systemHealth.hashCode); _$hash = $jc(_$hash, phpVersion.hashCode); @@ -392,73 +392,74 @@ class _$HealthCheckResponse extends HealthCheckResponse { class HealthCheckResponseBuilder implements Builder { - _$HealthCheckResponse _$v; + _$HealthCheckResponse? _$v; - bool _systemHealth; - bool get systemHealth => _$this._systemHealth; - set systemHealth(bool systemHealth) => _$this._systemHealth = systemHealth; + bool? _systemHealth; + bool? get systemHealth => _$this._systemHealth; + set systemHealth(bool? systemHealth) => _$this._systemHealth = systemHealth; - HealthCheckPHPResponseBuilder _phpVersion; + HealthCheckPHPResponseBuilder? _phpVersion; HealthCheckPHPResponseBuilder get phpVersion => _$this._phpVersion ??= new HealthCheckPHPResponseBuilder(); - set phpVersion(HealthCheckPHPResponseBuilder phpVersion) => + set phpVersion(HealthCheckPHPResponseBuilder? phpVersion) => _$this._phpVersion = phpVersion; - bool _envWritable; - bool get envWritable => _$this._envWritable; - set envWritable(bool envWritable) => _$this._envWritable = envWritable; + bool? _envWritable; + bool? get envWritable => _$this._envWritable; + set envWritable(bool? envWritable) => _$this._envWritable = envWritable; - bool _dbCheck; - bool get dbCheck => _$this._dbCheck; - set dbCheck(bool dbCheck) => _$this._dbCheck = dbCheck; + bool? _dbCheck; + bool? get dbCheck => _$this._dbCheck; + set dbCheck(bool? dbCheck) => _$this._dbCheck = dbCheck; - bool _cacheEnabled; - bool get cacheEnabled => _$this._cacheEnabled; - set cacheEnabled(bool cacheEnabled) => _$this._cacheEnabled = cacheEnabled; + bool? _cacheEnabled; + bool? get cacheEnabled => _$this._cacheEnabled; + set cacheEnabled(bool? cacheEnabled) => _$this._cacheEnabled = cacheEnabled; - bool _phantomEnabled; - bool get phantomEnabled => _$this._phantomEnabled; - set phantomEnabled(bool phantomEnabled) => + bool? _phantomEnabled; + bool? get phantomEnabled => _$this._phantomEnabled; + set phantomEnabled(bool? phantomEnabled) => _$this._phantomEnabled = phantomEnabled; - bool _openBasedir; - bool get openBasedir => _$this._openBasedir; - set openBasedir(bool openBasedir) => _$this._openBasedir = openBasedir; + bool? _openBasedir; + bool? get openBasedir => _$this._openBasedir; + set openBasedir(bool? openBasedir) => _$this._openBasedir = openBasedir; - String _filePermissions; - String get filePermissions => _$this._filePermissions; - set filePermissions(String filePermissions) => + String? _filePermissions; + String? get filePermissions => _$this._filePermissions; + set filePermissions(String? filePermissions) => _$this._filePermissions = filePermissions; - bool _execEnabled; - bool get execEnabled => _$this._execEnabled; - set execEnabled(bool execEnabled) => _$this._execEnabled = execEnabled; + bool? _execEnabled; + bool? get execEnabled => _$this._execEnabled; + set execEnabled(bool? execEnabled) => _$this._execEnabled = execEnabled; - String _emailDriver; - String get emailDriver => _$this._emailDriver; - set emailDriver(String emailDriver) => _$this._emailDriver = emailDriver; + String? _emailDriver; + String? get emailDriver => _$this._emailDriver; + set emailDriver(String? emailDriver) => _$this._emailDriver = emailDriver; - int _pendingJobs; - int get pendingJobs => _$this._pendingJobs; - set pendingJobs(int pendingJobs) => _$this._pendingJobs = pendingJobs; + int? _pendingJobs; + int? get pendingJobs => _$this._pendingJobs; + set pendingJobs(int? pendingJobs) => _$this._pendingJobs = pendingJobs; - String _pdfEngine; - String get pdfEngine => _$this._pdfEngine; - set pdfEngine(String pdfEngine) => _$this._pdfEngine = pdfEngine; + String? _pdfEngine; + String? get pdfEngine => _$this._pdfEngine; + set pdfEngine(String? pdfEngine) => _$this._pdfEngine = pdfEngine; - bool _trailingSlash; - bool get trailingSlash => _$this._trailingSlash; - set trailingSlash(bool trailingSlash) => + bool? _trailingSlash; + bool? get trailingSlash => _$this._trailingSlash; + set trailingSlash(bool? trailingSlash) => _$this._trailingSlash = trailingSlash; - bool _exchangeRateApiNotConfigured; - bool get exchangeRateApiNotConfigured => _$this._exchangeRateApiNotConfigured; - set exchangeRateApiNotConfigured(bool exchangeRateApiNotConfigured) => + bool? _exchangeRateApiNotConfigured; + bool? get exchangeRateApiNotConfigured => + _$this._exchangeRateApiNotConfigured; + set exchangeRateApiNotConfigured(bool? exchangeRateApiNotConfigured) => _$this._exchangeRateApiNotConfigured = exchangeRateApiNotConfigured; - String _queue; - String get queue => _$this._queue; - set queue(String queue) => _$this._queue = queue; + String? _queue; + String? get queue => _$this._queue; + set queue(String? queue) => _$this._queue = queue; HealthCheckResponseBuilder() { HealthCheckResponse._initializeBuilder(this); @@ -494,7 +495,7 @@ class HealthCheckResponseBuilder } @override - void update(void Function(HealthCheckResponseBuilder) updates) { + void update(void Function(HealthCheckResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -530,7 +531,7 @@ class HealthCheckResponseBuilder exchangeRateApiNotConfigured: BuiltValueNullFieldError.checkNotNull(exchangeRateApiNotConfigured, r'HealthCheckResponse', 'exchangeRateApiNotConfigured'), queue: BuiltValueNullFieldError.checkNotNull(queue, r'HealthCheckResponse', 'queue')); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'phpVersion'; phpVersion.build(); @@ -558,15 +559,15 @@ class _$HealthCheckPHPResponse extends HealthCheckPHPResponse { final String memoryLimit; factory _$HealthCheckPHPResponse( - [void Function(HealthCheckPHPResponseBuilder) updates]) => + [void Function(HealthCheckPHPResponseBuilder)? updates]) => (new HealthCheckPHPResponseBuilder()..update(updates))._build(); _$HealthCheckPHPResponse._( - {this.minimumPHPVersion, - this.currentPHPVersion, - this.currentPHPCLIVersion, - this.isOkay, - this.memoryLimit}) + {required this.minimumPHPVersion, + required this.currentPHPVersion, + required this.currentPHPCLIVersion, + required this.isOkay, + required this.memoryLimit}) : super._() { BuiltValueNullFieldError.checkNotNull( minimumPHPVersion, r'HealthCheckPHPResponse', 'minimumPHPVersion'); @@ -600,10 +601,10 @@ class _$HealthCheckPHPResponse extends HealthCheckPHPResponse { memoryLimit == other.memoryLimit; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, minimumPHPVersion.hashCode); _$hash = $jc(_$hash, currentPHPVersion.hashCode); @@ -628,30 +629,30 @@ class _$HealthCheckPHPResponse extends HealthCheckPHPResponse { class HealthCheckPHPResponseBuilder implements Builder { - _$HealthCheckPHPResponse _$v; + _$HealthCheckPHPResponse? _$v; - String _minimumPHPVersion; - String get minimumPHPVersion => _$this._minimumPHPVersion; - set minimumPHPVersion(String minimumPHPVersion) => + String? _minimumPHPVersion; + String? get minimumPHPVersion => _$this._minimumPHPVersion; + set minimumPHPVersion(String? minimumPHPVersion) => _$this._minimumPHPVersion = minimumPHPVersion; - String _currentPHPVersion; - String get currentPHPVersion => _$this._currentPHPVersion; - set currentPHPVersion(String currentPHPVersion) => + String? _currentPHPVersion; + String? get currentPHPVersion => _$this._currentPHPVersion; + set currentPHPVersion(String? currentPHPVersion) => _$this._currentPHPVersion = currentPHPVersion; - String _currentPHPCLIVersion; - String get currentPHPCLIVersion => _$this._currentPHPCLIVersion; - set currentPHPCLIVersion(String currentPHPCLIVersion) => + String? _currentPHPCLIVersion; + String? get currentPHPCLIVersion => _$this._currentPHPCLIVersion; + set currentPHPCLIVersion(String? currentPHPCLIVersion) => _$this._currentPHPCLIVersion = currentPHPCLIVersion; - bool _isOkay; - bool get isOkay => _$this._isOkay; - set isOkay(bool isOkay) => _$this._isOkay = isOkay; + bool? _isOkay; + bool? get isOkay => _$this._isOkay; + set isOkay(bool? isOkay) => _$this._isOkay = isOkay; - String _memoryLimit; - String get memoryLimit => _$this._memoryLimit; - set memoryLimit(String memoryLimit) => _$this._memoryLimit = memoryLimit; + String? _memoryLimit; + String? get memoryLimit => _$this._memoryLimit; + set memoryLimit(String? memoryLimit) => _$this._memoryLimit = memoryLimit; HealthCheckPHPResponseBuilder() { HealthCheckPHPResponse._initializeBuilder(this); @@ -677,7 +678,7 @@ class HealthCheckPHPResponseBuilder } @override - void update(void Function(HealthCheckPHPResponseBuilder) updates) { + void update(void Function(HealthCheckPHPResponseBuilder)? updates) { if (updates != null) updates(this); } diff --git a/lib/data/models/import_model.dart b/lib/data/models/import_model.dart index 1c6d0ddcd..f87edc565 100644 --- a/lib/data/models/import_model.dart +++ b/lib/data/models/import_model.dart @@ -1,6 +1,3 @@ -// Flutter imports: -import 'package:flutter/foundation.dart'; - // Package imports: import 'package:built_collection/built_collection.dart'; import 'package:built_value/built_value.dart'; @@ -14,7 +11,10 @@ part 'import_model.g.dart'; abstract class PreImportResponse implements Built { factory PreImportResponse() { - return _$PreImportResponse._(); + return _$PreImportResponse._( + hash: '', + mappings: BuiltMap(), + ); } PreImportResponse._(); @@ -36,7 +36,10 @@ abstract class PreImportResponseEntityDetails Built { factory PreImportResponseEntityDetails() { - return _$PreImportResponseEntityDetails._(); + return _$PreImportResponseEntityDetails._( + available: BuiltList(), + headers: BuiltList>(), + ); } PreImportResponseEntityDetails._(); @@ -61,11 +64,11 @@ abstract class PreImportResponseEntityDetails abstract class ImportRequest implements Built { factory ImportRequest({ - @required String hash, - @required String importType, - @required bool skipHeader, - @required String bankAccountId, - @required BuiltMap columnMap, + required String hash, + required String importType, + required bool skipHeader, + required String bankAccountId, + required BuiltMap columnMap, }) { return _$ImportRequest._( hash: hash, diff --git a/lib/data/models/import_model.g.dart b/lib/data/models/import_model.g.dart index 4794e477b..3e9c79afa 100644 --- a/lib/data/models/import_model.g.dart +++ b/lib/data/models/import_model.g.dart @@ -139,9 +139,9 @@ class _$PreImportResponseSerializer final String wireName = 'PreImportResponse'; @override - Iterable serialize(Serializers serializers, PreImportResponse object, + Iterable serialize(Serializers serializers, PreImportResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'hash', serializers.serialize(object.hash, specifiedType: const FullType(String)), 'mappings', @@ -157,26 +157,26 @@ class _$PreImportResponseSerializer @override PreImportResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new PreImportResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'hash': result.hash = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'mappings': result.mappings.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ const FullType(String), const FullType(PreImportResponseEntityDetails) - ]))); + ]))!); break; } } @@ -196,10 +196,10 @@ class _$PreImportResponseEntityDetailsSerializer final String wireName = 'PreImportResponseEntityDetails'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, PreImportResponseEntityDetails object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'available', serializers.serialize(object.available, specifiedType: @@ -216,27 +216,27 @@ class _$PreImportResponseEntityDetailsSerializer @override PreImportResponseEntityDetails deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new PreImportResponseEntityDetailsBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'available': result.available.replace(serializers.deserialize(value, - specifiedType: - const FullType(BuiltList, const [const FullType(String)])) - as BuiltList); + specifiedType: const FullType( + BuiltList, const [const FullType(String)]))! + as BuiltList); break; case 'headers': result.headers.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltList, const [ const FullType(BuiltList, const [const FullType(String)]) - ])) as BuiltList); + ]))! as BuiltList); break; } } @@ -252,9 +252,9 @@ class _$ImportRequestSerializer implements StructuredSerializer { final String wireName = 'ImportRequest'; @override - Iterable serialize(Serializers serializers, ImportRequest object, + Iterable serialize(Serializers serializers, ImportRequest object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'hash', serializers.serialize(object.hash, specifiedType: const FullType(String)), 'import_type', @@ -279,38 +279,38 @@ class _$ImportRequestSerializer implements StructuredSerializer { @override ImportRequest deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ImportRequestBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'hash': result.hash = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'import_type': result.importType = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'bank_integration_id': result.bankAccountId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'skip_header': result.skipHeader = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'column_map': result.columnMap.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ const FullType(String), const FullType(ImportRequestMapping) - ]))); + ]))!); break; } } @@ -330,10 +330,10 @@ class _$ImportRequestMappingSerializer final String wireName = 'ImportRequestMapping'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, ImportRequestMapping object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'mapping', serializers.serialize(object.mapping, specifiedType: const FullType( @@ -345,20 +345,20 @@ class _$ImportRequestMappingSerializer @override ImportRequestMapping deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ImportRequestMappingBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'mapping': result.mapping.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, - const [const FullType(int), const FullType(String)]))); + const [const FullType(int), const FullType(String)]))!); break; } } @@ -408,10 +408,11 @@ class _$PreImportResponse extends PreImportResponse { final BuiltMap mappings; factory _$PreImportResponse( - [void Function(PreImportResponseBuilder) updates]) => + [void Function(PreImportResponseBuilder)? updates]) => (new PreImportResponseBuilder()..update(updates))._build(); - _$PreImportResponse._({this.hash, this.mappings}) : super._() { + _$PreImportResponse._({required this.hash, required this.mappings}) + : super._() { BuiltValueNullFieldError.checkNotNull(hash, r'PreImportResponse', 'hash'); BuiltValueNullFieldError.checkNotNull( mappings, r'PreImportResponse', 'mappings'); @@ -433,10 +434,10 @@ class _$PreImportResponse extends PreImportResponse { mappings == other.mappings; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, hash.hashCode); _$hash = $jc(_$hash, mappings.hashCode); @@ -455,17 +456,17 @@ class _$PreImportResponse extends PreImportResponse { class PreImportResponseBuilder implements Builder { - _$PreImportResponse _$v; + _$PreImportResponse? _$v; - String _hash; - String get hash => _$this._hash; - set hash(String hash) => _$this._hash = hash; + String? _hash; + String? get hash => _$this._hash; + set hash(String? hash) => _$this._hash = hash; - MapBuilder _mappings; + MapBuilder? _mappings; MapBuilder get mappings => _$this._mappings ??= new MapBuilder(); - set mappings(MapBuilder mappings) => + set mappings(MapBuilder? mappings) => _$this._mappings = mappings; PreImportResponseBuilder(); @@ -487,7 +488,7 @@ class PreImportResponseBuilder } @override - void update(void Function(PreImportResponseBuilder) updates) { + void update(void Function(PreImportResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -503,7 +504,7 @@ class PreImportResponseBuilder hash, r'PreImportResponse', 'hash'), mappings: mappings.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'mappings'; mappings.build(); @@ -525,10 +526,11 @@ class _$PreImportResponseEntityDetails extends PreImportResponseEntityDetails { final BuiltList> headers; factory _$PreImportResponseEntityDetails( - [void Function(PreImportResponseEntityDetailsBuilder) updates]) => + [void Function(PreImportResponseEntityDetailsBuilder)? updates]) => (new PreImportResponseEntityDetailsBuilder()..update(updates))._build(); - _$PreImportResponseEntityDetails._({this.available, this.headers}) + _$PreImportResponseEntityDetails._( + {required this.available, required this.headers}) : super._() { BuiltValueNullFieldError.checkNotNull( available, r'PreImportResponseEntityDetails', 'available'); @@ -553,10 +555,10 @@ class _$PreImportResponseEntityDetails extends PreImportResponseEntityDetails { headers == other.headers; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, available.hashCode); _$hash = $jc(_$hash, headers.hashCode); @@ -577,17 +579,18 @@ class PreImportResponseEntityDetailsBuilder implements Builder { - _$PreImportResponseEntityDetails _$v; + _$PreImportResponseEntityDetails? _$v; - ListBuilder _available; + ListBuilder? _available; ListBuilder get available => _$this._available ??= new ListBuilder(); - set available(ListBuilder available) => _$this._available = available; + set available(ListBuilder? available) => + _$this._available = available; - ListBuilder> _headers; + ListBuilder>? _headers; ListBuilder> get headers => _$this._headers ??= new ListBuilder>(); - set headers(ListBuilder> headers) => + set headers(ListBuilder>? headers) => _$this._headers = headers; PreImportResponseEntityDetailsBuilder(); @@ -609,7 +612,7 @@ class PreImportResponseEntityDetailsBuilder } @override - void update(void Function(PreImportResponseEntityDetailsBuilder) updates) { + void update(void Function(PreImportResponseEntityDetailsBuilder)? updates) { if (updates != null) updates(this); } @@ -623,7 +626,7 @@ class PreImportResponseEntityDetailsBuilder new _$PreImportResponseEntityDetails._( available: available.build(), headers: headers.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'available'; available.build(); @@ -652,15 +655,15 @@ class _$ImportRequest extends ImportRequest { @override final BuiltMap columnMap; - factory _$ImportRequest([void Function(ImportRequestBuilder) updates]) => + factory _$ImportRequest([void Function(ImportRequestBuilder)? updates]) => (new ImportRequestBuilder()..update(updates))._build(); _$ImportRequest._( - {this.hash, - this.importType, - this.bankAccountId, - this.skipHeader, - this.columnMap}) + {required this.hash, + required this.importType, + required this.bankAccountId, + required this.skipHeader, + required this.columnMap}) : super._() { BuiltValueNullFieldError.checkNotNull(hash, r'ImportRequest', 'hash'); BuiltValueNullFieldError.checkNotNull( @@ -691,10 +694,10 @@ class _$ImportRequest extends ImportRequest { columnMap == other.columnMap; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, hash.hashCode); _$hash = $jc(_$hash, importType.hashCode); @@ -719,29 +722,29 @@ class _$ImportRequest extends ImportRequest { class ImportRequestBuilder implements Builder { - _$ImportRequest _$v; + _$ImportRequest? _$v; - String _hash; - String get hash => _$this._hash; - set hash(String hash) => _$this._hash = hash; + String? _hash; + String? get hash => _$this._hash; + set hash(String? hash) => _$this._hash = hash; - String _importType; - String get importType => _$this._importType; - set importType(String importType) => _$this._importType = importType; + String? _importType; + String? get importType => _$this._importType; + set importType(String? importType) => _$this._importType = importType; - String _bankAccountId; - String get bankAccountId => _$this._bankAccountId; - set bankAccountId(String bankAccountId) => + String? _bankAccountId; + String? get bankAccountId => _$this._bankAccountId; + set bankAccountId(String? bankAccountId) => _$this._bankAccountId = bankAccountId; - bool _skipHeader; - bool get skipHeader => _$this._skipHeader; - set skipHeader(bool skipHeader) => _$this._skipHeader = skipHeader; + bool? _skipHeader; + bool? get skipHeader => _$this._skipHeader; + set skipHeader(bool? skipHeader) => _$this._skipHeader = skipHeader; - MapBuilder _columnMap; + MapBuilder? _columnMap; MapBuilder get columnMap => _$this._columnMap ??= new MapBuilder(); - set columnMap(MapBuilder columnMap) => + set columnMap(MapBuilder? columnMap) => _$this._columnMap = columnMap; ImportRequestBuilder(); @@ -766,7 +769,7 @@ class ImportRequestBuilder } @override - void update(void Function(ImportRequestBuilder) updates) { + void update(void Function(ImportRequestBuilder)? updates) { if (updates != null) updates(this); } @@ -788,7 +791,7 @@ class ImportRequestBuilder skipHeader, r'ImportRequest', 'skipHeader'), columnMap: columnMap.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'columnMap'; columnMap.build(); @@ -808,10 +811,10 @@ class _$ImportRequestMapping extends ImportRequestMapping { final BuiltMap mapping; factory _$ImportRequestMapping( - [void Function(ImportRequestMappingBuilder) updates]) => + [void Function(ImportRequestMappingBuilder)? updates]) => (new ImportRequestMappingBuilder()..update(updates))._build(); - _$ImportRequestMapping._({this.mapping}) : super._() { + _$ImportRequestMapping._({required this.mapping}) : super._() { BuiltValueNullFieldError.checkNotNull( mapping, r'ImportRequestMapping', 'mapping'); } @@ -831,10 +834,10 @@ class _$ImportRequestMapping extends ImportRequestMapping { return other is ImportRequestMapping && mapping == other.mapping; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, mapping.hashCode); _$hash = $jf(_$hash); @@ -851,12 +854,12 @@ class _$ImportRequestMapping extends ImportRequestMapping { class ImportRequestMappingBuilder implements Builder { - _$ImportRequestMapping _$v; + _$ImportRequestMapping? _$v; - MapBuilder _mapping; + MapBuilder? _mapping; MapBuilder get mapping => _$this._mapping ??= new MapBuilder(); - set mapping(MapBuilder mapping) => _$this._mapping = mapping; + set mapping(MapBuilder? mapping) => _$this._mapping = mapping; ImportRequestMappingBuilder(); @@ -876,7 +879,7 @@ class ImportRequestMappingBuilder } @override - void update(void Function(ImportRequestMappingBuilder) updates) { + void update(void Function(ImportRequestMappingBuilder)? updates) { if (updates != null) updates(this); } @@ -888,7 +891,7 @@ class ImportRequestMappingBuilder try { _$result = _$v ?? new _$ImportRequestMapping._(mapping: mapping.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'mapping'; mapping.build(); diff --git a/lib/data/models/invoice_model.dart b/lib/data/models/invoice_model.dart index 698f36c48..5fc93aaee 100644 --- a/lib/data/models/invoice_model.dart +++ b/lib/data/models/invoice_model.dart @@ -135,12 +135,12 @@ abstract class InvoiceEntity extends Object BelongsToVendor implements Built { factory InvoiceEntity({ - String id, - AppState state, - ClientEntity client, - VendorEntity vendor, - UserEntity user, - EntityType entityType, + String? id, + AppState? state, + ClientEntity? client, + VendorEntity? vendor, + UserEntity? user, + EntityType? entityType, }) { final company = state?.company; final settings = getClientSettings(state, client); @@ -148,9 +148,9 @@ abstract class InvoiceEntity extends Object double exchangeRate = 1; if ((client?.currencyId ?? '').isNotEmpty) { exchangeRate = getExchangeRate( - state.staticState.currencyMap, - fromCurrencyId: state.company.currencyId, - toCurrencyId: client.currencyId, + state!.staticState.currencyMap, + fromCurrencyId: state.company!.currencyId, + toCurrencyId: client!.currencyId, ); } return _$InvoiceEntity._( @@ -223,12 +223,12 @@ abstract class InvoiceEntity extends Object activities: BuiltList(), invitations: client != null ? BuiltList(client.emailContacts - .map((contact) => InvitationEntity(clientContactId: contact.id)) + .map((contact) => InvitationEntity(clientContactId: contact!.id)) .toList()) : vendor != null ? BuiltList(vendor.emailContacts .map((contact) => - InvitationEntity(vendorContactId: contact.id)) + InvitationEntity(vendorContactId: contact!.id)) .toList()) : BuiltList([InvitationEntity()]), updatedAt: 0, @@ -261,19 +261,18 @@ abstract class InvoiceEntity extends Object @memoized int get hashCode; - @nullable @BuiltValueField(wireName: 'idempotency_key') - String get idempotencyKey; + String? get idempotencyKey; - InvoiceEntity moveLineItem(int oldIndex, int newIndex) { + InvoiceEntity moveLineItem(int oldIndex, int? newIndex) { final lineItem = lineItems[oldIndex]; InvoiceEntity invoice = rebuild((b) => b..lineItems.removeAt(oldIndex)); invoice = invoice.rebuild((b) => b - ..lineItems.replace([ + ..lineItems.replace([ ...invoice.lineItems.sublist(0, newIndex), lineItem, ...invoice.lineItems.sublist( - newIndex, + newIndex!, invoice.lineItems.length, ) ]) @@ -283,15 +282,15 @@ abstract class InvoiceEntity extends Object InvoiceEntity recreateInvitations(AppState state) { if (entityType == EntityType.purchaseOrder) { - final vendor = state.vendorState.get(vendorId); - final invitations = vendor.contacts - .map((contact) => InvitationEntity(vendorContactId: contact.id)) + final vendor = state.vendorState.get(vendorId)!; + final BuiltList invitations = vendor.contacts + .map((contact) => InvitationEntity(vendorContactId: contact!.id)) .toBuiltList(); return rebuild((b) => b..invitations.replace(invitations)); } else { - final client = state.clientState.get(clientId); - final invitations = client.contacts - .map((contact) => InvitationEntity(clientContactId: contact.id)) + final client = state.clientState.get(clientId)!; + final BuiltList invitations = client.contacts + .map((contact) => InvitationEntity(clientContactId: contact!.id)) .toBuiltList(); return rebuild((b) => b..invitations.replace(invitations)); } @@ -319,8 +318,8 @@ abstract class InvoiceEntity extends Object ..documents.clear() ..lineItems.replace(lineItems .where((lineItem) => - lineItem.typeId != InvoiceItemEntity.TYPE_UNPAID_FEE) - .map((lineItem) => lineItem + lineItem!.typeId != InvoiceItemEntity.TYPE_UNPAID_FEE) + .map((lineItem) => lineItem! .rebuild((b) => b..typeId = InvoiceItemEntity.TYPE_STANDARD)) .toList()) ..invitations.replace( @@ -338,33 +337,33 @@ abstract class InvoiceEntity extends Object client ??= ClientEntity(); final exchangeRate = getExchangeRate(state.staticState.currencyMap, - fromCurrencyId: state.company.currencyId, + fromCurrencyId: state.company!.currencyId, toCurrencyId: client.currencyId); final settings = getClientSettings(state, client); return rebuild((b) => b ..exchangeRate = exchangeRate - ..taxName1 = state.company.numberOfInvoiceTaxRates >= 1 && + ..taxName1 = state.company!.numberOfInvoiceTaxRates >= 1 && (settings.defaultTaxName1 ?? '').isNotEmpty ? settings.defaultTaxName1 : taxName1 - ..taxRate1 = state.company.numberOfInvoiceTaxRates >= 1 && + ..taxRate1 = state.company!.numberOfInvoiceTaxRates >= 1 && (settings.defaultTaxName1 ?? '').isNotEmpty ? settings.defaultTaxRate1 : taxRate1 - ..taxName2 = state.company.numberOfInvoiceTaxRates >= 2 && + ..taxName2 = state.company!.numberOfInvoiceTaxRates >= 2 && (settings.defaultTaxName2 ?? '').isNotEmpty ? settings.defaultTaxName2 : taxName2 - ..taxRate2 = state.company.numberOfInvoiceTaxRates >= 2 && + ..taxRate2 = state.company!.numberOfInvoiceTaxRates >= 2 && (settings.defaultTaxName2 ?? '').isNotEmpty ? settings.defaultTaxRate2 : taxRate2 - ..taxName3 = state.company.numberOfInvoiceTaxRates >= 3 && + ..taxName3 = state.company!.numberOfInvoiceTaxRates >= 3 && (settings.defaultTaxName3 ?? '').isNotEmpty ? settings.defaultTaxName3 : taxName3 - ..taxRate3 = state.company.numberOfInvoiceTaxRates >= 3 && + ..taxRate3 = state.company!.numberOfInvoiceTaxRates >= 3 && (settings.defaultTaxName3 ?? '').isNotEmpty ? settings.defaultTaxRate3 : taxRate3); @@ -374,34 +373,34 @@ abstract class InvoiceEntity extends Object vendor ??= VendorEntity(); final exchangeRate = getExchangeRate(state.staticState.currencyMap, - fromCurrencyId: state.company.currencyId, + fromCurrencyId: state.company!.currencyId, toCurrencyId: vendor.currencyId); - final settings = state.company.settings; + final settings = state.company!.settings; return rebuild((b) => b ..exchangeRate = exchangeRate - ..taxName1 = state.company.numberOfInvoiceTaxRates >= 1 && + ..taxName1 = state.company!.numberOfInvoiceTaxRates >= 1 && (settings.defaultTaxName1 ?? '').isNotEmpty ? settings.defaultTaxName1 : taxName1 - ..taxRate1 = state.company.numberOfInvoiceTaxRates >= 1 && + ..taxRate1 = state.company!.numberOfInvoiceTaxRates >= 1 && (settings.defaultTaxName1 ?? '').isNotEmpty ? settings.defaultTaxRate1 : taxRate1 - ..taxName2 = state.company.numberOfInvoiceTaxRates >= 2 && + ..taxName2 = state.company!.numberOfInvoiceTaxRates >= 2 && (settings.defaultTaxName2 ?? '').isNotEmpty ? settings.defaultTaxName2 : taxName2 - ..taxRate2 = state.company.numberOfInvoiceTaxRates >= 2 && + ..taxRate2 = state.company!.numberOfInvoiceTaxRates >= 2 && (settings.defaultTaxName2 ?? '').isNotEmpty ? settings.defaultTaxRate2 : taxRate2 - ..taxName3 = state.company.numberOfInvoiceTaxRates >= 3 && + ..taxName3 = state.company!.numberOfInvoiceTaxRates >= 3 && (settings.defaultTaxName3 ?? '').isNotEmpty ? settings.defaultTaxName3 : taxName3 - ..taxRate3 = state.company.numberOfInvoiceTaxRates >= 3 && + ..taxRate3 = state.company!.numberOfInvoiceTaxRates >= 3 && (settings.defaultTaxName3 ?? '').isNotEmpty ? settings.defaultTaxRate3 : taxRate3); @@ -505,9 +504,8 @@ abstract class InvoiceEntity extends Object @BuiltValueField(wireName: 'partial_due_date') String get partialDueDate; - @nullable @BuiltValueField(wireName: 'auto_bill') - String get autoBill; + String? get autoBill; @BuiltValueField(wireName: 'custom_value1') String get customValue1; @@ -556,25 +554,20 @@ abstract class InvoiceEntity extends Object @BuiltValueField(wireName: 'exchange_rate') double get exchangeRate; - @nullable @BuiltValueField(wireName: 'reminder1_sent') - String get reminder1Sent; + String? get reminder1Sent; - @nullable @BuiltValueField(wireName: 'reminder2_sent') - String get reminder2Sent; + String? get reminder2Sent; - @nullable @BuiltValueField(wireName: 'reminder3_sent') - String get reminder3Sent; + String? get reminder3Sent; - @nullable @BuiltValueField(wireName: 'reminder_last_sent') - String get reminderLastSent; + String? get reminderLastSent; - @nullable @BuiltValueField(wireName: 'frequency_id') - String get frequencyId; + String? get frequencyId; @BuiltValueField(wireName: 'last_sent_date') String get lastSentDate; @@ -585,35 +578,29 @@ abstract class InvoiceEntity extends Object @BuiltValueField(wireName: 'next_send_datetime') String get nextSendDatetime; - @nullable @BuiltValueField(wireName: 'remaining_cycles') - int get remainingCycles; + int? get remainingCycles; - @nullable @BuiltValueField(wireName: 'due_date_days') - String get dueDateDays; + String? get dueDateDays; - @nullable @BuiltValueField(wireName: 'invoice_id') - String get invoiceId; + String? get invoiceId; - @nullable @BuiltValueField(wireName: 'recurring_id') - String get recurringId; + String? get recurringId; @BuiltValueField(wireName: 'auto_bill_enabled') bool get autoBillEnabled; - @nullable - String get filename; + String? get filename; - @nullable @BuiltValueField(wireName: 'recurring_dates') - BuiltList get recurringDates; + BuiltList? get recurringDates; @override @BuiltValueField(wireName: 'line_items') - BuiltList get lineItems; + BuiltList get lineItems; BuiltList get invitations; @@ -675,38 +662,37 @@ abstract class InvoiceEntity extends Object return balanceOrAmount - (taxAmount * balanceOrAmount / amount); } - @nullable @BuiltValueField(compare: false) - int get loadedAt; + int? get loadedAt; - List get history => activities + List get history => activities .where((activity) => activity.history != null && - (activity.history.id ?? '').isNotEmpty && - activity.history.createdAt > 0) + (activity.history!.id ?? '').isNotEmpty && + activity.history!.createdAt > 0) .map((activity) => activity.history) .toList(); - bool get isLoaded => loadedAt != null && loadedAt > 0; + bool get isLoaded => loadedAt != null && loadedAt! > 0; bool get isStale { if (!isLoaded) { return true; } - return DateTime.now().millisecondsSinceEpoch - loadedAt > + return DateTime.now().millisecondsSinceEpoch - loadedAt! > kMillisecondsToRefreshActivities; } - bool get hasTasks => lineItems.any((item) => item.isTask); + bool get hasTasks => lineItems.any((item) => item!.isTask); - bool get hasProducts => lineItems.any((item) => !item.isTask); + bool get hasProducts => lineItems.any((item) => !item!.isTask); - bool get hasExpenses => lineItems.any((item) => item.isExpense); + bool get hasExpenses => lineItems.any((item) => item!.isExpense); @override bool get isEditable { - if (isDeleted) { + if (isDeleted!) { return false; } @@ -740,17 +726,17 @@ abstract class InvoiceEntity extends Object //String get custom_messages; int compareTo({ - InvoiceEntity invoice, - String sortField, - bool sortAscending, - BuiltMap clientMap, - BuiltMap vendorMap, - BuiltMap userMap, - String recurringPrefix = '', + InvoiceEntity? invoice, + String? sortField, + required bool sortAscending, + required BuiltMap clientMap, + required BuiltMap vendorMap, + BuiltMap? userMap, + String? recurringPrefix = '', }) { int response = 0; - final InvoiceEntity invoiceA = sortAscending ? this : invoice; - final InvoiceEntity invoiceB = sortAscending ? invoice : this; + final InvoiceEntity invoiceA = sortAscending ? this : invoice!; + final InvoiceEntity invoiceB = sortAscending ? invoice! : this; final clientA = clientMap[invoiceA.clientId] ?? ClientEntity(); final clientB = clientMap[invoiceB.clientId] ?? ClientEntity(); final vendorA = vendorMap[invoiceA.vendorId] ?? VendorEntity(); @@ -762,11 +748,11 @@ abstract class InvoiceEntity extends Object var invoiceBNumber = (invoiceB.number ?? '').isEmpty ? 'ZZZZZZZZZZ' : invoiceB.number; invoiceANumber = (recurringPrefix ?? '').isNotEmpty && - invoiceANumber.startsWith(recurringPrefix) + invoiceANumber.startsWith(recurringPrefix!) ? invoiceANumber.replaceFirst(recurringPrefix, '') : invoiceANumber; invoiceBNumber = (recurringPrefix ?? '').isNotEmpty && - invoiceBNumber.startsWith(recurringPrefix) + invoiceBNumber.startsWith(recurringPrefix!) ? invoiceBNumber.replaceFirst(recurringPrefix, '') : invoiceBNumber; response = compareNatural( @@ -791,17 +777,17 @@ abstract class InvoiceEntity extends Object response = invoiceA.lastSentDate.compareTo(invoiceB.lastSentDate); break; case InvoiceFields.reminder1Sent: - response = invoiceA.reminder1Sent.compareTo(invoiceB.reminder1Sent); + response = invoiceA.reminder1Sent!.compareTo(invoiceB.reminder1Sent!); break; case InvoiceFields.reminder2Sent: - response = invoiceA.reminder2Sent.compareTo(invoiceB.reminder2Sent); + response = invoiceA.reminder2Sent!.compareTo(invoiceB.reminder2Sent!); break; case InvoiceFields.reminder3Sent: - response = invoiceA.reminder3Sent.compareTo(invoiceB.reminder3Sent); + response = invoiceA.reminder3Sent!.compareTo(invoiceB.reminder3Sent!); break; case InvoiceFields.reminderLastSent: response = - invoiceA.reminderLastSent.compareTo(invoiceB.reminderLastSent); + invoiceA.reminderLastSent!.compareTo(invoiceB.reminderLastSent!); break; case InvoiceFields.balance: response = invoiceA.balanceOrAmount.compareTo(invoiceB.balanceOrAmount); @@ -842,14 +828,14 @@ abstract class InvoiceEntity extends Object } break; case EntityFields.assignedTo: - final userA = userMap[invoiceA.assignedUserId] ?? UserEntity(); + final userA = userMap![invoiceA.assignedUserId] ?? UserEntity(); final userB = userMap[invoiceB.assignedUserId] ?? UserEntity(); response = userA.listDisplayName .toLowerCase() .compareTo(userB.listDisplayName.toLowerCase()); break; case EntityFields.createdBy: - final userA = userMap[invoiceA.createdUserId] ?? UserEntity(); + final userA = userMap![invoiceA.createdUserId] ?? UserEntity(); final userB = userMap[invoiceB.createdUserId] ?? UserEntity(); response = userA.listDisplayName .toLowerCase() @@ -894,13 +880,13 @@ abstract class InvoiceEntity extends Object response = invoiceB.isViewed ? 1 : -1; break; case RecurringInvoiceFields.remainingCycles: - response = invoiceA.remainingCycles.compareTo(invoiceB.remainingCycles); + response = invoiceA.remainingCycles!.compareTo(invoiceB.remainingCycles!); break; case RecurringInvoiceFields.frequency: - response = invoiceA.frequencyId.compareTo(invoiceB.frequencyId); + response = invoiceA.frequencyId!.compareTo(invoiceB.frequencyId!); break; case RecurringInvoiceFields.autoBill: - response = invoiceA.autoBill.compareTo(invoiceB.autoBill); + response = invoiceA.autoBill!.compareTo(invoiceB.autoBill!); break; case InvoiceFields.clientCity: response = clientA.city.compareTo(clientB.city); @@ -925,7 +911,7 @@ abstract class InvoiceEntity extends Object vendorA.name.toLowerCase().compareTo(vendorB.name.toLowerCase()); break; case InvoiceFields.dueDateDays: - response = invoiceA.dueDateDays.compareTo(invoiceB.dueDateDays); + response = invoiceA.dueDateDays!.compareTo(invoiceB.dueDateDays!); break; default: print('## ERROR: sort by invoice.$sortField is not implemented'); @@ -933,7 +919,7 @@ abstract class InvoiceEntity extends Object } if (response == 0) { - response = invoice.number.toLowerCase().compareTo(number.toLowerCase()); + response = invoice!.number.toLowerCase().compareTo(number.toLowerCase()); } return response; @@ -969,9 +955,9 @@ abstract class InvoiceEntity extends Object } @override - bool matchesFilter(String filter) { + bool matchesFilter(String? filter) { for (var i = 0; i < lineItems.length; i++) { - final lineItem = lineItems[i]; + final lineItem = lineItems[i]!; final isMatch = matchesStrings( haystacks: [ lineItem.productKey, @@ -1007,7 +993,7 @@ abstract class InvoiceEntity extends Object } @override - String matchesFilterValue(String filter) { + String? matchesFilterValue(String? filter) { return matchesStringsValue( haystacks: [ poNumber, @@ -1025,18 +1011,18 @@ abstract class InvoiceEntity extends Object } @override - List getActions( - {UserCompanyEntity userCompany, - ClientEntity client, + List getActions( + {UserCompanyEntity? userCompany, + ClientEntity? client, bool includeEdit = false, bool includePreview = false, bool multiselect = false}) { - final store = StoreProvider.of(navigatorKey.currentContext); + final store = StoreProvider.of(navigatorKey.currentContext!); final state = store.state; - final actions = []; + final actions = []; - if (!isDeleted) { - if (userCompany.canEditEntity(this)) { + if (!isDeleted!) { + if (userCompany!.canEditEntity(this)) { if (includeEdit && !multiselect) { actions.add(EntityAction.edit); } @@ -1088,7 +1074,7 @@ abstract class InvoiceEntity extends Object if (!isRecurring) { actions.add(EntityAction.printPdf); actions.add(EntityAction.download); - if (isInvoice && state.company.settings.enableEInvoice == true) { + if (isInvoice && state.company!.settings.enableEInvoice == true) { actions.add(EntityAction.eInvoice); } } @@ -1158,7 +1144,7 @@ abstract class InvoiceEntity extends Object } } - if (!isDeleted && multiselect) { + if (!isDeleted! && multiselect) { actions.add(EntityAction.documents); } @@ -1168,7 +1154,7 @@ abstract class InvoiceEntity extends Object if (!multiselect && isOld) { int countOtherTypes = 0; - if (userCompany.canCreate(EntityType.invoice)) { + if (userCompany!.canCreate(EntityType.invoice)) { countOtherTypes++; if (isInvoice) { actions.add(EntityAction.cloneToInvoice); @@ -1221,8 +1207,8 @@ abstract class InvoiceEntity extends Object } } - if (userCompany.canEditEntity(this) && - !isDeleted && + if (userCompany!.canEditEntity(this) && + !isDeleted! && !isCancelledOrReversed) { if (isInvoice && isSent) { if (!isPaid) { @@ -1280,8 +1266,8 @@ abstract class InvoiceEntity extends Object } } - bool isBetween(String startDate, String endDate) { - return startDate.compareTo(date) <= 0 && endDate.compareTo(date) >= 0; + bool isBetween(String startDate, String? endDate) { + return startDate.compareTo(date) <= 0 && endDate!.compareTo(date) >= 0; } bool get isInvoice => entityType == EntityType.invoice; @@ -1357,8 +1343,8 @@ abstract class InvoiceEntity extends Object statusId == kRecurringInvoiceStatusActive && (lastSentDate ?? '').isEmpty; - String get calculateRemainingCycles => - remainingCycles == -1 ? 'endless' : remainingCycles; + String? get calculateRemainingCycles => + remainingCycles == -1 ? 'endless' : remainingCycles as String?; String get calculatedStatusId { if (isRecurring) { @@ -1404,24 +1390,22 @@ abstract class InvoiceEntity extends Object return false; } - return !isDeleted && + return !isDeleted! && !isRecurring && isSent && isUnpaid && - DateTime.tryParse(date) + DateTime.tryParse(date)! .isBefore(DateTime.now().subtract(Duration(days: 1))); } - InvitationEntity getInvitationForClientContact(ClientContactEntity contact) { - return invitations.firstWhere( - (invitation) => invitation.clientContactId == contact.id, - orElse: () => null); + InvitationEntity? getInvitationForClientContact(ClientContactEntity? contact) { + return invitations.firstWhereOrNull( + (invitation) => invitation.clientContactId == contact!.id); } - InvitationEntity getInvitationForVendorContact(VendorContactEntity contact) { - return invitations.firstWhere( - (invitation) => invitation.vendorContactId == contact.id, - orElse: () => null); + InvitationEntity? getInvitationForVendorContact(VendorContactEntity? contact) { + return invitations.firstWhereOrNull( + (invitation) => invitation.vendorContactId == contact!.id); } /// Gets taxes in the form { taxName1: { amount: 0, paid: 0} , ... } @@ -1465,7 +1449,7 @@ abstract class InvoiceEntity extends Object } for (final item in lineItems) { - final itemTaxable = getItemTaxable(item, amount, precision); + final itemTaxable = getItemTaxable(item!, amount, precision); if (item.taxName1.isNotEmpty) { final itemTaxAmount = calculateAmount(itemTaxable, item.taxRate1); @@ -1526,8 +1510,8 @@ abstract class InvoiceEntity extends Object 'paid': 0.0 }); - map[key]['amount'] += amount; - map[key]['paid'] += paid; + map[key]!['amount'] += amount; + map[key]!['paid'] += paid; } String get invitationLink => @@ -1610,7 +1594,7 @@ class TaskItemFields { abstract class InvoiceItemEntity implements Built { - factory InvoiceItemEntity({String productKey, double quantity}) { + factory InvoiceItemEntity({String? productKey, double? quantity}) { return _$InvoiceItemEntity._( productKey: productKey ?? '', notes: '', @@ -1677,9 +1661,8 @@ abstract class InvoiceItemEntity @BuiltValueField(wireName: 'tax_rate3') double get taxRate3; - @nullable @BuiltValueField(wireName: 'type_id') - String get typeId; + String? get typeId; @BuiltValueField(wireName: 'custom_value1') String get customValue1; @@ -1695,16 +1678,13 @@ abstract class InvoiceItemEntity double get discount; - @nullable @BuiltValueField(wireName: 'task_id') - String get taskId; + String? get taskId; - @nullable @BuiltValueField(wireName: 'expense_id') - String get expenseId; + String? get expenseId; - @nullable - int get createdAt; + int? get createdAt; @BuiltValueField(wireName: 'tax_id') String get taxCategoryId; @@ -1793,21 +1773,21 @@ abstract class InvoiceItemEntity return parts.join(', '); } - InvoiceItemEntity applyTax(TaxRateEntity taxRate, + InvoiceItemEntity applyTax(TaxRateEntity? taxRate, {bool isSecond = false, bool isThird = false}) { InvoiceItemEntity item; if (isThird) { item = rebuild((b) => b - ..taxRate3 = taxRate.rate + ..taxRate3 = taxRate!.rate ..taxName3 = taxRate.name); } else if (isSecond) { item = rebuild((b) => b - ..taxRate2 = taxRate.rate + ..taxRate2 = taxRate!.rate ..taxName2 = taxRate.name); } else { item = rebuild((b) => b - ..taxRate1 = taxRate.rate + ..taxRate1 = taxRate!.rate ..taxName1 = taxRate.name); } @@ -1827,8 +1807,8 @@ abstract class InvitationEntity extends Object with BaseEntity, SelectableEntity implements Built { factory InvitationEntity({ - String clientContactId, - String vendorContactId, + String? clientContactId, + String? vendorContactId, }) { return _$InvitationEntity._( id: BaseEntity.nextId, @@ -1876,9 +1856,8 @@ abstract class InvitationEntity extends Object @BuiltValueField(wireName: 'opened_date', compare: false) String get openedDate; - @nullable @BuiltValueField(wireName: 'email_status', compare: false) - String get emailStatus; + String? get emailStatus; String get downloadLink => '$link/download?t=${DateTime.now().millisecondsSinceEpoch}'; @@ -1891,7 +1870,7 @@ abstract class InvitationEntity extends Object String get borderlessLink => '$silentLink&borderless=true'; @override - bool matchesFilter(String filter) { + bool matchesFilter(String? filter) { if (filter == null || filter.isEmpty) { return true; } @@ -1900,7 +1879,7 @@ abstract class InvitationEntity extends Object } @override - String matchesFilterValue(String filter) { + String? matchesFilterValue(String? filter) { if (filter == null || filter.isEmpty) { return null; } @@ -1914,7 +1893,7 @@ abstract class InvitationEntity extends Object } @override - double get listDisplayAmount => null; + double? get listDisplayAmount => null; @override FormatNumberType get listDisplayAmountType => FormatNumberType.money; @@ -1955,7 +1934,7 @@ abstract class InvoiceScheduleEntity abstract class InvoiceHistoryEntity implements Built { - factory InvoiceHistoryEntity({String contactId}) { + factory InvoiceHistoryEntity({String? contactId}) { return _$InvoiceHistoryEntity._( id: '', createdAt: 0, diff --git a/lib/data/models/invoice_model.g.dart b/lib/data/models/invoice_model.g.dart index 5c59e6c97..18993699b 100644 --- a/lib/data/models/invoice_model.g.dart +++ b/lib/data/models/invoice_model.g.dart @@ -32,10 +32,10 @@ class _$InvoiceListResponseSerializer final String wireName = 'InvoiceListResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, InvoiceListResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: @@ -47,21 +47,21 @@ class _$InvoiceListResponseSerializer @override InvoiceListResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new InvoiceListResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(InvoiceEntity)])) - as BuiltList); + BuiltList, const [const FullType(InvoiceEntity)]))! + as BuiltList); break; } } @@ -81,10 +81,10 @@ class _$InvoiceItemResponseSerializer final String wireName = 'InvoiceItemResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, InvoiceItemResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType(InvoiceEntity)), @@ -95,19 +95,19 @@ class _$InvoiceItemResponseSerializer @override InvoiceItemResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new InvoiceItemResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, - specifiedType: const FullType(InvoiceEntity)) as InvoiceEntity); + specifiedType: const FullType(InvoiceEntity))! as InvoiceEntity); break; } } @@ -123,9 +123,9 @@ class _$InvoiceEntitySerializer implements StructuredSerializer { final String wireName = 'InvoiceEntity'; @override - Iterable serialize(Serializers serializers, InvoiceEntity object, + Iterable serialize(Serializers serializers, InvoiceEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'amount', serializers.serialize(object.amount, specifiedType: const FullType(double)), @@ -269,7 +269,7 @@ class _$InvoiceEntitySerializer implements StructuredSerializer { 'line_items', serializers.serialize(object.lineItems, specifiedType: const FullType( - BuiltList, const [const FullType(InvoiceItemEntity)])), + BuiltList, const [const FullType.nullable(InvoiceItemEntity)])), 'invitations', serializers.serialize(object.invitations, specifiedType: const FullType( @@ -297,7 +297,7 @@ class _$InvoiceEntitySerializer implements StructuredSerializer { 'id', serializers.serialize(object.id, specifiedType: const FullType(String)), ]; - Object value; + Object? value; value = object.idempotencyKey; if (value != null) { result @@ -435,325 +435,325 @@ class _$InvoiceEntitySerializer implements StructuredSerializer { @override InvoiceEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new InvoiceEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'idempotency_key': result.idempotencyKey = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'amount': result.amount = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'balance': result.balance = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'paid_to_date': result.paidToDate = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'client_id': result.clientId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'project_id': result.projectId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'expense_id': result.expenseId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'vendor_id': result.vendorId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'subscription_id': result.subscriptionId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'status_id': result.statusId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'number': result.number = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'discount': result.discount = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'po_number': result.poNumber = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'date': result.date = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'due_date': result.dueDate = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'public_notes': result.publicNotes = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'private_notes': result.privateNotes = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'terms': result.terms = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'footer': result.footer = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'design_id': result.designId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'uses_inclusive_taxes': result.usesInclusiveTaxes = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'tax_name1': result.taxName1 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'tax_rate1': result.taxRate1 = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'tax_name2': result.taxName2 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'tax_rate2': result.taxRate2 = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'tax_name3': result.taxName3 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'tax_rate3': result.taxRate3 = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'is_amount_discount': result.isAmountDiscount = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'partial': result.partial = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'total_taxes': result.taxAmount = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'partial_due_date': result.partialDueDate = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'auto_bill': result.autoBill = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'custom_value1': result.customValue1 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value2': result.customValue2 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value3': result.customValue3 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value4': result.customValue4 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_surcharge1': result.customSurcharge1 = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'custom_surcharge2': result.customSurcharge2 = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'custom_surcharge3': result.customSurcharge3 = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'custom_surcharge4': result.customSurcharge4 = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'custom_surcharge_tax1': result.customTaxes1 = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'custom_surcharge_tax2': result.customTaxes2 = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'custom_surcharge_tax3': result.customTaxes3 = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'custom_surcharge_tax4': result.customTaxes4 = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'exchange_rate': result.exchangeRate = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'reminder1_sent': result.reminder1Sent = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'reminder2_sent': result.reminder2Sent = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'reminder3_sent': result.reminder3Sent = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'reminder_last_sent': result.reminderLastSent = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'frequency_id': result.frequencyId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'last_sent_date': result.lastSentDate = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'next_send_date': result.nextSendDate = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'next_send_datetime': result.nextSendDatetime = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'remaining_cycles': result.remainingCycles = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int)) as int?; break; case 'due_date_days': result.dueDateDays = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'invoice_id': result.invoiceId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'recurring_id': result.recurringId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'auto_bill_enabled': result.autoBillEnabled = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'filename': result.filename = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'recurring_dates': result.recurringDates.replace(serializers.deserialize(value, - specifiedType: const FullType( - BuiltList, const [const FullType(InvoiceScheduleEntity)])) - as BuiltList); + specifiedType: const FullType(BuiltList, const [ + const FullType(InvoiceScheduleEntity) + ]))! as BuiltList); break; case 'line_items': result.lineItems.replace(serializers.deserialize(value, - specifiedType: const FullType( - BuiltList, const [const FullType(InvoiceItemEntity)])) - as BuiltList); + specifiedType: const FullType(BuiltList, const [ + const FullType.nullable(InvoiceItemEntity) + ]))! as BuiltList); break; case 'invitations': result.invitations.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(InvitationEntity)])) - as BuiltList); + BuiltList, const [const FullType(InvitationEntity)]))! + as BuiltList); break; case 'documents': result.documents.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(DocumentEntity)])) - as BuiltList); + BuiltList, const [const FullType(DocumentEntity)]))! + as BuiltList); break; case 'activities': result.activities.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(ActivityEntity)])) - as BuiltList); + BuiltList, const [const FullType(ActivityEntity)]))! + as BuiltList); break; case 'tax_info': result.taxData.replace(serializers.deserialize(value, - specifiedType: const FullType(TaxDataEntity)) as TaxDataEntity); + specifiedType: const FullType(TaxDataEntity))! as TaxDataEntity); break; case 'loadedAt': result.loadedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int)) as int?; break; case 'isChanged': result.isChanged = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'created_at': result.createdAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'updated_at': result.updatedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'archived_at': result.archivedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'is_deleted': result.isDeleted = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'user_id': result.createdUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'assigned_user_id': result.assignedUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'entity_type': result.entityType = serializers.deserialize(value, - specifiedType: const FullType(EntityType)) as EntityType; + specifiedType: const FullType(EntityType)) as EntityType?; break; case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -770,9 +770,9 @@ class _$InvoiceItemEntitySerializer final String wireName = 'InvoiceItemEntity'; @override - Iterable serialize(Serializers serializers, InvoiceItemEntity object, + Iterable serialize(Serializers serializers, InvoiceItemEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'product_key', serializers.serialize(object.productKey, specifiedType: const FullType(String)), @@ -824,7 +824,7 @@ class _$InvoiceItemEntitySerializer serializers.serialize(object.taxCategoryId, specifiedType: const FullType(String)), ]; - Object value; + Object? value; value = object.typeId; if (value != null) { result @@ -857,99 +857,99 @@ class _$InvoiceItemEntitySerializer @override InvoiceItemEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new InvoiceItemEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'product_key': result.productKey = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'notes': result.notes = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'cost': result.cost = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'product_cost': result.productCost = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'quantity': result.quantity = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'tax_name1': result.taxName1 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'tax_rate1': result.taxRate1 = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'tax_name2': result.taxName2 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'tax_rate2': result.taxRate2 = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'tax_name3': result.taxName3 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'tax_rate3': result.taxRate3 = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'type_id': result.typeId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'custom_value1': result.customValue1 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value2': result.customValue2 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value3': result.customValue3 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value4': result.customValue4 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'discount': result.discount = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'task_id': result.taskId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'expense_id': result.expenseId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'createdAt': result.createdAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int)) as int?; break; case 'tax_id': result.taxCategoryId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -966,9 +966,9 @@ class _$InvitationEntitySerializer final String wireName = 'InvitationEntity'; @override - Iterable serialize(Serializers serializers, InvitationEntity object, + Iterable serialize(Serializers serializers, InvitationEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'key', serializers.serialize(object.key, specifiedType: const FullType(String)), 'link', @@ -1000,7 +1000,7 @@ class _$InvitationEntitySerializer 'id', serializers.serialize(object.id, specifiedType: const FullType(String)), ]; - Object value; + Object? value; value = object.emailStatus; if (value != null) { result @@ -1048,83 +1048,83 @@ class _$InvitationEntitySerializer @override InvitationEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new InvitationEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'key': result.key = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'link': result.link = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'client_contact_id': result.clientContactId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'vendor_contact_id': result.vendorContactId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'sent_date': result.sentDate = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'viewed_date': result.viewedDate = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'opened_date': result.openedDate = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'email_status': result.emailStatus = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'isChanged': result.isChanged = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'created_at': result.createdAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'updated_at': result.updatedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'archived_at': result.archivedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'is_deleted': result.isDeleted = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'user_id': result.createdUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'assigned_user_id': result.assignedUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'entity_type': result.entityType = serializers.deserialize(value, - specifiedType: const FullType(EntityType)) as EntityType; + specifiedType: const FullType(EntityType)) as EntityType?; break; case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -1144,10 +1144,10 @@ class _$InvoiceScheduleEntitySerializer final String wireName = 'InvoiceScheduleEntity'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, InvoiceScheduleEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'send_date', serializers.serialize(object.sendDate, specifiedType: const FullType(String)), @@ -1161,23 +1161,23 @@ class _$InvoiceScheduleEntitySerializer @override InvoiceScheduleEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new InvoiceScheduleEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'send_date': result.sendDate = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'due_date': result.dueDate = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -1197,10 +1197,10 @@ class _$InvoiceHistoryEntitySerializer final String wireName = 'InvoiceHistoryEntity'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, InvoiceHistoryEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'id', serializers.serialize(object.id, specifiedType: const FullType(String)), 'activity_id', @@ -1219,31 +1219,31 @@ class _$InvoiceHistoryEntitySerializer @override InvoiceHistoryEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new InvoiceHistoryEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'activity_id': result.activityId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'created_at': result.createdAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'amount': result.amount = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; } } @@ -1257,10 +1257,10 @@ class _$InvoiceListResponse extends InvoiceListResponse { final BuiltList data; factory _$InvoiceListResponse( - [void Function(InvoiceListResponseBuilder) updates]) => + [void Function(InvoiceListResponseBuilder)? updates]) => (new InvoiceListResponseBuilder()..update(updates))._build(); - _$InvoiceListResponse._({this.data}) : super._() { + _$InvoiceListResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull(data, r'InvoiceListResponse', 'data'); } @@ -1279,10 +1279,10 @@ class _$InvoiceListResponse extends InvoiceListResponse { return other is InvoiceListResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -1299,12 +1299,12 @@ class _$InvoiceListResponse extends InvoiceListResponse { class InvoiceListResponseBuilder implements Builder { - _$InvoiceListResponse _$v; + _$InvoiceListResponse? _$v; - ListBuilder _data; + ListBuilder? _data; ListBuilder get data => _$this._data ??= new ListBuilder(); - set data(ListBuilder data) => _$this._data = data; + set data(ListBuilder? data) => _$this._data = data; InvoiceListResponseBuilder(); @@ -1324,7 +1324,7 @@ class InvoiceListResponseBuilder } @override - void update(void Function(InvoiceListResponseBuilder) updates) { + void update(void Function(InvoiceListResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -1336,7 +1336,7 @@ class InvoiceListResponseBuilder try { _$result = _$v ?? new _$InvoiceListResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -1356,10 +1356,10 @@ class _$InvoiceItemResponse extends InvoiceItemResponse { final InvoiceEntity data; factory _$InvoiceItemResponse( - [void Function(InvoiceItemResponseBuilder) updates]) => + [void Function(InvoiceItemResponseBuilder)? updates]) => (new InvoiceItemResponseBuilder()..update(updates))._build(); - _$InvoiceItemResponse._({this.data}) : super._() { + _$InvoiceItemResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull(data, r'InvoiceItemResponse', 'data'); } @@ -1378,10 +1378,10 @@ class _$InvoiceItemResponse extends InvoiceItemResponse { return other is InvoiceItemResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -1398,11 +1398,11 @@ class _$InvoiceItemResponse extends InvoiceItemResponse { class InvoiceItemResponseBuilder implements Builder { - _$InvoiceItemResponse _$v; + _$InvoiceItemResponse? _$v; - InvoiceEntityBuilder _data; + InvoiceEntityBuilder? _data; InvoiceEntityBuilder get data => _$this._data ??= new InvoiceEntityBuilder(); - set data(InvoiceEntityBuilder data) => _$this._data = data; + set data(InvoiceEntityBuilder? data) => _$this._data = data; InvoiceItemResponseBuilder(); @@ -1422,7 +1422,7 @@ class InvoiceItemResponseBuilder } @override - void update(void Function(InvoiceItemResponseBuilder) updates) { + void update(void Function(InvoiceItemResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -1434,7 +1434,7 @@ class InvoiceItemResponseBuilder try { _$result = _$v ?? new _$InvoiceItemResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -1451,7 +1451,7 @@ class InvoiceItemResponseBuilder class _$InvoiceEntity extends InvoiceEntity { @override - final String idempotencyKey; + final String? idempotencyKey; @override final double amount; @override @@ -1513,7 +1513,7 @@ class _$InvoiceEntity extends InvoiceEntity { @override final String partialDueDate; @override - final String autoBill; + final String? autoBill; @override final String customValue1; @override @@ -1541,15 +1541,15 @@ class _$InvoiceEntity extends InvoiceEntity { @override final double exchangeRate; @override - final String reminder1Sent; + final String? reminder1Sent; @override - final String reminder2Sent; + final String? reminder2Sent; @override - final String reminder3Sent; + final String? reminder3Sent; @override - final String reminderLastSent; + final String? reminderLastSent; @override - final String frequencyId; + final String? frequencyId; @override final String lastSentDate; @override @@ -1557,21 +1557,21 @@ class _$InvoiceEntity extends InvoiceEntity { @override final String nextSendDatetime; @override - final int remainingCycles; + final int? remainingCycles; @override - final String dueDateDays; + final String? dueDateDays; @override - final String invoiceId; + final String? invoiceId; @override - final String recurringId; + final String? recurringId; @override final bool autoBillEnabled; @override - final String filename; + final String? filename; @override - final BuiltList recurringDates; + final BuiltList? recurringDates; @override - final BuiltList lineItems; + final BuiltList lineItems; @override final BuiltList invitations; @override @@ -1585,9 +1585,9 @@ class _$InvoiceEntity extends InvoiceEntity { @override final TaxDataEntity taxData; @override - final int loadedAt; + final int? loadedAt; @override - final bool isChanged; + final bool? isChanged; @override final int createdAt; @override @@ -1595,97 +1595,97 @@ class _$InvoiceEntity extends InvoiceEntity { @override final int archivedAt; @override - final bool isDeleted; + final bool? isDeleted; @override - final String createdUserId; + final String? createdUserId; @override - final String assignedUserId; + final String? assignedUserId; @override - final EntityType entityType; + final EntityType? entityType; @override final String id; - factory _$InvoiceEntity([void Function(InvoiceEntityBuilder) updates]) => + factory _$InvoiceEntity([void Function(InvoiceEntityBuilder)? updates]) => (new InvoiceEntityBuilder()..update(updates))._build(); _$InvoiceEntity._( {this.idempotencyKey, - this.amount, - this.balance, - this.paidToDate, - this.clientId, - this.projectId, - this.expenseId, - this.vendorId, - this.subscriptionId, - this.statusId, - this.number, - this.discount, - this.poNumber, - this.date, - this.dueDate, - this.publicNotes, - this.privateNotes, - this.terms, - this.footer, - this.designId, - this.usesInclusiveTaxes, - this.taxName1, - this.taxRate1, - this.taxName2, - this.taxRate2, - this.taxName3, - this.taxRate3, - this.isAmountDiscount, - this.partial, - this.taxAmount, - this.partialDueDate, + required this.amount, + required this.balance, + required this.paidToDate, + required this.clientId, + required this.projectId, + required this.expenseId, + required this.vendorId, + required this.subscriptionId, + required this.statusId, + required this.number, + required this.discount, + required this.poNumber, + required this.date, + required this.dueDate, + required this.publicNotes, + required this.privateNotes, + required this.terms, + required this.footer, + required this.designId, + required this.usesInclusiveTaxes, + required this.taxName1, + required this.taxRate1, + required this.taxName2, + required this.taxRate2, + required this.taxName3, + required this.taxRate3, + required this.isAmountDiscount, + required this.partial, + required this.taxAmount, + required this.partialDueDate, this.autoBill, - this.customValue1, - this.customValue2, - this.customValue3, - this.customValue4, - this.customSurcharge1, - this.customSurcharge2, - this.customSurcharge3, - this.customSurcharge4, - this.customTaxes1, - this.customTaxes2, - this.customTaxes3, - this.customTaxes4, - this.exchangeRate, + required this.customValue1, + required this.customValue2, + required this.customValue3, + required this.customValue4, + required this.customSurcharge1, + required this.customSurcharge2, + required this.customSurcharge3, + required this.customSurcharge4, + required this.customTaxes1, + required this.customTaxes2, + required this.customTaxes3, + required this.customTaxes4, + required this.exchangeRate, this.reminder1Sent, this.reminder2Sent, this.reminder3Sent, this.reminderLastSent, this.frequencyId, - this.lastSentDate, - this.nextSendDate, - this.nextSendDatetime, + required this.lastSentDate, + required this.nextSendDate, + required this.nextSendDatetime, this.remainingCycles, this.dueDateDays, this.invoiceId, this.recurringId, - this.autoBillEnabled, + required this.autoBillEnabled, this.filename, this.recurringDates, - this.lineItems, - this.invitations, - this.documents, - this.activities, - this.saveDefaultTerms, - this.saveDefaultFooter, - this.taxData, + required this.lineItems, + required this.invitations, + required this.documents, + required this.activities, + required this.saveDefaultTerms, + required this.saveDefaultFooter, + required this.taxData, this.loadedAt, this.isChanged, - this.createdAt, - this.updatedAt, - this.archivedAt, + required this.createdAt, + required this.updatedAt, + required this.archivedAt, this.isDeleted, this.createdUserId, this.assignedUserId, this.entityType, - this.id}) + required this.id}) : super._() { BuiltValueNullFieldError.checkNotNull(amount, r'InvoiceEntity', 'amount'); BuiltValueNullFieldError.checkNotNull(balance, r'InvoiceEntity', 'balance'); @@ -1883,10 +1883,10 @@ class _$InvoiceEntity extends InvoiceEntity { id == other.id; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, idempotencyKey.hashCode); _$hash = $jc(_$hash, amount.hashCode); @@ -2053,346 +2053,346 @@ class _$InvoiceEntity extends InvoiceEntity { class InvoiceEntityBuilder implements Builder { - _$InvoiceEntity _$v; + _$InvoiceEntity? _$v; - String _idempotencyKey; - String get idempotencyKey => _$this._idempotencyKey; - set idempotencyKey(String idempotencyKey) => + String? _idempotencyKey; + String? get idempotencyKey => _$this._idempotencyKey; + set idempotencyKey(String? idempotencyKey) => _$this._idempotencyKey = idempotencyKey; - double _amount; - double get amount => _$this._amount; - set amount(double amount) => _$this._amount = amount; + double? _amount; + double? get amount => _$this._amount; + set amount(double? amount) => _$this._amount = amount; - double _balance; - double get balance => _$this._balance; - set balance(double balance) => _$this._balance = balance; + double? _balance; + double? get balance => _$this._balance; + set balance(double? balance) => _$this._balance = balance; - double _paidToDate; - double get paidToDate => _$this._paidToDate; - set paidToDate(double paidToDate) => _$this._paidToDate = paidToDate; + double? _paidToDate; + double? get paidToDate => _$this._paidToDate; + set paidToDate(double? paidToDate) => _$this._paidToDate = paidToDate; - String _clientId; - String get clientId => _$this._clientId; - set clientId(String clientId) => _$this._clientId = clientId; + String? _clientId; + String? get clientId => _$this._clientId; + set clientId(String? clientId) => _$this._clientId = clientId; - String _projectId; - String get projectId => _$this._projectId; - set projectId(String projectId) => _$this._projectId = projectId; + String? _projectId; + String? get projectId => _$this._projectId; + set projectId(String? projectId) => _$this._projectId = projectId; - String _expenseId; - String get expenseId => _$this._expenseId; - set expenseId(String expenseId) => _$this._expenseId = expenseId; + String? _expenseId; + String? get expenseId => _$this._expenseId; + set expenseId(String? expenseId) => _$this._expenseId = expenseId; - String _vendorId; - String get vendorId => _$this._vendorId; - set vendorId(String vendorId) => _$this._vendorId = vendorId; + String? _vendorId; + String? get vendorId => _$this._vendorId; + set vendorId(String? vendorId) => _$this._vendorId = vendorId; - String _subscriptionId; - String get subscriptionId => _$this._subscriptionId; - set subscriptionId(String subscriptionId) => + String? _subscriptionId; + String? get subscriptionId => _$this._subscriptionId; + set subscriptionId(String? subscriptionId) => _$this._subscriptionId = subscriptionId; - String _statusId; - String get statusId => _$this._statusId; - set statusId(String statusId) => _$this._statusId = statusId; + String? _statusId; + String? get statusId => _$this._statusId; + set statusId(String? statusId) => _$this._statusId = statusId; - String _number; - String get number => _$this._number; - set number(String number) => _$this._number = number; + String? _number; + String? get number => _$this._number; + set number(String? number) => _$this._number = number; - double _discount; - double get discount => _$this._discount; - set discount(double discount) => _$this._discount = discount; + double? _discount; + double? get discount => _$this._discount; + set discount(double? discount) => _$this._discount = discount; - String _poNumber; - String get poNumber => _$this._poNumber; - set poNumber(String poNumber) => _$this._poNumber = poNumber; + String? _poNumber; + String? get poNumber => _$this._poNumber; + set poNumber(String? poNumber) => _$this._poNumber = poNumber; - String _date; - String get date => _$this._date; - set date(String date) => _$this._date = date; + String? _date; + String? get date => _$this._date; + set date(String? date) => _$this._date = date; - String _dueDate; - String get dueDate => _$this._dueDate; - set dueDate(String dueDate) => _$this._dueDate = dueDate; + String? _dueDate; + String? get dueDate => _$this._dueDate; + set dueDate(String? dueDate) => _$this._dueDate = dueDate; - String _publicNotes; - String get publicNotes => _$this._publicNotes; - set publicNotes(String publicNotes) => _$this._publicNotes = publicNotes; + String? _publicNotes; + String? get publicNotes => _$this._publicNotes; + set publicNotes(String? publicNotes) => _$this._publicNotes = publicNotes; - String _privateNotes; - String get privateNotes => _$this._privateNotes; - set privateNotes(String privateNotes) => _$this._privateNotes = privateNotes; + String? _privateNotes; + String? get privateNotes => _$this._privateNotes; + set privateNotes(String? privateNotes) => _$this._privateNotes = privateNotes; - String _terms; - String get terms => _$this._terms; - set terms(String terms) => _$this._terms = terms; + String? _terms; + String? get terms => _$this._terms; + set terms(String? terms) => _$this._terms = terms; - String _footer; - String get footer => _$this._footer; - set footer(String footer) => _$this._footer = footer; + String? _footer; + String? get footer => _$this._footer; + set footer(String? footer) => _$this._footer = footer; - String _designId; - String get designId => _$this._designId; - set designId(String designId) => _$this._designId = designId; + String? _designId; + String? get designId => _$this._designId; + set designId(String? designId) => _$this._designId = designId; - bool _usesInclusiveTaxes; - bool get usesInclusiveTaxes => _$this._usesInclusiveTaxes; - set usesInclusiveTaxes(bool usesInclusiveTaxes) => + bool? _usesInclusiveTaxes; + bool? get usesInclusiveTaxes => _$this._usesInclusiveTaxes; + set usesInclusiveTaxes(bool? usesInclusiveTaxes) => _$this._usesInclusiveTaxes = usesInclusiveTaxes; - String _taxName1; - String get taxName1 => _$this._taxName1; - set taxName1(String taxName1) => _$this._taxName1 = taxName1; + String? _taxName1; + String? get taxName1 => _$this._taxName1; + set taxName1(String? taxName1) => _$this._taxName1 = taxName1; - double _taxRate1; - double get taxRate1 => _$this._taxRate1; - set taxRate1(double taxRate1) => _$this._taxRate1 = taxRate1; + double? _taxRate1; + double? get taxRate1 => _$this._taxRate1; + set taxRate1(double? taxRate1) => _$this._taxRate1 = taxRate1; - String _taxName2; - String get taxName2 => _$this._taxName2; - set taxName2(String taxName2) => _$this._taxName2 = taxName2; + String? _taxName2; + String? get taxName2 => _$this._taxName2; + set taxName2(String? taxName2) => _$this._taxName2 = taxName2; - double _taxRate2; - double get taxRate2 => _$this._taxRate2; - set taxRate2(double taxRate2) => _$this._taxRate2 = taxRate2; + double? _taxRate2; + double? get taxRate2 => _$this._taxRate2; + set taxRate2(double? taxRate2) => _$this._taxRate2 = taxRate2; - String _taxName3; - String get taxName3 => _$this._taxName3; - set taxName3(String taxName3) => _$this._taxName3 = taxName3; + String? _taxName3; + String? get taxName3 => _$this._taxName3; + set taxName3(String? taxName3) => _$this._taxName3 = taxName3; - double _taxRate3; - double get taxRate3 => _$this._taxRate3; - set taxRate3(double taxRate3) => _$this._taxRate3 = taxRate3; + double? _taxRate3; + double? get taxRate3 => _$this._taxRate3; + set taxRate3(double? taxRate3) => _$this._taxRate3 = taxRate3; - bool _isAmountDiscount; - bool get isAmountDiscount => _$this._isAmountDiscount; - set isAmountDiscount(bool isAmountDiscount) => + bool? _isAmountDiscount; + bool? get isAmountDiscount => _$this._isAmountDiscount; + set isAmountDiscount(bool? isAmountDiscount) => _$this._isAmountDiscount = isAmountDiscount; - double _partial; - double get partial => _$this._partial; - set partial(double partial) => _$this._partial = partial; + double? _partial; + double? get partial => _$this._partial; + set partial(double? partial) => _$this._partial = partial; - double _taxAmount; - double get taxAmount => _$this._taxAmount; - set taxAmount(double taxAmount) => _$this._taxAmount = taxAmount; + double? _taxAmount; + double? get taxAmount => _$this._taxAmount; + set taxAmount(double? taxAmount) => _$this._taxAmount = taxAmount; - String _partialDueDate; - String get partialDueDate => _$this._partialDueDate; - set partialDueDate(String partialDueDate) => + String? _partialDueDate; + String? get partialDueDate => _$this._partialDueDate; + set partialDueDate(String? partialDueDate) => _$this._partialDueDate = partialDueDate; - String _autoBill; - String get autoBill => _$this._autoBill; - set autoBill(String autoBill) => _$this._autoBill = autoBill; + String? _autoBill; + String? get autoBill => _$this._autoBill; + set autoBill(String? autoBill) => _$this._autoBill = autoBill; - String _customValue1; - String get customValue1 => _$this._customValue1; - set customValue1(String customValue1) => _$this._customValue1 = customValue1; + String? _customValue1; + String? get customValue1 => _$this._customValue1; + set customValue1(String? customValue1) => _$this._customValue1 = customValue1; - String _customValue2; - String get customValue2 => _$this._customValue2; - set customValue2(String customValue2) => _$this._customValue2 = customValue2; + String? _customValue2; + String? get customValue2 => _$this._customValue2; + set customValue2(String? customValue2) => _$this._customValue2 = customValue2; - String _customValue3; - String get customValue3 => _$this._customValue3; - set customValue3(String customValue3) => _$this._customValue3 = customValue3; + String? _customValue3; + String? get customValue3 => _$this._customValue3; + set customValue3(String? customValue3) => _$this._customValue3 = customValue3; - String _customValue4; - String get customValue4 => _$this._customValue4; - set customValue4(String customValue4) => _$this._customValue4 = customValue4; + String? _customValue4; + String? get customValue4 => _$this._customValue4; + set customValue4(String? customValue4) => _$this._customValue4 = customValue4; - double _customSurcharge1; - double get customSurcharge1 => _$this._customSurcharge1; - set customSurcharge1(double customSurcharge1) => + double? _customSurcharge1; + double? get customSurcharge1 => _$this._customSurcharge1; + set customSurcharge1(double? customSurcharge1) => _$this._customSurcharge1 = customSurcharge1; - double _customSurcharge2; - double get customSurcharge2 => _$this._customSurcharge2; - set customSurcharge2(double customSurcharge2) => + double? _customSurcharge2; + double? get customSurcharge2 => _$this._customSurcharge2; + set customSurcharge2(double? customSurcharge2) => _$this._customSurcharge2 = customSurcharge2; - double _customSurcharge3; - double get customSurcharge3 => _$this._customSurcharge3; - set customSurcharge3(double customSurcharge3) => + double? _customSurcharge3; + double? get customSurcharge3 => _$this._customSurcharge3; + set customSurcharge3(double? customSurcharge3) => _$this._customSurcharge3 = customSurcharge3; - double _customSurcharge4; - double get customSurcharge4 => _$this._customSurcharge4; - set customSurcharge4(double customSurcharge4) => + double? _customSurcharge4; + double? get customSurcharge4 => _$this._customSurcharge4; + set customSurcharge4(double? customSurcharge4) => _$this._customSurcharge4 = customSurcharge4; - bool _customTaxes1; - bool get customTaxes1 => _$this._customTaxes1; - set customTaxes1(bool customTaxes1) => _$this._customTaxes1 = customTaxes1; + bool? _customTaxes1; + bool? get customTaxes1 => _$this._customTaxes1; + set customTaxes1(bool? customTaxes1) => _$this._customTaxes1 = customTaxes1; - bool _customTaxes2; - bool get customTaxes2 => _$this._customTaxes2; - set customTaxes2(bool customTaxes2) => _$this._customTaxes2 = customTaxes2; + bool? _customTaxes2; + bool? get customTaxes2 => _$this._customTaxes2; + set customTaxes2(bool? customTaxes2) => _$this._customTaxes2 = customTaxes2; - bool _customTaxes3; - bool get customTaxes3 => _$this._customTaxes3; - set customTaxes3(bool customTaxes3) => _$this._customTaxes3 = customTaxes3; + bool? _customTaxes3; + bool? get customTaxes3 => _$this._customTaxes3; + set customTaxes3(bool? customTaxes3) => _$this._customTaxes3 = customTaxes3; - bool _customTaxes4; - bool get customTaxes4 => _$this._customTaxes4; - set customTaxes4(bool customTaxes4) => _$this._customTaxes4 = customTaxes4; + bool? _customTaxes4; + bool? get customTaxes4 => _$this._customTaxes4; + set customTaxes4(bool? customTaxes4) => _$this._customTaxes4 = customTaxes4; - double _exchangeRate; - double get exchangeRate => _$this._exchangeRate; - set exchangeRate(double exchangeRate) => _$this._exchangeRate = exchangeRate; + double? _exchangeRate; + double? get exchangeRate => _$this._exchangeRate; + set exchangeRate(double? exchangeRate) => _$this._exchangeRate = exchangeRate; - String _reminder1Sent; - String get reminder1Sent => _$this._reminder1Sent; - set reminder1Sent(String reminder1Sent) => + String? _reminder1Sent; + String? get reminder1Sent => _$this._reminder1Sent; + set reminder1Sent(String? reminder1Sent) => _$this._reminder1Sent = reminder1Sent; - String _reminder2Sent; - String get reminder2Sent => _$this._reminder2Sent; - set reminder2Sent(String reminder2Sent) => + String? _reminder2Sent; + String? get reminder2Sent => _$this._reminder2Sent; + set reminder2Sent(String? reminder2Sent) => _$this._reminder2Sent = reminder2Sent; - String _reminder3Sent; - String get reminder3Sent => _$this._reminder3Sent; - set reminder3Sent(String reminder3Sent) => + String? _reminder3Sent; + String? get reminder3Sent => _$this._reminder3Sent; + set reminder3Sent(String? reminder3Sent) => _$this._reminder3Sent = reminder3Sent; - String _reminderLastSent; - String get reminderLastSent => _$this._reminderLastSent; - set reminderLastSent(String reminderLastSent) => + String? _reminderLastSent; + String? get reminderLastSent => _$this._reminderLastSent; + set reminderLastSent(String? reminderLastSent) => _$this._reminderLastSent = reminderLastSent; - String _frequencyId; - String get frequencyId => _$this._frequencyId; - set frequencyId(String frequencyId) => _$this._frequencyId = frequencyId; + String? _frequencyId; + String? get frequencyId => _$this._frequencyId; + set frequencyId(String? frequencyId) => _$this._frequencyId = frequencyId; - String _lastSentDate; - String get lastSentDate => _$this._lastSentDate; - set lastSentDate(String lastSentDate) => _$this._lastSentDate = lastSentDate; + String? _lastSentDate; + String? get lastSentDate => _$this._lastSentDate; + set lastSentDate(String? lastSentDate) => _$this._lastSentDate = lastSentDate; - String _nextSendDate; - String get nextSendDate => _$this._nextSendDate; - set nextSendDate(String nextSendDate) => _$this._nextSendDate = nextSendDate; + String? _nextSendDate; + String? get nextSendDate => _$this._nextSendDate; + set nextSendDate(String? nextSendDate) => _$this._nextSendDate = nextSendDate; - String _nextSendDatetime; - String get nextSendDatetime => _$this._nextSendDatetime; - set nextSendDatetime(String nextSendDatetime) => + String? _nextSendDatetime; + String? get nextSendDatetime => _$this._nextSendDatetime; + set nextSendDatetime(String? nextSendDatetime) => _$this._nextSendDatetime = nextSendDatetime; - int _remainingCycles; - int get remainingCycles => _$this._remainingCycles; - set remainingCycles(int remainingCycles) => + int? _remainingCycles; + int? get remainingCycles => _$this._remainingCycles; + set remainingCycles(int? remainingCycles) => _$this._remainingCycles = remainingCycles; - String _dueDateDays; - String get dueDateDays => _$this._dueDateDays; - set dueDateDays(String dueDateDays) => _$this._dueDateDays = dueDateDays; + String? _dueDateDays; + String? get dueDateDays => _$this._dueDateDays; + set dueDateDays(String? dueDateDays) => _$this._dueDateDays = dueDateDays; - String _invoiceId; - String get invoiceId => _$this._invoiceId; - set invoiceId(String invoiceId) => _$this._invoiceId = invoiceId; + String? _invoiceId; + String? get invoiceId => _$this._invoiceId; + set invoiceId(String? invoiceId) => _$this._invoiceId = invoiceId; - String _recurringId; - String get recurringId => _$this._recurringId; - set recurringId(String recurringId) => _$this._recurringId = recurringId; + String? _recurringId; + String? get recurringId => _$this._recurringId; + set recurringId(String? recurringId) => _$this._recurringId = recurringId; - bool _autoBillEnabled; - bool get autoBillEnabled => _$this._autoBillEnabled; - set autoBillEnabled(bool autoBillEnabled) => + bool? _autoBillEnabled; + bool? get autoBillEnabled => _$this._autoBillEnabled; + set autoBillEnabled(bool? autoBillEnabled) => _$this._autoBillEnabled = autoBillEnabled; - String _filename; - String get filename => _$this._filename; - set filename(String filename) => _$this._filename = filename; + String? _filename; + String? get filename => _$this._filename; + set filename(String? filename) => _$this._filename = filename; - ListBuilder _recurringDates; + ListBuilder? _recurringDates; ListBuilder get recurringDates => _$this._recurringDates ??= new ListBuilder(); - set recurringDates(ListBuilder recurringDates) => + set recurringDates(ListBuilder? recurringDates) => _$this._recurringDates = recurringDates; - ListBuilder _lineItems; - ListBuilder get lineItems => - _$this._lineItems ??= new ListBuilder(); - set lineItems(ListBuilder lineItems) => + ListBuilder? _lineItems; + ListBuilder get lineItems => + _$this._lineItems ??= new ListBuilder(); + set lineItems(ListBuilder? lineItems) => _$this._lineItems = lineItems; - ListBuilder _invitations; + ListBuilder? _invitations; ListBuilder get invitations => _$this._invitations ??= new ListBuilder(); - set invitations(ListBuilder invitations) => + set invitations(ListBuilder? invitations) => _$this._invitations = invitations; - ListBuilder _documents; + ListBuilder? _documents; ListBuilder get documents => _$this._documents ??= new ListBuilder(); - set documents(ListBuilder documents) => + set documents(ListBuilder? documents) => _$this._documents = documents; - ListBuilder _activities; + ListBuilder? _activities; ListBuilder get activities => _$this._activities ??= new ListBuilder(); - set activities(ListBuilder activities) => + set activities(ListBuilder? activities) => _$this._activities = activities; - bool _saveDefaultTerms; - bool get saveDefaultTerms => _$this._saveDefaultTerms; - set saveDefaultTerms(bool saveDefaultTerms) => + bool? _saveDefaultTerms; + bool? get saveDefaultTerms => _$this._saveDefaultTerms; + set saveDefaultTerms(bool? saveDefaultTerms) => _$this._saveDefaultTerms = saveDefaultTerms; - bool _saveDefaultFooter; - bool get saveDefaultFooter => _$this._saveDefaultFooter; - set saveDefaultFooter(bool saveDefaultFooter) => + bool? _saveDefaultFooter; + bool? get saveDefaultFooter => _$this._saveDefaultFooter; + set saveDefaultFooter(bool? saveDefaultFooter) => _$this._saveDefaultFooter = saveDefaultFooter; - TaxDataEntityBuilder _taxData; + TaxDataEntityBuilder? _taxData; TaxDataEntityBuilder get taxData => _$this._taxData ??= new TaxDataEntityBuilder(); - set taxData(TaxDataEntityBuilder taxData) => _$this._taxData = taxData; + set taxData(TaxDataEntityBuilder? taxData) => _$this._taxData = taxData; - int _loadedAt; - int get loadedAt => _$this._loadedAt; - set loadedAt(int loadedAt) => _$this._loadedAt = loadedAt; + int? _loadedAt; + int? get loadedAt => _$this._loadedAt; + set loadedAt(int? loadedAt) => _$this._loadedAt = loadedAt; - bool _isChanged; - bool get isChanged => _$this._isChanged; - set isChanged(bool isChanged) => _$this._isChanged = isChanged; + bool? _isChanged; + bool? get isChanged => _$this._isChanged; + set isChanged(bool? isChanged) => _$this._isChanged = isChanged; - int _createdAt; - int get createdAt => _$this._createdAt; - set createdAt(int createdAt) => _$this._createdAt = createdAt; + int? _createdAt; + int? get createdAt => _$this._createdAt; + set createdAt(int? createdAt) => _$this._createdAt = createdAt; - int _updatedAt; - int get updatedAt => _$this._updatedAt; - set updatedAt(int updatedAt) => _$this._updatedAt = updatedAt; + int? _updatedAt; + int? get updatedAt => _$this._updatedAt; + set updatedAt(int? updatedAt) => _$this._updatedAt = updatedAt; - int _archivedAt; - int get archivedAt => _$this._archivedAt; - set archivedAt(int archivedAt) => _$this._archivedAt = archivedAt; + int? _archivedAt; + int? get archivedAt => _$this._archivedAt; + set archivedAt(int? archivedAt) => _$this._archivedAt = archivedAt; - bool _isDeleted; - bool get isDeleted => _$this._isDeleted; - set isDeleted(bool isDeleted) => _$this._isDeleted = isDeleted; + bool? _isDeleted; + bool? get isDeleted => _$this._isDeleted; + set isDeleted(bool? isDeleted) => _$this._isDeleted = isDeleted; - String _createdUserId; - String get createdUserId => _$this._createdUserId; - set createdUserId(String createdUserId) => + String? _createdUserId; + String? get createdUserId => _$this._createdUserId; + set createdUserId(String? createdUserId) => _$this._createdUserId = createdUserId; - String _assignedUserId; - String get assignedUserId => _$this._assignedUserId; - set assignedUserId(String assignedUserId) => + String? _assignedUserId; + String? get assignedUserId => _$this._assignedUserId; + set assignedUserId(String? assignedUserId) => _$this._assignedUserId = assignedUserId; - EntityType _entityType; - EntityType get entityType => _$this._entityType; - set entityType(EntityType entityType) => _$this._entityType = entityType; + EntityType? _entityType; + EntityType? get entityType => _$this._entityType; + set entityType(EntityType? entityType) => _$this._entityType = entityType; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; InvoiceEntityBuilder() { InvoiceEntity._initializeBuilder(this); @@ -2490,7 +2490,7 @@ class InvoiceEntityBuilder } @override - void update(void Function(InvoiceEntityBuilder) updates) { + void update(void Function(InvoiceEntityBuilder)? updates) { if (updates != null) updates(this); } @@ -2588,7 +2588,7 @@ class InvoiceEntityBuilder entityType: entityType, id: BuiltValueNullFieldError.checkNotNull(id, r'InvoiceEntity', 'id')); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'recurringDates'; _recurringDates?.build(); @@ -2638,7 +2638,7 @@ class _$InvoiceItemEntity extends InvoiceItemEntity { @override final double taxRate3; @override - final String typeId; + final String? typeId; @override final String customValue1; @override @@ -2650,40 +2650,40 @@ class _$InvoiceItemEntity extends InvoiceItemEntity { @override final double discount; @override - final String taskId; + final String? taskId; @override - final String expenseId; + final String? expenseId; @override - final int createdAt; + final int? createdAt; @override final String taxCategoryId; factory _$InvoiceItemEntity( - [void Function(InvoiceItemEntityBuilder) updates]) => + [void Function(InvoiceItemEntityBuilder)? updates]) => (new InvoiceItemEntityBuilder()..update(updates))._build(); _$InvoiceItemEntity._( - {this.productKey, - this.notes, - this.cost, - this.productCost, - this.quantity, - this.taxName1, - this.taxRate1, - this.taxName2, - this.taxRate2, - this.taxName3, - this.taxRate3, + {required this.productKey, + required this.notes, + required this.cost, + required this.productCost, + required this.quantity, + required this.taxName1, + required this.taxRate1, + required this.taxName2, + required this.taxRate2, + required this.taxName3, + required this.taxRate3, this.typeId, - this.customValue1, - this.customValue2, - this.customValue3, - this.customValue4, - this.discount, + required this.customValue1, + required this.customValue2, + required this.customValue3, + required this.customValue4, + required this.discount, this.taskId, this.expenseId, this.createdAt, - this.taxCategoryId}) + required this.taxCategoryId}) : super._() { BuiltValueNullFieldError.checkNotNull( productKey, r'InvoiceItemEntity', 'productKey'); @@ -2754,10 +2754,10 @@ class _$InvoiceItemEntity extends InvoiceItemEntity { taxCategoryId == other.taxCategoryId; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, productKey.hashCode); _$hash = $jc(_$hash, notes.hashCode); @@ -2814,91 +2814,91 @@ class _$InvoiceItemEntity extends InvoiceItemEntity { class InvoiceItemEntityBuilder implements Builder { - _$InvoiceItemEntity _$v; + _$InvoiceItemEntity? _$v; - String _productKey; - String get productKey => _$this._productKey; - set productKey(String productKey) => _$this._productKey = productKey; + String? _productKey; + String? get productKey => _$this._productKey; + set productKey(String? productKey) => _$this._productKey = productKey; - String _notes; - String get notes => _$this._notes; - set notes(String notes) => _$this._notes = notes; + String? _notes; + String? get notes => _$this._notes; + set notes(String? notes) => _$this._notes = notes; - double _cost; - double get cost => _$this._cost; - set cost(double cost) => _$this._cost = cost; + double? _cost; + double? get cost => _$this._cost; + set cost(double? cost) => _$this._cost = cost; - double _productCost; - double get productCost => _$this._productCost; - set productCost(double productCost) => _$this._productCost = productCost; + double? _productCost; + double? get productCost => _$this._productCost; + set productCost(double? productCost) => _$this._productCost = productCost; - double _quantity; - double get quantity => _$this._quantity; - set quantity(double quantity) => _$this._quantity = quantity; + double? _quantity; + double? get quantity => _$this._quantity; + set quantity(double? quantity) => _$this._quantity = quantity; - String _taxName1; - String get taxName1 => _$this._taxName1; - set taxName1(String taxName1) => _$this._taxName1 = taxName1; + String? _taxName1; + String? get taxName1 => _$this._taxName1; + set taxName1(String? taxName1) => _$this._taxName1 = taxName1; - double _taxRate1; - double get taxRate1 => _$this._taxRate1; - set taxRate1(double taxRate1) => _$this._taxRate1 = taxRate1; + double? _taxRate1; + double? get taxRate1 => _$this._taxRate1; + set taxRate1(double? taxRate1) => _$this._taxRate1 = taxRate1; - String _taxName2; - String get taxName2 => _$this._taxName2; - set taxName2(String taxName2) => _$this._taxName2 = taxName2; + String? _taxName2; + String? get taxName2 => _$this._taxName2; + set taxName2(String? taxName2) => _$this._taxName2 = taxName2; - double _taxRate2; - double get taxRate2 => _$this._taxRate2; - set taxRate2(double taxRate2) => _$this._taxRate2 = taxRate2; + double? _taxRate2; + double? get taxRate2 => _$this._taxRate2; + set taxRate2(double? taxRate2) => _$this._taxRate2 = taxRate2; - String _taxName3; - String get taxName3 => _$this._taxName3; - set taxName3(String taxName3) => _$this._taxName3 = taxName3; + String? _taxName3; + String? get taxName3 => _$this._taxName3; + set taxName3(String? taxName3) => _$this._taxName3 = taxName3; - double _taxRate3; - double get taxRate3 => _$this._taxRate3; - set taxRate3(double taxRate3) => _$this._taxRate3 = taxRate3; + double? _taxRate3; + double? get taxRate3 => _$this._taxRate3; + set taxRate3(double? taxRate3) => _$this._taxRate3 = taxRate3; - String _typeId; - String get typeId => _$this._typeId; - set typeId(String typeId) => _$this._typeId = typeId; + String? _typeId; + String? get typeId => _$this._typeId; + set typeId(String? typeId) => _$this._typeId = typeId; - String _customValue1; - String get customValue1 => _$this._customValue1; - set customValue1(String customValue1) => _$this._customValue1 = customValue1; + String? _customValue1; + String? get customValue1 => _$this._customValue1; + set customValue1(String? customValue1) => _$this._customValue1 = customValue1; - String _customValue2; - String get customValue2 => _$this._customValue2; - set customValue2(String customValue2) => _$this._customValue2 = customValue2; + String? _customValue2; + String? get customValue2 => _$this._customValue2; + set customValue2(String? customValue2) => _$this._customValue2 = customValue2; - String _customValue3; - String get customValue3 => _$this._customValue3; - set customValue3(String customValue3) => _$this._customValue3 = customValue3; + String? _customValue3; + String? get customValue3 => _$this._customValue3; + set customValue3(String? customValue3) => _$this._customValue3 = customValue3; - String _customValue4; - String get customValue4 => _$this._customValue4; - set customValue4(String customValue4) => _$this._customValue4 = customValue4; + String? _customValue4; + String? get customValue4 => _$this._customValue4; + set customValue4(String? customValue4) => _$this._customValue4 = customValue4; - double _discount; - double get discount => _$this._discount; - set discount(double discount) => _$this._discount = discount; + double? _discount; + double? get discount => _$this._discount; + set discount(double? discount) => _$this._discount = discount; - String _taskId; - String get taskId => _$this._taskId; - set taskId(String taskId) => _$this._taskId = taskId; + String? _taskId; + String? get taskId => _$this._taskId; + set taskId(String? taskId) => _$this._taskId = taskId; - String _expenseId; - String get expenseId => _$this._expenseId; - set expenseId(String expenseId) => _$this._expenseId = expenseId; + String? _expenseId; + String? get expenseId => _$this._expenseId; + set expenseId(String? expenseId) => _$this._expenseId = expenseId; - int _createdAt; - int get createdAt => _$this._createdAt; - set createdAt(int createdAt) => _$this._createdAt = createdAt; + int? _createdAt; + int? get createdAt => _$this._createdAt; + set createdAt(int? createdAt) => _$this._createdAt = createdAt; - String _taxCategoryId; - String get taxCategoryId => _$this._taxCategoryId; - set taxCategoryId(String taxCategoryId) => + String? _taxCategoryId; + String? get taxCategoryId => _$this._taxCategoryId; + set taxCategoryId(String? taxCategoryId) => _$this._taxCategoryId = taxCategoryId; InvoiceItemEntityBuilder() { @@ -2941,7 +2941,7 @@ class InvoiceItemEntityBuilder } @override - void update(void Function(InvoiceItemEntityBuilder) updates) { + void update(void Function(InvoiceItemEntityBuilder)? updates) { if (updates != null) updates(this); } @@ -3002,9 +3002,9 @@ class _$InvitationEntity extends InvitationEntity { @override final String openedDate; @override - final String emailStatus; + final String? emailStatus; @override - final bool isChanged; + final bool? isChanged; @override final int createdAt; @override @@ -3012,38 +3012,38 @@ class _$InvitationEntity extends InvitationEntity { @override final int archivedAt; @override - final bool isDeleted; + final bool? isDeleted; @override - final String createdUserId; + final String? createdUserId; @override - final String assignedUserId; + final String? assignedUserId; @override - final EntityType entityType; + final EntityType? entityType; @override final String id; factory _$InvitationEntity( - [void Function(InvitationEntityBuilder) updates]) => + [void Function(InvitationEntityBuilder)? updates]) => (new InvitationEntityBuilder()..update(updates))._build(); _$InvitationEntity._( - {this.key, - this.link, - this.clientContactId, - this.vendorContactId, - this.sentDate, - this.viewedDate, - this.openedDate, + {required this.key, + required this.link, + required this.clientContactId, + required this.vendorContactId, + required this.sentDate, + required this.viewedDate, + required this.openedDate, this.emailStatus, this.isChanged, - this.createdAt, - this.updatedAt, - this.archivedAt, + required this.createdAt, + required this.updatedAt, + required this.archivedAt, this.isDeleted, this.createdUserId, this.assignedUserId, this.entityType, - this.id}) + required this.id}) : super._() { BuiltValueNullFieldError.checkNotNull(key, r'InvitationEntity', 'key'); BuiltValueNullFieldError.checkNotNull(link, r'InvitationEntity', 'link'); @@ -3093,10 +3093,10 @@ class _$InvitationEntity extends InvitationEntity { id == other.id; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, key.hashCode); _$hash = $jc(_$hash, link.hashCode); @@ -3141,79 +3141,79 @@ class _$InvitationEntity extends InvitationEntity { class InvitationEntityBuilder implements Builder { - _$InvitationEntity _$v; + _$InvitationEntity? _$v; - String _key; - String get key => _$this._key; - set key(String key) => _$this._key = key; + String? _key; + String? get key => _$this._key; + set key(String? key) => _$this._key = key; - String _link; - String get link => _$this._link; - set link(String link) => _$this._link = link; + String? _link; + String? get link => _$this._link; + set link(String? link) => _$this._link = link; - String _clientContactId; - String get clientContactId => _$this._clientContactId; - set clientContactId(String clientContactId) => + String? _clientContactId; + String? get clientContactId => _$this._clientContactId; + set clientContactId(String? clientContactId) => _$this._clientContactId = clientContactId; - String _vendorContactId; - String get vendorContactId => _$this._vendorContactId; - set vendorContactId(String vendorContactId) => + String? _vendorContactId; + String? get vendorContactId => _$this._vendorContactId; + set vendorContactId(String? vendorContactId) => _$this._vendorContactId = vendorContactId; - String _sentDate; - String get sentDate => _$this._sentDate; - set sentDate(String sentDate) => _$this._sentDate = sentDate; + String? _sentDate; + String? get sentDate => _$this._sentDate; + set sentDate(String? sentDate) => _$this._sentDate = sentDate; - String _viewedDate; - String get viewedDate => _$this._viewedDate; - set viewedDate(String viewedDate) => _$this._viewedDate = viewedDate; + String? _viewedDate; + String? get viewedDate => _$this._viewedDate; + set viewedDate(String? viewedDate) => _$this._viewedDate = viewedDate; - String _openedDate; - String get openedDate => _$this._openedDate; - set openedDate(String openedDate) => _$this._openedDate = openedDate; + String? _openedDate; + String? get openedDate => _$this._openedDate; + set openedDate(String? openedDate) => _$this._openedDate = openedDate; - String _emailStatus; - String get emailStatus => _$this._emailStatus; - set emailStatus(String emailStatus) => _$this._emailStatus = emailStatus; + String? _emailStatus; + String? get emailStatus => _$this._emailStatus; + set emailStatus(String? emailStatus) => _$this._emailStatus = emailStatus; - bool _isChanged; - bool get isChanged => _$this._isChanged; - set isChanged(bool isChanged) => _$this._isChanged = isChanged; + bool? _isChanged; + bool? get isChanged => _$this._isChanged; + set isChanged(bool? isChanged) => _$this._isChanged = isChanged; - int _createdAt; - int get createdAt => _$this._createdAt; - set createdAt(int createdAt) => _$this._createdAt = createdAt; + int? _createdAt; + int? get createdAt => _$this._createdAt; + set createdAt(int? createdAt) => _$this._createdAt = createdAt; - int _updatedAt; - int get updatedAt => _$this._updatedAt; - set updatedAt(int updatedAt) => _$this._updatedAt = updatedAt; + int? _updatedAt; + int? get updatedAt => _$this._updatedAt; + set updatedAt(int? updatedAt) => _$this._updatedAt = updatedAt; - int _archivedAt; - int get archivedAt => _$this._archivedAt; - set archivedAt(int archivedAt) => _$this._archivedAt = archivedAt; + int? _archivedAt; + int? get archivedAt => _$this._archivedAt; + set archivedAt(int? archivedAt) => _$this._archivedAt = archivedAt; - bool _isDeleted; - bool get isDeleted => _$this._isDeleted; - set isDeleted(bool isDeleted) => _$this._isDeleted = isDeleted; + bool? _isDeleted; + bool? get isDeleted => _$this._isDeleted; + set isDeleted(bool? isDeleted) => _$this._isDeleted = isDeleted; - String _createdUserId; - String get createdUserId => _$this._createdUserId; - set createdUserId(String createdUserId) => + String? _createdUserId; + String? get createdUserId => _$this._createdUserId; + set createdUserId(String? createdUserId) => _$this._createdUserId = createdUserId; - String _assignedUserId; - String get assignedUserId => _$this._assignedUserId; - set assignedUserId(String assignedUserId) => + String? _assignedUserId; + String? get assignedUserId => _$this._assignedUserId; + set assignedUserId(String? assignedUserId) => _$this._assignedUserId = assignedUserId; - EntityType _entityType; - EntityType get entityType => _$this._entityType; - set entityType(EntityType entityType) => _$this._entityType = entityType; + EntityType? _entityType; + EntityType? get entityType => _$this._entityType; + set entityType(EntityType? entityType) => _$this._entityType = entityType; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; InvitationEntityBuilder() { InvitationEntity._initializeBuilder(this); @@ -3251,7 +3251,7 @@ class InvitationEntityBuilder } @override - void update(void Function(InvitationEntityBuilder) updates) { + void update(void Function(InvitationEntityBuilder)? updates) { if (updates != null) updates(this); } @@ -3299,10 +3299,11 @@ class _$InvoiceScheduleEntity extends InvoiceScheduleEntity { final String dueDate; factory _$InvoiceScheduleEntity( - [void Function(InvoiceScheduleEntityBuilder) updates]) => + [void Function(InvoiceScheduleEntityBuilder)? updates]) => (new InvoiceScheduleEntityBuilder()..update(updates))._build(); - _$InvoiceScheduleEntity._({this.sendDate, this.dueDate}) : super._() { + _$InvoiceScheduleEntity._({required this.sendDate, required this.dueDate}) + : super._() { BuiltValueNullFieldError.checkNotNull( sendDate, r'InvoiceScheduleEntity', 'sendDate'); BuiltValueNullFieldError.checkNotNull( @@ -3326,10 +3327,10 @@ class _$InvoiceScheduleEntity extends InvoiceScheduleEntity { dueDate == other.dueDate; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, sendDate.hashCode); _$hash = $jc(_$hash, dueDate.hashCode); @@ -3348,15 +3349,15 @@ class _$InvoiceScheduleEntity extends InvoiceScheduleEntity { class InvoiceScheduleEntityBuilder implements Builder { - _$InvoiceScheduleEntity _$v; + _$InvoiceScheduleEntity? _$v; - String _sendDate; - String get sendDate => _$this._sendDate; - set sendDate(String sendDate) => _$this._sendDate = sendDate; + String? _sendDate; + String? get sendDate => _$this._sendDate; + set sendDate(String? sendDate) => _$this._sendDate = sendDate; - String _dueDate; - String get dueDate => _$this._dueDate; - set dueDate(String dueDate) => _$this._dueDate = dueDate; + String? _dueDate; + String? get dueDate => _$this._dueDate; + set dueDate(String? dueDate) => _$this._dueDate = dueDate; InvoiceScheduleEntityBuilder(); @@ -3377,7 +3378,7 @@ class InvoiceScheduleEntityBuilder } @override - void update(void Function(InvoiceScheduleEntityBuilder) updates) { + void update(void Function(InvoiceScheduleEntityBuilder)? updates) { if (updates != null) updates(this); } @@ -3407,11 +3408,14 @@ class _$InvoiceHistoryEntity extends InvoiceHistoryEntity { final double amount; factory _$InvoiceHistoryEntity( - [void Function(InvoiceHistoryEntityBuilder) updates]) => + [void Function(InvoiceHistoryEntityBuilder)? updates]) => (new InvoiceHistoryEntityBuilder()..update(updates))._build(); _$InvoiceHistoryEntity._( - {this.id, this.activityId, this.createdAt, this.amount}) + {required this.id, + required this.activityId, + required this.createdAt, + required this.amount}) : super._() { BuiltValueNullFieldError.checkNotNull(id, r'InvoiceHistoryEntity', 'id'); BuiltValueNullFieldError.checkNotNull( @@ -3441,10 +3445,10 @@ class _$InvoiceHistoryEntity extends InvoiceHistoryEntity { amount == other.amount; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, id.hashCode); _$hash = $jc(_$hash, activityId.hashCode); @@ -3467,23 +3471,23 @@ class _$InvoiceHistoryEntity extends InvoiceHistoryEntity { class InvoiceHistoryEntityBuilder implements Builder { - _$InvoiceHistoryEntity _$v; + _$InvoiceHistoryEntity? _$v; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; - String _activityId; - String get activityId => _$this._activityId; - set activityId(String activityId) => _$this._activityId = activityId; + String? _activityId; + String? get activityId => _$this._activityId; + set activityId(String? activityId) => _$this._activityId = activityId; - int _createdAt; - int get createdAt => _$this._createdAt; - set createdAt(int createdAt) => _$this._createdAt = createdAt; + int? _createdAt; + int? get createdAt => _$this._createdAt; + set createdAt(int? createdAt) => _$this._createdAt = createdAt; - double _amount; - double get amount => _$this._amount; - set amount(double amount) => _$this._amount = amount; + double? _amount; + double? get amount => _$this._amount; + set amount(double? amount) => _$this._amount = amount; InvoiceHistoryEntityBuilder(); @@ -3506,7 +3510,7 @@ class InvoiceHistoryEntityBuilder } @override - void update(void Function(InvoiceHistoryEntityBuilder) updates) { + void update(void Function(InvoiceHistoryEntityBuilder)? updates) { if (updates != null) updates(this); } diff --git a/lib/data/models/mixins/invoice_mixin.dart b/lib/data/models/mixins/invoice_mixin.dart index d0db8da4c..f8b058638 100644 --- a/lib/data/models/mixins/invoice_mixin.dart +++ b/lib/data/models/mixins/invoice_mixin.dart @@ -43,7 +43,7 @@ abstract class CalculateInvoiceTotal { bool get usesInclusiveTaxes; - BuiltList get lineItems; + BuiltList get lineItems; double _calculateTaxAmount( double amount, double rate, bool useInclusiveTaxes, int precision) { @@ -57,13 +57,13 @@ abstract class CalculateInvoiceTotal { } Map calculateTaxes( - {@required bool useInclusiveTaxes, @required int precision}) { + {required bool useInclusiveTaxes, required int precision}) { double total = calculateSubtotal(precision: precision); double taxAmount; final map = {}; lineItems.forEach((item) { - final double taxRate1 = round(item.taxRate1, 3); + final double taxRate1 = round(item!.taxRate1, 3); final double taxRate2 = round(item.taxRate2, 3); final double taxRate3 = round(item.taxRate3, 3); @@ -141,7 +141,7 @@ abstract class CalculateInvoiceTotal { double total = 0; lineItems.forEach((invoiceItem) { - double lineTotal = invoiceItem.quantity * invoiceItem.cost; + double lineTotal = invoiceItem!.quantity * invoiceItem.cost; if (invoiceItem.discount != 0) { if (isAmountDiscount) { @@ -209,12 +209,12 @@ abstract class CalculateInvoiceTotal { return round(lineTotal, precision); } - double calculateTotal({@required int precision}) { + double calculateTotal({required int precision}) { double total = calculateSubtotal(precision: precision); double itemTax = 0.0; lineItems.forEach((item) { - final double qty = round(item.quantity, 5); + final double qty = round(item!.quantity, 5); final double cost = round(item.cost, 5); final double itemDiscount = round(item.discount, 5); final double taxRate1 = round(item.taxRate1, 3); @@ -302,11 +302,11 @@ abstract class CalculateInvoiceTotal { return total; } - double calculateSubtotal({@required int precision}) { + double calculateSubtotal({required int precision}) { var total = 0.0; lineItems.forEach((item) { - final double qty = round(item.quantity, 5); + final double qty = round(item!.quantity, 5); final double cost = round(item.cost, 5); final double discount = round(item.discount, 5); diff --git a/lib/data/models/models.dart b/lib/data/models/models.dart index 598c65194..d78a62d3d 100644 --- a/lib/data/models/models.dart +++ b/lib/data/models/models.dart @@ -198,7 +198,7 @@ class EntityAction extends EnumClass { return value; } - static EntityAction newEntityType(EntityType entityType) { + static EntityAction? newEntityType(EntityType? entityType) { switch (entityType) { case EntityType.client: return EntityAction.newClient; diff --git a/lib/data/models/payment_model.dart b/lib/data/models/payment_model.dart index ff8ae89f2..85b281bce 100644 --- a/lib/data/models/payment_model.dart +++ b/lib/data/models/payment_model.dart @@ -4,6 +4,7 @@ import 'package:built_value/built_value.dart'; import 'package:built_value/serializer.dart'; // Project imports: +import 'package:collection/collection.dart' show IterableExtension; import 'package:invoiceninja_flutter/constants.dart'; import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/redux/app/app_state.dart'; @@ -76,7 +77,7 @@ class PaymentFields { abstract class PaymentEntity extends Object with BaseEntity, SelectableEntity, BelongsToClient implements Built { - factory PaymentEntity({String id, AppState state, ClientEntity client}) { + factory PaymentEntity({String? id, AppState? state, ClientEntity? client}) { final settings = getClientSettings(state, client); return _$PaymentEntity._( @@ -141,9 +142,8 @@ abstract class PaymentEntity extends Object String get number; - @nullable @BuiltValueField(wireName: 'idempotency_key') - String get idempotencyKey; + String? get idempotencyKey; @override @BuiltValueField(wireName: 'client_id') @@ -208,14 +208,11 @@ abstract class PaymentEntity extends Object @BuiltValueField(wireName: 'gateway_type_id') String get gatewayTypeId; - @nullable - bool get isApplying; + bool? get isApplying; - @nullable - bool get sendEmail; + bool? get sendEmail; - @nullable - bool get gatewayRefund; + bool? get gatewayRefund; bool get hasExchangeRate => exchangeRate != 1 && exchangeRate != 0; @@ -244,115 +241,115 @@ abstract class PaymentEntity extends Object } int compareTo({ - PaymentEntity payment, - String sortField, - bool sortAscending, - BuiltMap invoiceMap, - BuiltMap clientMap, - BuiltMap userMap, - BuiltMap paymentTypeMap, + PaymentEntity? payment, + String? sortField, + required bool sortAscending, + BuiltMap? invoiceMap, + BuiltMap? clientMap, + BuiltMap? userMap, + BuiltMap? paymentTypeMap, }) { int response = 0; - final PaymentEntity paymentA = sortAscending ? this : payment; - final PaymentEntity paymentB = sortAscending ? payment : this; + final PaymentEntity? paymentA = sortAscending ? this : payment; + final PaymentEntity? paymentB = sortAscending ? payment : this; switch (sortField) { case PaymentFields.amount: - response = paymentA.amount.compareTo(paymentB.amount); + response = paymentA!.amount.compareTo(paymentB!.amount); break; case PaymentFields.exchangeRate: - response = paymentA.exchangeRate.compareTo(paymentB.exchangeRate); + response = paymentA!.exchangeRate.compareTo(paymentB!.exchangeRate); break; case PaymentFields.refunded: - response = paymentA.refunded.compareTo(paymentB.refunded); + response = paymentA!.refunded.compareTo(paymentB!.refunded); break; case PaymentFields.number: - response = paymentA.number + response = paymentA!.number .toLowerCase() - .compareTo(paymentB.number.toLowerCase()); + .compareTo(paymentB!.number.toLowerCase()); break; case PaymentFields.transactionReference: - response = paymentA.transactionReference - .compareTo(paymentB.transactionReference); + response = paymentA!.transactionReference + .compareTo(paymentB!.transactionReference); break; case PaymentFields.date: - response = paymentA.date.compareTo(paymentB.date); + response = paymentA!.date.compareTo(paymentB!.date); break; case PaymentFields.privateNotes: - response = paymentA.privateNotes + response = paymentA!.privateNotes .toLowerCase() - .compareTo(paymentB.date.toLowerCase()); + .compareTo(paymentB!.date.toLowerCase()); break; case EntityFields.updatedAt: - response = paymentA.updatedAt.compareTo(paymentB.updatedAt); + response = paymentA!.updatedAt.compareTo(paymentB!.updatedAt); break; case EntityFields.createdAt: - response = paymentA.createdAt.compareTo(paymentB.createdAt); + response = paymentA!.createdAt.compareTo(paymentB!.createdAt); break; case EntityFields.archivedAt: - response = paymentA.archivedAt.compareTo(paymentB.archivedAt); + response = paymentA!.archivedAt.compareTo(paymentB!.archivedAt); break; case PaymentFields.status: - response = paymentA.statusId.compareTo(paymentB.statusId); + response = paymentA!.statusId.compareTo(paymentB!.statusId); break; case PaymentFields.customValue1: - response = paymentA.customValue1 + response = paymentA!.customValue1 .toLowerCase() - .compareTo(paymentB.customValue1.toLowerCase()); + .compareTo(paymentB!.customValue1.toLowerCase()); break; case PaymentFields.customValue2: - response = paymentA.customValue2 + response = paymentA!.customValue2 .toLowerCase() - .compareTo(paymentB.customValue2.toLowerCase()); + .compareTo(paymentB!.customValue2.toLowerCase()); break; case PaymentFields.customValue3: - response = paymentA.customValue3 + response = paymentA!.customValue3 .toLowerCase() - .compareTo(paymentB.customValue3.toLowerCase()); + .compareTo(paymentB!.customValue3.toLowerCase()); break; case PaymentFields.customValue4: - response = paymentA.customValue4 + response = paymentA!.customValue4 .toLowerCase() - .compareTo(paymentB.customValue4.toLowerCase()); + .compareTo(paymentB!.customValue4.toLowerCase()); break; case PaymentFields.invoiceNumber: - final invoiceA = invoiceMap[paymentA.invoiceId] ?? InvoiceEntity(); - final invoiceB = invoiceMap[paymentB.invoiceId] ?? InvoiceEntity(); + final invoiceA = invoiceMap![paymentA!.invoiceId] ?? InvoiceEntity(); + final invoiceB = invoiceMap[paymentB!.invoiceId] ?? InvoiceEntity(); response = invoiceA.number .toLowerCase() .compareTo(invoiceB.number.toLowerCase()); break; case PaymentFields.client: - final clientA = clientMap[paymentA.clientId] ?? ClientEntity(); - final clientB = clientMap[paymentB.clientId] ?? ClientEntity(); + final clientA = clientMap![paymentA!.clientId] ?? ClientEntity(); + final clientB = clientMap[paymentB!.clientId] ?? ClientEntity(); response = clientA.displayName .toLowerCase() .compareTo(clientB.displayName.toLowerCase()); break; case PaymentFields.type: - final typeA = paymentTypeMap[paymentA.typeId] ?? PaymentTypeEntity(); - final typeB = paymentTypeMap[paymentB.typeId] ?? PaymentTypeEntity(); + final typeA = paymentTypeMap![paymentA!.typeId] ?? PaymentTypeEntity(); + final typeB = paymentTypeMap[paymentB!.typeId] ?? PaymentTypeEntity(); return typeA.name.toLowerCase().compareTo(typeB.name.toLowerCase()); break; case EntityFields.assignedTo: - final userA = userMap[paymentA.assignedUserId] ?? UserEntity(); - final userB = userMap[paymentB.assignedUserId] ?? UserEntity(); + final userA = userMap![paymentA!.assignedUserId] ?? UserEntity(); + final userB = userMap[paymentB!.assignedUserId] ?? UserEntity(); response = userA.listDisplayName .toLowerCase() .compareTo(userB.listDisplayName.toLowerCase()); break; case EntityFields.createdBy: - final userA = userMap[paymentA.createdUserId] ?? UserEntity(); - final userB = userMap[paymentB.createdUserId] ?? UserEntity(); + final userA = userMap![paymentA!.createdUserId] ?? UserEntity(); + final userB = userMap[paymentB!.createdUserId] ?? UserEntity(); response = userA.listDisplayName .toLowerCase() .compareTo(userB.listDisplayName.toLowerCase()); break; case EntityFields.state: final stateA = - EntityState.valueOf(paymentA.entityState) ?? EntityState.active; + EntityState.valueOf(paymentA!.entityState) ?? EntityState.active; final stateB = - EntityState.valueOf(paymentB.entityState) ?? EntityState.active; + EntityState.valueOf(paymentB!.entityState) ?? EntityState.active; response = stateA.name.toLowerCase().compareTo(stateB.name.toLowerCase()); break; @@ -362,7 +359,7 @@ abstract class PaymentEntity extends Object } if (response == 0) { - response = payment.number.toLowerCase().compareTo(number.toLowerCase()); + response = payment!.number.toLowerCase().compareTo(number.toLowerCase()); } return response; @@ -384,7 +381,7 @@ abstract class PaymentEntity extends Object } @override - bool matchesFilter(String filter) { + bool matchesFilter(String? filter) { return matchesStrings( haystacks: [ number, @@ -400,7 +397,7 @@ abstract class PaymentEntity extends Object } @override - String matchesFilterValue(String filter) { + String? matchesFilterValue(String? filter) { return matchesStringsValue( haystacks: [ number, @@ -416,16 +413,16 @@ abstract class PaymentEntity extends Object } @override - List getActions( - {UserCompanyEntity userCompany, - ClientEntity client, + List getActions( + {UserCompanyEntity? userCompany, + ClientEntity? client, bool includeEdit = false, bool includePreview = false, bool multiselect = false}) { - final actions = []; + final actions = []; - if (!isDeleted) { - if (userCompany.canEditEntity(this)) { + if (!isDeleted!) { + if (userCompany!.canEditEntity(this)) { if (!multiselect) { if (includeEdit) { actions.add(EntityAction.edit); @@ -452,7 +449,7 @@ abstract class PaymentEntity extends Object // We're overriding the default behavior to // prevent users from restoring deleted payments - if (userCompany.canEditEntity(this) && isArchived) { + if (userCompany!.canEditEntity(this) && isArchived) { actions.add(EntityAction.restore); } @@ -479,10 +476,9 @@ abstract class PaymentEntity extends Object List get creditPaymentables => paymentables.where((p) => p.entityType == EntityType.credit).toList(); - String get invoiceId { - final invoicePaymentables = paymentables.firstWhere( - (p) => p.entityType == EntityType.invoice, - orElse: () => null); + String? get invoiceId { + final invoicePaymentables = paymentables.firstWhereOrNull( + (p) => p.entityType == EntityType.invoice); if (invoicePaymentables == null) { return null; @@ -491,8 +487,8 @@ abstract class PaymentEntity extends Object return invoicePaymentables.isEmpty ? null : invoicePaymentables.invoiceId; } - bool isBetween(String startDate, String endDate) { - return startDate.compareTo(date) <= 0 && endDate.compareTo(date) >= 0; + bool isBetween(String startDate, String? endDate) { + return startDate.compareTo(date) <= 0 && endDate!.compareTo(date) >= 0; } bool get isOnline => (companyGatewayId ?? '').isNotEmpty; @@ -509,7 +505,7 @@ abstract class PaymentEntity extends Object FormatNumberType get listDisplayAmountType => FormatNumberType.money; double get completedAmount { - if (isDeleted) { + if (isDeleted!) { return 0; } @@ -532,7 +528,7 @@ abstract class PaymentableEntity extends Object with SelectableEntity implements Built { factory PaymentableEntity( - {String id, String invoiceId, String creditId, double amount}) { + {String? id, String? invoiceId, String? creditId, double? amount}) { return _$PaymentableEntity._( id: id ?? BaseEntity.nextId, invoiceId: invoiceId ?? '', @@ -561,21 +557,17 @@ abstract class PaymentableEntity extends Object @memoized int get hashCode; - @nullable @BuiltValueField(wireName: 'created_at') - int get createdAt; + int? get createdAt; - @nullable @BuiltValueField(wireName: 'updated_at') - int get updatedAt; + int? get updatedAt; - @nullable @BuiltValueField(wireName: 'invoice_id') - String get invoiceId; + String? get invoiceId; - @nullable @BuiltValueField(wireName: 'credit_id') - String get creditId; + String? get creditId; double get amount; diff --git a/lib/data/models/payment_model.g.dart b/lib/data/models/payment_model.g.dart index dd206024d..21946336f 100644 --- a/lib/data/models/payment_model.g.dart +++ b/lib/data/models/payment_model.g.dart @@ -26,10 +26,10 @@ class _$PaymentListResponseSerializer final String wireName = 'PaymentListResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, PaymentListResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: @@ -41,21 +41,21 @@ class _$PaymentListResponseSerializer @override PaymentListResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new PaymentListResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(PaymentEntity)])) - as BuiltList); + BuiltList, const [const FullType(PaymentEntity)]))! + as BuiltList); break; } } @@ -75,10 +75,10 @@ class _$PaymentItemResponseSerializer final String wireName = 'PaymentItemResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, PaymentItemResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType(PaymentEntity)), @@ -89,19 +89,19 @@ class _$PaymentItemResponseSerializer @override PaymentItemResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new PaymentItemResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, - specifiedType: const FullType(PaymentEntity)) as PaymentEntity); + specifiedType: const FullType(PaymentEntity))! as PaymentEntity); break; } } @@ -117,9 +117,9 @@ class _$PaymentEntitySerializer implements StructuredSerializer { final String wireName = 'PaymentEntity'; @override - Iterable serialize(Serializers serializers, PaymentEntity object, + Iterable serialize(Serializers serializers, PaymentEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'amount', serializers.serialize(object.amount, specifiedType: const FullType(double)), @@ -218,7 +218,7 @@ class _$PaymentEntitySerializer implements StructuredSerializer { 'id', serializers.serialize(object.id, specifiedType: const FullType(String)), ]; - Object value; + Object? value; value = object.idempotencyKey; if (value != null) { result @@ -280,181 +280,181 @@ class _$PaymentEntitySerializer implements StructuredSerializer { @override PaymentEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new PaymentEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'amount': result.amount = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'applied': result.applied = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'refunded': result.refunded = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'number': result.number = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'idempotency_key': result.idempotencyKey = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'client_id': result.clientId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'status_id': result.statusId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'transaction_reference': result.transactionReference = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'date': result.date = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'type_id': result.typeId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'private_notes': result.privateNotes = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value1': result.customValue1 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value2': result.customValue2 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value3': result.customValue3 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value4': result.customValue4 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'exchange_rate': result.exchangeRate = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'exchange_currency_id': result.exchangeCurrencyId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'is_manual': result.isManual = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'project_id': result.projectId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'vendor_id': result.vendorId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'invitation_id': result.invitationId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'transaction_id': result.transactionId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'client_contact_id': result.clientContactId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'company_gateway_id': result.companyGatewayId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'currency_id': result.currencyId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'gateway_type_id': result.gatewayTypeId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'isApplying': result.isApplying = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'sendEmail': result.sendEmail = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'gatewayRefund': result.gatewayRefund = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'paymentables': result.paymentables.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(PaymentableEntity)])) - as BuiltList); + BuiltList, const [const FullType(PaymentableEntity)]))! + as BuiltList); break; case 'invoices': result.invoices.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(PaymentableEntity)])) - as BuiltList); + BuiltList, const [const FullType(PaymentableEntity)]))! + as BuiltList); break; case 'credits': result.credits.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(PaymentableEntity)])) - as BuiltList); + BuiltList, const [const FullType(PaymentableEntity)]))! + as BuiltList); break; case 'isChanged': result.isChanged = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'created_at': result.createdAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'updated_at': result.updatedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'archived_at': result.archivedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'is_deleted': result.isDeleted = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'user_id': result.createdUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'assigned_user_id': result.assignedUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -471,16 +471,16 @@ class _$PaymentableEntitySerializer final String wireName = 'PaymentableEntity'; @override - Iterable serialize(Serializers serializers, PaymentableEntity object, + Iterable serialize(Serializers serializers, PaymentableEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'amount', serializers.serialize(object.amount, specifiedType: const FullType(double)), 'id', serializers.serialize(object.id, specifiedType: const FullType(String)), ]; - Object value; + Object? value; value = object.createdAt; if (value != null) { result @@ -512,39 +512,39 @@ class _$PaymentableEntitySerializer @override PaymentableEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new PaymentableEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'created_at': result.createdAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int)) as int?; break; case 'updated_at': result.updatedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int)) as int?; break; case 'invoice_id': result.invoiceId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'credit_id': result.creditId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'amount': result.amount = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -558,10 +558,10 @@ class _$PaymentListResponse extends PaymentListResponse { final BuiltList data; factory _$PaymentListResponse( - [void Function(PaymentListResponseBuilder) updates]) => + [void Function(PaymentListResponseBuilder)? updates]) => (new PaymentListResponseBuilder()..update(updates))._build(); - _$PaymentListResponse._({this.data}) : super._() { + _$PaymentListResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull(data, r'PaymentListResponse', 'data'); } @@ -580,10 +580,10 @@ class _$PaymentListResponse extends PaymentListResponse { return other is PaymentListResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -600,12 +600,12 @@ class _$PaymentListResponse extends PaymentListResponse { class PaymentListResponseBuilder implements Builder { - _$PaymentListResponse _$v; + _$PaymentListResponse? _$v; - ListBuilder _data; + ListBuilder? _data; ListBuilder get data => _$this._data ??= new ListBuilder(); - set data(ListBuilder data) => _$this._data = data; + set data(ListBuilder? data) => _$this._data = data; PaymentListResponseBuilder(); @@ -625,7 +625,7 @@ class PaymentListResponseBuilder } @override - void update(void Function(PaymentListResponseBuilder) updates) { + void update(void Function(PaymentListResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -637,7 +637,7 @@ class PaymentListResponseBuilder try { _$result = _$v ?? new _$PaymentListResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -657,10 +657,10 @@ class _$PaymentItemResponse extends PaymentItemResponse { final PaymentEntity data; factory _$PaymentItemResponse( - [void Function(PaymentItemResponseBuilder) updates]) => + [void Function(PaymentItemResponseBuilder)? updates]) => (new PaymentItemResponseBuilder()..update(updates))._build(); - _$PaymentItemResponse._({this.data}) : super._() { + _$PaymentItemResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull(data, r'PaymentItemResponse', 'data'); } @@ -679,10 +679,10 @@ class _$PaymentItemResponse extends PaymentItemResponse { return other is PaymentItemResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -699,11 +699,11 @@ class _$PaymentItemResponse extends PaymentItemResponse { class PaymentItemResponseBuilder implements Builder { - _$PaymentItemResponse _$v; + _$PaymentItemResponse? _$v; - PaymentEntityBuilder _data; + PaymentEntityBuilder? _data; PaymentEntityBuilder get data => _$this._data ??= new PaymentEntityBuilder(); - set data(PaymentEntityBuilder data) => _$this._data = data; + set data(PaymentEntityBuilder? data) => _$this._data = data; PaymentItemResponseBuilder(); @@ -723,7 +723,7 @@ class PaymentItemResponseBuilder } @override - void update(void Function(PaymentItemResponseBuilder) updates) { + void update(void Function(PaymentItemResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -735,7 +735,7 @@ class PaymentItemResponseBuilder try { _$result = _$v ?? new _$PaymentItemResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -760,7 +760,7 @@ class _$PaymentEntity extends PaymentEntity { @override final String number; @override - final String idempotencyKey; + final String? idempotencyKey; @override final String clientId; @override @@ -804,11 +804,11 @@ class _$PaymentEntity extends PaymentEntity { @override final String gatewayTypeId; @override - final bool isApplying; + final bool? isApplying; @override - final bool sendEmail; + final bool? sendEmail; @override - final bool gatewayRefund; + final bool? gatewayRefund; @override final BuiltList paymentables; @override @@ -816,7 +816,7 @@ class _$PaymentEntity extends PaymentEntity { @override final BuiltList credits; @override - final bool isChanged; + final bool? isChanged; @override final int createdAt; @override @@ -824,58 +824,58 @@ class _$PaymentEntity extends PaymentEntity { @override final int archivedAt; @override - final bool isDeleted; + final bool? isDeleted; @override - final String createdUserId; + final String? createdUserId; @override - final String assignedUserId; + final String? assignedUserId; @override final String id; - factory _$PaymentEntity([void Function(PaymentEntityBuilder) updates]) => + factory _$PaymentEntity([void Function(PaymentEntityBuilder)? updates]) => (new PaymentEntityBuilder()..update(updates))._build(); _$PaymentEntity._( - {this.amount, - this.applied, - this.refunded, - this.number, + {required this.amount, + required this.applied, + required this.refunded, + required this.number, this.idempotencyKey, - this.clientId, - this.statusId, - this.transactionReference, - this.date, - this.typeId, - this.privateNotes, - this.customValue1, - this.customValue2, - this.customValue3, - this.customValue4, - this.exchangeRate, - this.exchangeCurrencyId, - this.isManual, - this.projectId, - this.vendorId, - this.invitationId, - this.transactionId, - this.clientContactId, - this.companyGatewayId, - this.currencyId, - this.gatewayTypeId, + required this.clientId, + required this.statusId, + required this.transactionReference, + required this.date, + required this.typeId, + required this.privateNotes, + required this.customValue1, + required this.customValue2, + required this.customValue3, + required this.customValue4, + required this.exchangeRate, + required this.exchangeCurrencyId, + required this.isManual, + required this.projectId, + required this.vendorId, + required this.invitationId, + required this.transactionId, + required this.clientContactId, + required this.companyGatewayId, + required this.currencyId, + required this.gatewayTypeId, this.isApplying, this.sendEmail, this.gatewayRefund, - this.paymentables, - this.invoices, - this.credits, + required this.paymentables, + required this.invoices, + required this.credits, this.isChanged, - this.createdAt, - this.updatedAt, - this.archivedAt, + required this.createdAt, + required this.updatedAt, + required this.archivedAt, this.isDeleted, this.createdUserId, this.assignedUserId, - this.id}) + required this.id}) : super._() { BuiltValueNullFieldError.checkNotNull(amount, r'PaymentEntity', 'amount'); BuiltValueNullFieldError.checkNotNull(applied, r'PaymentEntity', 'applied'); @@ -989,10 +989,10 @@ class _$PaymentEntity extends PaymentEntity { id == other.id; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, amount.hashCode); _$hash = $jc(_$hash, applied.hashCode); @@ -1087,183 +1087,183 @@ class _$PaymentEntity extends PaymentEntity { class PaymentEntityBuilder implements Builder { - _$PaymentEntity _$v; + _$PaymentEntity? _$v; - double _amount; - double get amount => _$this._amount; - set amount(double amount) => _$this._amount = amount; + double? _amount; + double? get amount => _$this._amount; + set amount(double? amount) => _$this._amount = amount; - double _applied; - double get applied => _$this._applied; - set applied(double applied) => _$this._applied = applied; + double? _applied; + double? get applied => _$this._applied; + set applied(double? applied) => _$this._applied = applied; - double _refunded; - double get refunded => _$this._refunded; - set refunded(double refunded) => _$this._refunded = refunded; + double? _refunded; + double? get refunded => _$this._refunded; + set refunded(double? refunded) => _$this._refunded = refunded; - String _number; - String get number => _$this._number; - set number(String number) => _$this._number = number; + String? _number; + String? get number => _$this._number; + set number(String? number) => _$this._number = number; - String _idempotencyKey; - String get idempotencyKey => _$this._idempotencyKey; - set idempotencyKey(String idempotencyKey) => + String? _idempotencyKey; + String? get idempotencyKey => _$this._idempotencyKey; + set idempotencyKey(String? idempotencyKey) => _$this._idempotencyKey = idempotencyKey; - String _clientId; - String get clientId => _$this._clientId; - set clientId(String clientId) => _$this._clientId = clientId; + String? _clientId; + String? get clientId => _$this._clientId; + set clientId(String? clientId) => _$this._clientId = clientId; - String _statusId; - String get statusId => _$this._statusId; - set statusId(String statusId) => _$this._statusId = statusId; + String? _statusId; + String? get statusId => _$this._statusId; + set statusId(String? statusId) => _$this._statusId = statusId; - String _transactionReference; - String get transactionReference => _$this._transactionReference; - set transactionReference(String transactionReference) => + String? _transactionReference; + String? get transactionReference => _$this._transactionReference; + set transactionReference(String? transactionReference) => _$this._transactionReference = transactionReference; - String _date; - String get date => _$this._date; - set date(String date) => _$this._date = date; + String? _date; + String? get date => _$this._date; + set date(String? date) => _$this._date = date; - String _typeId; - String get typeId => _$this._typeId; - set typeId(String typeId) => _$this._typeId = typeId; + String? _typeId; + String? get typeId => _$this._typeId; + set typeId(String? typeId) => _$this._typeId = typeId; - String _privateNotes; - String get privateNotes => _$this._privateNotes; - set privateNotes(String privateNotes) => _$this._privateNotes = privateNotes; + String? _privateNotes; + String? get privateNotes => _$this._privateNotes; + set privateNotes(String? privateNotes) => _$this._privateNotes = privateNotes; - String _customValue1; - String get customValue1 => _$this._customValue1; - set customValue1(String customValue1) => _$this._customValue1 = customValue1; + String? _customValue1; + String? get customValue1 => _$this._customValue1; + set customValue1(String? customValue1) => _$this._customValue1 = customValue1; - String _customValue2; - String get customValue2 => _$this._customValue2; - set customValue2(String customValue2) => _$this._customValue2 = customValue2; + String? _customValue2; + String? get customValue2 => _$this._customValue2; + set customValue2(String? customValue2) => _$this._customValue2 = customValue2; - String _customValue3; - String get customValue3 => _$this._customValue3; - set customValue3(String customValue3) => _$this._customValue3 = customValue3; + String? _customValue3; + String? get customValue3 => _$this._customValue3; + set customValue3(String? customValue3) => _$this._customValue3 = customValue3; - String _customValue4; - String get customValue4 => _$this._customValue4; - set customValue4(String customValue4) => _$this._customValue4 = customValue4; + String? _customValue4; + String? get customValue4 => _$this._customValue4; + set customValue4(String? customValue4) => _$this._customValue4 = customValue4; - double _exchangeRate; - double get exchangeRate => _$this._exchangeRate; - set exchangeRate(double exchangeRate) => _$this._exchangeRate = exchangeRate; + double? _exchangeRate; + double? get exchangeRate => _$this._exchangeRate; + set exchangeRate(double? exchangeRate) => _$this._exchangeRate = exchangeRate; - String _exchangeCurrencyId; - String get exchangeCurrencyId => _$this._exchangeCurrencyId; - set exchangeCurrencyId(String exchangeCurrencyId) => + String? _exchangeCurrencyId; + String? get exchangeCurrencyId => _$this._exchangeCurrencyId; + set exchangeCurrencyId(String? exchangeCurrencyId) => _$this._exchangeCurrencyId = exchangeCurrencyId; - bool _isManual; - bool get isManual => _$this._isManual; - set isManual(bool isManual) => _$this._isManual = isManual; + bool? _isManual; + bool? get isManual => _$this._isManual; + set isManual(bool? isManual) => _$this._isManual = isManual; - String _projectId; - String get projectId => _$this._projectId; - set projectId(String projectId) => _$this._projectId = projectId; + String? _projectId; + String? get projectId => _$this._projectId; + set projectId(String? projectId) => _$this._projectId = projectId; - String _vendorId; - String get vendorId => _$this._vendorId; - set vendorId(String vendorId) => _$this._vendorId = vendorId; + String? _vendorId; + String? get vendorId => _$this._vendorId; + set vendorId(String? vendorId) => _$this._vendorId = vendorId; - String _invitationId; - String get invitationId => _$this._invitationId; - set invitationId(String invitationId) => _$this._invitationId = invitationId; + String? _invitationId; + String? get invitationId => _$this._invitationId; + set invitationId(String? invitationId) => _$this._invitationId = invitationId; - String _transactionId; - String get transactionId => _$this._transactionId; - set transactionId(String transactionId) => + String? _transactionId; + String? get transactionId => _$this._transactionId; + set transactionId(String? transactionId) => _$this._transactionId = transactionId; - String _clientContactId; - String get clientContactId => _$this._clientContactId; - set clientContactId(String clientContactId) => + String? _clientContactId; + String? get clientContactId => _$this._clientContactId; + set clientContactId(String? clientContactId) => _$this._clientContactId = clientContactId; - String _companyGatewayId; - String get companyGatewayId => _$this._companyGatewayId; - set companyGatewayId(String companyGatewayId) => + String? _companyGatewayId; + String? get companyGatewayId => _$this._companyGatewayId; + set companyGatewayId(String? companyGatewayId) => _$this._companyGatewayId = companyGatewayId; - String _currencyId; - String get currencyId => _$this._currencyId; - set currencyId(String currencyId) => _$this._currencyId = currencyId; + String? _currencyId; + String? get currencyId => _$this._currencyId; + set currencyId(String? currencyId) => _$this._currencyId = currencyId; - String _gatewayTypeId; - String get gatewayTypeId => _$this._gatewayTypeId; - set gatewayTypeId(String gatewayTypeId) => + String? _gatewayTypeId; + String? get gatewayTypeId => _$this._gatewayTypeId; + set gatewayTypeId(String? gatewayTypeId) => _$this._gatewayTypeId = gatewayTypeId; - bool _isApplying; - bool get isApplying => _$this._isApplying; - set isApplying(bool isApplying) => _$this._isApplying = isApplying; + bool? _isApplying; + bool? get isApplying => _$this._isApplying; + set isApplying(bool? isApplying) => _$this._isApplying = isApplying; - bool _sendEmail; - bool get sendEmail => _$this._sendEmail; - set sendEmail(bool sendEmail) => _$this._sendEmail = sendEmail; + bool? _sendEmail; + bool? get sendEmail => _$this._sendEmail; + set sendEmail(bool? sendEmail) => _$this._sendEmail = sendEmail; - bool _gatewayRefund; - bool get gatewayRefund => _$this._gatewayRefund; - set gatewayRefund(bool gatewayRefund) => + bool? _gatewayRefund; + bool? get gatewayRefund => _$this._gatewayRefund; + set gatewayRefund(bool? gatewayRefund) => _$this._gatewayRefund = gatewayRefund; - ListBuilder _paymentables; + ListBuilder? _paymentables; ListBuilder get paymentables => _$this._paymentables ??= new ListBuilder(); - set paymentables(ListBuilder paymentables) => + set paymentables(ListBuilder? paymentables) => _$this._paymentables = paymentables; - ListBuilder _invoices; + ListBuilder? _invoices; ListBuilder get invoices => _$this._invoices ??= new ListBuilder(); - set invoices(ListBuilder invoices) => + set invoices(ListBuilder? invoices) => _$this._invoices = invoices; - ListBuilder _credits; + ListBuilder? _credits; ListBuilder get credits => _$this._credits ??= new ListBuilder(); - set credits(ListBuilder credits) => + set credits(ListBuilder? credits) => _$this._credits = credits; - bool _isChanged; - bool get isChanged => _$this._isChanged; - set isChanged(bool isChanged) => _$this._isChanged = isChanged; + bool? _isChanged; + bool? get isChanged => _$this._isChanged; + set isChanged(bool? isChanged) => _$this._isChanged = isChanged; - int _createdAt; - int get createdAt => _$this._createdAt; - set createdAt(int createdAt) => _$this._createdAt = createdAt; + int? _createdAt; + int? get createdAt => _$this._createdAt; + set createdAt(int? createdAt) => _$this._createdAt = createdAt; - int _updatedAt; - int get updatedAt => _$this._updatedAt; - set updatedAt(int updatedAt) => _$this._updatedAt = updatedAt; + int? _updatedAt; + int? get updatedAt => _$this._updatedAt; + set updatedAt(int? updatedAt) => _$this._updatedAt = updatedAt; - int _archivedAt; - int get archivedAt => _$this._archivedAt; - set archivedAt(int archivedAt) => _$this._archivedAt = archivedAt; + int? _archivedAt; + int? get archivedAt => _$this._archivedAt; + set archivedAt(int? archivedAt) => _$this._archivedAt = archivedAt; - bool _isDeleted; - bool get isDeleted => _$this._isDeleted; - set isDeleted(bool isDeleted) => _$this._isDeleted = isDeleted; + bool? _isDeleted; + bool? get isDeleted => _$this._isDeleted; + set isDeleted(bool? isDeleted) => _$this._isDeleted = isDeleted; - String _createdUserId; - String get createdUserId => _$this._createdUserId; - set createdUserId(String createdUserId) => + String? _createdUserId; + String? get createdUserId => _$this._createdUserId; + set createdUserId(String? createdUserId) => _$this._createdUserId = createdUserId; - String _assignedUserId; - String get assignedUserId => _$this._assignedUserId; - set assignedUserId(String assignedUserId) => + String? _assignedUserId; + String? get assignedUserId => _$this._assignedUserId; + set assignedUserId(String? assignedUserId) => _$this._assignedUserId = assignedUserId; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; PaymentEntityBuilder() { PaymentEntity._initializeBuilder(this); @@ -1324,7 +1324,7 @@ class PaymentEntityBuilder } @override - void update(void Function(PaymentEntityBuilder) updates) { + void update(void Function(PaymentEntityBuilder)? updates) { if (updates != null) updates(this); } @@ -1386,7 +1386,7 @@ class PaymentEntityBuilder assignedUserId: assignedUserId, id: BuiltValueNullFieldError.checkNotNull(id, r'PaymentEntity', 'id')); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'paymentables'; paymentables.build(); @@ -1407,20 +1407,20 @@ class PaymentEntityBuilder class _$PaymentableEntity extends PaymentableEntity { @override - final int createdAt; + final int? createdAt; @override - final int updatedAt; + final int? updatedAt; @override - final String invoiceId; + final String? invoiceId; @override - final String creditId; + final String? creditId; @override final double amount; @override final String id; factory _$PaymentableEntity( - [void Function(PaymentableEntityBuilder) updates]) => + [void Function(PaymentableEntityBuilder)? updates]) => (new PaymentableEntityBuilder()..update(updates))._build(); _$PaymentableEntity._( @@ -1428,8 +1428,8 @@ class _$PaymentableEntity extends PaymentableEntity { this.updatedAt, this.invoiceId, this.creditId, - this.amount, - this.id}) + required this.amount, + required this.id}) : super._() { BuiltValueNullFieldError.checkNotNull( amount, r'PaymentableEntity', 'amount'); @@ -1456,10 +1456,10 @@ class _$PaymentableEntity extends PaymentableEntity { id == other.id; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, createdAt.hashCode); _$hash = $jc(_$hash, updatedAt.hashCode); @@ -1486,31 +1486,31 @@ class _$PaymentableEntity extends PaymentableEntity { class PaymentableEntityBuilder implements Builder { - _$PaymentableEntity _$v; + _$PaymentableEntity? _$v; - int _createdAt; - int get createdAt => _$this._createdAt; - set createdAt(int createdAt) => _$this._createdAt = createdAt; + int? _createdAt; + int? get createdAt => _$this._createdAt; + set createdAt(int? createdAt) => _$this._createdAt = createdAt; - int _updatedAt; - int get updatedAt => _$this._updatedAt; - set updatedAt(int updatedAt) => _$this._updatedAt = updatedAt; + int? _updatedAt; + int? get updatedAt => _$this._updatedAt; + set updatedAt(int? updatedAt) => _$this._updatedAt = updatedAt; - String _invoiceId; - String get invoiceId => _$this._invoiceId; - set invoiceId(String invoiceId) => _$this._invoiceId = invoiceId; + String? _invoiceId; + String? get invoiceId => _$this._invoiceId; + set invoiceId(String? invoiceId) => _$this._invoiceId = invoiceId; - String _creditId; - String get creditId => _$this._creditId; - set creditId(String creditId) => _$this._creditId = creditId; + String? _creditId; + String? get creditId => _$this._creditId; + set creditId(String? creditId) => _$this._creditId = creditId; - double _amount; - double get amount => _$this._amount; - set amount(double amount) => _$this._amount = amount; + double? _amount; + double? get amount => _$this._amount; + set amount(double? amount) => _$this._amount = amount; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; PaymentableEntityBuilder(); @@ -1535,7 +1535,7 @@ class PaymentableEntityBuilder } @override - void update(void Function(PaymentableEntityBuilder) updates) { + void update(void Function(PaymentableEntityBuilder)? updates) { if (updates != null) updates(this); } diff --git a/lib/data/models/payment_term_model.dart b/lib/data/models/payment_term_model.dart index 1533c9440..0745e8958 100644 --- a/lib/data/models/payment_term_model.dart +++ b/lib/data/models/payment_term_model.dart @@ -54,7 +54,7 @@ class PaymentTermFields { abstract class PaymentTermEntity extends Object with BaseEntity, SelectableEntity implements Built { - factory PaymentTermEntity({String id, AppState state}) { + factory PaymentTermEntity({String? id, AppState? state}) { return _$PaymentTermEntity._( id: id ?? BaseEntity.nextId, isChanged: false, @@ -101,7 +101,7 @@ abstract class PaymentTermEntity extends Object numDays.compareTo(paymentTerm.numDays); @override - bool matchesFilter(String filter) { + bool matchesFilter(String? filter) { return matchesStrings( haystacks: [ '$numDays', @@ -111,7 +111,7 @@ abstract class PaymentTermEntity extends Object } @override - String matchesFilterValue(String filter) { + String? matchesFilterValue(String? filter) { return matchesStringsValue( haystacks: [ // diff --git a/lib/data/models/payment_term_model.g.dart b/lib/data/models/payment_term_model.g.dart index 81f5eee56..ecf1882fb 100644 --- a/lib/data/models/payment_term_model.g.dart +++ b/lib/data/models/payment_term_model.g.dart @@ -24,10 +24,10 @@ class _$PaymentTermListResponseSerializer final String wireName = 'PaymentTermListResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, PaymentTermListResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType( @@ -39,21 +39,21 @@ class _$PaymentTermListResponseSerializer @override PaymentTermListResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new PaymentTermListResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(PaymentTermEntity)])) - as BuiltList); + BuiltList, const [const FullType(PaymentTermEntity)]))! + as BuiltList); break; } } @@ -73,10 +73,10 @@ class _$PaymentTermItemResponseSerializer final String wireName = 'PaymentTermItemResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, PaymentTermItemResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType(PaymentTermEntity)), @@ -87,19 +87,19 @@ class _$PaymentTermItemResponseSerializer @override PaymentTermItemResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new PaymentTermItemResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, - specifiedType: const FullType(PaymentTermEntity)) + specifiedType: const FullType(PaymentTermEntity))! as PaymentTermEntity); break; } @@ -117,9 +117,9 @@ class _$PaymentTermEntitySerializer final String wireName = 'PaymentTermEntity'; @override - Iterable serialize(Serializers serializers, PaymentTermEntity object, + Iterable serialize(Serializers serializers, PaymentTermEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'name', serializers.serialize(object.name, specifiedType: const FullType(String)), 'num_days', @@ -136,7 +136,7 @@ class _$PaymentTermEntitySerializer 'id', serializers.serialize(object.id, specifiedType: const FullType(String)), ]; - Object value; + Object? value; value = object.isChanged; if (value != null) { result @@ -170,55 +170,55 @@ class _$PaymentTermEntitySerializer @override PaymentTermEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new PaymentTermEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'name': result.name = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'num_days': result.numDays = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'isChanged': result.isChanged = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'created_at': result.createdAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'updated_at': result.updatedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'archived_at': result.archivedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'is_deleted': result.isDeleted = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'user_id': result.createdUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'assigned_user_id': result.assignedUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -232,10 +232,10 @@ class _$PaymentTermListResponse extends PaymentTermListResponse { final BuiltList data; factory _$PaymentTermListResponse( - [void Function(PaymentTermListResponseBuilder) updates]) => + [void Function(PaymentTermListResponseBuilder)? updates]) => (new PaymentTermListResponseBuilder()..update(updates))._build(); - _$PaymentTermListResponse._({this.data}) : super._() { + _$PaymentTermListResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull( data, r'PaymentTermListResponse', 'data'); } @@ -255,10 +255,10 @@ class _$PaymentTermListResponse extends PaymentTermListResponse { return other is PaymentTermListResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -276,12 +276,12 @@ class _$PaymentTermListResponse extends PaymentTermListResponse { class PaymentTermListResponseBuilder implements Builder { - _$PaymentTermListResponse _$v; + _$PaymentTermListResponse? _$v; - ListBuilder _data; + ListBuilder? _data; ListBuilder get data => _$this._data ??= new ListBuilder(); - set data(ListBuilder data) => _$this._data = data; + set data(ListBuilder? data) => _$this._data = data; PaymentTermListResponseBuilder(); @@ -301,7 +301,7 @@ class PaymentTermListResponseBuilder } @override - void update(void Function(PaymentTermListResponseBuilder) updates) { + void update(void Function(PaymentTermListResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -313,7 +313,7 @@ class PaymentTermListResponseBuilder try { _$result = _$v ?? new _$PaymentTermListResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -333,10 +333,10 @@ class _$PaymentTermItemResponse extends PaymentTermItemResponse { final PaymentTermEntity data; factory _$PaymentTermItemResponse( - [void Function(PaymentTermItemResponseBuilder) updates]) => + [void Function(PaymentTermItemResponseBuilder)? updates]) => (new PaymentTermItemResponseBuilder()..update(updates))._build(); - _$PaymentTermItemResponse._({this.data}) : super._() { + _$PaymentTermItemResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull( data, r'PaymentTermItemResponse', 'data'); } @@ -356,10 +356,10 @@ class _$PaymentTermItemResponse extends PaymentTermItemResponse { return other is PaymentTermItemResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -377,12 +377,12 @@ class _$PaymentTermItemResponse extends PaymentTermItemResponse { class PaymentTermItemResponseBuilder implements Builder { - _$PaymentTermItemResponse _$v; + _$PaymentTermItemResponse? _$v; - PaymentTermEntityBuilder _data; + PaymentTermEntityBuilder? _data; PaymentTermEntityBuilder get data => _$this._data ??= new PaymentTermEntityBuilder(); - set data(PaymentTermEntityBuilder data) => _$this._data = data; + set data(PaymentTermEntityBuilder? data) => _$this._data = data; PaymentTermItemResponseBuilder(); @@ -402,7 +402,7 @@ class PaymentTermItemResponseBuilder } @override - void update(void Function(PaymentTermItemResponseBuilder) updates) { + void update(void Function(PaymentTermItemResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -414,7 +414,7 @@ class PaymentTermItemResponseBuilder try { _$result = _$v ?? new _$PaymentTermItemResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -435,7 +435,7 @@ class _$PaymentTermEntity extends PaymentTermEntity { @override final int numDays; @override - final bool isChanged; + final bool? isChanged; @override final int createdAt; @override @@ -443,29 +443,29 @@ class _$PaymentTermEntity extends PaymentTermEntity { @override final int archivedAt; @override - final bool isDeleted; + final bool? isDeleted; @override - final String createdUserId; + final String? createdUserId; @override - final String assignedUserId; + final String? assignedUserId; @override final String id; factory _$PaymentTermEntity( - [void Function(PaymentTermEntityBuilder) updates]) => + [void Function(PaymentTermEntityBuilder)? updates]) => (new PaymentTermEntityBuilder()..update(updates))._build(); _$PaymentTermEntity._( - {this.name, - this.numDays, + {required this.name, + required this.numDays, this.isChanged, - this.createdAt, - this.updatedAt, - this.archivedAt, + required this.createdAt, + required this.updatedAt, + required this.archivedAt, this.isDeleted, this.createdUserId, this.assignedUserId, - this.id}) + required this.id}) : super._() { BuiltValueNullFieldError.checkNotNull(name, r'PaymentTermEntity', 'name'); BuiltValueNullFieldError.checkNotNull( @@ -503,10 +503,10 @@ class _$PaymentTermEntity extends PaymentTermEntity { id == other.id; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, name.hashCode); _$hash = $jc(_$hash, numDays.hashCode); @@ -541,49 +541,49 @@ class _$PaymentTermEntity extends PaymentTermEntity { class PaymentTermEntityBuilder implements Builder { - _$PaymentTermEntity _$v; + _$PaymentTermEntity? _$v; - String _name; - String get name => _$this._name; - set name(String name) => _$this._name = name; + String? _name; + String? get name => _$this._name; + set name(String? name) => _$this._name = name; - int _numDays; - int get numDays => _$this._numDays; - set numDays(int numDays) => _$this._numDays = numDays; + int? _numDays; + int? get numDays => _$this._numDays; + set numDays(int? numDays) => _$this._numDays = numDays; - bool _isChanged; - bool get isChanged => _$this._isChanged; - set isChanged(bool isChanged) => _$this._isChanged = isChanged; + bool? _isChanged; + bool? get isChanged => _$this._isChanged; + set isChanged(bool? isChanged) => _$this._isChanged = isChanged; - int _createdAt; - int get createdAt => _$this._createdAt; - set createdAt(int createdAt) => _$this._createdAt = createdAt; + int? _createdAt; + int? get createdAt => _$this._createdAt; + set createdAt(int? createdAt) => _$this._createdAt = createdAt; - int _updatedAt; - int get updatedAt => _$this._updatedAt; - set updatedAt(int updatedAt) => _$this._updatedAt = updatedAt; + int? _updatedAt; + int? get updatedAt => _$this._updatedAt; + set updatedAt(int? updatedAt) => _$this._updatedAt = updatedAt; - int _archivedAt; - int get archivedAt => _$this._archivedAt; - set archivedAt(int archivedAt) => _$this._archivedAt = archivedAt; + int? _archivedAt; + int? get archivedAt => _$this._archivedAt; + set archivedAt(int? archivedAt) => _$this._archivedAt = archivedAt; - bool _isDeleted; - bool get isDeleted => _$this._isDeleted; - set isDeleted(bool isDeleted) => _$this._isDeleted = isDeleted; + bool? _isDeleted; + bool? get isDeleted => _$this._isDeleted; + set isDeleted(bool? isDeleted) => _$this._isDeleted = isDeleted; - String _createdUserId; - String get createdUserId => _$this._createdUserId; - set createdUserId(String createdUserId) => + String? _createdUserId; + String? get createdUserId => _$this._createdUserId; + set createdUserId(String? createdUserId) => _$this._createdUserId = createdUserId; - String _assignedUserId; - String get assignedUserId => _$this._assignedUserId; - set assignedUserId(String assignedUserId) => + String? _assignedUserId; + String? get assignedUserId => _$this._assignedUserId; + set assignedUserId(String? assignedUserId) => _$this._assignedUserId = assignedUserId; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; PaymentTermEntityBuilder(); @@ -612,7 +612,7 @@ class PaymentTermEntityBuilder } @override - void update(void Function(PaymentTermEntityBuilder) updates) { + void update(void Function(PaymentTermEntityBuilder)? updates) { if (updates != null) updates(this); } diff --git a/lib/data/models/product_model.dart b/lib/data/models/product_model.dart index 050a7af6e..0baf6f71b 100644 --- a/lib/data/models/product_model.dart +++ b/lib/data/models/product_model.dart @@ -77,7 +77,7 @@ class ProductFields { abstract class ProductEntity extends Object with BaseEntity, SelectableEntity implements Built { - factory ProductEntity({String id, AppState state}) { + factory ProductEntity({String? id, AppState? state}) { return _$ProductEntity._( id: id ?? BaseEntity.nextId, isChanged: false, @@ -202,89 +202,89 @@ abstract class ProductEntity extends Object FormatNumberType get listDisplayAmountType => FormatNumberType.money; int compareTo( - ProductEntity product, [ - String sortField, + ProductEntity? product, [ + String? sortField, bool sortAscending = true, - BuiltMap userMap, + BuiltMap? userMap, ]) { int response = 0; - final ProductEntity productA = sortAscending ? this : product; - final ProductEntity productB = sortAscending ? product : this; + final ProductEntity? productA = sortAscending ? this : product; + final ProductEntity? productB = sortAscending ? product : this; switch (sortField) { case ProductFields.productKey: - response = productA.productKey + response = productA!.productKey .toLowerCase() - .compareTo(productB.productKey.toLowerCase()); + .compareTo(productB!.productKey.toLowerCase()); break; case ProductFields.price: - response = productA.price.compareTo(productB.price); + response = productA!.price.compareTo(productB!.price); break; case ProductFields.cost: - response = productA.cost.compareTo(productB.cost); + response = productA!.cost.compareTo(productB!.cost); break; case ProductFields.quantity: - response = productA.quantity.compareTo(productB.quantity); + response = productA!.quantity.compareTo(productB!.quantity); break; case ProductFields.updatedAt: - response = productA.updatedAt.compareTo(productB.updatedAt); + response = productA!.updatedAt.compareTo(productB!.updatedAt); break; case EntityFields.createdAt: - response = productA.createdAt.compareTo(productB.createdAt); + response = productA!.createdAt.compareTo(productB!.createdAt); break; case ProductFields.archivedAt: - response = productA.archivedAt.compareTo(productB.archivedAt); + response = productA!.archivedAt.compareTo(productB!.archivedAt); break; case ProductFields.description: - response = productA.notes + response = productA!.notes .toLowerCase() - .compareTo(productB.notes.toLowerCase()); + .compareTo(productB!.notes.toLowerCase()); break; case EntityFields.assignedTo: - final userA = userMap[productA.assignedUserId] ?? UserEntity(); - final userB = userMap[productB.assignedUserId] ?? UserEntity(); + final userA = userMap![productA!.assignedUserId] ?? UserEntity(); + final userB = userMap[productB!.assignedUserId] ?? UserEntity(); response = userA.listDisplayName .toLowerCase() .compareTo(userB.listDisplayName.toLowerCase()); break; case EntityFields.createdBy: - final userA = userMap[productA.createdUserId] ?? UserEntity(); - final userB = userMap[productB.createdUserId] ?? UserEntity(); + final userA = userMap![productA!.createdUserId] ?? UserEntity(); + final userB = userMap[productB!.createdUserId] ?? UserEntity(); response = userA.listDisplayName .toLowerCase() .compareTo(userB.listDisplayName.toLowerCase()); break; case EntityFields.state: final stateA = - EntityState.valueOf(productA.entityState) ?? EntityState.active; + EntityState.valueOf(productA!.entityState) ?? EntityState.active; final stateB = - EntityState.valueOf(productB.entityState) ?? EntityState.active; + EntityState.valueOf(productB!.entityState) ?? EntityState.active; response = stateA.name.toLowerCase().compareTo(stateB.name.toLowerCase()); break; case ProductFields.customValue1: - response = productA.customValue1 + response = productA!.customValue1 .toLowerCase() - .compareTo(productB.customValue1.toLowerCase()); + .compareTo(productB!.customValue1.toLowerCase()); break; case ProductFields.customValue2: - response = productA.customValue2 + response = productA!.customValue2 .toLowerCase() - .compareTo(productB.customValue2.toLowerCase()); + .compareTo(productB!.customValue2.toLowerCase()); break; case ProductFields.customValue3: - response = productA.customValue3 + response = productA!.customValue3 .toLowerCase() - .compareTo(productB.customValue3.toLowerCase()); + .compareTo(productB!.customValue3.toLowerCase()); break; case ProductFields.customValue4: - response = productA.customValue4 + response = productA!.customValue4 .toLowerCase() - .compareTo(productB.customValue4.toLowerCase()); + .compareTo(productB!.customValue4.toLowerCase()); break; case ProductFields.documents: response = - productA.documents.length.compareTo(productB.documents.length); + productA!.documents.length.compareTo(productB!.documents.length); break; default: print('## ERROR: sort by product.$sortField is not implemented'); @@ -292,14 +292,14 @@ abstract class ProductEntity extends Object } if (response == 0) { - response = productA.price.compareTo(productB.price); + response = productA!.price.compareTo(productB!.price); } return response; } @override - bool matchesFilter(String filter) { + bool matchesFilter(String? filter) { return matchesStrings( haystacks: [ productKey, @@ -314,7 +314,7 @@ abstract class ProductEntity extends Object } @override - String matchesFilterValue(String filter) { + String? matchesFilterValue(String? filter) { return matchesStringsValue( haystacks: [ notes, @@ -328,40 +328,40 @@ abstract class ProductEntity extends Object } @override - List getActions( - {UserCompanyEntity userCompany, - ClientEntity client, + List getActions( + {UserCompanyEntity? userCompany, + ClientEntity? client, bool includeEdit = false, bool includePreview = false, bool multiselect = false}) { - final actions = []; + final actions = []; - if (!isDeleted) { - if (!multiselect && includeEdit && userCompany.canEditEntity(this)) { + if (!isDeleted!) { + if (!multiselect && includeEdit && userCompany!.canEditEntity(this)) { actions.add(EntityAction.edit); } - if (userCompany.canCreate(EntityType.invoice) && !isDeleted) { + if (userCompany!.canCreate(EntityType.invoice) && !isDeleted!) { actions.add(EntityAction.newInvoice); } - if (userCompany.canCreate(EntityType.purchaseOrder) && !isDeleted) { + if (userCompany.canCreate(EntityType.purchaseOrder) && !isDeleted!) { actions.add(EntityAction.newPurchaseOrder); } - final store = StoreProvider.of(navigatorKey.currentContext); - final company = store.state.company; + final store = StoreProvider.of(navigatorKey.currentContext!); + final company = store.state.company!; if (company.calculateTaxes) { actions.add(EntityAction.setTaxCategory); } } - if (userCompany.canCreate(EntityType.product) && !multiselect) { + if (userCompany!.canCreate(EntityType.product) && !multiselect) { actions.add(EntityAction.clone); } - if (!isDeleted && multiselect) { + if (!isDeleted! && multiselect) { actions.add(EntityAction.documents); } diff --git a/lib/data/models/product_model.g.dart b/lib/data/models/product_model.g.dart index ce4826605..3d6d2424e 100644 --- a/lib/data/models/product_model.g.dart +++ b/lib/data/models/product_model.g.dart @@ -24,10 +24,10 @@ class _$ProductListResponseSerializer final String wireName = 'ProductListResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, ProductListResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: @@ -39,21 +39,21 @@ class _$ProductListResponseSerializer @override ProductListResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ProductListResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(ProductEntity)])) - as BuiltList); + BuiltList, const [const FullType(ProductEntity)]))! + as BuiltList); break; } } @@ -73,10 +73,10 @@ class _$ProductItemResponseSerializer final String wireName = 'ProductItemResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, ProductItemResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType(ProductEntity)), @@ -87,19 +87,19 @@ class _$ProductItemResponseSerializer @override ProductItemResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ProductItemResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, - specifiedType: const FullType(ProductEntity)) as ProductEntity); + specifiedType: const FullType(ProductEntity))! as ProductEntity); break; } } @@ -115,9 +115,9 @@ class _$ProductEntitySerializer implements StructuredSerializer { final String wireName = 'ProductEntity'; @override - Iterable serialize(Serializers serializers, ProductEntity object, + Iterable serialize(Serializers serializers, ProductEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'product_key', serializers.serialize(object.productKey, specifiedType: const FullType(String)), @@ -196,7 +196,7 @@ class _$ProductEntitySerializer implements StructuredSerializer { 'id', serializers.serialize(object.id, specifiedType: const FullType(String)), ]; - Object value; + Object? value; value = object.isChanged; if (value != null) { result @@ -230,137 +230,137 @@ class _$ProductEntitySerializer implements StructuredSerializer { @override ProductEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ProductEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'product_key': result.productKey = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'notes': result.notes = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'cost': result.cost = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'price': result.price = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'quantity': result.quantity = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'tax_name1': result.taxName1 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'tax_rate1': result.taxRate1 = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'tax_name2': result.taxName2 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'tax_rate2': result.taxRate2 = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'tax_name3': result.taxName3 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'tax_rate3': result.taxRate3 = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'custom_value1': result.customValue1 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value2': result.customValue2 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value3': result.customValue3 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value4': result.customValue4 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'in_stock_quantity': result.stockQuantity = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'stock_notification_threshold': result.stockNotificationThreshold = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'stock_notification': result.stockNotification = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'product_image': result.imageUrl = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'max_quantity': result.maxQuantity = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'tax_id': result.taxCategoryId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'documents': result.documents.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(DocumentEntity)])) - as BuiltList); + BuiltList, const [const FullType(DocumentEntity)]))! + as BuiltList); break; case 'isChanged': result.isChanged = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'created_at': result.createdAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'updated_at': result.updatedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'archived_at': result.archivedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'is_deleted': result.isDeleted = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'user_id': result.createdUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'assigned_user_id': result.assignedUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -374,10 +374,10 @@ class _$ProductListResponse extends ProductListResponse { final BuiltList data; factory _$ProductListResponse( - [void Function(ProductListResponseBuilder) updates]) => + [void Function(ProductListResponseBuilder)? updates]) => (new ProductListResponseBuilder()..update(updates))._build(); - _$ProductListResponse._({this.data}) : super._() { + _$ProductListResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull(data, r'ProductListResponse', 'data'); } @@ -396,10 +396,10 @@ class _$ProductListResponse extends ProductListResponse { return other is ProductListResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -416,12 +416,12 @@ class _$ProductListResponse extends ProductListResponse { class ProductListResponseBuilder implements Builder { - _$ProductListResponse _$v; + _$ProductListResponse? _$v; - ListBuilder _data; + ListBuilder? _data; ListBuilder get data => _$this._data ??= new ListBuilder(); - set data(ListBuilder data) => _$this._data = data; + set data(ListBuilder? data) => _$this._data = data; ProductListResponseBuilder(); @@ -441,7 +441,7 @@ class ProductListResponseBuilder } @override - void update(void Function(ProductListResponseBuilder) updates) { + void update(void Function(ProductListResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -453,7 +453,7 @@ class ProductListResponseBuilder try { _$result = _$v ?? new _$ProductListResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -473,10 +473,10 @@ class _$ProductItemResponse extends ProductItemResponse { final ProductEntity data; factory _$ProductItemResponse( - [void Function(ProductItemResponseBuilder) updates]) => + [void Function(ProductItemResponseBuilder)? updates]) => (new ProductItemResponseBuilder()..update(updates))._build(); - _$ProductItemResponse._({this.data}) : super._() { + _$ProductItemResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull(data, r'ProductItemResponse', 'data'); } @@ -495,10 +495,10 @@ class _$ProductItemResponse extends ProductItemResponse { return other is ProductItemResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -515,11 +515,11 @@ class _$ProductItemResponse extends ProductItemResponse { class ProductItemResponseBuilder implements Builder { - _$ProductItemResponse _$v; + _$ProductItemResponse? _$v; - ProductEntityBuilder _data; + ProductEntityBuilder? _data; ProductEntityBuilder get data => _$this._data ??= new ProductEntityBuilder(); - set data(ProductEntityBuilder data) => _$this._data = data; + set data(ProductEntityBuilder? data) => _$this._data = data; ProductItemResponseBuilder(); @@ -539,7 +539,7 @@ class ProductItemResponseBuilder } @override - void update(void Function(ProductItemResponseBuilder) updates) { + void update(void Function(ProductItemResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -551,7 +551,7 @@ class ProductItemResponseBuilder try { _$result = _$v ?? new _$ProductItemResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -612,7 +612,7 @@ class _$ProductEntity extends ProductEntity { @override final BuiltList documents; @override - final bool isChanged; + final bool? isChanged; @override final int createdAt; @override @@ -620,48 +620,48 @@ class _$ProductEntity extends ProductEntity { @override final int archivedAt; @override - final bool isDeleted; + final bool? isDeleted; @override - final String createdUserId; + final String? createdUserId; @override - final String assignedUserId; + final String? assignedUserId; @override final String id; - factory _$ProductEntity([void Function(ProductEntityBuilder) updates]) => + factory _$ProductEntity([void Function(ProductEntityBuilder)? updates]) => (new ProductEntityBuilder()..update(updates))._build(); _$ProductEntity._( - {this.productKey, - this.notes, - this.cost, - this.price, - this.quantity, - this.taxName1, - this.taxRate1, - this.taxName2, - this.taxRate2, - this.taxName3, - this.taxRate3, - this.customValue1, - this.customValue2, - this.customValue3, - this.customValue4, - this.stockQuantity, - this.stockNotificationThreshold, - this.stockNotification, - this.imageUrl, - this.maxQuantity, - this.taxCategoryId, - this.documents, + {required this.productKey, + required this.notes, + required this.cost, + required this.price, + required this.quantity, + required this.taxName1, + required this.taxRate1, + required this.taxName2, + required this.taxRate2, + required this.taxName3, + required this.taxRate3, + required this.customValue1, + required this.customValue2, + required this.customValue3, + required this.customValue4, + required this.stockQuantity, + required this.stockNotificationThreshold, + required this.stockNotification, + required this.imageUrl, + required this.maxQuantity, + required this.taxCategoryId, + required this.documents, this.isChanged, - this.createdAt, - this.updatedAt, - this.archivedAt, + required this.createdAt, + required this.updatedAt, + required this.archivedAt, this.isDeleted, this.createdUserId, this.assignedUserId, - this.id}) + required this.id}) : super._() { BuiltValueNullFieldError.checkNotNull( productKey, r'ProductEntity', 'productKey'); @@ -756,10 +756,10 @@ class _$ProductEntity extends ProductEntity { id == other.id; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, productKey.hashCode); _$hash = $jc(_$hash, notes.hashCode); @@ -834,134 +834,135 @@ class _$ProductEntity extends ProductEntity { class ProductEntityBuilder implements Builder { - _$ProductEntity _$v; + _$ProductEntity? _$v; - String _productKey; - String get productKey => _$this._productKey; - set productKey(String productKey) => _$this._productKey = productKey; + String? _productKey; + String? get productKey => _$this._productKey; + set productKey(String? productKey) => _$this._productKey = productKey; - String _notes; - String get notes => _$this._notes; - set notes(String notes) => _$this._notes = notes; + String? _notes; + String? get notes => _$this._notes; + set notes(String? notes) => _$this._notes = notes; - double _cost; - double get cost => _$this._cost; - set cost(double cost) => _$this._cost = cost; + double? _cost; + double? get cost => _$this._cost; + set cost(double? cost) => _$this._cost = cost; - double _price; - double get price => _$this._price; - set price(double price) => _$this._price = price; + double? _price; + double? get price => _$this._price; + set price(double? price) => _$this._price = price; - double _quantity; - double get quantity => _$this._quantity; - set quantity(double quantity) => _$this._quantity = quantity; + double? _quantity; + double? get quantity => _$this._quantity; + set quantity(double? quantity) => _$this._quantity = quantity; - String _taxName1; - String get taxName1 => _$this._taxName1; - set taxName1(String taxName1) => _$this._taxName1 = taxName1; + String? _taxName1; + String? get taxName1 => _$this._taxName1; + set taxName1(String? taxName1) => _$this._taxName1 = taxName1; - double _taxRate1; - double get taxRate1 => _$this._taxRate1; - set taxRate1(double taxRate1) => _$this._taxRate1 = taxRate1; + double? _taxRate1; + double? get taxRate1 => _$this._taxRate1; + set taxRate1(double? taxRate1) => _$this._taxRate1 = taxRate1; - String _taxName2; - String get taxName2 => _$this._taxName2; - set taxName2(String taxName2) => _$this._taxName2 = taxName2; + String? _taxName2; + String? get taxName2 => _$this._taxName2; + set taxName2(String? taxName2) => _$this._taxName2 = taxName2; - double _taxRate2; - double get taxRate2 => _$this._taxRate2; - set taxRate2(double taxRate2) => _$this._taxRate2 = taxRate2; + double? _taxRate2; + double? get taxRate2 => _$this._taxRate2; + set taxRate2(double? taxRate2) => _$this._taxRate2 = taxRate2; - String _taxName3; - String get taxName3 => _$this._taxName3; - set taxName3(String taxName3) => _$this._taxName3 = taxName3; + String? _taxName3; + String? get taxName3 => _$this._taxName3; + set taxName3(String? taxName3) => _$this._taxName3 = taxName3; - double _taxRate3; - double get taxRate3 => _$this._taxRate3; - set taxRate3(double taxRate3) => _$this._taxRate3 = taxRate3; + double? _taxRate3; + double? get taxRate3 => _$this._taxRate3; + set taxRate3(double? taxRate3) => _$this._taxRate3 = taxRate3; - String _customValue1; - String get customValue1 => _$this._customValue1; - set customValue1(String customValue1) => _$this._customValue1 = customValue1; + String? _customValue1; + String? get customValue1 => _$this._customValue1; + set customValue1(String? customValue1) => _$this._customValue1 = customValue1; - String _customValue2; - String get customValue2 => _$this._customValue2; - set customValue2(String customValue2) => _$this._customValue2 = customValue2; + String? _customValue2; + String? get customValue2 => _$this._customValue2; + set customValue2(String? customValue2) => _$this._customValue2 = customValue2; - String _customValue3; - String get customValue3 => _$this._customValue3; - set customValue3(String customValue3) => _$this._customValue3 = customValue3; + String? _customValue3; + String? get customValue3 => _$this._customValue3; + set customValue3(String? customValue3) => _$this._customValue3 = customValue3; - String _customValue4; - String get customValue4 => _$this._customValue4; - set customValue4(String customValue4) => _$this._customValue4 = customValue4; + String? _customValue4; + String? get customValue4 => _$this._customValue4; + set customValue4(String? customValue4) => _$this._customValue4 = customValue4; - int _stockQuantity; - int get stockQuantity => _$this._stockQuantity; - set stockQuantity(int stockQuantity) => _$this._stockQuantity = stockQuantity; + int? _stockQuantity; + int? get stockQuantity => _$this._stockQuantity; + set stockQuantity(int? stockQuantity) => + _$this._stockQuantity = stockQuantity; - int _stockNotificationThreshold; - int get stockNotificationThreshold => _$this._stockNotificationThreshold; - set stockNotificationThreshold(int stockNotificationThreshold) => + int? _stockNotificationThreshold; + int? get stockNotificationThreshold => _$this._stockNotificationThreshold; + set stockNotificationThreshold(int? stockNotificationThreshold) => _$this._stockNotificationThreshold = stockNotificationThreshold; - bool _stockNotification; - bool get stockNotification => _$this._stockNotification; - set stockNotification(bool stockNotification) => + bool? _stockNotification; + bool? get stockNotification => _$this._stockNotification; + set stockNotification(bool? stockNotification) => _$this._stockNotification = stockNotification; - String _imageUrl; - String get imageUrl => _$this._imageUrl; - set imageUrl(String imageUrl) => _$this._imageUrl = imageUrl; + String? _imageUrl; + String? get imageUrl => _$this._imageUrl; + set imageUrl(String? imageUrl) => _$this._imageUrl = imageUrl; - int _maxQuantity; - int get maxQuantity => _$this._maxQuantity; - set maxQuantity(int maxQuantity) => _$this._maxQuantity = maxQuantity; + int? _maxQuantity; + int? get maxQuantity => _$this._maxQuantity; + set maxQuantity(int? maxQuantity) => _$this._maxQuantity = maxQuantity; - String _taxCategoryId; - String get taxCategoryId => _$this._taxCategoryId; - set taxCategoryId(String taxCategoryId) => + String? _taxCategoryId; + String? get taxCategoryId => _$this._taxCategoryId; + set taxCategoryId(String? taxCategoryId) => _$this._taxCategoryId = taxCategoryId; - ListBuilder _documents; + ListBuilder? _documents; ListBuilder get documents => _$this._documents ??= new ListBuilder(); - set documents(ListBuilder documents) => + set documents(ListBuilder? documents) => _$this._documents = documents; - bool _isChanged; - bool get isChanged => _$this._isChanged; - set isChanged(bool isChanged) => _$this._isChanged = isChanged; + bool? _isChanged; + bool? get isChanged => _$this._isChanged; + set isChanged(bool? isChanged) => _$this._isChanged = isChanged; - int _createdAt; - int get createdAt => _$this._createdAt; - set createdAt(int createdAt) => _$this._createdAt = createdAt; + int? _createdAt; + int? get createdAt => _$this._createdAt; + set createdAt(int? createdAt) => _$this._createdAt = createdAt; - int _updatedAt; - int get updatedAt => _$this._updatedAt; - set updatedAt(int updatedAt) => _$this._updatedAt = updatedAt; + int? _updatedAt; + int? get updatedAt => _$this._updatedAt; + set updatedAt(int? updatedAt) => _$this._updatedAt = updatedAt; - int _archivedAt; - int get archivedAt => _$this._archivedAt; - set archivedAt(int archivedAt) => _$this._archivedAt = archivedAt; + int? _archivedAt; + int? get archivedAt => _$this._archivedAt; + set archivedAt(int? archivedAt) => _$this._archivedAt = archivedAt; - bool _isDeleted; - bool get isDeleted => _$this._isDeleted; - set isDeleted(bool isDeleted) => _$this._isDeleted = isDeleted; + bool? _isDeleted; + bool? get isDeleted => _$this._isDeleted; + set isDeleted(bool? isDeleted) => _$this._isDeleted = isDeleted; - String _createdUserId; - String get createdUserId => _$this._createdUserId; - set createdUserId(String createdUserId) => + String? _createdUserId; + String? get createdUserId => _$this._createdUserId; + set createdUserId(String? createdUserId) => _$this._createdUserId = createdUserId; - String _assignedUserId; - String get assignedUserId => _$this._assignedUserId; - set assignedUserId(String assignedUserId) => + String? _assignedUserId; + String? get assignedUserId => _$this._assignedUserId; + set assignedUserId(String? assignedUserId) => _$this._assignedUserId = assignedUserId; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; ProductEntityBuilder() { ProductEntity._initializeBuilder(this); @@ -1012,7 +1013,7 @@ class ProductEntityBuilder } @override - void update(void Function(ProductEntityBuilder) updates) { + void update(void Function(ProductEntityBuilder)? updates) { if (updates != null) updates(this); } @@ -1064,7 +1065,7 @@ class ProductEntityBuilder assignedUserId: assignedUserId, id: BuiltValueNullFieldError.checkNotNull(id, r'ProductEntity', 'id')); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'documents'; documents.build(); diff --git a/lib/data/models/project_model.dart b/lib/data/models/project_model.dart index 239b2e04e..e560c0e0b 100644 --- a/lib/data/models/project_model.dart +++ b/lib/data/models/project_model.dart @@ -73,10 +73,10 @@ abstract class ProjectEntity extends Object with BaseEntity, SelectableEntity, BelongsToClient implements Built { factory ProjectEntity({ - String id, - AppState state, - ClientEntity client, - UserEntity user, + String? id, + AppState? state, + ClientEntity? client, + UserEntity? user, }) { return _$ProjectEntity._( id: id ?? BaseEntity.nextId, @@ -166,21 +166,21 @@ abstract class ProjectEntity extends Object BuiltList get documents; @override - List getActions( - {UserCompanyEntity userCompany, - ClientEntity client, + List getActions( + {UserCompanyEntity? userCompany, + ClientEntity? client, bool includeEdit = false, bool includePreview = false, bool multiselect = false}) { - final actions = []; + final actions = []; - if (!multiselect && !isDeleted) { - if (includeEdit && userCompany.canEditEntity(this)) { + if (!multiselect && !isDeleted!) { + if (includeEdit && userCompany!.canEditEntity(this)) { actions.add(EntityAction.edit); } if (isActive) { - if (userCompany.canCreate(EntityType.task)) { + if (userCompany!.canCreate(EntityType.task)) { actions.add(EntityAction.newTask); } if (userCompany.canCreate(EntityType.expense)) { @@ -189,7 +189,7 @@ abstract class ProjectEntity extends Object } } - if (userCompany.canCreate(EntityType.invoice) && !isDeleted) { + if (userCompany!.canCreate(EntityType.invoice) && !isDeleted!) { actions.add(EntityAction.invoiceProject); } @@ -197,7 +197,7 @@ abstract class ProjectEntity extends Object actions.add(EntityAction.clone); } - if (!isDeleted && multiselect) { + if (!isDeleted! && multiselect) { actions.add(EntityAction.documents); } @@ -209,108 +209,108 @@ abstract class ProjectEntity extends Object } int compareTo( - ProjectEntity project, + ProjectEntity? project, String sortField, bool sortAscending, - BuiltMap userMap, - BuiltMap clientMap) { + BuiltMap userMap, + BuiltMap clientMap) { int response = 0; - final ProjectEntity projectA = sortAscending ? this : project; - final ProjectEntity projectB = sortAscending ? project : this; + final ProjectEntity? projectA = sortAscending ? this : project; + final ProjectEntity? projectB = sortAscending ? project : this; switch (sortField) { case ProjectFields.name: response = - projectA.name.toLowerCase().compareTo(projectB.name.toLowerCase()); + projectA!.name.toLowerCase().compareTo(projectB!.name.toLowerCase()); break; case ProjectFields.taskRate: - response = projectA.taskRate.compareTo(projectB.taskRate); + response = projectA!.taskRate.compareTo(projectB!.taskRate); break; case ProjectFields.client: - final clientA = clientMap[projectA.clientId] ?? ClientEntity(); - final clientB = clientMap[projectB.clientId] ?? ClientEntity(); + final clientA = clientMap[projectA!.clientId] ?? ClientEntity(); + final clientB = clientMap[projectB!.clientId] ?? ClientEntity(); response = removeDiacritics(clientA.listDisplayName) .toLowerCase() .compareTo(removeDiacritics(clientB.listDisplayName).toLowerCase()); break; case ProjectFields.clientNumber: - final clientA = clientMap[projectA.clientId] ?? ClientEntity(); - final clientB = clientMap[projectB.clientId] ?? ClientEntity(); + final clientA = clientMap[projectA!.clientId] ?? ClientEntity(); + final clientB = clientMap[projectB!.clientId] ?? ClientEntity(); response = clientA.number .toLowerCase() .compareTo(clientB.number.toLowerCase()); break; case ProjectFields.clientIdNumber: - final clientA = clientMap[projectA.clientId] ?? ClientEntity(); - final clientB = clientMap[projectB.clientId] ?? ClientEntity(); + final clientA = clientMap[projectA!.clientId] ?? ClientEntity(); + final clientB = clientMap[projectB!.clientId] ?? ClientEntity(); response = clientA.idNumber .toLowerCase() .compareTo(clientB.idNumber.toLowerCase()); break; case ProjectFields.dueDate: - response = projectA.dueDate.compareTo(projectB.dueDate); + response = projectA!.dueDate.compareTo(projectB!.dueDate); break; case ProjectFields.privateNotes: - response = projectA.privateNotes.compareTo(projectB.privateNotes); + response = projectA!.privateNotes.compareTo(projectB!.privateNotes); break; case ProjectFields.publicNotes: - response = projectA.publicNotes.compareTo(projectB.publicNotes); + response = projectA!.publicNotes.compareTo(projectB!.publicNotes); break; case ProjectFields.budgetedHours: - response = projectA.budgetedHours.compareTo(projectB.budgetedHours); + response = projectA!.budgetedHours.compareTo(projectB!.budgetedHours); break; case ProjectFields.totalHours: - response = projectA.totalHours.compareTo(projectB.totalHours); + response = projectA!.totalHours.compareTo(projectB!.totalHours); break; case EntityFields.state: final stateA = - EntityState.valueOf(projectA.entityState) ?? EntityState.active; + EntityState.valueOf(projectA!.entityState) ?? EntityState.active; final stateB = - EntityState.valueOf(projectB.entityState) ?? EntityState.active; + EntityState.valueOf(projectB!.entityState) ?? EntityState.active; response = stateA.name.toLowerCase().compareTo(stateB.name.toLowerCase()); break; case EntityFields.createdAt: - response = projectA.createdAt.compareTo(projectB.createdAt); + response = projectA!.createdAt.compareTo(projectB!.createdAt); break; case ProjectFields.archivedAt: - response = projectA.archivedAt.compareTo(projectB.archivedAt); + response = projectA!.archivedAt.compareTo(projectB!.archivedAt); break; case ProjectFields.updatedAt: - response = projectA.updatedAt.compareTo(projectB.updatedAt); + response = projectA!.updatedAt.compareTo(projectB!.updatedAt); break; case EntityFields.assignedTo: - final userA = userMap[projectA.assignedUserId] ?? UserEntity(); - final userB = userMap[projectB.assignedUserId] ?? UserEntity(); + final userA = userMap[projectA!.assignedUserId] ?? UserEntity(); + final userB = userMap[projectB!.assignedUserId] ?? UserEntity(); response = userA.listDisplayName .toLowerCase() .compareTo(userB.listDisplayName.toLowerCase()); break; case EntityFields.createdBy: - final userA = userMap[projectA.createdUserId] ?? UserEntity(); - final userB = userMap[projectB.createdUserId] ?? UserEntity(); + final userA = userMap[projectA!.createdUserId] ?? UserEntity(); + final userB = userMap[projectB!.createdUserId] ?? UserEntity(); response = userA.listDisplayName .toLowerCase() .compareTo(userB.listDisplayName.toLowerCase()); break; case ProjectFields.documents: response = - projectA.documents.length.compareTo(projectB.documents.length); + projectA!.documents.length.compareTo(projectB!.documents.length); break; case ProjectFields.number: - response = (projectA.number ?? '').compareTo(projectB.number ?? ''); + response = (projectA!.number ?? '').compareTo(projectB!.number ?? ''); break; case ProjectFields.customValue1: - response = projectA.customValue1.compareTo(projectB.customValue1); + response = projectA!.customValue1.compareTo(projectB!.customValue1); break; case ProjectFields.customValue2: - response = projectA.customValue2.compareTo(projectB.customValue2); + response = projectA!.customValue2.compareTo(projectB!.customValue2); break; case ProjectFields.customValue3: - response = projectA.customValue3.compareTo(projectB.customValue3); + response = projectA!.customValue3.compareTo(projectB!.customValue3); break; case ProjectFields.customValue4: - response = projectA.customValue4.compareTo(projectB.customValue4); + response = projectA!.customValue4.compareTo(projectB!.customValue4); break; default: print('## ERROR: sort by project.$sortField is not implemented'); @@ -318,7 +318,7 @@ abstract class ProjectEntity extends Object } if (response == 0) { - response = project.number.toLowerCase().compareTo(number.toLowerCase()); + response = project!.number.toLowerCase().compareTo(number.toLowerCase()); } return response; @@ -328,7 +328,7 @@ abstract class ProjectEntity extends Object name.toLowerCase().contains(filter.toLowerCase()); @override - bool matchesFilter(String filter) { + bool matchesFilter(String? filter) { return matchesStrings( haystacks: [ name, @@ -345,7 +345,7 @@ abstract class ProjectEntity extends Object } @override - String matchesFilterValue(String filter) { + String? matchesFilterValue(String? filter) { return matchesStringsValue( haystacks: [ name, @@ -367,7 +367,7 @@ abstract class ProjectEntity extends Object } @override - double get listDisplayAmount => null; + double? get listDisplayAmount => null; bool get hasClient => clientId != null && clientId.isNotEmpty; diff --git a/lib/data/models/project_model.g.dart b/lib/data/models/project_model.g.dart index ebbb0ecb5..f4abd9f75 100644 --- a/lib/data/models/project_model.g.dart +++ b/lib/data/models/project_model.g.dart @@ -24,10 +24,10 @@ class _$ProjectListResponseSerializer final String wireName = 'ProjectListResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, ProjectListResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: @@ -39,21 +39,21 @@ class _$ProjectListResponseSerializer @override ProjectListResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ProjectListResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(ProjectEntity)])) - as BuiltList); + BuiltList, const [const FullType(ProjectEntity)]))! + as BuiltList); break; } } @@ -73,10 +73,10 @@ class _$ProjectItemResponseSerializer final String wireName = 'ProjectItemResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, ProjectItemResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType(ProjectEntity)), @@ -87,19 +87,19 @@ class _$ProjectItemResponseSerializer @override ProjectItemResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ProjectItemResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, - specifiedType: const FullType(ProjectEntity)) as ProjectEntity); + specifiedType: const FullType(ProjectEntity))! as ProjectEntity); break; } } @@ -115,9 +115,9 @@ class _$ProjectEntitySerializer implements StructuredSerializer { final String wireName = 'ProjectEntity'; @override - Iterable serialize(Serializers serializers, ProjectEntity object, + Iterable serialize(Serializers serializers, ProjectEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'name', serializers.serialize(object.name, specifiedType: const FullType(String)), 'color', @@ -175,7 +175,7 @@ class _$ProjectEntitySerializer implements StructuredSerializer { 'id', serializers.serialize(object.id, specifiedType: const FullType(String)), ]; - Object value; + Object? value; value = object.isChanged; if (value != null) { result @@ -209,109 +209,109 @@ class _$ProjectEntitySerializer implements StructuredSerializer { @override ProjectEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ProjectEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'name': result.name = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'color': result.color = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'client_id': result.clientId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'task_rate': result.taskRate = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'due_date': result.dueDate = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'private_notes': result.privateNotes = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'public_notes': result.publicNotes = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'budgeted_hours': result.budgetedHours = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'custom_value1': result.customValue1 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value2': result.customValue2 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value3': result.customValue3 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value4': result.customValue4 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'number': result.number = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'current_hours': result.totalHours = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'documents': result.documents.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(DocumentEntity)])) - as BuiltList); + BuiltList, const [const FullType(DocumentEntity)]))! + as BuiltList); break; case 'isChanged': result.isChanged = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'created_at': result.createdAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'updated_at': result.updatedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'archived_at': result.archivedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'is_deleted': result.isDeleted = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'user_id': result.createdUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'assigned_user_id': result.assignedUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -325,10 +325,10 @@ class _$ProjectListResponse extends ProjectListResponse { final BuiltList data; factory _$ProjectListResponse( - [void Function(ProjectListResponseBuilder) updates]) => + [void Function(ProjectListResponseBuilder)? updates]) => (new ProjectListResponseBuilder()..update(updates))._build(); - _$ProjectListResponse._({this.data}) : super._() { + _$ProjectListResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull(data, r'ProjectListResponse', 'data'); } @@ -347,10 +347,10 @@ class _$ProjectListResponse extends ProjectListResponse { return other is ProjectListResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -367,12 +367,12 @@ class _$ProjectListResponse extends ProjectListResponse { class ProjectListResponseBuilder implements Builder { - _$ProjectListResponse _$v; + _$ProjectListResponse? _$v; - ListBuilder _data; + ListBuilder? _data; ListBuilder get data => _$this._data ??= new ListBuilder(); - set data(ListBuilder data) => _$this._data = data; + set data(ListBuilder? data) => _$this._data = data; ProjectListResponseBuilder(); @@ -392,7 +392,7 @@ class ProjectListResponseBuilder } @override - void update(void Function(ProjectListResponseBuilder) updates) { + void update(void Function(ProjectListResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -404,7 +404,7 @@ class ProjectListResponseBuilder try { _$result = _$v ?? new _$ProjectListResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -424,10 +424,10 @@ class _$ProjectItemResponse extends ProjectItemResponse { final ProjectEntity data; factory _$ProjectItemResponse( - [void Function(ProjectItemResponseBuilder) updates]) => + [void Function(ProjectItemResponseBuilder)? updates]) => (new ProjectItemResponseBuilder()..update(updates))._build(); - _$ProjectItemResponse._({this.data}) : super._() { + _$ProjectItemResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull(data, r'ProjectItemResponse', 'data'); } @@ -446,10 +446,10 @@ class _$ProjectItemResponse extends ProjectItemResponse { return other is ProjectItemResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -466,11 +466,11 @@ class _$ProjectItemResponse extends ProjectItemResponse { class ProjectItemResponseBuilder implements Builder { - _$ProjectItemResponse _$v; + _$ProjectItemResponse? _$v; - ProjectEntityBuilder _data; + ProjectEntityBuilder? _data; ProjectEntityBuilder get data => _$this._data ??= new ProjectEntityBuilder(); - set data(ProjectEntityBuilder data) => _$this._data = data; + set data(ProjectEntityBuilder? data) => _$this._data = data; ProjectItemResponseBuilder(); @@ -490,7 +490,7 @@ class ProjectItemResponseBuilder } @override - void update(void Function(ProjectItemResponseBuilder) updates) { + void update(void Function(ProjectItemResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -502,7 +502,7 @@ class ProjectItemResponseBuilder try { _$result = _$v ?? new _$ProjectItemResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -549,7 +549,7 @@ class _$ProjectEntity extends ProjectEntity { @override final BuiltList documents; @override - final bool isChanged; + final bool? isChanged; @override final int createdAt; @override @@ -557,41 +557,41 @@ class _$ProjectEntity extends ProjectEntity { @override final int archivedAt; @override - final bool isDeleted; + final bool? isDeleted; @override - final String createdUserId; + final String? createdUserId; @override - final String assignedUserId; + final String? assignedUserId; @override final String id; - factory _$ProjectEntity([void Function(ProjectEntityBuilder) updates]) => + factory _$ProjectEntity([void Function(ProjectEntityBuilder)? updates]) => (new ProjectEntityBuilder()..update(updates))._build(); _$ProjectEntity._( - {this.name, - this.color, - this.clientId, - this.taskRate, - this.dueDate, - this.privateNotes, - this.publicNotes, - this.budgetedHours, - this.customValue1, - this.customValue2, - this.customValue3, - this.customValue4, - this.number, - this.totalHours, - this.documents, + {required this.name, + required this.color, + required this.clientId, + required this.taskRate, + required this.dueDate, + required this.privateNotes, + required this.publicNotes, + required this.budgetedHours, + required this.customValue1, + required this.customValue2, + required this.customValue3, + required this.customValue4, + required this.number, + required this.totalHours, + required this.documents, this.isChanged, - this.createdAt, - this.updatedAt, - this.archivedAt, + required this.createdAt, + required this.updatedAt, + required this.archivedAt, this.isDeleted, this.createdUserId, this.assignedUserId, - this.id}) + required this.id}) : super._() { BuiltValueNullFieldError.checkNotNull(name, r'ProjectEntity', 'name'); BuiltValueNullFieldError.checkNotNull(color, r'ProjectEntity', 'color'); @@ -664,10 +664,10 @@ class _$ProjectEntity extends ProjectEntity { id == other.id; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, name.hashCode); _$hash = $jc(_$hash, color.hashCode); @@ -728,104 +728,104 @@ class _$ProjectEntity extends ProjectEntity { class ProjectEntityBuilder implements Builder { - _$ProjectEntity _$v; + _$ProjectEntity? _$v; - String _name; - String get name => _$this._name; - set name(String name) => _$this._name = name; + String? _name; + String? get name => _$this._name; + set name(String? name) => _$this._name = name; - String _color; - String get color => _$this._color; - set color(String color) => _$this._color = color; + String? _color; + String? get color => _$this._color; + set color(String? color) => _$this._color = color; - String _clientId; - String get clientId => _$this._clientId; - set clientId(String clientId) => _$this._clientId = clientId; + String? _clientId; + String? get clientId => _$this._clientId; + set clientId(String? clientId) => _$this._clientId = clientId; - double _taskRate; - double get taskRate => _$this._taskRate; - set taskRate(double taskRate) => _$this._taskRate = taskRate; + double? _taskRate; + double? get taskRate => _$this._taskRate; + set taskRate(double? taskRate) => _$this._taskRate = taskRate; - String _dueDate; - String get dueDate => _$this._dueDate; - set dueDate(String dueDate) => _$this._dueDate = dueDate; + String? _dueDate; + String? get dueDate => _$this._dueDate; + set dueDate(String? dueDate) => _$this._dueDate = dueDate; - String _privateNotes; - String get privateNotes => _$this._privateNotes; - set privateNotes(String privateNotes) => _$this._privateNotes = privateNotes; + String? _privateNotes; + String? get privateNotes => _$this._privateNotes; + set privateNotes(String? privateNotes) => _$this._privateNotes = privateNotes; - String _publicNotes; - String get publicNotes => _$this._publicNotes; - set publicNotes(String publicNotes) => _$this._publicNotes = publicNotes; + String? _publicNotes; + String? get publicNotes => _$this._publicNotes; + set publicNotes(String? publicNotes) => _$this._publicNotes = publicNotes; - double _budgetedHours; - double get budgetedHours => _$this._budgetedHours; - set budgetedHours(double budgetedHours) => + double? _budgetedHours; + double? get budgetedHours => _$this._budgetedHours; + set budgetedHours(double? budgetedHours) => _$this._budgetedHours = budgetedHours; - String _customValue1; - String get customValue1 => _$this._customValue1; - set customValue1(String customValue1) => _$this._customValue1 = customValue1; + String? _customValue1; + String? get customValue1 => _$this._customValue1; + set customValue1(String? customValue1) => _$this._customValue1 = customValue1; - String _customValue2; - String get customValue2 => _$this._customValue2; - set customValue2(String customValue2) => _$this._customValue2 = customValue2; + String? _customValue2; + String? get customValue2 => _$this._customValue2; + set customValue2(String? customValue2) => _$this._customValue2 = customValue2; - String _customValue3; - String get customValue3 => _$this._customValue3; - set customValue3(String customValue3) => _$this._customValue3 = customValue3; + String? _customValue3; + String? get customValue3 => _$this._customValue3; + set customValue3(String? customValue3) => _$this._customValue3 = customValue3; - String _customValue4; - String get customValue4 => _$this._customValue4; - set customValue4(String customValue4) => _$this._customValue4 = customValue4; + String? _customValue4; + String? get customValue4 => _$this._customValue4; + set customValue4(String? customValue4) => _$this._customValue4 = customValue4; - String _number; - String get number => _$this._number; - set number(String number) => _$this._number = number; + String? _number; + String? get number => _$this._number; + set number(String? number) => _$this._number = number; - double _totalHours; - double get totalHours => _$this._totalHours; - set totalHours(double totalHours) => _$this._totalHours = totalHours; + double? _totalHours; + double? get totalHours => _$this._totalHours; + set totalHours(double? totalHours) => _$this._totalHours = totalHours; - ListBuilder _documents; + ListBuilder? _documents; ListBuilder get documents => _$this._documents ??= new ListBuilder(); - set documents(ListBuilder documents) => + set documents(ListBuilder? documents) => _$this._documents = documents; - bool _isChanged; - bool get isChanged => _$this._isChanged; - set isChanged(bool isChanged) => _$this._isChanged = isChanged; + bool? _isChanged; + bool? get isChanged => _$this._isChanged; + set isChanged(bool? isChanged) => _$this._isChanged = isChanged; - int _createdAt; - int get createdAt => _$this._createdAt; - set createdAt(int createdAt) => _$this._createdAt = createdAt; + int? _createdAt; + int? get createdAt => _$this._createdAt; + set createdAt(int? createdAt) => _$this._createdAt = createdAt; - int _updatedAt; - int get updatedAt => _$this._updatedAt; - set updatedAt(int updatedAt) => _$this._updatedAt = updatedAt; + int? _updatedAt; + int? get updatedAt => _$this._updatedAt; + set updatedAt(int? updatedAt) => _$this._updatedAt = updatedAt; - int _archivedAt; - int get archivedAt => _$this._archivedAt; - set archivedAt(int archivedAt) => _$this._archivedAt = archivedAt; + int? _archivedAt; + int? get archivedAt => _$this._archivedAt; + set archivedAt(int? archivedAt) => _$this._archivedAt = archivedAt; - bool _isDeleted; - bool get isDeleted => _$this._isDeleted; - set isDeleted(bool isDeleted) => _$this._isDeleted = isDeleted; + bool? _isDeleted; + bool? get isDeleted => _$this._isDeleted; + set isDeleted(bool? isDeleted) => _$this._isDeleted = isDeleted; - String _createdUserId; - String get createdUserId => _$this._createdUserId; - set createdUserId(String createdUserId) => + String? _createdUserId; + String? get createdUserId => _$this._createdUserId; + set createdUserId(String? createdUserId) => _$this._createdUserId = createdUserId; - String _assignedUserId; - String get assignedUserId => _$this._assignedUserId; - set assignedUserId(String assignedUserId) => + String? _assignedUserId; + String? get assignedUserId => _$this._assignedUserId; + set assignedUserId(String? assignedUserId) => _$this._assignedUserId = assignedUserId; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; ProjectEntityBuilder() { ProjectEntity._initializeBuilder(this); @@ -869,7 +869,7 @@ class ProjectEntityBuilder } @override - void update(void Function(ProjectEntityBuilder) updates) { + void update(void Function(ProjectEntityBuilder)? updates) { if (updates != null) updates(this); } @@ -914,7 +914,7 @@ class ProjectEntityBuilder assignedUserId: assignedUserId, id: BuiltValueNullFieldError.checkNotNull(id, r'ProjectEntity', 'id')); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'documents'; documents.build(); diff --git a/lib/data/models/schedule_model.dart b/lib/data/models/schedule_model.dart index 8472e338c..2379cc246 100644 --- a/lib/data/models/schedule_model.dart +++ b/lib/data/models/schedule_model.dart @@ -54,7 +54,7 @@ class ScheduleFields { abstract class ScheduleEntity extends Object with BaseEntity implements Built { - factory ScheduleEntity(String template, {String id, AppState state}) { + factory ScheduleEntity(String template, {String? id, AppState? state}) { return _$ScheduleEntity._( id: id ?? BaseEntity.nextId, isChanged: false, @@ -109,17 +109,17 @@ abstract class ScheduleEntity extends Object EntityType get entityType => EntityType.schedule; @override - List getActions( - {UserCompanyEntity userCompany, - ClientEntity client, + List getActions( + {UserCompanyEntity? userCompany, + ClientEntity? client, bool includeEdit = false, bool multiselect = false}) { - final actions = []; + final actions = []; - if (!isDeleted && + if (!isDeleted! && !multiselect && includeEdit && - userCompany.canEditEntity(this)) { + userCompany!.canEditEntity(this)) { actions.add(EntityAction.edit); } @@ -130,18 +130,18 @@ abstract class ScheduleEntity extends Object return actions..addAll(super.getActions(userCompany: userCompany)); } - int compareTo(ScheduleEntity schedule, String sortField, bool sortAscending) { + int compareTo(ScheduleEntity? schedule, String sortField, bool sortAscending) { int response = 0; final scheduleA = sortAscending ? this : schedule; final scheduleB = sortAscending ? schedule : this; switch (sortField) { case ScheduleFields.nextRun: - response = scheduleA.nextRun.compareTo(scheduleB.nextRun); + response = scheduleA!.nextRun.compareTo(scheduleB!.nextRun); break; default: - response = scheduleA.template.compareTo(scheduleB.template); + response = scheduleA!.template.compareTo(scheduleB!.template); break; } @@ -154,7 +154,7 @@ abstract class ScheduleEntity extends Object } @override - bool matchesFilter(String filter) { + bool matchesFilter(String? filter) { return matchesStrings( haystacks: [ template, @@ -164,7 +164,7 @@ abstract class ScheduleEntity extends Object } @override - String matchesFilterValue(String filter) { + String? matchesFilterValue(String? filter) { return matchesStringsValue( haystacks: [ template, @@ -174,16 +174,16 @@ abstract class ScheduleEntity extends Object } @override - String get listDisplayName { - final localization = AppLocalization.of(navigatorKey.currentContext); + String? get listDisplayName { + final localization = AppLocalization.of(navigatorKey.currentContext!)!; return localization.lookup(template); } @override - double get listDisplayAmount => null; + double? get listDisplayAmount => null; @override - FormatNumberType get listDisplayAmountType => null; + FormatNumberType? get listDisplayAmountType => null; static Serializer get serializer => _$scheduleEntitySerializer; @@ -223,39 +223,30 @@ abstract class ScheduleParameters @memoized int get hashCode; - @nullable @BuiltValueField(wireName: 'date_range') - String get dateRange; + String? get dateRange; - @nullable @BuiltValueField(wireName: 'show_payments_table') - bool get showPaymentsTable; + bool? get showPaymentsTable; - @nullable @BuiltValueField(wireName: 'show_credits_table') - bool get showCreditsTable; + bool? get showCreditsTable; - @nullable @BuiltValueField(wireName: 'show_aging_table') - bool get showAgingTable; + bool? get showAgingTable; - @nullable @BuiltValueField(wireName: 'only_clients_with_invoices') - bool get onlyClientsWithInvoices; + bool? get onlyClientsWithInvoices; - @nullable - String get status; + String? get status; - @nullable - BuiltList get clients; + BuiltList? get clients; - @nullable @BuiltValueField(wireName: 'entity') - String get entityType; + String? get entityType; - @nullable @BuiltValueField(wireName: 'entity_id') - String get entityId; + String? get entityId; static Serializer get serializer => _$scheduleParametersSerializer; diff --git a/lib/data/models/schedule_model.g.dart b/lib/data/models/schedule_model.g.dart index 34dfff54b..571a9ba36 100644 --- a/lib/data/models/schedule_model.g.dart +++ b/lib/data/models/schedule_model.g.dart @@ -26,10 +26,10 @@ class _$ScheduleListResponseSerializer final String wireName = 'ScheduleListResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, ScheduleListResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType( @@ -41,21 +41,21 @@ class _$ScheduleListResponseSerializer @override ScheduleListResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ScheduleListResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(ScheduleEntity)])) - as BuiltList); + BuiltList, const [const FullType(ScheduleEntity)]))! + as BuiltList); break; } } @@ -75,10 +75,10 @@ class _$ScheduleItemResponseSerializer final String wireName = 'ScheduleItemResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, ScheduleItemResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType(ScheduleEntity)), @@ -89,19 +89,20 @@ class _$ScheduleItemResponseSerializer @override ScheduleItemResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ScheduleItemResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, - specifiedType: const FullType(ScheduleEntity)) as ScheduleEntity); + specifiedType: const FullType(ScheduleEntity))! + as ScheduleEntity); break; } } @@ -118,9 +119,9 @@ class _$ScheduleEntitySerializer final String wireName = 'ScheduleEntity'; @override - Iterable serialize(Serializers serializers, ScheduleEntity object, + Iterable serialize(Serializers serializers, ScheduleEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'frequency_id', serializers.serialize(object.frequencyId, specifiedType: const FullType(String)), @@ -151,7 +152,7 @@ class _$ScheduleEntitySerializer 'id', serializers.serialize(object.id, specifiedType: const FullType(String)), ]; - Object value; + Object? value; value = object.isChanged; if (value != null) { result @@ -185,72 +186,72 @@ class _$ScheduleEntitySerializer @override ScheduleEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ScheduleEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'frequency_id': result.frequencyId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'next_run': result.nextRun = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'template': result.template = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'is_paused': result.isPaused = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'remaining_cycles': result.remainingCycles = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'parameters': result.parameters.replace(serializers.deserialize(value, - specifiedType: const FullType(ScheduleParameters)) + specifiedType: const FullType(ScheduleParameters))! as ScheduleParameters); break; case 'isChanged': result.isChanged = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'created_at': result.createdAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'updated_at': result.updatedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'archived_at': result.archivedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'is_deleted': result.isDeleted = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'user_id': result.createdUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'assigned_user_id': result.assignedUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -267,10 +268,11 @@ class _$ScheduleParametersSerializer final String wireName = 'ScheduleParameters'; @override - Iterable serialize(Serializers serializers, ScheduleParameters object, + Iterable serialize( + Serializers serializers, ScheduleParameters object, {FullType specifiedType = FullType.unspecified}) { - final result = []; - Object value; + final result = []; + Object? value; value = object.dateRange; if (value != null) { result @@ -340,53 +342,53 @@ class _$ScheduleParametersSerializer @override ScheduleParameters deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ScheduleParametersBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'date_range': result.dateRange = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'show_payments_table': result.showPaymentsTable = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'show_credits_table': result.showCreditsTable = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'show_aging_table': result.showAgingTable = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'only_clients_with_invoices': result.onlyClientsWithInvoices = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'status': result.status = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'clients': result.clients.replace(serializers.deserialize(value, - specifiedType: - const FullType(BuiltList, const [const FullType(String)])) - as BuiltList); + specifiedType: const FullType( + BuiltList, const [const FullType(String)]))! + as BuiltList); break; case 'entity': result.entityType = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'entity_id': result.entityId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; } } @@ -400,10 +402,10 @@ class _$ScheduleListResponse extends ScheduleListResponse { final BuiltList data; factory _$ScheduleListResponse( - [void Function(ScheduleListResponseBuilder) updates]) => + [void Function(ScheduleListResponseBuilder)? updates]) => (new ScheduleListResponseBuilder()..update(updates))._build(); - _$ScheduleListResponse._({this.data}) : super._() { + _$ScheduleListResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull( data, r'ScheduleListResponse', 'data'); } @@ -423,10 +425,10 @@ class _$ScheduleListResponse extends ScheduleListResponse { return other is ScheduleListResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -443,12 +445,12 @@ class _$ScheduleListResponse extends ScheduleListResponse { class ScheduleListResponseBuilder implements Builder { - _$ScheduleListResponse _$v; + _$ScheduleListResponse? _$v; - ListBuilder _data; + ListBuilder? _data; ListBuilder get data => _$this._data ??= new ListBuilder(); - set data(ListBuilder data) => _$this._data = data; + set data(ListBuilder? data) => _$this._data = data; ScheduleListResponseBuilder(); @@ -468,7 +470,7 @@ class ScheduleListResponseBuilder } @override - void update(void Function(ScheduleListResponseBuilder) updates) { + void update(void Function(ScheduleListResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -480,7 +482,7 @@ class ScheduleListResponseBuilder try { _$result = _$v ?? new _$ScheduleListResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -500,10 +502,10 @@ class _$ScheduleItemResponse extends ScheduleItemResponse { final ScheduleEntity data; factory _$ScheduleItemResponse( - [void Function(ScheduleItemResponseBuilder) updates]) => + [void Function(ScheduleItemResponseBuilder)? updates]) => (new ScheduleItemResponseBuilder()..update(updates))._build(); - _$ScheduleItemResponse._({this.data}) : super._() { + _$ScheduleItemResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull( data, r'ScheduleItemResponse', 'data'); } @@ -523,10 +525,10 @@ class _$ScheduleItemResponse extends ScheduleItemResponse { return other is ScheduleItemResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -543,12 +545,12 @@ class _$ScheduleItemResponse extends ScheduleItemResponse { class ScheduleItemResponseBuilder implements Builder { - _$ScheduleItemResponse _$v; + _$ScheduleItemResponse? _$v; - ScheduleEntityBuilder _data; + ScheduleEntityBuilder? _data; ScheduleEntityBuilder get data => _$this._data ??= new ScheduleEntityBuilder(); - set data(ScheduleEntityBuilder data) => _$this._data = data; + set data(ScheduleEntityBuilder? data) => _$this._data = data; ScheduleItemResponseBuilder(); @@ -568,7 +570,7 @@ class ScheduleItemResponseBuilder } @override - void update(void Function(ScheduleItemResponseBuilder) updates) { + void update(void Function(ScheduleItemResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -580,7 +582,7 @@ class ScheduleItemResponseBuilder try { _$result = _$v ?? new _$ScheduleItemResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -609,7 +611,7 @@ class _$ScheduleEntity extends ScheduleEntity { @override final ScheduleParameters parameters; @override - final bool isChanged; + final bool? isChanged; @override final int createdAt; @override @@ -617,32 +619,32 @@ class _$ScheduleEntity extends ScheduleEntity { @override final int archivedAt; @override - final bool isDeleted; + final bool? isDeleted; @override - final String createdUserId; + final String? createdUserId; @override - final String assignedUserId; + final String? assignedUserId; @override final String id; - factory _$ScheduleEntity([void Function(ScheduleEntityBuilder) updates]) => + factory _$ScheduleEntity([void Function(ScheduleEntityBuilder)? updates]) => (new ScheduleEntityBuilder()..update(updates))._build(); _$ScheduleEntity._( - {this.frequencyId, - this.nextRun, - this.template, - this.isPaused, - this.remainingCycles, - this.parameters, + {required this.frequencyId, + required this.nextRun, + required this.template, + required this.isPaused, + required this.remainingCycles, + required this.parameters, this.isChanged, - this.createdAt, - this.updatedAt, - this.archivedAt, + required this.createdAt, + required this.updatedAt, + required this.archivedAt, this.isDeleted, this.createdUserId, this.assignedUserId, - this.id}) + required this.id}) : super._() { BuiltValueNullFieldError.checkNotNull( frequencyId, r'ScheduleEntity', 'frequencyId'); @@ -693,10 +695,10 @@ class _$ScheduleEntity extends ScheduleEntity { id == other.id; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, frequencyId.hashCode); _$hash = $jc(_$hash, nextRun.hashCode); @@ -739,68 +741,68 @@ class _$ScheduleEntity extends ScheduleEntity { class ScheduleEntityBuilder implements Builder { - _$ScheduleEntity _$v; + _$ScheduleEntity? _$v; - String _frequencyId; - String get frequencyId => _$this._frequencyId; - set frequencyId(String frequencyId) => _$this._frequencyId = frequencyId; + String? _frequencyId; + String? get frequencyId => _$this._frequencyId; + set frequencyId(String? frequencyId) => _$this._frequencyId = frequencyId; - String _nextRun; - String get nextRun => _$this._nextRun; - set nextRun(String nextRun) => _$this._nextRun = nextRun; + String? _nextRun; + String? get nextRun => _$this._nextRun; + set nextRun(String? nextRun) => _$this._nextRun = nextRun; - String _template; - String get template => _$this._template; - set template(String template) => _$this._template = template; + String? _template; + String? get template => _$this._template; + set template(String? template) => _$this._template = template; - bool _isPaused; - bool get isPaused => _$this._isPaused; - set isPaused(bool isPaused) => _$this._isPaused = isPaused; + bool? _isPaused; + bool? get isPaused => _$this._isPaused; + set isPaused(bool? isPaused) => _$this._isPaused = isPaused; - int _remainingCycles; - int get remainingCycles => _$this._remainingCycles; - set remainingCycles(int remainingCycles) => + int? _remainingCycles; + int? get remainingCycles => _$this._remainingCycles; + set remainingCycles(int? remainingCycles) => _$this._remainingCycles = remainingCycles; - ScheduleParametersBuilder _parameters; + ScheduleParametersBuilder? _parameters; ScheduleParametersBuilder get parameters => _$this._parameters ??= new ScheduleParametersBuilder(); - set parameters(ScheduleParametersBuilder parameters) => + set parameters(ScheduleParametersBuilder? parameters) => _$this._parameters = parameters; - bool _isChanged; - bool get isChanged => _$this._isChanged; - set isChanged(bool isChanged) => _$this._isChanged = isChanged; + bool? _isChanged; + bool? get isChanged => _$this._isChanged; + set isChanged(bool? isChanged) => _$this._isChanged = isChanged; - int _createdAt; - int get createdAt => _$this._createdAt; - set createdAt(int createdAt) => _$this._createdAt = createdAt; + int? _createdAt; + int? get createdAt => _$this._createdAt; + set createdAt(int? createdAt) => _$this._createdAt = createdAt; - int _updatedAt; - int get updatedAt => _$this._updatedAt; - set updatedAt(int updatedAt) => _$this._updatedAt = updatedAt; + int? _updatedAt; + int? get updatedAt => _$this._updatedAt; + set updatedAt(int? updatedAt) => _$this._updatedAt = updatedAt; - int _archivedAt; - int get archivedAt => _$this._archivedAt; - set archivedAt(int archivedAt) => _$this._archivedAt = archivedAt; + int? _archivedAt; + int? get archivedAt => _$this._archivedAt; + set archivedAt(int? archivedAt) => _$this._archivedAt = archivedAt; - bool _isDeleted; - bool get isDeleted => _$this._isDeleted; - set isDeleted(bool isDeleted) => _$this._isDeleted = isDeleted; + bool? _isDeleted; + bool? get isDeleted => _$this._isDeleted; + set isDeleted(bool? isDeleted) => _$this._isDeleted = isDeleted; - String _createdUserId; - String get createdUserId => _$this._createdUserId; - set createdUserId(String createdUserId) => + String? _createdUserId; + String? get createdUserId => _$this._createdUserId; + set createdUserId(String? createdUserId) => _$this._createdUserId = createdUserId; - String _assignedUserId; - String get assignedUserId => _$this._assignedUserId; - set assignedUserId(String assignedUserId) => + String? _assignedUserId; + String? get assignedUserId => _$this._assignedUserId; + set assignedUserId(String? assignedUserId) => _$this._assignedUserId = assignedUserId; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; ScheduleEntityBuilder(); @@ -833,7 +835,7 @@ class ScheduleEntityBuilder } @override - void update(void Function(ScheduleEntityBuilder) updates) { + void update(void Function(ScheduleEntityBuilder)? updates) { if (updates != null) updates(this); } @@ -868,7 +870,7 @@ class ScheduleEntityBuilder assignedUserId: assignedUserId, id: BuiltValueNullFieldError.checkNotNull(id, r'ScheduleEntity', 'id')); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'parameters'; parameters.build(); @@ -885,26 +887,26 @@ class ScheduleEntityBuilder class _$ScheduleParameters extends ScheduleParameters { @override - final String dateRange; + final String? dateRange; @override - final bool showPaymentsTable; + final bool? showPaymentsTable; @override - final bool showCreditsTable; + final bool? showCreditsTable; @override - final bool showAgingTable; + final bool? showAgingTable; @override - final bool onlyClientsWithInvoices; + final bool? onlyClientsWithInvoices; @override - final String status; + final String? status; @override - final BuiltList clients; + final BuiltList? clients; @override - final String entityType; + final String? entityType; @override - final String entityId; + final String? entityId; factory _$ScheduleParameters( - [void Function(ScheduleParametersBuilder) updates]) => + [void Function(ScheduleParametersBuilder)? updates]) => (new ScheduleParametersBuilder()..update(updates))._build(); _$ScheduleParameters._( @@ -943,10 +945,10 @@ class _$ScheduleParameters extends ScheduleParameters { entityId == other.entityId; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, dateRange.hashCode); _$hash = $jc(_$hash, showPaymentsTable.hashCode); @@ -979,48 +981,48 @@ class _$ScheduleParameters extends ScheduleParameters { class ScheduleParametersBuilder implements Builder { - _$ScheduleParameters _$v; + _$ScheduleParameters? _$v; - String _dateRange; - String get dateRange => _$this._dateRange; - set dateRange(String dateRange) => _$this._dateRange = dateRange; + String? _dateRange; + String? get dateRange => _$this._dateRange; + set dateRange(String? dateRange) => _$this._dateRange = dateRange; - bool _showPaymentsTable; - bool get showPaymentsTable => _$this._showPaymentsTable; - set showPaymentsTable(bool showPaymentsTable) => + bool? _showPaymentsTable; + bool? get showPaymentsTable => _$this._showPaymentsTable; + set showPaymentsTable(bool? showPaymentsTable) => _$this._showPaymentsTable = showPaymentsTable; - bool _showCreditsTable; - bool get showCreditsTable => _$this._showCreditsTable; - set showCreditsTable(bool showCreditsTable) => + bool? _showCreditsTable; + bool? get showCreditsTable => _$this._showCreditsTable; + set showCreditsTable(bool? showCreditsTable) => _$this._showCreditsTable = showCreditsTable; - bool _showAgingTable; - bool get showAgingTable => _$this._showAgingTable; - set showAgingTable(bool showAgingTable) => + bool? _showAgingTable; + bool? get showAgingTable => _$this._showAgingTable; + set showAgingTable(bool? showAgingTable) => _$this._showAgingTable = showAgingTable; - bool _onlyClientsWithInvoices; - bool get onlyClientsWithInvoices => _$this._onlyClientsWithInvoices; - set onlyClientsWithInvoices(bool onlyClientsWithInvoices) => + bool? _onlyClientsWithInvoices; + bool? get onlyClientsWithInvoices => _$this._onlyClientsWithInvoices; + set onlyClientsWithInvoices(bool? onlyClientsWithInvoices) => _$this._onlyClientsWithInvoices = onlyClientsWithInvoices; - String _status; - String get status => _$this._status; - set status(String status) => _$this._status = status; + String? _status; + String? get status => _$this._status; + set status(String? status) => _$this._status = status; - ListBuilder _clients; + ListBuilder? _clients; ListBuilder get clients => _$this._clients ??= new ListBuilder(); - set clients(ListBuilder clients) => _$this._clients = clients; + set clients(ListBuilder? clients) => _$this._clients = clients; - String _entityType; - String get entityType => _$this._entityType; - set entityType(String entityType) => _$this._entityType = entityType; + String? _entityType; + String? get entityType => _$this._entityType; + set entityType(String? entityType) => _$this._entityType = entityType; - String _entityId; - String get entityId => _$this._entityId; - set entityId(String entityId) => _$this._entityId = entityId; + String? _entityId; + String? get entityId => _$this._entityId; + set entityId(String? entityId) => _$this._entityId = entityId; ScheduleParametersBuilder(); @@ -1048,7 +1050,7 @@ class ScheduleParametersBuilder } @override - void update(void Function(ScheduleParametersBuilder) updates) { + void update(void Function(ScheduleParametersBuilder)? updates) { if (updates != null) updates(this); } @@ -1070,7 +1072,7 @@ class ScheduleParametersBuilder entityType: entityType, entityId: entityId); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'clients'; _clients?.build(); diff --git a/lib/data/models/serializers.g.dart b/lib/data/models/serializers.g.dart index c72a910a6..67a3cd8b0 100644 --- a/lib/data/models/serializers.g.dart +++ b/lib/data/models/serializers.g.dart @@ -243,25 +243,6 @@ Serializers _$serializers = (new Serializers().toBuilder() ..addBuilderFactory( const FullType(BuiltList, const [const FullType(BankAccountEntity)]), () => new ListBuilder()) - ..addBuilderFactory( - const FullType( - BuiltList, const [const FullType(ClientContactEntity)]), - () => new ListBuilder()) - ..addBuilderFactory( - const FullType(BuiltList, const [const FullType(ActivityEntity)]), - () => new ListBuilder()) - ..addBuilderFactory( - const FullType(BuiltList, const [const FullType(LedgerEntity)]), - () => new ListBuilder()) - ..addBuilderFactory( - const FullType(BuiltList, const [const FullType(GatewayTokenEntity)]), - () => new ListBuilder()) - ..addBuilderFactory( - const FullType(BuiltList, const [const FullType(DocumentEntity)]), - () => new ListBuilder()) - ..addBuilderFactory( - const FullType(BuiltList, const [const FullType(SystemLogEntity)]), - () => new ListBuilder()) ..addBuilderFactory( const FullType(BuiltList, const [const FullType(ClientEntity)]), () => new ListBuilder()) @@ -511,8 +492,9 @@ Serializers _$serializers = (new Serializers().toBuilder() BuiltList, const [const FullType(InvoiceScheduleEntity)]), () => new ListBuilder()) ..addBuilderFactory( - const FullType(BuiltList, const [const FullType(InvoiceItemEntity)]), - () => new ListBuilder()) + const FullType( + BuiltList, const [const FullType.nullable(InvoiceItemEntity)]), + () => new ListBuilder()) ..addBuilderFactory( const FullType(BuiltList, const [const FullType(InvitationEntity)]), () => new ListBuilder()) @@ -593,10 +575,6 @@ Serializers _$serializers = (new Serializers().toBuilder() ..addBuilderFactory( const FullType(BuiltList, const [const FullType(TransactionEntity)]), () => new ListBuilder()) - ..addBuilderFactory( - const FullType( - BuiltList, const [const FullType(TransactionRuleCriteriaEntity)]), - () => new ListBuilder()) ..addBuilderFactory( const FullType( BuiltList, const [const FullType(TransactionRuleEntity)]), @@ -610,16 +588,6 @@ Serializers _$serializers = (new Serializers().toBuilder() ..addBuilderFactory( const FullType(BuiltList, const [const FullType(UserEntity)]), () => new ListBuilder()) - ..addBuilderFactory( - const FullType( - BuiltList, const [const FullType(VendorContactEntity)]), - () => new ListBuilder()) - ..addBuilderFactory( - const FullType(BuiltList, const [const FullType(ActivityEntity)]), - () => new ListBuilder()) - ..addBuilderFactory( - const FullType(BuiltList, const [const FullType(DocumentEntity)]), - () => new ListBuilder()) ..addBuilderFactory( const FullType(BuiltList, const [const FullType(VendorEntity)]), () => new ListBuilder()) @@ -627,11 +595,38 @@ Serializers _$serializers = (new Serializers().toBuilder() const FullType(BuiltList, const [const FullType(WebhookEntity)]), () => new ListBuilder()) ..addBuilderFactory( - const FullType(BuiltMap, const [ - const FullType(EntityType), - const FullType(BuiltList, const [const FullType(String)]) - ]), - () => new MapBuilder>()) + const FullType( + BuiltList, const [const FullType.nullable(ClientContactEntity)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType(BuiltList, const [const FullType(ActivityEntity)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType(BuiltList, const [const FullType(LedgerEntity)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType(BuiltList, const [const FullType(GatewayTokenEntity)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType(BuiltList, const [const FullType(DocumentEntity)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType(BuiltList, const [const FullType(SystemLogEntity)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType(BuiltList, + const [const FullType.nullable(TransactionRuleCriteriaEntity)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType( + BuiltList, const [const FullType.nullable(VendorContactEntity)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType(BuiltList, const [const FullType(ActivityEntity)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType(BuiltList, const [const FullType(DocumentEntity)]), + () => new ListBuilder()) ..addBuilderFactory( const FullType(BuiltMap, const [const FullType(EntityType), const FullType(bool)]), @@ -661,15 +656,6 @@ Serializers _$serializers = (new Serializers().toBuilder() const FullType(BuiltMap, const [const FullType(String), const FullType(CompanyPrefState)]), () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltMap, const [ - const FullType(String), - const FullType(BankAccountEntity) - ]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltList, const [const FullType(String)]), - () => new ListBuilder()) ..addBuilderFactory( const FullType(BuiltMap, const [ const FullType(String), @@ -691,207 +677,24 @@ Serializers _$serializers = (new Serializers().toBuilder() ..addBuilderFactory( const FullType(BuiltList, const [const FullType(DashboardField)]), () => new ListBuilder()) - ..addBuilderFactory( - const FullType(BuiltMap, - const [const FullType(String), const FullType(ClientEntity)]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltList, const [const FullType(String)]), - () => new ListBuilder()) - ..addBuilderFactory( - const FullType(BuiltMap, const [ - const FullType(String), - const FullType(CompanyGatewayEntity) - ]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltList, const [const FullType(String)]), - () => new ListBuilder()) - ..addBuilderFactory( - const FullType(BuiltMap, - const [const FullType(String), const FullType(CurrencyEntity)]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltMap, - const [const FullType(String), const FullType(SizeEntity)]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltMap, - const [const FullType(String), const FullType(GatewayEntity)]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltMap, - const [const FullType(String), const FullType(IndustryEntity)]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltMap, - const [const FullType(String), const FullType(TimezoneEntity)]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltMap, - const [const FullType(String), const FullType(DateFormatEntity)]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltMap, - const [const FullType(String), const FullType(LanguageEntity)]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltMap, const [ - const FullType(String), - const FullType(PaymentTypeEntity) - ]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltMap, - const [const FullType(String), const FullType(CountryEntity)]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltMap, - const [const FullType(String), const FullType(TemplateEntity)]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltMap, - const [const FullType(String), const FullType(DesignEntity)]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltList, const [const FullType(String)]), - () => new ListBuilder()) - ..addBuilderFactory( - const FullType(BuiltMap, - const [const FullType(String), const FullType(DocumentEntity)]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltList, const [const FullType(String)]), - () => new ListBuilder()) - ..addBuilderFactory( - const FullType(BuiltMap, const [ - const FullType(String), - const FullType(ExpenseCategoryEntity) - ]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltList, const [const FullType(String)]), - () => new ListBuilder()) - ..addBuilderFactory( - const FullType(BuiltMap, - const [const FullType(String), const FullType(ExpenseEntity)]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltList, const [const FullType(String)]), - () => new ListBuilder()) - ..addBuilderFactory( - const FullType(BuiltMap, - const [const FullType(String), const FullType(ExpenseEntity)]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltList, const [const FullType(String)]), - () => new ListBuilder()) - ..addBuilderFactory( - const FullType(BuiltMap, const [ - const FullType(String), - const FullType(FeesAndLimitsSettings) - ]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltList, const [const FullType(SystemLogEntity)]), - () => new ListBuilder()) ..addBuilderFactory( const FullType(BuiltMap, const [ const FullType(String), const FullType(GatewayOptionsEntity) ]), () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltMap, - const [const FullType(String), const FullType(GroupEntity)]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltList, const [const FullType(String)]), - () => new ListBuilder()) ..addBuilderFactory( const FullType(BuiltMap, const [ const FullType(String), const FullType(ImportRequestMapping) ]), () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltMap, - const [const FullType(String), const FullType(InvoiceEntity)]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltList, const [const FullType(String)]), - () => new ListBuilder()) - ..addBuilderFactory( - const FullType(BuiltMap, - const [const FullType(String), const FullType(InvoiceEntity)]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltList, const [const FullType(String)]), - () => new ListBuilder()) - ..addBuilderFactory( - const FullType(BuiltMap, - const [const FullType(String), const FullType(InvoiceEntity)]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltList, const [const FullType(String)]), - () => new ListBuilder()) - ..addBuilderFactory( - const FullType(BuiltMap, - const [const FullType(String), const FullType(InvoiceEntity)]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltList, const [const FullType(String)]), - () => new ListBuilder()) - ..addBuilderFactory( - const FullType(BuiltMap, - const [const FullType(String), const FullType(InvoiceEntity)]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltList, const [const FullType(String)]), - () => new ListBuilder()) - ..addBuilderFactory( - const FullType(BuiltMap, - const [const FullType(String), const FullType(PaymentEntity)]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltList, const [const FullType(String)]), - () => new ListBuilder()) - ..addBuilderFactory( - const FullType(BuiltMap, const [ - const FullType(String), - const FullType(PaymentTermEntity) - ]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltList, const [const FullType(String)]), - () => new ListBuilder()) ..addBuilderFactory( const FullType(BuiltMap, const [ const FullType(String), const FullType(PreImportResponseEntityDetails) ]), () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltMap, - const [const FullType(String), const FullType(ProductEntity)]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltList, const [const FullType(String)]), - () => new ListBuilder()) - ..addBuilderFactory( - const FullType(BuiltMap, - const [const FullType(String), const FullType(ProjectEntity)]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltList, const [const FullType(String)]), - () => new ListBuilder()) - ..addBuilderFactory( - const FullType(BuiltMap, - const [const FullType(String), const FullType(ScheduleEntity)]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltList, const [const FullType(String)]), - () => new ListBuilder()) ..addBuilderFactory( const FullType( BuiltMap, const [const FullType(String), const FullType(String)]), @@ -904,43 +707,6 @@ Serializers _$serializers = (new Serializers().toBuilder() const FullType( BuiltMap, const [const FullType(String), const FullType(String)]), () => new MapBuilder()) - ..addBuilderFactory( - const FullType( - BuiltMap, const [const FullType(String), const FullType(String)]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType( - BuiltMap, const [const FullType(String), const FullType(String)]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltMap, const [ - const FullType(String), - const FullType(BuiltList, const [const FullType(String)]) - ]), - () => new MapBuilder>()) - ..addBuilderFactory( - const FullType(BuiltMap, const [ - const FullType(String), - const FullType(SubscriptionEntity) - ]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltList, const [const FullType(String)]), - () => new ListBuilder()) - ..addBuilderFactory( - const FullType(BuiltMap, - const [const FullType(String), const FullType(TaskEntity)]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltList, const [const FullType(String)]), - () => new ListBuilder()) - ..addBuilderFactory( - const FullType(BuiltMap, - const [const FullType(String), const FullType(TaskStatusEntity)]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltList, const [const FullType(String)]), - () => new ListBuilder()) ..addBuilderFactory( const FullType(BuiltMap, const [ const FullType(String), @@ -953,63 +719,360 @@ Serializers _$serializers = (new Serializers().toBuilder() const FullType(TaxConfigSubregionEntity) ]), () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltMap, - const [const FullType(String), const FullType(TaxRateEntity)]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltList, const [const FullType(String)]), - () => new ListBuilder()) - ..addBuilderFactory( - const FullType(BuiltMap, - const [const FullType(String), const FullType(TokenEntity)]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltList, const [const FullType(String)]), - () => new ListBuilder()) - ..addBuilderFactory( - const FullType(BuiltMap, const [ - const FullType(String), - const FullType(TransactionEntity) - ]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltList, const [const FullType(String)]), - () => new ListBuilder()) - ..addBuilderFactory( - const FullType(BuiltMap, const [ - const FullType(String), - const FullType(TransactionRuleEntity) - ]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltList, const [const FullType(String)]), - () => new ListBuilder()) - ..addBuilderFactory( - const FullType(BuiltMap, - const [const FullType(String), const FullType(UserEntity)]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltList, const [const FullType(String)]), - () => new ListBuilder()) - ..addBuilderFactory( - const FullType(BuiltMap, - const [const FullType(String), const FullType(VendorEntity)]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltList, const [const FullType(String)]), - () => new ListBuilder()) - ..addBuilderFactory( - const FullType(BuiltMap, - const [const FullType(String), const FullType(WebhookEntity)]), - () => new MapBuilder()) - ..addBuilderFactory( - const FullType(BuiltList, const [const FullType(String)]), - () => new ListBuilder()) ..addBuilderFactory( const FullType( BuiltMap, const [const FullType(int), const FullType(String)]), - () => new MapBuilder())) + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(EntityType), + const FullType(BuiltList, const [const FullType(String)]) + ]), + () => new MapBuilder>()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType(FeesAndLimitsSettings) + ]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltList, const [const FullType(SystemLogEntity)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, + const [const FullType.nullable(String), const FullType(String)]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType(String), + const FullType(BuiltList, const [const FullType(String)]) + ]), + () => new MapBuilder>()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(BankAccountEntity) + ]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltList, const [const FullType(String)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(ClientEntity) + ]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltList, const [const FullType(String)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(CompanyGatewayEntity) + ]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltList, const [const FullType(String)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(CurrencyEntity) + ]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(SizeEntity) + ]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(GatewayEntity) + ]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(IndustryEntity) + ]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(TimezoneEntity) + ]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(DateFormatEntity) + ]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(LanguageEntity) + ]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(PaymentTypeEntity) + ]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(CountryEntity) + ]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, + const [const FullType(String), const FullType(TemplateEntity)]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(DesignEntity) + ]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltList, const [const FullType(String)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(DocumentEntity) + ]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltList, const [const FullType(String)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(ExpenseCategoryEntity) + ]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltList, const [const FullType(String)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(ExpenseEntity) + ]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltList, const [const FullType(String)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(ExpenseEntity) + ]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltList, const [const FullType(String)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(GroupEntity) + ]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltList, const [const FullType(String)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(InvoiceEntity) + ]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltList, const [const FullType(String)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(InvoiceEntity) + ]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltList, const [const FullType(String)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(InvoiceEntity) + ]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltList, const [const FullType(String)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(InvoiceEntity) + ]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltList, const [const FullType(String)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(InvoiceEntity) + ]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltList, const [const FullType(String)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(PaymentEntity) + ]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltList, const [const FullType(String)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(PaymentTermEntity) + ]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltList, const [const FullType(String)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(ProductEntity) + ]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltList, const [const FullType(String)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(ProjectEntity) + ]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltList, const [const FullType(String)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(ScheduleEntity) + ]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltList, const [const FullType(String)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(String) + ]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(SubscriptionEntity) + ]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltList, const [const FullType(String)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(TaskEntity) + ]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltList, const [const FullType(String)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(TaskStatusEntity) + ]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltList, const [const FullType(String)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(TaxRateEntity) + ]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltList, const [const FullType(String)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(TokenEntity) + ]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltList, const [const FullType(String)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(TransactionEntity) + ]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltList, const [const FullType(String)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(TransactionRuleEntity) + ]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltList, const [const FullType(String)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(UserEntity) + ]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltList, const [const FullType(String)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(VendorEntity) + ]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltList, const [const FullType(String)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(WebhookEntity) + ]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltList, const [const FullType(String)]), + () => new ListBuilder())) .build(); // ignore_for_file: deprecated_member_use_from_same_package,type=lint diff --git a/lib/data/models/settings_model.dart b/lib/data/models/settings_model.dart index 4599ed657..00a5de4f5 100644 --- a/lib/data/models/settings_model.dart +++ b/lib/data/models/settings_model.dart @@ -12,9 +12,9 @@ part 'settings_model.g.dart'; abstract class SettingsEntity implements Built { factory SettingsEntity({ - SettingsEntity companySettings, - SettingsEntity groupSettings, - SettingsEntity clientSettings, + SettingsEntity? companySettings, + SettingsEntity? groupSettings, + SettingsEntity? clientSettings, }) { return _$SettingsEntity._( defaultInvoiceDesignId: clientSettings?.defaultInvoiceDesignId ?? @@ -136,891 +136,672 @@ abstract class SettingsEntity static const MAILGUN_ENDPOINT_US = 'api.mailgun.net'; static const MAILGUN_ENDPOINT_EU = 'api.eu.mailgun.net'; - @nullable @BuiltValueField(wireName: 'timezone_id') - String get timezoneId; + String? get timezoneId; - @nullable @BuiltValueField(wireName: 'date_format_id') - String get dateFormatId; + String? get dateFormatId; - @nullable @BuiltValueField(wireName: 'military_time') - bool get enableMilitaryTime; + bool? get enableMilitaryTime; - @nullable @BuiltValueField(wireName: 'language_id') - String get languageId; + String? get languageId; - @nullable @BuiltValueField(wireName: 'show_currency_code') - bool get showCurrencyCode; + bool? get showCurrencyCode; - @nullable @BuiltValueField(wireName: 'currency_id') - String get currencyId; + String? get currencyId; - @nullable @BuiltValueField(wireName: 'custom_value1') - String get customValue1; + String? get customValue1; - @nullable @BuiltValueField(wireName: 'custom_value2') - String get customValue2; + String? get customValue2; - @nullable @BuiltValueField(wireName: 'custom_value3') - String get customValue3; + String? get customValue3; - @nullable @BuiltValueField(wireName: 'custom_value4') - String get customValue4; + String? get customValue4; - @nullable @BuiltValueField(wireName: 'payment_terms') - String get defaultPaymentTerms; + String? get defaultPaymentTerms; - @nullable @BuiltValueField(wireName: 'valid_until') - String get defaultValidUntil; + String? get defaultValidUntil; - @nullable @BuiltValueField(wireName: 'company_gateway_ids') - String get companyGatewayIds; + String? get companyGatewayIds; - @nullable @BuiltValueField(wireName: 'default_task_rate') - double get defaultTaskRate; + double? get defaultTaskRate; - @nullable @BuiltValueField(wireName: 'send_reminders') - bool get sendReminders; + bool? get sendReminders; - @nullable @BuiltValueField(wireName: 'enable_client_portal') - bool get enablePortal; + bool? get enablePortal; - @nullable @BuiltValueField(wireName: 'enable_client_portal_dashboard') - bool get enablePortalDashboard; + bool? get enablePortalDashboard; - @nullable @BuiltValueField(wireName: 'enable_client_portal_tasks') - bool get enablePortalTasks; + bool? get enablePortalTasks; - @nullable @BuiltValueField(wireName: 'client_portal_enable_uploads') - bool get enableClientPortalUploads; + bool? get enableClientPortalUploads; - @nullable @BuiltValueField(wireName: 'vendor_portal_enable_uploads') - bool get enableVendorPortalUploads; + bool? get enableVendorPortalUploads; - @nullable @BuiltValueField(wireName: 'email_style') - String get emailStyle; + String? get emailStyle; - @nullable @BuiltValueField(wireName: 'reply_to_email') - String get replyToEmail; + String? get replyToEmail; - @nullable @BuiltValueField(wireName: 'reply_to_name') - String get replyToName; + String? get replyToName; - @nullable @BuiltValueField(wireName: 'email_from_name') - String get emailFromName; + String? get emailFromName; - @nullable @BuiltValueField(wireName: 'bcc_email') - String get bccEmail; + String? get bccEmail; - @nullable @BuiltValueField(wireName: 'pdf_email_attachment') - bool get pdfEmailAttachment; + bool? get pdfEmailAttachment; - @nullable @BuiltValueField(wireName: 'ubl_email_attachment') - bool get ublEmailAttachment; + bool? get ublEmailAttachment; - @nullable @BuiltValueField(wireName: 'document_email_attachment') - bool get documentEmailAttachment; + bool? get documentEmailAttachment; - @nullable @BuiltValueField(wireName: 'email_style_custom') - String get emailStyleCustom; + String? get emailStyleCustom; - @nullable @BuiltValueField(wireName: 'custom_message_dashboard') - String get customMessageDashboard; + String? get customMessageDashboard; - @nullable @BuiltValueField(wireName: 'custom_message_unpaid_invoice') - String get customMessageUnpaidInvoice; + String? get customMessageUnpaidInvoice; - @nullable @BuiltValueField(wireName: 'custom_message_paid_invoice') - String get customMessagePaidInvoice; + String? get customMessagePaidInvoice; - @nullable @BuiltValueField(wireName: 'custom_message_unapproved_quote') - String get customMessageUnapprovedQuote; + String? get customMessageUnapprovedQuote; - @nullable @BuiltValueField(wireName: 'auto_archive_invoice') - bool get autoArchiveInvoice; + bool? get autoArchiveInvoice; - @nullable @BuiltValueField(wireName: 'auto_archive_invoice_cancelled') - bool get autoArchiveInvoiceCancelled; + bool? get autoArchiveInvoiceCancelled; - @nullable @BuiltValueField(wireName: 'auto_archive_quote') - bool get autoArchiveQuote; + bool? get autoArchiveQuote; - @nullable @BuiltValueField(wireName: 'auto_email_invoice') - bool get autoEmailInvoice; + bool? get autoEmailInvoice; - @nullable @BuiltValueField(wireName: 'auto_convert_quote') - bool get autoConvertQuote; + bool? get autoConvertQuote; - @nullable @BuiltValueField(wireName: 'inclusive_taxes') - bool get enableInclusiveTaxes; + bool? get enableInclusiveTaxes; - @nullable - BuiltMap get translations; + BuiltMap? get translations; - @nullable @BuiltValueField(wireName: 'task_number_pattern') - String get taskNumberPattern; + String? get taskNumberPattern; - @nullable @BuiltValueField(wireName: 'task_number_counter') - int get taskNumberCounter; + int? get taskNumberCounter; - @nullable @BuiltValueField(wireName: 'expense_number_pattern') - String get expenseNumberPattern; + String? get expenseNumberPattern; - @nullable @BuiltValueField(wireName: 'expense_number_counter') - int get expenseNumberCounter; + int? get expenseNumberCounter; - @nullable @BuiltValueField(wireName: 'recurring_expense_number_pattern') - String get recurringExpenseNumberPattern; + String? get recurringExpenseNumberPattern; - @nullable @BuiltValueField(wireName: 'recurring_expense_number_counter') - int get recurringExpenseNumberCounter; + int? get recurringExpenseNumberCounter; - @nullable @BuiltValueField(wireName: 'vendor_number_pattern') - String get vendorNumberPattern; + String? get vendorNumberPattern; - @nullable @BuiltValueField(wireName: 'vendor_number_counter') - int get vendorNumberCounter; + int? get vendorNumberCounter; - @nullable @BuiltValueField(wireName: 'ticket_number_pattern') - String get ticketNumberPattern; + String? get ticketNumberPattern; - @nullable @BuiltValueField(wireName: 'ticket_number_counter') - int get ticketNumberCounter; + int? get ticketNumberCounter; - @nullable @BuiltValueField(wireName: 'payment_number_pattern') - String get paymentNumberPattern; + String? get paymentNumberPattern; - @nullable @BuiltValueField(wireName: 'payment_number_counter') - int get paymentNumberCounter; + int? get paymentNumberCounter; - @nullable @BuiltValueField(wireName: 'project_number_pattern') - String get projectNumberPattern; + String? get projectNumberPattern; - @nullable @BuiltValueField(wireName: 'project_number_counter') - int get projectNumberCounter; + int? get projectNumberCounter; - @nullable @BuiltValueField(wireName: 'invoice_number_pattern') - String get invoiceNumberPattern; + String? get invoiceNumberPattern; - @nullable @BuiltValueField(wireName: 'invoice_number_counter') - int get invoiceNumberCounter; + int? get invoiceNumberCounter; - @nullable @BuiltValueField(wireName: 'recurring_invoice_number_pattern') - String get recurringInvoiceNumberPattern; + String? get recurringInvoiceNumberPattern; - @nullable @BuiltValueField(wireName: 'recurring_invoice_number_counter') - int get recurringInvoiceNumberCounter; + int? get recurringInvoiceNumberCounter; - @nullable @BuiltValueField(wireName: 'quote_number_pattern') - String get quoteNumberPattern; + String? get quoteNumberPattern; - @nullable @BuiltValueField(wireName: 'quote_number_counter') - int get quoteNumberCounter; + int? get quoteNumberCounter; - @nullable @BuiltValueField(wireName: 'client_number_pattern') - String get clientNumberPattern; + String? get clientNumberPattern; - @nullable @BuiltValueField(wireName: 'client_number_counter') - int get clientNumberCounter; + int? get clientNumberCounter; - @nullable @BuiltValueField(wireName: 'credit_number_pattern') - String get creditNumberPattern; + String? get creditNumberPattern; - @nullable @BuiltValueField(wireName: 'credit_number_counter') - int get creditNumberCounter; + int? get creditNumberCounter; - @nullable @BuiltValueField(wireName: 'recurring_number_prefix') - String get recurringNumberPrefix; + String? get recurringNumberPrefix; - @nullable @BuiltValueField(wireName: 'reset_counter_frequency_id') - String get resetCounterFrequencyId; + String? get resetCounterFrequencyId; - @nullable @BuiltValueField(wireName: 'reset_counter_date') - String get resetCounterDate; + String? get resetCounterDate; - @nullable @BuiltValueField(wireName: 'counter_padding') - int get counterPadding; + int? get counterPadding; - @nullable @BuiltValueField(wireName: 'shared_invoice_quote_counter') - bool get sharedInvoiceQuoteCounter; + bool? get sharedInvoiceQuoteCounter; - @nullable @BuiltValueField(wireName: 'shared_invoice_credit_counter') - bool get sharedInvoiceCreditCounter; + bool? get sharedInvoiceCreditCounter; - @nullable @BuiltValueField(wireName: 'invoice_terms') - String get defaultInvoiceTerms; + String? get defaultInvoiceTerms; - @nullable @BuiltValueField(wireName: 'quote_terms') - String get defaultQuoteTerms; + String? get defaultQuoteTerms; - @nullable @BuiltValueField(wireName: 'quote_footer') - String get defaultQuoteFooter; + String? get defaultQuoteFooter; - @nullable @BuiltValueField(wireName: 'credit_terms') - String get defaultCreditTerms; + String? get defaultCreditTerms; - @nullable @BuiltValueField(wireName: 'credit_footer') - String get defaultCreditFooter; + String? get defaultCreditFooter; - @nullable @BuiltValueField(wireName: 'invoice_design_id') - String get defaultInvoiceDesignId; + String? get defaultInvoiceDesignId; - @nullable @BuiltValueField(wireName: 'quote_design_id') - String get defaultQuoteDesignId; + String? get defaultQuoteDesignId; - @nullable @BuiltValueField(wireName: 'credit_design_id') - String get defaultCreditDesignId; + String? get defaultCreditDesignId; - @nullable @BuiltValueField(wireName: 'invoice_footer') - String get defaultInvoiceFooter; + String? get defaultInvoiceFooter; - @nullable @BuiltValueField(wireName: 'tax_name1') - String get defaultTaxName1; + String? get defaultTaxName1; - @nullable @BuiltValueField(wireName: 'tax_rate1') - double get defaultTaxRate1; + double? get defaultTaxRate1; - @nullable @BuiltValueField(wireName: 'tax_name2') - String get defaultTaxName2; + String? get defaultTaxName2; - @nullable @BuiltValueField(wireName: 'tax_rate2') - double get defaultTaxRate2; + double? get defaultTaxRate2; - @nullable @BuiltValueField(wireName: 'tax_name3') - String get defaultTaxName3; + String? get defaultTaxName3; - @nullable @BuiltValueField(wireName: 'tax_rate3') - double get defaultTaxRate3; + double? get defaultTaxRate3; - @nullable @BuiltValueField(wireName: 'payment_type_id') - String get defaultPaymentTypeId; + String? get defaultPaymentTypeId; - @nullable @BuiltValueField(wireName: 'pdf_variables') - BuiltMap> get pdfVariables; + BuiltMap>? get pdfVariables; - @nullable @BuiltValueField(wireName: 'email_signature') - String get emailSignature; + String? get emailSignature; - @nullable @BuiltValueField(wireName: 'email_subject_invoice') - String get emailSubjectInvoice; + String? get emailSubjectInvoice; - @nullable @BuiltValueField(wireName: 'email_subject_quote') - String get emailSubjectQuote; + String? get emailSubjectQuote; - @nullable @BuiltValueField(wireName: 'email_subject_credit') - String get emailSubjectCredit; + String? get emailSubjectCredit; - @nullable @BuiltValueField(wireName: 'email_subject_payment') - String get emailSubjectPayment; + String? get emailSubjectPayment; - @nullable @BuiltValueField(wireName: 'email_subject_payment_partial') - String get emailSubjectPaymentPartial; + String? get emailSubjectPaymentPartial; - @nullable @BuiltValueField(wireName: 'email_template_invoice') - String get emailBodyInvoice; + String? get emailBodyInvoice; - @nullable @BuiltValueField(wireName: 'email_template_quote') - String get emailBodyQuote; + String? get emailBodyQuote; - @nullable @BuiltValueField(wireName: 'email_template_credit') - String get emailBodyCredit; + String? get emailBodyCredit; - @nullable @BuiltValueField(wireName: 'email_template_payment') - String get emailBodyPayment; + String? get emailBodyPayment; - @nullable @BuiltValueField(wireName: 'email_template_payment_partial') - String get emailBodyPaymentPartial; + String? get emailBodyPaymentPartial; - @nullable @BuiltValueField(wireName: 'email_subject_reminder1') - String get emailSubjectReminder1; + String? get emailSubjectReminder1; - @nullable @BuiltValueField(wireName: 'email_subject_reminder2') - String get emailSubjectReminder2; + String? get emailSubjectReminder2; - @nullable @BuiltValueField(wireName: 'email_subject_reminder3') - String get emailSubjectReminder3; + String? get emailSubjectReminder3; - @nullable @BuiltValueField(wireName: 'email_template_reminder1') - String get emailBodyReminder1; + String? get emailBodyReminder1; - @nullable @BuiltValueField(wireName: 'email_template_reminder2') - String get emailBodyReminder2; + String? get emailBodyReminder2; - @nullable @BuiltValueField(wireName: 'email_template_reminder3') - String get emailBodyReminder3; + String? get emailBodyReminder3; - @nullable @BuiltValueField(wireName: 'email_subject_custom1') - String get emailSubjectCustom1; + String? get emailSubjectCustom1; - @nullable @BuiltValueField(wireName: 'email_template_custom1') - String get emailBodyCustom1; + String? get emailBodyCustom1; - @nullable @BuiltValueField(wireName: 'email_subject_custom2') - String get emailSubjectCustom2; + String? get emailSubjectCustom2; - @nullable @BuiltValueField(wireName: 'email_template_custom2') - String get emailBodyCustom2; + String? get emailBodyCustom2; - @nullable @BuiltValueField(wireName: 'email_subject_custom3') - String get emailSubjectCustom3; + String? get emailSubjectCustom3; - @nullable @BuiltValueField(wireName: 'email_template_custom3') - String get emailBodyCustom3; + String? get emailBodyCustom3; - @nullable @BuiltValueField(wireName: 'email_subject_statement') - String get emailSubjectStatement; + String? get emailSubjectStatement; - @nullable @BuiltValueField(wireName: 'email_template_statement') - String get emailBodyStatement; + String? get emailBodyStatement; - @nullable @BuiltValueField(wireName: 'email_subject_purchase_order') - String get emailSubjectPurchaseOrder; + String? get emailSubjectPurchaseOrder; - @nullable @BuiltValueField(wireName: 'email_template_purchase_order') - String get emailBodyPurchaseOrder; + String? get emailBodyPurchaseOrder; - @nullable @BuiltValueField(wireName: 'enable_client_portal_password') - bool get enablePortalPassword; + bool? get enablePortalPassword; - @nullable @BuiltValueField(wireName: 'signature_on_pdf') - bool get signatureOnPdf; + bool? get signatureOnPdf; - @nullable @BuiltValueField(wireName: 'enable_email_markup') - bool get enableEmailMarkup; + bool? get enableEmailMarkup; - @nullable @BuiltValueField(wireName: 'show_accept_invoice_terms') - bool get showAcceptInvoiceTerms; + bool? get showAcceptInvoiceTerms; - @nullable @BuiltValueField(wireName: 'show_accept_quote_terms') - bool get showAcceptQuoteTerms; + bool? get showAcceptQuoteTerms; - @nullable @BuiltValueField(wireName: 'require_invoice_signature') - bool get requireInvoiceSignature; + bool? get requireInvoiceSignature; - @nullable @BuiltValueField(wireName: 'require_quote_signature') - bool get requireQuoteSignature; + bool? get requireQuoteSignature; - @nullable - String get name; + String? get name; - @nullable @BuiltValueField(wireName: 'company_logo') - String get companyLogo; + String? get companyLogo; - @nullable @BuiltValueField(wireName: 'website') - String get website; + String? get website; - @nullable - String get address1; + String? get address1; - @nullable - String get address2; + String? get address2; - @nullable - String get city; + String? get city; - @nullable - String get state; + String? get state; - @nullable @BuiltValueField(wireName: 'postal_code') - String get postalCode; + String? get postalCode; - @nullable - String get phone; + String? get phone; - @nullable - String get email; + String? get email; - @nullable @BuiltValueField(wireName: 'country_id') - String get countryId; + String? get countryId; - @nullable @BuiltValueField(wireName: 'vat_number') - String get vatNumber; + String? get vatNumber; - @nullable @BuiltValueField(wireName: 'id_number') - String get idNumber; + String? get idNumber; - @nullable @BuiltValueField(wireName: 'page_size') - String get pageSize; + String? get pageSize; - @nullable @BuiltValueField(wireName: 'page_layout') - String get pageLayout; + String? get pageLayout; - @nullable @BuiltValueField(wireName: 'font_size') - int get fontSize; + int? get fontSize; - @nullable @BuiltValueField(wireName: 'primary_color') - String get primaryColor; + String? get primaryColor; - @nullable @BuiltValueField(wireName: 'secondary_color') - String get secondaryColor; + String? get secondaryColor; - @nullable @BuiltValueField(wireName: 'primary_font') - String get primaryFont; + String? get primaryFont; - @nullable @BuiltValueField(wireName: 'secondary_font') - String get secondaryFont; + String? get secondaryFont; - @nullable @BuiltValueField(wireName: 'hide_paid_to_date') - bool get hidePaidToDate; + bool? get hidePaidToDate; - @nullable @BuiltValueField(wireName: 'embed_documents') - bool get embedDocuments; + bool? get embedDocuments; - @nullable @BuiltValueField(wireName: 'all_pages_header') - bool get allPagesHeader; + bool? get allPagesHeader; - @nullable @BuiltValueField(wireName: 'all_pages_footer') - bool get allPagesFooter; + bool? get allPagesFooter; - @nullable @BuiltValueField(wireName: 'enable_reminder1') - bool get enableReminder1; + bool? get enableReminder1; - @nullable @BuiltValueField(wireName: 'enable_reminder2') - bool get enableReminder2; + bool? get enableReminder2; - @nullable @BuiltValueField(wireName: 'enable_reminder3') - bool get enableReminder3; + bool? get enableReminder3; - @nullable @BuiltValueField(wireName: 'enable_reminder_endless') - bool get enableReminderEndless; + bool? get enableReminderEndless; - @nullable @BuiltValueField(wireName: 'num_days_reminder1') - int get numDaysReminder1; + int? get numDaysReminder1; - @nullable @BuiltValueField(wireName: 'num_days_reminder2') - int get numDaysReminder2; + int? get numDaysReminder2; - @nullable @BuiltValueField(wireName: 'num_days_reminder3') - int get numDaysReminder3; + int? get numDaysReminder3; - @nullable @BuiltValueField(wireName: 'schedule_reminder1') - String get scheduleReminder1; + String? get scheduleReminder1; - @nullable @BuiltValueField(wireName: 'schedule_reminder2') - String get scheduleReminder2; + String? get scheduleReminder2; - @nullable @BuiltValueField(wireName: 'schedule_reminder3') - String get scheduleReminder3; + String? get scheduleReminder3; - @nullable @BuiltValueField(wireName: 'endless_reminder_frequency_id') - String get endlessReminderFrequencyId; + String? get endlessReminderFrequencyId; - @nullable @BuiltValueField(wireName: 'late_fee_amount1') - double get lateFeeAmount1; + double? get lateFeeAmount1; - @nullable @BuiltValueField(wireName: 'late_fee_amount2') - double get lateFeeAmount2; + double? get lateFeeAmount2; - @nullable @BuiltValueField(wireName: 'late_fee_amount3') - double get lateFeeAmount3; + double? get lateFeeAmount3; - @nullable @BuiltValueField(wireName: 'late_fee_endless_amount') - double get lateFeeAmountEndless; + double? get lateFeeAmountEndless; - @nullable @BuiltValueField(wireName: 'late_fee_percent1') - double get lateFeePercent1; + double? get lateFeePercent1; - @nullable @BuiltValueField(wireName: 'late_fee_percent2') - double get lateFeePercent2; + double? get lateFeePercent2; - @nullable @BuiltValueField(wireName: 'late_fee_percent3') - double get lateFeePercent3; + double? get lateFeePercent3; - @nullable @BuiltValueField(wireName: 'late_fee_endless_percent') - double get lateFeePercentEndless; + double? get lateFeePercentEndless; - @nullable @BuiltValueField(wireName: 'email_subject_reminder_endless') - String get emailSubjectReminderEndless; + String? get emailSubjectReminderEndless; - @nullable @BuiltValueField(wireName: 'email_template_reminder_endless') - String get emailBodyReminderEndless; + String? get emailBodyReminderEndless; - @nullable @BuiltValueField(wireName: 'client_online_payment_notification') - bool get clientOnlinePaymentNotification; + bool? get clientOnlinePaymentNotification; - @nullable @BuiltValueField(wireName: 'client_manual_payment_notification') - bool get clientManualPaymentNotification; + bool? get clientManualPaymentNotification; - @nullable @BuiltValueField(wireName: 'send_email_on_mark_paid') - bool get clientMarkPaidPaymentNotification; + bool? get clientMarkPaidPaymentNotification; - @nullable @BuiltValueField(wireName: 'counter_number_applied') - String get counterNumberApplied; + String? get counterNumberApplied; - @nullable @BuiltValueField(wireName: 'email_sending_method') - String get emailSendingMethod; + String? get emailSendingMethod; - @nullable @BuiltValueField(wireName: 'gmail_sending_user_id') - String get gmailSendingUserId; + String? get gmailSendingUserId; - @nullable @BuiltValueField(wireName: 'client_portal_terms') - String get clientPortalTerms; + String? get clientPortalTerms; - @nullable @BuiltValueField(wireName: 'client_portal_privacy_policy') - String get clientPortalPrivacy; + String? get clientPortalPrivacy; - @nullable @BuiltValueField(wireName: 'lock_invoices') - String get lockInvoices; + String? get lockInvoices; - @nullable @BuiltValueField(wireName: 'auto_bill') - String get autoBill; + String? get autoBill; - @nullable @BuiltValueField(wireName: 'auto_bill_standard_invoices') - bool get autoBillStandardInvoices; + bool? get autoBillStandardInvoices; - @nullable @BuiltValueField(wireName: 'client_portal_allow_under_payment') - bool get clientPortalAllowUnderPayment; + bool? get clientPortalAllowUnderPayment; - @nullable @BuiltValueField(wireName: 'client_portal_allow_over_payment') - bool get clientPortalAllowOverPayment; + bool? get clientPortalAllowOverPayment; - @nullable @BuiltValueField(wireName: 'auto_bill_date') - String get autoBillDate; + String? get autoBillDate; - @nullable @BuiltValueField(wireName: 'client_portal_under_payment_minimum') - double get clientPortalUnderPaymentMinimum; + double? get clientPortalUnderPaymentMinimum; - @nullable @BuiltValueField(wireName: 'use_credits_payment') - String get useCreditsPayment; + String? get useCreditsPayment; - @nullable @BuiltValueField(wireName: 'portal_custom_head') - String get clientPortalCustomHeader; + String? get clientPortalCustomHeader; - @nullable @BuiltValueField(wireName: 'portal_custom_css') - String get clientPortalCustomCss; + String? get clientPortalCustomCss; - @nullable @BuiltValueField(wireName: 'portal_custom_footer') - String get clientPortalCustomFooter; + String? get clientPortalCustomFooter; - @nullable @BuiltValueField(wireName: 'portal_custom_js') - String get clientPortalCustomJs; + String? get clientPortalCustomJs; - @nullable @BuiltValueField(wireName: 'hide_empty_columns_on_pdf') - bool get hideEmptyColumnsOnPdf; + bool? get hideEmptyColumnsOnPdf; - @nullable @BuiltValueField(wireName: 'entity_send_time') - int get entitySendTime; + int? get entitySendTime; - @nullable @BuiltValueField(wireName: 'show_all_tasks_client_portal') - String get clientPortalTasks; + String? get clientPortalTasks; - @nullable @BuiltValueField(wireName: 'page_numbering') - bool get pageNumbering; + bool? get pageNumbering; - @nullable @BuiltValueField(wireName: 'page_numbering_alignment') - String get pageNumberingAlignment; + String? get pageNumberingAlignment; - @nullable @BuiltValueField(wireName: 'require_purchase_order_signature') - bool get requirePurchaseOrderSignature; + bool? get requirePurchaseOrderSignature; - @nullable @BuiltValueField(wireName: 'purchase_order_terms') - String get defaultPurchaseOrderTerms; + String? get defaultPurchaseOrderTerms; - @nullable @BuiltValueField(wireName: 'purchase_order_design_id') - String get defaultPurchaseOrderDesignId; + String? get defaultPurchaseOrderDesignId; - @nullable @BuiltValueField(wireName: 'purchase_order_footer') - String get defaultPurchaseOrderFooter; + String? get defaultPurchaseOrderFooter; - @nullable @BuiltValueField(wireName: 'purchase_order_number_pattern') - String get purchaseOrderNumberPattern; + String? get purchaseOrderNumberPattern; - @nullable @BuiltValueField(wireName: 'purchase_order_number_counter') - int get purchaseOrderNumberCounter; + int? get purchaseOrderNumberCounter; - @nullable @BuiltValueField(wireName: 'qr_iban') - String get qrIban; + String? get qrIban; - @nullable @BuiltValueField(wireName: 'besr_id') - String get besrId; + String? get besrId; - @nullable @BuiltValueField(wireName: 'postmark_secret') - String get postmarkSecret; + String? get postmarkSecret; - @nullable @BuiltValueField(wireName: 'mailgun_secret') - String get mailgunSecret; + String? get mailgunSecret; - @nullable @BuiltValueField(wireName: 'mailgun_domain') - String get mailgunDomain; + String? get mailgunDomain; - @nullable @BuiltValueField(wireName: 'mailgun_endpoint') - String get mailgunEndpoint; + String? get mailgunEndpoint; - @nullable @BuiltValueField(wireName: 'email_alignment') - String get emailAlignment; + String? get emailAlignment; - @nullable @BuiltValueField(wireName: 'show_email_footer') - bool get showEmailFooter; + bool? get showEmailFooter; - @nullable @BuiltValueField(wireName: 'company_logo_size') - String get companyLogoSize; + String? get companyLogoSize; - @nullable @BuiltValueField(wireName: 'show_paid_stamp') - bool get showPaidStamp; + bool? get showPaidStamp; - @nullable @BuiltValueField(wireName: 'show_shipping_address') - bool get showShippingAddress; + bool? get showShippingAddress; - @nullable @BuiltValueField(wireName: 'custom_sending_email') - String get customSendingEmail; + String? get customSendingEmail; - @nullable @BuiltValueField(wireName: 'accept_client_input_quote_approval') - bool get acceptPurchaseOrderNumber; + bool? get acceptPurchaseOrderNumber; - @nullable @BuiltValueField(wireName: 'client_initiated_payments') - bool get clientInitiatedPayments; + bool? get clientInitiatedPayments; - @nullable @BuiltValueField(wireName: 'client_initiated_payments_minimum') - double get clientInitiatedPaymentsMinimum; + double? get clientInitiatedPaymentsMinimum; - @nullable @BuiltValueField(wireName: 'sync_invoice_quote_columns') - bool get shareInvoiceQuoteColumns; + bool? get shareInvoiceQuoteColumns; - @nullable @BuiltValueField(wireName: 'allow_billable_task_items') - bool get allowBillableTaskItems; + bool? get allowBillableTaskItems; - @nullable @BuiltValueField(wireName: 'show_task_item_description') - bool get showTaskItemDescription; + bool? get showTaskItemDescription; - @nullable @BuiltValueField(wireName: 'enable_e_invoice') - bool get enableEInvoice; + bool? get enableEInvoice; - @nullable @BuiltValueField(wireName: 'e_invoice_type') - String get eInvoiceType; + String? get eInvoiceType; - @nullable @BuiltValueField(wireName: 'default_expense_payment_type_id') - String get defaultExpensePaymentTypeId; + String? get defaultExpensePaymentTypeId; - @nullable - String get classification; + String? get classification; - bool get hasAddress => address1 != null && address1.isNotEmpty; + bool get hasAddress => address1 != null && address1!.isNotEmpty; - bool get hasLogo => companyLogo != null && companyLogo.isNotEmpty; + bool get hasLogo => companyLogo != null && companyLogo!.isNotEmpty; - bool get hasTimezone => timezoneId != null && timezoneId.isNotEmpty; + bool get hasTimezone => timezoneId != null && timezoneId!.isNotEmpty; - bool get hasDateFormat => dateFormatId != null && dateFormatId.isNotEmpty; + bool get hasDateFormat => dateFormatId != null && dateFormatId!.isNotEmpty; - bool get hasLanguage => languageId != null && languageId.isNotEmpty; + bool get hasLanguage => languageId != null && languageId!.isNotEmpty; - bool get hasCurrency => currencyId != null && currencyId.isNotEmpty; + bool get hasCurrency => currencyId != null && currencyId!.isNotEmpty; bool get hasDefaultPaymentTypeId => - defaultPaymentTypeId != null && defaultPaymentTypeId.isNotEmpty; + defaultPaymentTypeId != null && defaultPaymentTypeId!.isNotEmpty; List getFieldsForSection(String section) => - pdfVariables != null && pdfVariables.containsKey(section) - ? pdfVariables[section].toList() + pdfVariables != null && pdfVariables!.containsKey(section) + ? pdfVariables![section]!.toList() : []; SettingsEntity setFieldsForSection(String section, List fields) { @@ -1032,7 +813,7 @@ abstract class SettingsEntity } } - String getDesignId(EntityType entityType) { + String? getDesignId(EntityType entityType) { switch (entityType) { case EntityType.invoice: return defaultInvoiceDesignId; @@ -1049,7 +830,7 @@ abstract class SettingsEntity return ''; } - String getDefaultTerms(EntityType entityType) { + String? getDefaultTerms(EntityType? entityType) { switch (entityType) { case EntityType.invoice: case EntityType.recurringInvoice: @@ -1066,7 +847,7 @@ abstract class SettingsEntity } } - String getDefaultFooter(EntityType entityType) { + String? getDefaultFooter(EntityType? entityType) { switch (entityType) { case EntityType.invoice: case EntityType.recurringInvoice: @@ -1083,7 +864,7 @@ abstract class SettingsEntity } } - String getEmailSubject(EmailTemplate emailTemplate) { + String? getEmailSubject(EmailTemplate emailTemplate) { switch (emailTemplate) { case EmailTemplate.invoice: return emailSubjectInvoice; @@ -1116,7 +897,7 @@ abstract class SettingsEntity } } - String getEmailBody(EmailTemplate template) { + String? getEmailBody(EmailTemplate template) { switch (template) { case EmailTemplate.invoice: return emailBodyInvoice; @@ -1156,11 +937,11 @@ abstract class SettingsEntity abstract class PdfPreviewRequest implements Built { factory PdfPreviewRequest({ - String entityType, - String settingsType, - SettingsEntity settings, - String groupId, - String clientId, + required String entityType, + required String settingsType, + required SettingsEntity settings, + required String groupId, + required String clientId, }) { return _$PdfPreviewRequest._( entityType: entityType, diff --git a/lib/data/models/settings_model.g.dart b/lib/data/models/settings_model.g.dart index e1ee1a7ed..cfc995266 100644 --- a/lib/data/models/settings_model.g.dart +++ b/lib/data/models/settings_model.g.dart @@ -19,10 +19,10 @@ class _$SettingsEntitySerializer final String wireName = 'SettingsEntity'; @override - Iterable serialize(Serializers serializers, SettingsEntity object, + Iterable serialize(Serializers serializers, SettingsEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = []; - Object value; + final result = []; + Object? value; value = object.timezoneId; if (value != null) { result @@ -301,8 +301,10 @@ class _$SettingsEntitySerializer result ..add('translations') ..add(serializers.serialize(value, - specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(String)]))); + specifiedType: const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType(String) + ]))); } value = object.taskNumberPattern; if (value != null) { @@ -1546,896 +1548,898 @@ class _$SettingsEntitySerializer @override SettingsEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new SettingsEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'timezone_id': result.timezoneId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'date_format_id': result.dateFormatId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'military_time': result.enableMilitaryTime = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'language_id': result.languageId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'show_currency_code': result.showCurrencyCode = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'currency_id': result.currencyId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'custom_value1': result.customValue1 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'custom_value2': result.customValue2 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'custom_value3': result.customValue3 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'custom_value4': result.customValue4 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'payment_terms': result.defaultPaymentTerms = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'valid_until': result.defaultValidUntil = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'company_gateway_ids': result.companyGatewayIds = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'default_task_rate': result.defaultTaskRate = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double)) as double?; break; case 'send_reminders': result.sendReminders = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'enable_client_portal': result.enablePortal = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'enable_client_portal_dashboard': result.enablePortalDashboard = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'enable_client_portal_tasks': result.enablePortalTasks = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'client_portal_enable_uploads': result.enableClientPortalUploads = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'vendor_portal_enable_uploads': result.enableVendorPortalUploads = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'email_style': result.emailStyle = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'reply_to_email': result.replyToEmail = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'reply_to_name': result.replyToName = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'email_from_name': result.emailFromName = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'bcc_email': result.bccEmail = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'pdf_email_attachment': result.pdfEmailAttachment = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'ubl_email_attachment': result.ublEmailAttachment = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'document_email_attachment': result.documentEmailAttachment = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'email_style_custom': result.emailStyleCustom = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'custom_message_dashboard': result.customMessageDashboard = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'custom_message_unpaid_invoice': result.customMessageUnpaidInvoice = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'custom_message_paid_invoice': result.customMessagePaidInvoice = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'custom_message_unapproved_quote': result.customMessageUnapprovedQuote = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'auto_archive_invoice': result.autoArchiveInvoice = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'auto_archive_invoice_cancelled': result.autoArchiveInvoiceCancelled = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'auto_archive_quote': result.autoArchiveQuote = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'auto_email_invoice': result.autoEmailInvoice = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'auto_convert_quote': result.autoConvertQuote = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'inclusive_taxes': result.enableInclusiveTaxes = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'translations': result.translations.replace(serializers.deserialize(value, - specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(String)]))); + specifiedType: const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType(String) + ]))!); break; case 'task_number_pattern': result.taskNumberPattern = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'task_number_counter': result.taskNumberCounter = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int)) as int?; break; case 'expense_number_pattern': result.expenseNumberPattern = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'expense_number_counter': result.expenseNumberCounter = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int)) as int?; break; case 'recurring_expense_number_pattern': result.recurringExpenseNumberPattern = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'recurring_expense_number_counter': result.recurringExpenseNumberCounter = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int)) as int?; break; case 'vendor_number_pattern': result.vendorNumberPattern = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'vendor_number_counter': result.vendorNumberCounter = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int)) as int?; break; case 'ticket_number_pattern': result.ticketNumberPattern = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'ticket_number_counter': result.ticketNumberCounter = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int)) as int?; break; case 'payment_number_pattern': result.paymentNumberPattern = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'payment_number_counter': result.paymentNumberCounter = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int)) as int?; break; case 'project_number_pattern': result.projectNumberPattern = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'project_number_counter': result.projectNumberCounter = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int)) as int?; break; case 'invoice_number_pattern': result.invoiceNumberPattern = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'invoice_number_counter': result.invoiceNumberCounter = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int)) as int?; break; case 'recurring_invoice_number_pattern': result.recurringInvoiceNumberPattern = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'recurring_invoice_number_counter': result.recurringInvoiceNumberCounter = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int)) as int?; break; case 'quote_number_pattern': result.quoteNumberPattern = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'quote_number_counter': result.quoteNumberCounter = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int)) as int?; break; case 'client_number_pattern': result.clientNumberPattern = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'client_number_counter': result.clientNumberCounter = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int)) as int?; break; case 'credit_number_pattern': result.creditNumberPattern = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'credit_number_counter': result.creditNumberCounter = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int)) as int?; break; case 'recurring_number_prefix': result.recurringNumberPrefix = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'reset_counter_frequency_id': result.resetCounterFrequencyId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'reset_counter_date': result.resetCounterDate = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'counter_padding': result.counterPadding = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int)) as int?; break; case 'shared_invoice_quote_counter': result.sharedInvoiceQuoteCounter = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'shared_invoice_credit_counter': result.sharedInvoiceCreditCounter = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'invoice_terms': result.defaultInvoiceTerms = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'quote_terms': result.defaultQuoteTerms = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'quote_footer': result.defaultQuoteFooter = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'credit_terms': result.defaultCreditTerms = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'credit_footer': result.defaultCreditFooter = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'invoice_design_id': result.defaultInvoiceDesignId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'quote_design_id': result.defaultQuoteDesignId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'credit_design_id': result.defaultCreditDesignId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'invoice_footer': result.defaultInvoiceFooter = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'tax_name1': result.defaultTaxName1 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'tax_rate1': result.defaultTaxRate1 = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double)) as double?; break; case 'tax_name2': result.defaultTaxName2 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'tax_rate2': result.defaultTaxRate2 = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double)) as double?; break; case 'tax_name3': result.defaultTaxName3 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'tax_rate3': result.defaultTaxRate3 = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double)) as double?; break; case 'payment_type_id': result.defaultPaymentTypeId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'pdf_variables': result.pdfVariables.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ const FullType(String), const FullType(BuiltList, const [const FullType(String)]) - ]))); + ]))!); break; case 'email_signature': result.emailSignature = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'email_subject_invoice': result.emailSubjectInvoice = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'email_subject_quote': result.emailSubjectQuote = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'email_subject_credit': result.emailSubjectCredit = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'email_subject_payment': result.emailSubjectPayment = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'email_subject_payment_partial': result.emailSubjectPaymentPartial = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'email_template_invoice': result.emailBodyInvoice = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'email_template_quote': result.emailBodyQuote = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'email_template_credit': result.emailBodyCredit = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'email_template_payment': result.emailBodyPayment = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'email_template_payment_partial': result.emailBodyPaymentPartial = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'email_subject_reminder1': result.emailSubjectReminder1 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'email_subject_reminder2': result.emailSubjectReminder2 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'email_subject_reminder3': result.emailSubjectReminder3 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'email_template_reminder1': result.emailBodyReminder1 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'email_template_reminder2': result.emailBodyReminder2 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'email_template_reminder3': result.emailBodyReminder3 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'email_subject_custom1': result.emailSubjectCustom1 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'email_template_custom1': result.emailBodyCustom1 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'email_subject_custom2': result.emailSubjectCustom2 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'email_template_custom2': result.emailBodyCustom2 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'email_subject_custom3': result.emailSubjectCustom3 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'email_template_custom3': result.emailBodyCustom3 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'email_subject_statement': result.emailSubjectStatement = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'email_template_statement': result.emailBodyStatement = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'email_subject_purchase_order': result.emailSubjectPurchaseOrder = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'email_template_purchase_order': result.emailBodyPurchaseOrder = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'enable_client_portal_password': result.enablePortalPassword = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'signature_on_pdf': result.signatureOnPdf = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'enable_email_markup': result.enableEmailMarkup = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'show_accept_invoice_terms': result.showAcceptInvoiceTerms = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'show_accept_quote_terms': result.showAcceptQuoteTerms = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'require_invoice_signature': result.requireInvoiceSignature = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'require_quote_signature': result.requireQuoteSignature = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'name': result.name = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'company_logo': result.companyLogo = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'website': result.website = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'address1': result.address1 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'address2': result.address2 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'city': result.city = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'state': result.state = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'postal_code': result.postalCode = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'phone': result.phone = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'email': result.email = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'country_id': result.countryId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'vat_number': result.vatNumber = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'id_number': result.idNumber = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'page_size': result.pageSize = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'page_layout': result.pageLayout = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'font_size': result.fontSize = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int)) as int?; break; case 'primary_color': result.primaryColor = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'secondary_color': result.secondaryColor = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'primary_font': result.primaryFont = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'secondary_font': result.secondaryFont = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'hide_paid_to_date': result.hidePaidToDate = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'embed_documents': result.embedDocuments = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'all_pages_header': result.allPagesHeader = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'all_pages_footer': result.allPagesFooter = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'enable_reminder1': result.enableReminder1 = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'enable_reminder2': result.enableReminder2 = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'enable_reminder3': result.enableReminder3 = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'enable_reminder_endless': result.enableReminderEndless = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'num_days_reminder1': result.numDaysReminder1 = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int)) as int?; break; case 'num_days_reminder2': result.numDaysReminder2 = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int)) as int?; break; case 'num_days_reminder3': result.numDaysReminder3 = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int)) as int?; break; case 'schedule_reminder1': result.scheduleReminder1 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'schedule_reminder2': result.scheduleReminder2 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'schedule_reminder3': result.scheduleReminder3 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'endless_reminder_frequency_id': result.endlessReminderFrequencyId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'late_fee_amount1': result.lateFeeAmount1 = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double)) as double?; break; case 'late_fee_amount2': result.lateFeeAmount2 = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double)) as double?; break; case 'late_fee_amount3': result.lateFeeAmount3 = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double)) as double?; break; case 'late_fee_endless_amount': result.lateFeeAmountEndless = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double)) as double?; break; case 'late_fee_percent1': result.lateFeePercent1 = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double)) as double?; break; case 'late_fee_percent2': result.lateFeePercent2 = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double)) as double?; break; case 'late_fee_percent3': result.lateFeePercent3 = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double)) as double?; break; case 'late_fee_endless_percent': result.lateFeePercentEndless = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double)) as double?; break; case 'email_subject_reminder_endless': result.emailSubjectReminderEndless = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'email_template_reminder_endless': result.emailBodyReminderEndless = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'client_online_payment_notification': result.clientOnlinePaymentNotification = serializers - .deserialize(value, specifiedType: const FullType(bool)) as bool; + .deserialize(value, specifiedType: const FullType(bool)) as bool?; break; case 'client_manual_payment_notification': result.clientManualPaymentNotification = serializers - .deserialize(value, specifiedType: const FullType(bool)) as bool; + .deserialize(value, specifiedType: const FullType(bool)) as bool?; break; case 'send_email_on_mark_paid': result.clientMarkPaidPaymentNotification = serializers - .deserialize(value, specifiedType: const FullType(bool)) as bool; + .deserialize(value, specifiedType: const FullType(bool)) as bool?; break; case 'counter_number_applied': result.counterNumberApplied = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'email_sending_method': result.emailSendingMethod = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'gmail_sending_user_id': result.gmailSendingUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'client_portal_terms': result.clientPortalTerms = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'client_portal_privacy_policy': result.clientPortalPrivacy = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'lock_invoices': result.lockInvoices = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'auto_bill': result.autoBill = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'auto_bill_standard_invoices': result.autoBillStandardInvoices = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'client_portal_allow_under_payment': result.clientPortalAllowUnderPayment = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'client_portal_allow_over_payment': result.clientPortalAllowOverPayment = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'auto_bill_date': result.autoBillDate = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'client_portal_under_payment_minimum': result.clientPortalUnderPaymentMinimum = serializers.deserialize( value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double)) as double?; break; case 'use_credits_payment': result.useCreditsPayment = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'portal_custom_head': result.clientPortalCustomHeader = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'portal_custom_css': result.clientPortalCustomCss = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'portal_custom_footer': result.clientPortalCustomFooter = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'portal_custom_js': result.clientPortalCustomJs = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'hide_empty_columns_on_pdf': result.hideEmptyColumnsOnPdf = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'entity_send_time': result.entitySendTime = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int)) as int?; break; case 'show_all_tasks_client_portal': result.clientPortalTasks = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'page_numbering': result.pageNumbering = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'page_numbering_alignment': result.pageNumberingAlignment = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'require_purchase_order_signature': result.requirePurchaseOrderSignature = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'purchase_order_terms': result.defaultPurchaseOrderTerms = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'purchase_order_design_id': result.defaultPurchaseOrderDesignId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'purchase_order_footer': result.defaultPurchaseOrderFooter = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'purchase_order_number_pattern': result.purchaseOrderNumberPattern = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'purchase_order_number_counter': result.purchaseOrderNumberCounter = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int)) as int?; break; case 'qr_iban': result.qrIban = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'besr_id': result.besrId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'postmark_secret': result.postmarkSecret = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'mailgun_secret': result.mailgunSecret = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'mailgun_domain': result.mailgunDomain = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'mailgun_endpoint': result.mailgunEndpoint = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'email_alignment': result.emailAlignment = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'show_email_footer': result.showEmailFooter = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'company_logo_size': result.companyLogoSize = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'show_paid_stamp': result.showPaidStamp = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'show_shipping_address': result.showShippingAddress = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'custom_sending_email': result.customSendingEmail = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'accept_client_input_quote_approval': result.acceptPurchaseOrderNumber = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'client_initiated_payments': result.clientInitiatedPayments = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'client_initiated_payments_minimum': result.clientInitiatedPaymentsMinimum = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double)) as double?; break; case 'sync_invoice_quote_columns': result.shareInvoiceQuoteColumns = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'allow_billable_task_items': result.allowBillableTaskItems = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'show_task_item_description': result.showTaskItemDescription = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'enable_e_invoice': result.enableEInvoice = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'e_invoice_type': result.eInvoiceType = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'default_expense_payment_type_id': result.defaultExpensePaymentTypeId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'classification': result.classification = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; } } @@ -2452,9 +2456,9 @@ class _$PdfPreviewRequestSerializer final String wireName = 'PdfPreviewRequest'; @override - Iterable serialize(Serializers serializers, PdfPreviewRequest object, + Iterable serialize(Serializers serializers, PdfPreviewRequest object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'entity_type', serializers.serialize(object.entityType, specifiedType: const FullType(String)), @@ -2477,35 +2481,36 @@ class _$PdfPreviewRequestSerializer @override PdfPreviewRequest deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new PdfPreviewRequestBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'entity_type': result.entityType = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'settings_type': result.settingsType = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'settings': result.settings.replace(serializers.deserialize(value, - specifiedType: const FullType(SettingsEntity)) as SettingsEntity); + specifiedType: const FullType(SettingsEntity))! + as SettingsEntity); break; case 'group_id': result.groupId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'client_id': result.clientId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -2516,445 +2521,445 @@ class _$PdfPreviewRequestSerializer class _$SettingsEntity extends SettingsEntity { @override - final String timezoneId; + final String? timezoneId; @override - final String dateFormatId; + final String? dateFormatId; @override - final bool enableMilitaryTime; + final bool? enableMilitaryTime; @override - final String languageId; + final String? languageId; @override - final bool showCurrencyCode; + final bool? showCurrencyCode; @override - final String currencyId; + final String? currencyId; @override - final String customValue1; + final String? customValue1; @override - final String customValue2; + final String? customValue2; @override - final String customValue3; + final String? customValue3; @override - final String customValue4; + final String? customValue4; @override - final String defaultPaymentTerms; + final String? defaultPaymentTerms; @override - final String defaultValidUntil; + final String? defaultValidUntil; @override - final String companyGatewayIds; + final String? companyGatewayIds; @override - final double defaultTaskRate; + final double? defaultTaskRate; @override - final bool sendReminders; + final bool? sendReminders; @override - final bool enablePortal; + final bool? enablePortal; @override - final bool enablePortalDashboard; + final bool? enablePortalDashboard; @override - final bool enablePortalTasks; + final bool? enablePortalTasks; @override - final bool enableClientPortalUploads; + final bool? enableClientPortalUploads; @override - final bool enableVendorPortalUploads; + final bool? enableVendorPortalUploads; @override - final String emailStyle; + final String? emailStyle; @override - final String replyToEmail; + final String? replyToEmail; @override - final String replyToName; + final String? replyToName; @override - final String emailFromName; + final String? emailFromName; @override - final String bccEmail; + final String? bccEmail; @override - final bool pdfEmailAttachment; + final bool? pdfEmailAttachment; @override - final bool ublEmailAttachment; + final bool? ublEmailAttachment; @override - final bool documentEmailAttachment; + final bool? documentEmailAttachment; @override - final String emailStyleCustom; + final String? emailStyleCustom; @override - final String customMessageDashboard; + final String? customMessageDashboard; @override - final String customMessageUnpaidInvoice; + final String? customMessageUnpaidInvoice; @override - final String customMessagePaidInvoice; + final String? customMessagePaidInvoice; @override - final String customMessageUnapprovedQuote; + final String? customMessageUnapprovedQuote; @override - final bool autoArchiveInvoice; + final bool? autoArchiveInvoice; @override - final bool autoArchiveInvoiceCancelled; + final bool? autoArchiveInvoiceCancelled; @override - final bool autoArchiveQuote; + final bool? autoArchiveQuote; @override - final bool autoEmailInvoice; + final bool? autoEmailInvoice; @override - final bool autoConvertQuote; + final bool? autoConvertQuote; @override - final bool enableInclusiveTaxes; + final bool? enableInclusiveTaxes; @override - final BuiltMap translations; + final BuiltMap? translations; @override - final String taskNumberPattern; + final String? taskNumberPattern; @override - final int taskNumberCounter; + final int? taskNumberCounter; @override - final String expenseNumberPattern; + final String? expenseNumberPattern; @override - final int expenseNumberCounter; + final int? expenseNumberCounter; @override - final String recurringExpenseNumberPattern; + final String? recurringExpenseNumberPattern; @override - final int recurringExpenseNumberCounter; + final int? recurringExpenseNumberCounter; @override - final String vendorNumberPattern; + final String? vendorNumberPattern; @override - final int vendorNumberCounter; + final int? vendorNumberCounter; @override - final String ticketNumberPattern; + final String? ticketNumberPattern; @override - final int ticketNumberCounter; + final int? ticketNumberCounter; @override - final String paymentNumberPattern; + final String? paymentNumberPattern; @override - final int paymentNumberCounter; + final int? paymentNumberCounter; @override - final String projectNumberPattern; + final String? projectNumberPattern; @override - final int projectNumberCounter; + final int? projectNumberCounter; @override - final String invoiceNumberPattern; + final String? invoiceNumberPattern; @override - final int invoiceNumberCounter; + final int? invoiceNumberCounter; @override - final String recurringInvoiceNumberPattern; + final String? recurringInvoiceNumberPattern; @override - final int recurringInvoiceNumberCounter; + final int? recurringInvoiceNumberCounter; @override - final String quoteNumberPattern; + final String? quoteNumberPattern; @override - final int quoteNumberCounter; + final int? quoteNumberCounter; @override - final String clientNumberPattern; + final String? clientNumberPattern; @override - final int clientNumberCounter; + final int? clientNumberCounter; @override - final String creditNumberPattern; + final String? creditNumberPattern; @override - final int creditNumberCounter; + final int? creditNumberCounter; @override - final String recurringNumberPrefix; + final String? recurringNumberPrefix; @override - final String resetCounterFrequencyId; + final String? resetCounterFrequencyId; @override - final String resetCounterDate; + final String? resetCounterDate; @override - final int counterPadding; + final int? counterPadding; @override - final bool sharedInvoiceQuoteCounter; + final bool? sharedInvoiceQuoteCounter; @override - final bool sharedInvoiceCreditCounter; + final bool? sharedInvoiceCreditCounter; @override - final String defaultInvoiceTerms; + final String? defaultInvoiceTerms; @override - final String defaultQuoteTerms; + final String? defaultQuoteTerms; @override - final String defaultQuoteFooter; + final String? defaultQuoteFooter; @override - final String defaultCreditTerms; + final String? defaultCreditTerms; @override - final String defaultCreditFooter; + final String? defaultCreditFooter; @override - final String defaultInvoiceDesignId; + final String? defaultInvoiceDesignId; @override - final String defaultQuoteDesignId; + final String? defaultQuoteDesignId; @override - final String defaultCreditDesignId; + final String? defaultCreditDesignId; @override - final String defaultInvoiceFooter; + final String? defaultInvoiceFooter; @override - final String defaultTaxName1; + final String? defaultTaxName1; @override - final double defaultTaxRate1; + final double? defaultTaxRate1; @override - final String defaultTaxName2; + final String? defaultTaxName2; @override - final double defaultTaxRate2; + final double? defaultTaxRate2; @override - final String defaultTaxName3; + final String? defaultTaxName3; @override - final double defaultTaxRate3; + final double? defaultTaxRate3; @override - final String defaultPaymentTypeId; + final String? defaultPaymentTypeId; @override - final BuiltMap> pdfVariables; + final BuiltMap>? pdfVariables; @override - final String emailSignature; + final String? emailSignature; @override - final String emailSubjectInvoice; + final String? emailSubjectInvoice; @override - final String emailSubjectQuote; + final String? emailSubjectQuote; @override - final String emailSubjectCredit; + final String? emailSubjectCredit; @override - final String emailSubjectPayment; + final String? emailSubjectPayment; @override - final String emailSubjectPaymentPartial; + final String? emailSubjectPaymentPartial; @override - final String emailBodyInvoice; + final String? emailBodyInvoice; @override - final String emailBodyQuote; + final String? emailBodyQuote; @override - final String emailBodyCredit; + final String? emailBodyCredit; @override - final String emailBodyPayment; + final String? emailBodyPayment; @override - final String emailBodyPaymentPartial; + final String? emailBodyPaymentPartial; @override - final String emailSubjectReminder1; + final String? emailSubjectReminder1; @override - final String emailSubjectReminder2; + final String? emailSubjectReminder2; @override - final String emailSubjectReminder3; + final String? emailSubjectReminder3; @override - final String emailBodyReminder1; + final String? emailBodyReminder1; @override - final String emailBodyReminder2; + final String? emailBodyReminder2; @override - final String emailBodyReminder3; + final String? emailBodyReminder3; @override - final String emailSubjectCustom1; + final String? emailSubjectCustom1; @override - final String emailBodyCustom1; + final String? emailBodyCustom1; @override - final String emailSubjectCustom2; + final String? emailSubjectCustom2; @override - final String emailBodyCustom2; + final String? emailBodyCustom2; @override - final String emailSubjectCustom3; + final String? emailSubjectCustom3; @override - final String emailBodyCustom3; + final String? emailBodyCustom3; @override - final String emailSubjectStatement; + final String? emailSubjectStatement; @override - final String emailBodyStatement; + final String? emailBodyStatement; @override - final String emailSubjectPurchaseOrder; + final String? emailSubjectPurchaseOrder; @override - final String emailBodyPurchaseOrder; + final String? emailBodyPurchaseOrder; @override - final bool enablePortalPassword; + final bool? enablePortalPassword; @override - final bool signatureOnPdf; + final bool? signatureOnPdf; @override - final bool enableEmailMarkup; + final bool? enableEmailMarkup; @override - final bool showAcceptInvoiceTerms; + final bool? showAcceptInvoiceTerms; @override - final bool showAcceptQuoteTerms; + final bool? showAcceptQuoteTerms; @override - final bool requireInvoiceSignature; + final bool? requireInvoiceSignature; @override - final bool requireQuoteSignature; + final bool? requireQuoteSignature; @override - final String name; + final String? name; @override - final String companyLogo; + final String? companyLogo; @override - final String website; + final String? website; @override - final String address1; + final String? address1; @override - final String address2; + final String? address2; @override - final String city; + final String? city; @override - final String state; + final String? state; @override - final String postalCode; + final String? postalCode; @override - final String phone; + final String? phone; @override - final String email; + final String? email; @override - final String countryId; + final String? countryId; @override - final String vatNumber; + final String? vatNumber; @override - final String idNumber; + final String? idNumber; @override - final String pageSize; + final String? pageSize; @override - final String pageLayout; + final String? pageLayout; @override - final int fontSize; + final int? fontSize; @override - final String primaryColor; + final String? primaryColor; @override - final String secondaryColor; + final String? secondaryColor; @override - final String primaryFont; + final String? primaryFont; @override - final String secondaryFont; + final String? secondaryFont; @override - final bool hidePaidToDate; + final bool? hidePaidToDate; @override - final bool embedDocuments; + final bool? embedDocuments; @override - final bool allPagesHeader; + final bool? allPagesHeader; @override - final bool allPagesFooter; + final bool? allPagesFooter; @override - final bool enableReminder1; + final bool? enableReminder1; @override - final bool enableReminder2; + final bool? enableReminder2; @override - final bool enableReminder3; + final bool? enableReminder3; @override - final bool enableReminderEndless; + final bool? enableReminderEndless; @override - final int numDaysReminder1; + final int? numDaysReminder1; @override - final int numDaysReminder2; + final int? numDaysReminder2; @override - final int numDaysReminder3; + final int? numDaysReminder3; @override - final String scheduleReminder1; + final String? scheduleReminder1; @override - final String scheduleReminder2; + final String? scheduleReminder2; @override - final String scheduleReminder3; + final String? scheduleReminder3; @override - final String endlessReminderFrequencyId; + final String? endlessReminderFrequencyId; @override - final double lateFeeAmount1; + final double? lateFeeAmount1; @override - final double lateFeeAmount2; + final double? lateFeeAmount2; @override - final double lateFeeAmount3; + final double? lateFeeAmount3; @override - final double lateFeeAmountEndless; + final double? lateFeeAmountEndless; @override - final double lateFeePercent1; + final double? lateFeePercent1; @override - final double lateFeePercent2; + final double? lateFeePercent2; @override - final double lateFeePercent3; + final double? lateFeePercent3; @override - final double lateFeePercentEndless; + final double? lateFeePercentEndless; @override - final String emailSubjectReminderEndless; + final String? emailSubjectReminderEndless; @override - final String emailBodyReminderEndless; + final String? emailBodyReminderEndless; @override - final bool clientOnlinePaymentNotification; + final bool? clientOnlinePaymentNotification; @override - final bool clientManualPaymentNotification; + final bool? clientManualPaymentNotification; @override - final bool clientMarkPaidPaymentNotification; + final bool? clientMarkPaidPaymentNotification; @override - final String counterNumberApplied; + final String? counterNumberApplied; @override - final String emailSendingMethod; + final String? emailSendingMethod; @override - final String gmailSendingUserId; + final String? gmailSendingUserId; @override - final String clientPortalTerms; + final String? clientPortalTerms; @override - final String clientPortalPrivacy; + final String? clientPortalPrivacy; @override - final String lockInvoices; + final String? lockInvoices; @override - final String autoBill; + final String? autoBill; @override - final bool autoBillStandardInvoices; + final bool? autoBillStandardInvoices; @override - final bool clientPortalAllowUnderPayment; + final bool? clientPortalAllowUnderPayment; @override - final bool clientPortalAllowOverPayment; + final bool? clientPortalAllowOverPayment; @override - final String autoBillDate; + final String? autoBillDate; @override - final double clientPortalUnderPaymentMinimum; + final double? clientPortalUnderPaymentMinimum; @override - final String useCreditsPayment; + final String? useCreditsPayment; @override - final String clientPortalCustomHeader; + final String? clientPortalCustomHeader; @override - final String clientPortalCustomCss; + final String? clientPortalCustomCss; @override - final String clientPortalCustomFooter; + final String? clientPortalCustomFooter; @override - final String clientPortalCustomJs; + final String? clientPortalCustomJs; @override - final bool hideEmptyColumnsOnPdf; + final bool? hideEmptyColumnsOnPdf; @override - final int entitySendTime; + final int? entitySendTime; @override - final String clientPortalTasks; + final String? clientPortalTasks; @override - final bool pageNumbering; + final bool? pageNumbering; @override - final String pageNumberingAlignment; + final String? pageNumberingAlignment; @override - final bool requirePurchaseOrderSignature; + final bool? requirePurchaseOrderSignature; @override - final String defaultPurchaseOrderTerms; + final String? defaultPurchaseOrderTerms; @override - final String defaultPurchaseOrderDesignId; + final String? defaultPurchaseOrderDesignId; @override - final String defaultPurchaseOrderFooter; + final String? defaultPurchaseOrderFooter; @override - final String purchaseOrderNumberPattern; + final String? purchaseOrderNumberPattern; @override - final int purchaseOrderNumberCounter; + final int? purchaseOrderNumberCounter; @override - final String qrIban; + final String? qrIban; @override - final String besrId; + final String? besrId; @override - final String postmarkSecret; + final String? postmarkSecret; @override - final String mailgunSecret; + final String? mailgunSecret; @override - final String mailgunDomain; + final String? mailgunDomain; @override - final String mailgunEndpoint; + final String? mailgunEndpoint; @override - final String emailAlignment; + final String? emailAlignment; @override - final bool showEmailFooter; + final bool? showEmailFooter; @override - final String companyLogoSize; + final String? companyLogoSize; @override - final bool showPaidStamp; + final bool? showPaidStamp; @override - final bool showShippingAddress; + final bool? showShippingAddress; @override - final String customSendingEmail; + final String? customSendingEmail; @override - final bool acceptPurchaseOrderNumber; + final bool? acceptPurchaseOrderNumber; @override - final bool clientInitiatedPayments; + final bool? clientInitiatedPayments; @override - final double clientInitiatedPaymentsMinimum; + final double? clientInitiatedPaymentsMinimum; @override - final bool shareInvoiceQuoteColumns; + final bool? shareInvoiceQuoteColumns; @override - final bool allowBillableTaskItems; + final bool? allowBillableTaskItems; @override - final bool showTaskItemDescription; + final bool? showTaskItemDescription; @override - final bool enableEInvoice; + final bool? enableEInvoice; @override - final String eInvoiceType; + final String? eInvoiceType; @override - final String defaultExpensePaymentTypeId; + final String? defaultExpensePaymentTypeId; @override - final String classification; + final String? classification; - factory _$SettingsEntity([void Function(SettingsEntityBuilder) updates]) => + factory _$SettingsEntity([void Function(SettingsEntityBuilder)? updates]) => (new SettingsEntityBuilder()..update(updates))._build(); _$SettingsEntity._( @@ -3417,10 +3422,10 @@ class _$SettingsEntity extends SettingsEntity { classification == other.classification; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, timezoneId.hashCode); _$hash = $jc(_$hash, dateFormatId.hashCode); @@ -3878,1081 +3883,1085 @@ class _$SettingsEntity extends SettingsEntity { class SettingsEntityBuilder implements Builder { - _$SettingsEntity _$v; + _$SettingsEntity? _$v; - String _timezoneId; - String get timezoneId => _$this._timezoneId; - set timezoneId(String timezoneId) => _$this._timezoneId = timezoneId; + String? _timezoneId; + String? get timezoneId => _$this._timezoneId; + set timezoneId(String? timezoneId) => _$this._timezoneId = timezoneId; - String _dateFormatId; - String get dateFormatId => _$this._dateFormatId; - set dateFormatId(String dateFormatId) => _$this._dateFormatId = dateFormatId; + String? _dateFormatId; + String? get dateFormatId => _$this._dateFormatId; + set dateFormatId(String? dateFormatId) => _$this._dateFormatId = dateFormatId; - bool _enableMilitaryTime; - bool get enableMilitaryTime => _$this._enableMilitaryTime; - set enableMilitaryTime(bool enableMilitaryTime) => + bool? _enableMilitaryTime; + bool? get enableMilitaryTime => _$this._enableMilitaryTime; + set enableMilitaryTime(bool? enableMilitaryTime) => _$this._enableMilitaryTime = enableMilitaryTime; - String _languageId; - String get languageId => _$this._languageId; - set languageId(String languageId) => _$this._languageId = languageId; + String? _languageId; + String? get languageId => _$this._languageId; + set languageId(String? languageId) => _$this._languageId = languageId; - bool _showCurrencyCode; - bool get showCurrencyCode => _$this._showCurrencyCode; - set showCurrencyCode(bool showCurrencyCode) => + bool? _showCurrencyCode; + bool? get showCurrencyCode => _$this._showCurrencyCode; + set showCurrencyCode(bool? showCurrencyCode) => _$this._showCurrencyCode = showCurrencyCode; - String _currencyId; - String get currencyId => _$this._currencyId; - set currencyId(String currencyId) => _$this._currencyId = currencyId; + String? _currencyId; + String? get currencyId => _$this._currencyId; + set currencyId(String? currencyId) => _$this._currencyId = currencyId; - String _customValue1; - String get customValue1 => _$this._customValue1; - set customValue1(String customValue1) => _$this._customValue1 = customValue1; + String? _customValue1; + String? get customValue1 => _$this._customValue1; + set customValue1(String? customValue1) => _$this._customValue1 = customValue1; - String _customValue2; - String get customValue2 => _$this._customValue2; - set customValue2(String customValue2) => _$this._customValue2 = customValue2; + String? _customValue2; + String? get customValue2 => _$this._customValue2; + set customValue2(String? customValue2) => _$this._customValue2 = customValue2; - String _customValue3; - String get customValue3 => _$this._customValue3; - set customValue3(String customValue3) => _$this._customValue3 = customValue3; + String? _customValue3; + String? get customValue3 => _$this._customValue3; + set customValue3(String? customValue3) => _$this._customValue3 = customValue3; - String _customValue4; - String get customValue4 => _$this._customValue4; - set customValue4(String customValue4) => _$this._customValue4 = customValue4; + String? _customValue4; + String? get customValue4 => _$this._customValue4; + set customValue4(String? customValue4) => _$this._customValue4 = customValue4; - String _defaultPaymentTerms; - String get defaultPaymentTerms => _$this._defaultPaymentTerms; - set defaultPaymentTerms(String defaultPaymentTerms) => + String? _defaultPaymentTerms; + String? get defaultPaymentTerms => _$this._defaultPaymentTerms; + set defaultPaymentTerms(String? defaultPaymentTerms) => _$this._defaultPaymentTerms = defaultPaymentTerms; - String _defaultValidUntil; - String get defaultValidUntil => _$this._defaultValidUntil; - set defaultValidUntil(String defaultValidUntil) => + String? _defaultValidUntil; + String? get defaultValidUntil => _$this._defaultValidUntil; + set defaultValidUntil(String? defaultValidUntil) => _$this._defaultValidUntil = defaultValidUntil; - String _companyGatewayIds; - String get companyGatewayIds => _$this._companyGatewayIds; - set companyGatewayIds(String companyGatewayIds) => + String? _companyGatewayIds; + String? get companyGatewayIds => _$this._companyGatewayIds; + set companyGatewayIds(String? companyGatewayIds) => _$this._companyGatewayIds = companyGatewayIds; - double _defaultTaskRate; - double get defaultTaskRate => _$this._defaultTaskRate; - set defaultTaskRate(double defaultTaskRate) => + double? _defaultTaskRate; + double? get defaultTaskRate => _$this._defaultTaskRate; + set defaultTaskRate(double? defaultTaskRate) => _$this._defaultTaskRate = defaultTaskRate; - bool _sendReminders; - bool get sendReminders => _$this._sendReminders; - set sendReminders(bool sendReminders) => + bool? _sendReminders; + bool? get sendReminders => _$this._sendReminders; + set sendReminders(bool? sendReminders) => _$this._sendReminders = sendReminders; - bool _enablePortal; - bool get enablePortal => _$this._enablePortal; - set enablePortal(bool enablePortal) => _$this._enablePortal = enablePortal; + bool? _enablePortal; + bool? get enablePortal => _$this._enablePortal; + set enablePortal(bool? enablePortal) => _$this._enablePortal = enablePortal; - bool _enablePortalDashboard; - bool get enablePortalDashboard => _$this._enablePortalDashboard; - set enablePortalDashboard(bool enablePortalDashboard) => + bool? _enablePortalDashboard; + bool? get enablePortalDashboard => _$this._enablePortalDashboard; + set enablePortalDashboard(bool? enablePortalDashboard) => _$this._enablePortalDashboard = enablePortalDashboard; - bool _enablePortalTasks; - bool get enablePortalTasks => _$this._enablePortalTasks; - set enablePortalTasks(bool enablePortalTasks) => + bool? _enablePortalTasks; + bool? get enablePortalTasks => _$this._enablePortalTasks; + set enablePortalTasks(bool? enablePortalTasks) => _$this._enablePortalTasks = enablePortalTasks; - bool _enableClientPortalUploads; - bool get enableClientPortalUploads => _$this._enableClientPortalUploads; - set enableClientPortalUploads(bool enableClientPortalUploads) => + bool? _enableClientPortalUploads; + bool? get enableClientPortalUploads => _$this._enableClientPortalUploads; + set enableClientPortalUploads(bool? enableClientPortalUploads) => _$this._enableClientPortalUploads = enableClientPortalUploads; - bool _enableVendorPortalUploads; - bool get enableVendorPortalUploads => _$this._enableVendorPortalUploads; - set enableVendorPortalUploads(bool enableVendorPortalUploads) => + bool? _enableVendorPortalUploads; + bool? get enableVendorPortalUploads => _$this._enableVendorPortalUploads; + set enableVendorPortalUploads(bool? enableVendorPortalUploads) => _$this._enableVendorPortalUploads = enableVendorPortalUploads; - String _emailStyle; - String get emailStyle => _$this._emailStyle; - set emailStyle(String emailStyle) => _$this._emailStyle = emailStyle; + String? _emailStyle; + String? get emailStyle => _$this._emailStyle; + set emailStyle(String? emailStyle) => _$this._emailStyle = emailStyle; - String _replyToEmail; - String get replyToEmail => _$this._replyToEmail; - set replyToEmail(String replyToEmail) => _$this._replyToEmail = replyToEmail; + String? _replyToEmail; + String? get replyToEmail => _$this._replyToEmail; + set replyToEmail(String? replyToEmail) => _$this._replyToEmail = replyToEmail; - String _replyToName; - String get replyToName => _$this._replyToName; - set replyToName(String replyToName) => _$this._replyToName = replyToName; + String? _replyToName; + String? get replyToName => _$this._replyToName; + set replyToName(String? replyToName) => _$this._replyToName = replyToName; - String _emailFromName; - String get emailFromName => _$this._emailFromName; - set emailFromName(String emailFromName) => + String? _emailFromName; + String? get emailFromName => _$this._emailFromName; + set emailFromName(String? emailFromName) => _$this._emailFromName = emailFromName; - String _bccEmail; - String get bccEmail => _$this._bccEmail; - set bccEmail(String bccEmail) => _$this._bccEmail = bccEmail; + String? _bccEmail; + String? get bccEmail => _$this._bccEmail; + set bccEmail(String? bccEmail) => _$this._bccEmail = bccEmail; - bool _pdfEmailAttachment; - bool get pdfEmailAttachment => _$this._pdfEmailAttachment; - set pdfEmailAttachment(bool pdfEmailAttachment) => + bool? _pdfEmailAttachment; + bool? get pdfEmailAttachment => _$this._pdfEmailAttachment; + set pdfEmailAttachment(bool? pdfEmailAttachment) => _$this._pdfEmailAttachment = pdfEmailAttachment; - bool _ublEmailAttachment; - bool get ublEmailAttachment => _$this._ublEmailAttachment; - set ublEmailAttachment(bool ublEmailAttachment) => + bool? _ublEmailAttachment; + bool? get ublEmailAttachment => _$this._ublEmailAttachment; + set ublEmailAttachment(bool? ublEmailAttachment) => _$this._ublEmailAttachment = ublEmailAttachment; - bool _documentEmailAttachment; - bool get documentEmailAttachment => _$this._documentEmailAttachment; - set documentEmailAttachment(bool documentEmailAttachment) => + bool? _documentEmailAttachment; + bool? get documentEmailAttachment => _$this._documentEmailAttachment; + set documentEmailAttachment(bool? documentEmailAttachment) => _$this._documentEmailAttachment = documentEmailAttachment; - String _emailStyleCustom; - String get emailStyleCustom => _$this._emailStyleCustom; - set emailStyleCustom(String emailStyleCustom) => + String? _emailStyleCustom; + String? get emailStyleCustom => _$this._emailStyleCustom; + set emailStyleCustom(String? emailStyleCustom) => _$this._emailStyleCustom = emailStyleCustom; - String _customMessageDashboard; - String get customMessageDashboard => _$this._customMessageDashboard; - set customMessageDashboard(String customMessageDashboard) => + String? _customMessageDashboard; + String? get customMessageDashboard => _$this._customMessageDashboard; + set customMessageDashboard(String? customMessageDashboard) => _$this._customMessageDashboard = customMessageDashboard; - String _customMessageUnpaidInvoice; - String get customMessageUnpaidInvoice => _$this._customMessageUnpaidInvoice; - set customMessageUnpaidInvoice(String customMessageUnpaidInvoice) => + String? _customMessageUnpaidInvoice; + String? get customMessageUnpaidInvoice => _$this._customMessageUnpaidInvoice; + set customMessageUnpaidInvoice(String? customMessageUnpaidInvoice) => _$this._customMessageUnpaidInvoice = customMessageUnpaidInvoice; - String _customMessagePaidInvoice; - String get customMessagePaidInvoice => _$this._customMessagePaidInvoice; - set customMessagePaidInvoice(String customMessagePaidInvoice) => + String? _customMessagePaidInvoice; + String? get customMessagePaidInvoice => _$this._customMessagePaidInvoice; + set customMessagePaidInvoice(String? customMessagePaidInvoice) => _$this._customMessagePaidInvoice = customMessagePaidInvoice; - String _customMessageUnapprovedQuote; - String get customMessageUnapprovedQuote => + String? _customMessageUnapprovedQuote; + String? get customMessageUnapprovedQuote => _$this._customMessageUnapprovedQuote; - set customMessageUnapprovedQuote(String customMessageUnapprovedQuote) => + set customMessageUnapprovedQuote(String? customMessageUnapprovedQuote) => _$this._customMessageUnapprovedQuote = customMessageUnapprovedQuote; - bool _autoArchiveInvoice; - bool get autoArchiveInvoice => _$this._autoArchiveInvoice; - set autoArchiveInvoice(bool autoArchiveInvoice) => + bool? _autoArchiveInvoice; + bool? get autoArchiveInvoice => _$this._autoArchiveInvoice; + set autoArchiveInvoice(bool? autoArchiveInvoice) => _$this._autoArchiveInvoice = autoArchiveInvoice; - bool _autoArchiveInvoiceCancelled; - bool get autoArchiveInvoiceCancelled => _$this._autoArchiveInvoiceCancelled; - set autoArchiveInvoiceCancelled(bool autoArchiveInvoiceCancelled) => + bool? _autoArchiveInvoiceCancelled; + bool? get autoArchiveInvoiceCancelled => _$this._autoArchiveInvoiceCancelled; + set autoArchiveInvoiceCancelled(bool? autoArchiveInvoiceCancelled) => _$this._autoArchiveInvoiceCancelled = autoArchiveInvoiceCancelled; - bool _autoArchiveQuote; - bool get autoArchiveQuote => _$this._autoArchiveQuote; - set autoArchiveQuote(bool autoArchiveQuote) => + bool? _autoArchiveQuote; + bool? get autoArchiveQuote => _$this._autoArchiveQuote; + set autoArchiveQuote(bool? autoArchiveQuote) => _$this._autoArchiveQuote = autoArchiveQuote; - bool _autoEmailInvoice; - bool get autoEmailInvoice => _$this._autoEmailInvoice; - set autoEmailInvoice(bool autoEmailInvoice) => + bool? _autoEmailInvoice; + bool? get autoEmailInvoice => _$this._autoEmailInvoice; + set autoEmailInvoice(bool? autoEmailInvoice) => _$this._autoEmailInvoice = autoEmailInvoice; - bool _autoConvertQuote; - bool get autoConvertQuote => _$this._autoConvertQuote; - set autoConvertQuote(bool autoConvertQuote) => + bool? _autoConvertQuote; + bool? get autoConvertQuote => _$this._autoConvertQuote; + set autoConvertQuote(bool? autoConvertQuote) => _$this._autoConvertQuote = autoConvertQuote; - bool _enableInclusiveTaxes; - bool get enableInclusiveTaxes => _$this._enableInclusiveTaxes; - set enableInclusiveTaxes(bool enableInclusiveTaxes) => + bool? _enableInclusiveTaxes; + bool? get enableInclusiveTaxes => _$this._enableInclusiveTaxes; + set enableInclusiveTaxes(bool? enableInclusiveTaxes) => _$this._enableInclusiveTaxes = enableInclusiveTaxes; - MapBuilder _translations; - MapBuilder get translations => - _$this._translations ??= new MapBuilder(); - set translations(MapBuilder translations) => + MapBuilder? _translations; + MapBuilder get translations => + _$this._translations ??= new MapBuilder(); + set translations(MapBuilder? translations) => _$this._translations = translations; - String _taskNumberPattern; - String get taskNumberPattern => _$this._taskNumberPattern; - set taskNumberPattern(String taskNumberPattern) => + String? _taskNumberPattern; + String? get taskNumberPattern => _$this._taskNumberPattern; + set taskNumberPattern(String? taskNumberPattern) => _$this._taskNumberPattern = taskNumberPattern; - int _taskNumberCounter; - int get taskNumberCounter => _$this._taskNumberCounter; - set taskNumberCounter(int taskNumberCounter) => + int? _taskNumberCounter; + int? get taskNumberCounter => _$this._taskNumberCounter; + set taskNumberCounter(int? taskNumberCounter) => _$this._taskNumberCounter = taskNumberCounter; - String _expenseNumberPattern; - String get expenseNumberPattern => _$this._expenseNumberPattern; - set expenseNumberPattern(String expenseNumberPattern) => + String? _expenseNumberPattern; + String? get expenseNumberPattern => _$this._expenseNumberPattern; + set expenseNumberPattern(String? expenseNumberPattern) => _$this._expenseNumberPattern = expenseNumberPattern; - int _expenseNumberCounter; - int get expenseNumberCounter => _$this._expenseNumberCounter; - set expenseNumberCounter(int expenseNumberCounter) => + int? _expenseNumberCounter; + int? get expenseNumberCounter => _$this._expenseNumberCounter; + set expenseNumberCounter(int? expenseNumberCounter) => _$this._expenseNumberCounter = expenseNumberCounter; - String _recurringExpenseNumberPattern; - String get recurringExpenseNumberPattern => + String? _recurringExpenseNumberPattern; + String? get recurringExpenseNumberPattern => _$this._recurringExpenseNumberPattern; - set recurringExpenseNumberPattern(String recurringExpenseNumberPattern) => + set recurringExpenseNumberPattern(String? recurringExpenseNumberPattern) => _$this._recurringExpenseNumberPattern = recurringExpenseNumberPattern; - int _recurringExpenseNumberCounter; - int get recurringExpenseNumberCounter => + int? _recurringExpenseNumberCounter; + int? get recurringExpenseNumberCounter => _$this._recurringExpenseNumberCounter; - set recurringExpenseNumberCounter(int recurringExpenseNumberCounter) => + set recurringExpenseNumberCounter(int? recurringExpenseNumberCounter) => _$this._recurringExpenseNumberCounter = recurringExpenseNumberCounter; - String _vendorNumberPattern; - String get vendorNumberPattern => _$this._vendorNumberPattern; - set vendorNumberPattern(String vendorNumberPattern) => + String? _vendorNumberPattern; + String? get vendorNumberPattern => _$this._vendorNumberPattern; + set vendorNumberPattern(String? vendorNumberPattern) => _$this._vendorNumberPattern = vendorNumberPattern; - int _vendorNumberCounter; - int get vendorNumberCounter => _$this._vendorNumberCounter; - set vendorNumberCounter(int vendorNumberCounter) => + int? _vendorNumberCounter; + int? get vendorNumberCounter => _$this._vendorNumberCounter; + set vendorNumberCounter(int? vendorNumberCounter) => _$this._vendorNumberCounter = vendorNumberCounter; - String _ticketNumberPattern; - String get ticketNumberPattern => _$this._ticketNumberPattern; - set ticketNumberPattern(String ticketNumberPattern) => + String? _ticketNumberPattern; + String? get ticketNumberPattern => _$this._ticketNumberPattern; + set ticketNumberPattern(String? ticketNumberPattern) => _$this._ticketNumberPattern = ticketNumberPattern; - int _ticketNumberCounter; - int get ticketNumberCounter => _$this._ticketNumberCounter; - set ticketNumberCounter(int ticketNumberCounter) => + int? _ticketNumberCounter; + int? get ticketNumberCounter => _$this._ticketNumberCounter; + set ticketNumberCounter(int? ticketNumberCounter) => _$this._ticketNumberCounter = ticketNumberCounter; - String _paymentNumberPattern; - String get paymentNumberPattern => _$this._paymentNumberPattern; - set paymentNumberPattern(String paymentNumberPattern) => + String? _paymentNumberPattern; + String? get paymentNumberPattern => _$this._paymentNumberPattern; + set paymentNumberPattern(String? paymentNumberPattern) => _$this._paymentNumberPattern = paymentNumberPattern; - int _paymentNumberCounter; - int get paymentNumberCounter => _$this._paymentNumberCounter; - set paymentNumberCounter(int paymentNumberCounter) => + int? _paymentNumberCounter; + int? get paymentNumberCounter => _$this._paymentNumberCounter; + set paymentNumberCounter(int? paymentNumberCounter) => _$this._paymentNumberCounter = paymentNumberCounter; - String _projectNumberPattern; - String get projectNumberPattern => _$this._projectNumberPattern; - set projectNumberPattern(String projectNumberPattern) => + String? _projectNumberPattern; + String? get projectNumberPattern => _$this._projectNumberPattern; + set projectNumberPattern(String? projectNumberPattern) => _$this._projectNumberPattern = projectNumberPattern; - int _projectNumberCounter; - int get projectNumberCounter => _$this._projectNumberCounter; - set projectNumberCounter(int projectNumberCounter) => + int? _projectNumberCounter; + int? get projectNumberCounter => _$this._projectNumberCounter; + set projectNumberCounter(int? projectNumberCounter) => _$this._projectNumberCounter = projectNumberCounter; - String _invoiceNumberPattern; - String get invoiceNumberPattern => _$this._invoiceNumberPattern; - set invoiceNumberPattern(String invoiceNumberPattern) => + String? _invoiceNumberPattern; + String? get invoiceNumberPattern => _$this._invoiceNumberPattern; + set invoiceNumberPattern(String? invoiceNumberPattern) => _$this._invoiceNumberPattern = invoiceNumberPattern; - int _invoiceNumberCounter; - int get invoiceNumberCounter => _$this._invoiceNumberCounter; - set invoiceNumberCounter(int invoiceNumberCounter) => + int? _invoiceNumberCounter; + int? get invoiceNumberCounter => _$this._invoiceNumberCounter; + set invoiceNumberCounter(int? invoiceNumberCounter) => _$this._invoiceNumberCounter = invoiceNumberCounter; - String _recurringInvoiceNumberPattern; - String get recurringInvoiceNumberPattern => + String? _recurringInvoiceNumberPattern; + String? get recurringInvoiceNumberPattern => _$this._recurringInvoiceNumberPattern; - set recurringInvoiceNumberPattern(String recurringInvoiceNumberPattern) => + set recurringInvoiceNumberPattern(String? recurringInvoiceNumberPattern) => _$this._recurringInvoiceNumberPattern = recurringInvoiceNumberPattern; - int _recurringInvoiceNumberCounter; - int get recurringInvoiceNumberCounter => + int? _recurringInvoiceNumberCounter; + int? get recurringInvoiceNumberCounter => _$this._recurringInvoiceNumberCounter; - set recurringInvoiceNumberCounter(int recurringInvoiceNumberCounter) => + set recurringInvoiceNumberCounter(int? recurringInvoiceNumberCounter) => _$this._recurringInvoiceNumberCounter = recurringInvoiceNumberCounter; - String _quoteNumberPattern; - String get quoteNumberPattern => _$this._quoteNumberPattern; - set quoteNumberPattern(String quoteNumberPattern) => + String? _quoteNumberPattern; + String? get quoteNumberPattern => _$this._quoteNumberPattern; + set quoteNumberPattern(String? quoteNumberPattern) => _$this._quoteNumberPattern = quoteNumberPattern; - int _quoteNumberCounter; - int get quoteNumberCounter => _$this._quoteNumberCounter; - set quoteNumberCounter(int quoteNumberCounter) => + int? _quoteNumberCounter; + int? get quoteNumberCounter => _$this._quoteNumberCounter; + set quoteNumberCounter(int? quoteNumberCounter) => _$this._quoteNumberCounter = quoteNumberCounter; - String _clientNumberPattern; - String get clientNumberPattern => _$this._clientNumberPattern; - set clientNumberPattern(String clientNumberPattern) => + String? _clientNumberPattern; + String? get clientNumberPattern => _$this._clientNumberPattern; + set clientNumberPattern(String? clientNumberPattern) => _$this._clientNumberPattern = clientNumberPattern; - int _clientNumberCounter; - int get clientNumberCounter => _$this._clientNumberCounter; - set clientNumberCounter(int clientNumberCounter) => + int? _clientNumberCounter; + int? get clientNumberCounter => _$this._clientNumberCounter; + set clientNumberCounter(int? clientNumberCounter) => _$this._clientNumberCounter = clientNumberCounter; - String _creditNumberPattern; - String get creditNumberPattern => _$this._creditNumberPattern; - set creditNumberPattern(String creditNumberPattern) => + String? _creditNumberPattern; + String? get creditNumberPattern => _$this._creditNumberPattern; + set creditNumberPattern(String? creditNumberPattern) => _$this._creditNumberPattern = creditNumberPattern; - int _creditNumberCounter; - int get creditNumberCounter => _$this._creditNumberCounter; - set creditNumberCounter(int creditNumberCounter) => + int? _creditNumberCounter; + int? get creditNumberCounter => _$this._creditNumberCounter; + set creditNumberCounter(int? creditNumberCounter) => _$this._creditNumberCounter = creditNumberCounter; - String _recurringNumberPrefix; - String get recurringNumberPrefix => _$this._recurringNumberPrefix; - set recurringNumberPrefix(String recurringNumberPrefix) => + String? _recurringNumberPrefix; + String? get recurringNumberPrefix => _$this._recurringNumberPrefix; + set recurringNumberPrefix(String? recurringNumberPrefix) => _$this._recurringNumberPrefix = recurringNumberPrefix; - String _resetCounterFrequencyId; - String get resetCounterFrequencyId => _$this._resetCounterFrequencyId; - set resetCounterFrequencyId(String resetCounterFrequencyId) => + String? _resetCounterFrequencyId; + String? get resetCounterFrequencyId => _$this._resetCounterFrequencyId; + set resetCounterFrequencyId(String? resetCounterFrequencyId) => _$this._resetCounterFrequencyId = resetCounterFrequencyId; - String _resetCounterDate; - String get resetCounterDate => _$this._resetCounterDate; - set resetCounterDate(String resetCounterDate) => + String? _resetCounterDate; + String? get resetCounterDate => _$this._resetCounterDate; + set resetCounterDate(String? resetCounterDate) => _$this._resetCounterDate = resetCounterDate; - int _counterPadding; - int get counterPadding => _$this._counterPadding; - set counterPadding(int counterPadding) => + int? _counterPadding; + int? get counterPadding => _$this._counterPadding; + set counterPadding(int? counterPadding) => _$this._counterPadding = counterPadding; - bool _sharedInvoiceQuoteCounter; - bool get sharedInvoiceQuoteCounter => _$this._sharedInvoiceQuoteCounter; - set sharedInvoiceQuoteCounter(bool sharedInvoiceQuoteCounter) => + bool? _sharedInvoiceQuoteCounter; + bool? get sharedInvoiceQuoteCounter => _$this._sharedInvoiceQuoteCounter; + set sharedInvoiceQuoteCounter(bool? sharedInvoiceQuoteCounter) => _$this._sharedInvoiceQuoteCounter = sharedInvoiceQuoteCounter; - bool _sharedInvoiceCreditCounter; - bool get sharedInvoiceCreditCounter => _$this._sharedInvoiceCreditCounter; - set sharedInvoiceCreditCounter(bool sharedInvoiceCreditCounter) => + bool? _sharedInvoiceCreditCounter; + bool? get sharedInvoiceCreditCounter => _$this._sharedInvoiceCreditCounter; + set sharedInvoiceCreditCounter(bool? sharedInvoiceCreditCounter) => _$this._sharedInvoiceCreditCounter = sharedInvoiceCreditCounter; - String _defaultInvoiceTerms; - String get defaultInvoiceTerms => _$this._defaultInvoiceTerms; - set defaultInvoiceTerms(String defaultInvoiceTerms) => + String? _defaultInvoiceTerms; + String? get defaultInvoiceTerms => _$this._defaultInvoiceTerms; + set defaultInvoiceTerms(String? defaultInvoiceTerms) => _$this._defaultInvoiceTerms = defaultInvoiceTerms; - String _defaultQuoteTerms; - String get defaultQuoteTerms => _$this._defaultQuoteTerms; - set defaultQuoteTerms(String defaultQuoteTerms) => + String? _defaultQuoteTerms; + String? get defaultQuoteTerms => _$this._defaultQuoteTerms; + set defaultQuoteTerms(String? defaultQuoteTerms) => _$this._defaultQuoteTerms = defaultQuoteTerms; - String _defaultQuoteFooter; - String get defaultQuoteFooter => _$this._defaultQuoteFooter; - set defaultQuoteFooter(String defaultQuoteFooter) => + String? _defaultQuoteFooter; + String? get defaultQuoteFooter => _$this._defaultQuoteFooter; + set defaultQuoteFooter(String? defaultQuoteFooter) => _$this._defaultQuoteFooter = defaultQuoteFooter; - String _defaultCreditTerms; - String get defaultCreditTerms => _$this._defaultCreditTerms; - set defaultCreditTerms(String defaultCreditTerms) => + String? _defaultCreditTerms; + String? get defaultCreditTerms => _$this._defaultCreditTerms; + set defaultCreditTerms(String? defaultCreditTerms) => _$this._defaultCreditTerms = defaultCreditTerms; - String _defaultCreditFooter; - String get defaultCreditFooter => _$this._defaultCreditFooter; - set defaultCreditFooter(String defaultCreditFooter) => + String? _defaultCreditFooter; + String? get defaultCreditFooter => _$this._defaultCreditFooter; + set defaultCreditFooter(String? defaultCreditFooter) => _$this._defaultCreditFooter = defaultCreditFooter; - String _defaultInvoiceDesignId; - String get defaultInvoiceDesignId => _$this._defaultInvoiceDesignId; - set defaultInvoiceDesignId(String defaultInvoiceDesignId) => + String? _defaultInvoiceDesignId; + String? get defaultInvoiceDesignId => _$this._defaultInvoiceDesignId; + set defaultInvoiceDesignId(String? defaultInvoiceDesignId) => _$this._defaultInvoiceDesignId = defaultInvoiceDesignId; - String _defaultQuoteDesignId; - String get defaultQuoteDesignId => _$this._defaultQuoteDesignId; - set defaultQuoteDesignId(String defaultQuoteDesignId) => + String? _defaultQuoteDesignId; + String? get defaultQuoteDesignId => _$this._defaultQuoteDesignId; + set defaultQuoteDesignId(String? defaultQuoteDesignId) => _$this._defaultQuoteDesignId = defaultQuoteDesignId; - String _defaultCreditDesignId; - String get defaultCreditDesignId => _$this._defaultCreditDesignId; - set defaultCreditDesignId(String defaultCreditDesignId) => + String? _defaultCreditDesignId; + String? get defaultCreditDesignId => _$this._defaultCreditDesignId; + set defaultCreditDesignId(String? defaultCreditDesignId) => _$this._defaultCreditDesignId = defaultCreditDesignId; - String _defaultInvoiceFooter; - String get defaultInvoiceFooter => _$this._defaultInvoiceFooter; - set defaultInvoiceFooter(String defaultInvoiceFooter) => + String? _defaultInvoiceFooter; + String? get defaultInvoiceFooter => _$this._defaultInvoiceFooter; + set defaultInvoiceFooter(String? defaultInvoiceFooter) => _$this._defaultInvoiceFooter = defaultInvoiceFooter; - String _defaultTaxName1; - String get defaultTaxName1 => _$this._defaultTaxName1; - set defaultTaxName1(String defaultTaxName1) => + String? _defaultTaxName1; + String? get defaultTaxName1 => _$this._defaultTaxName1; + set defaultTaxName1(String? defaultTaxName1) => _$this._defaultTaxName1 = defaultTaxName1; - double _defaultTaxRate1; - double get defaultTaxRate1 => _$this._defaultTaxRate1; - set defaultTaxRate1(double defaultTaxRate1) => + double? _defaultTaxRate1; + double? get defaultTaxRate1 => _$this._defaultTaxRate1; + set defaultTaxRate1(double? defaultTaxRate1) => _$this._defaultTaxRate1 = defaultTaxRate1; - String _defaultTaxName2; - String get defaultTaxName2 => _$this._defaultTaxName2; - set defaultTaxName2(String defaultTaxName2) => + String? _defaultTaxName2; + String? get defaultTaxName2 => _$this._defaultTaxName2; + set defaultTaxName2(String? defaultTaxName2) => _$this._defaultTaxName2 = defaultTaxName2; - double _defaultTaxRate2; - double get defaultTaxRate2 => _$this._defaultTaxRate2; - set defaultTaxRate2(double defaultTaxRate2) => + double? _defaultTaxRate2; + double? get defaultTaxRate2 => _$this._defaultTaxRate2; + set defaultTaxRate2(double? defaultTaxRate2) => _$this._defaultTaxRate2 = defaultTaxRate2; - String _defaultTaxName3; - String get defaultTaxName3 => _$this._defaultTaxName3; - set defaultTaxName3(String defaultTaxName3) => + String? _defaultTaxName3; + String? get defaultTaxName3 => _$this._defaultTaxName3; + set defaultTaxName3(String? defaultTaxName3) => _$this._defaultTaxName3 = defaultTaxName3; - double _defaultTaxRate3; - double get defaultTaxRate3 => _$this._defaultTaxRate3; - set defaultTaxRate3(double defaultTaxRate3) => + double? _defaultTaxRate3; + double? get defaultTaxRate3 => _$this._defaultTaxRate3; + set defaultTaxRate3(double? defaultTaxRate3) => _$this._defaultTaxRate3 = defaultTaxRate3; - String _defaultPaymentTypeId; - String get defaultPaymentTypeId => _$this._defaultPaymentTypeId; - set defaultPaymentTypeId(String defaultPaymentTypeId) => + String? _defaultPaymentTypeId; + String? get defaultPaymentTypeId => _$this._defaultPaymentTypeId; + set defaultPaymentTypeId(String? defaultPaymentTypeId) => _$this._defaultPaymentTypeId = defaultPaymentTypeId; - MapBuilder> _pdfVariables; + MapBuilder>? _pdfVariables; MapBuilder> get pdfVariables => _$this._pdfVariables ??= new MapBuilder>(); - set pdfVariables(MapBuilder> pdfVariables) => + set pdfVariables(MapBuilder>? pdfVariables) => _$this._pdfVariables = pdfVariables; - String _emailSignature; - String get emailSignature => _$this._emailSignature; - set emailSignature(String emailSignature) => + String? _emailSignature; + String? get emailSignature => _$this._emailSignature; + set emailSignature(String? emailSignature) => _$this._emailSignature = emailSignature; - String _emailSubjectInvoice; - String get emailSubjectInvoice => _$this._emailSubjectInvoice; - set emailSubjectInvoice(String emailSubjectInvoice) => + String? _emailSubjectInvoice; + String? get emailSubjectInvoice => _$this._emailSubjectInvoice; + set emailSubjectInvoice(String? emailSubjectInvoice) => _$this._emailSubjectInvoice = emailSubjectInvoice; - String _emailSubjectQuote; - String get emailSubjectQuote => _$this._emailSubjectQuote; - set emailSubjectQuote(String emailSubjectQuote) => + String? _emailSubjectQuote; + String? get emailSubjectQuote => _$this._emailSubjectQuote; + set emailSubjectQuote(String? emailSubjectQuote) => _$this._emailSubjectQuote = emailSubjectQuote; - String _emailSubjectCredit; - String get emailSubjectCredit => _$this._emailSubjectCredit; - set emailSubjectCredit(String emailSubjectCredit) => + String? _emailSubjectCredit; + String? get emailSubjectCredit => _$this._emailSubjectCredit; + set emailSubjectCredit(String? emailSubjectCredit) => _$this._emailSubjectCredit = emailSubjectCredit; - String _emailSubjectPayment; - String get emailSubjectPayment => _$this._emailSubjectPayment; - set emailSubjectPayment(String emailSubjectPayment) => + String? _emailSubjectPayment; + String? get emailSubjectPayment => _$this._emailSubjectPayment; + set emailSubjectPayment(String? emailSubjectPayment) => _$this._emailSubjectPayment = emailSubjectPayment; - String _emailSubjectPaymentPartial; - String get emailSubjectPaymentPartial => _$this._emailSubjectPaymentPartial; - set emailSubjectPaymentPartial(String emailSubjectPaymentPartial) => + String? _emailSubjectPaymentPartial; + String? get emailSubjectPaymentPartial => _$this._emailSubjectPaymentPartial; + set emailSubjectPaymentPartial(String? emailSubjectPaymentPartial) => _$this._emailSubjectPaymentPartial = emailSubjectPaymentPartial; - String _emailBodyInvoice; - String get emailBodyInvoice => _$this._emailBodyInvoice; - set emailBodyInvoice(String emailBodyInvoice) => + String? _emailBodyInvoice; + String? get emailBodyInvoice => _$this._emailBodyInvoice; + set emailBodyInvoice(String? emailBodyInvoice) => _$this._emailBodyInvoice = emailBodyInvoice; - String _emailBodyQuote; - String get emailBodyQuote => _$this._emailBodyQuote; - set emailBodyQuote(String emailBodyQuote) => + String? _emailBodyQuote; + String? get emailBodyQuote => _$this._emailBodyQuote; + set emailBodyQuote(String? emailBodyQuote) => _$this._emailBodyQuote = emailBodyQuote; - String _emailBodyCredit; - String get emailBodyCredit => _$this._emailBodyCredit; - set emailBodyCredit(String emailBodyCredit) => + String? _emailBodyCredit; + String? get emailBodyCredit => _$this._emailBodyCredit; + set emailBodyCredit(String? emailBodyCredit) => _$this._emailBodyCredit = emailBodyCredit; - String _emailBodyPayment; - String get emailBodyPayment => _$this._emailBodyPayment; - set emailBodyPayment(String emailBodyPayment) => + String? _emailBodyPayment; + String? get emailBodyPayment => _$this._emailBodyPayment; + set emailBodyPayment(String? emailBodyPayment) => _$this._emailBodyPayment = emailBodyPayment; - String _emailBodyPaymentPartial; - String get emailBodyPaymentPartial => _$this._emailBodyPaymentPartial; - set emailBodyPaymentPartial(String emailBodyPaymentPartial) => + String? _emailBodyPaymentPartial; + String? get emailBodyPaymentPartial => _$this._emailBodyPaymentPartial; + set emailBodyPaymentPartial(String? emailBodyPaymentPartial) => _$this._emailBodyPaymentPartial = emailBodyPaymentPartial; - String _emailSubjectReminder1; - String get emailSubjectReminder1 => _$this._emailSubjectReminder1; - set emailSubjectReminder1(String emailSubjectReminder1) => + String? _emailSubjectReminder1; + String? get emailSubjectReminder1 => _$this._emailSubjectReminder1; + set emailSubjectReminder1(String? emailSubjectReminder1) => _$this._emailSubjectReminder1 = emailSubjectReminder1; - String _emailSubjectReminder2; - String get emailSubjectReminder2 => _$this._emailSubjectReminder2; - set emailSubjectReminder2(String emailSubjectReminder2) => + String? _emailSubjectReminder2; + String? get emailSubjectReminder2 => _$this._emailSubjectReminder2; + set emailSubjectReminder2(String? emailSubjectReminder2) => _$this._emailSubjectReminder2 = emailSubjectReminder2; - String _emailSubjectReminder3; - String get emailSubjectReminder3 => _$this._emailSubjectReminder3; - set emailSubjectReminder3(String emailSubjectReminder3) => + String? _emailSubjectReminder3; + String? get emailSubjectReminder3 => _$this._emailSubjectReminder3; + set emailSubjectReminder3(String? emailSubjectReminder3) => _$this._emailSubjectReminder3 = emailSubjectReminder3; - String _emailBodyReminder1; - String get emailBodyReminder1 => _$this._emailBodyReminder1; - set emailBodyReminder1(String emailBodyReminder1) => + String? _emailBodyReminder1; + String? get emailBodyReminder1 => _$this._emailBodyReminder1; + set emailBodyReminder1(String? emailBodyReminder1) => _$this._emailBodyReminder1 = emailBodyReminder1; - String _emailBodyReminder2; - String get emailBodyReminder2 => _$this._emailBodyReminder2; - set emailBodyReminder2(String emailBodyReminder2) => + String? _emailBodyReminder2; + String? get emailBodyReminder2 => _$this._emailBodyReminder2; + set emailBodyReminder2(String? emailBodyReminder2) => _$this._emailBodyReminder2 = emailBodyReminder2; - String _emailBodyReminder3; - String get emailBodyReminder3 => _$this._emailBodyReminder3; - set emailBodyReminder3(String emailBodyReminder3) => + String? _emailBodyReminder3; + String? get emailBodyReminder3 => _$this._emailBodyReminder3; + set emailBodyReminder3(String? emailBodyReminder3) => _$this._emailBodyReminder3 = emailBodyReminder3; - String _emailSubjectCustom1; - String get emailSubjectCustom1 => _$this._emailSubjectCustom1; - set emailSubjectCustom1(String emailSubjectCustom1) => + String? _emailSubjectCustom1; + String? get emailSubjectCustom1 => _$this._emailSubjectCustom1; + set emailSubjectCustom1(String? emailSubjectCustom1) => _$this._emailSubjectCustom1 = emailSubjectCustom1; - String _emailBodyCustom1; - String get emailBodyCustom1 => _$this._emailBodyCustom1; - set emailBodyCustom1(String emailBodyCustom1) => + String? _emailBodyCustom1; + String? get emailBodyCustom1 => _$this._emailBodyCustom1; + set emailBodyCustom1(String? emailBodyCustom1) => _$this._emailBodyCustom1 = emailBodyCustom1; - String _emailSubjectCustom2; - String get emailSubjectCustom2 => _$this._emailSubjectCustom2; - set emailSubjectCustom2(String emailSubjectCustom2) => + String? _emailSubjectCustom2; + String? get emailSubjectCustom2 => _$this._emailSubjectCustom2; + set emailSubjectCustom2(String? emailSubjectCustom2) => _$this._emailSubjectCustom2 = emailSubjectCustom2; - String _emailBodyCustom2; - String get emailBodyCustom2 => _$this._emailBodyCustom2; - set emailBodyCustom2(String emailBodyCustom2) => + String? _emailBodyCustom2; + String? get emailBodyCustom2 => _$this._emailBodyCustom2; + set emailBodyCustom2(String? emailBodyCustom2) => _$this._emailBodyCustom2 = emailBodyCustom2; - String _emailSubjectCustom3; - String get emailSubjectCustom3 => _$this._emailSubjectCustom3; - set emailSubjectCustom3(String emailSubjectCustom3) => + String? _emailSubjectCustom3; + String? get emailSubjectCustom3 => _$this._emailSubjectCustom3; + set emailSubjectCustom3(String? emailSubjectCustom3) => _$this._emailSubjectCustom3 = emailSubjectCustom3; - String _emailBodyCustom3; - String get emailBodyCustom3 => _$this._emailBodyCustom3; - set emailBodyCustom3(String emailBodyCustom3) => + String? _emailBodyCustom3; + String? get emailBodyCustom3 => _$this._emailBodyCustom3; + set emailBodyCustom3(String? emailBodyCustom3) => _$this._emailBodyCustom3 = emailBodyCustom3; - String _emailSubjectStatement; - String get emailSubjectStatement => _$this._emailSubjectStatement; - set emailSubjectStatement(String emailSubjectStatement) => + String? _emailSubjectStatement; + String? get emailSubjectStatement => _$this._emailSubjectStatement; + set emailSubjectStatement(String? emailSubjectStatement) => _$this._emailSubjectStatement = emailSubjectStatement; - String _emailBodyStatement; - String get emailBodyStatement => _$this._emailBodyStatement; - set emailBodyStatement(String emailBodyStatement) => + String? _emailBodyStatement; + String? get emailBodyStatement => _$this._emailBodyStatement; + set emailBodyStatement(String? emailBodyStatement) => _$this._emailBodyStatement = emailBodyStatement; - String _emailSubjectPurchaseOrder; - String get emailSubjectPurchaseOrder => _$this._emailSubjectPurchaseOrder; - set emailSubjectPurchaseOrder(String emailSubjectPurchaseOrder) => + String? _emailSubjectPurchaseOrder; + String? get emailSubjectPurchaseOrder => _$this._emailSubjectPurchaseOrder; + set emailSubjectPurchaseOrder(String? emailSubjectPurchaseOrder) => _$this._emailSubjectPurchaseOrder = emailSubjectPurchaseOrder; - String _emailBodyPurchaseOrder; - String get emailBodyPurchaseOrder => _$this._emailBodyPurchaseOrder; - set emailBodyPurchaseOrder(String emailBodyPurchaseOrder) => + String? _emailBodyPurchaseOrder; + String? get emailBodyPurchaseOrder => _$this._emailBodyPurchaseOrder; + set emailBodyPurchaseOrder(String? emailBodyPurchaseOrder) => _$this._emailBodyPurchaseOrder = emailBodyPurchaseOrder; - bool _enablePortalPassword; - bool get enablePortalPassword => _$this._enablePortalPassword; - set enablePortalPassword(bool enablePortalPassword) => + bool? _enablePortalPassword; + bool? get enablePortalPassword => _$this._enablePortalPassword; + set enablePortalPassword(bool? enablePortalPassword) => _$this._enablePortalPassword = enablePortalPassword; - bool _signatureOnPdf; - bool get signatureOnPdf => _$this._signatureOnPdf; - set signatureOnPdf(bool signatureOnPdf) => + bool? _signatureOnPdf; + bool? get signatureOnPdf => _$this._signatureOnPdf; + set signatureOnPdf(bool? signatureOnPdf) => _$this._signatureOnPdf = signatureOnPdf; - bool _enableEmailMarkup; - bool get enableEmailMarkup => _$this._enableEmailMarkup; - set enableEmailMarkup(bool enableEmailMarkup) => + bool? _enableEmailMarkup; + bool? get enableEmailMarkup => _$this._enableEmailMarkup; + set enableEmailMarkup(bool? enableEmailMarkup) => _$this._enableEmailMarkup = enableEmailMarkup; - bool _showAcceptInvoiceTerms; - bool get showAcceptInvoiceTerms => _$this._showAcceptInvoiceTerms; - set showAcceptInvoiceTerms(bool showAcceptInvoiceTerms) => + bool? _showAcceptInvoiceTerms; + bool? get showAcceptInvoiceTerms => _$this._showAcceptInvoiceTerms; + set showAcceptInvoiceTerms(bool? showAcceptInvoiceTerms) => _$this._showAcceptInvoiceTerms = showAcceptInvoiceTerms; - bool _showAcceptQuoteTerms; - bool get showAcceptQuoteTerms => _$this._showAcceptQuoteTerms; - set showAcceptQuoteTerms(bool showAcceptQuoteTerms) => + bool? _showAcceptQuoteTerms; + bool? get showAcceptQuoteTerms => _$this._showAcceptQuoteTerms; + set showAcceptQuoteTerms(bool? showAcceptQuoteTerms) => _$this._showAcceptQuoteTerms = showAcceptQuoteTerms; - bool _requireInvoiceSignature; - bool get requireInvoiceSignature => _$this._requireInvoiceSignature; - set requireInvoiceSignature(bool requireInvoiceSignature) => + bool? _requireInvoiceSignature; + bool? get requireInvoiceSignature => _$this._requireInvoiceSignature; + set requireInvoiceSignature(bool? requireInvoiceSignature) => _$this._requireInvoiceSignature = requireInvoiceSignature; - bool _requireQuoteSignature; - bool get requireQuoteSignature => _$this._requireQuoteSignature; - set requireQuoteSignature(bool requireQuoteSignature) => + bool? _requireQuoteSignature; + bool? get requireQuoteSignature => _$this._requireQuoteSignature; + set requireQuoteSignature(bool? requireQuoteSignature) => _$this._requireQuoteSignature = requireQuoteSignature; - String _name; - String get name => _$this._name; - set name(String name) => _$this._name = name; + String? _name; + String? get name => _$this._name; + set name(String? name) => _$this._name = name; - String _companyLogo; - String get companyLogo => _$this._companyLogo; - set companyLogo(String companyLogo) => _$this._companyLogo = companyLogo; + String? _companyLogo; + String? get companyLogo => _$this._companyLogo; + set companyLogo(String? companyLogo) => _$this._companyLogo = companyLogo; - String _website; - String get website => _$this._website; - set website(String website) => _$this._website = website; + String? _website; + String? get website => _$this._website; + set website(String? website) => _$this._website = website; - String _address1; - String get address1 => _$this._address1; - set address1(String address1) => _$this._address1 = address1; + String? _address1; + String? get address1 => _$this._address1; + set address1(String? address1) => _$this._address1 = address1; - String _address2; - String get address2 => _$this._address2; - set address2(String address2) => _$this._address2 = address2; + String? _address2; + String? get address2 => _$this._address2; + set address2(String? address2) => _$this._address2 = address2; - String _city; - String get city => _$this._city; - set city(String city) => _$this._city = city; + String? _city; + String? get city => _$this._city; + set city(String? city) => _$this._city = city; - String _state; - String get state => _$this._state; - set state(String state) => _$this._state = state; + String? _state; + String? get state => _$this._state; + set state(String? state) => _$this._state = state; - String _postalCode; - String get postalCode => _$this._postalCode; - set postalCode(String postalCode) => _$this._postalCode = postalCode; + String? _postalCode; + String? get postalCode => _$this._postalCode; + set postalCode(String? postalCode) => _$this._postalCode = postalCode; - String _phone; - String get phone => _$this._phone; - set phone(String phone) => _$this._phone = phone; + String? _phone; + String? get phone => _$this._phone; + set phone(String? phone) => _$this._phone = phone; - String _email; - String get email => _$this._email; - set email(String email) => _$this._email = email; + String? _email; + String? get email => _$this._email; + set email(String? email) => _$this._email = email; - String _countryId; - String get countryId => _$this._countryId; - set countryId(String countryId) => _$this._countryId = countryId; + String? _countryId; + String? get countryId => _$this._countryId; + set countryId(String? countryId) => _$this._countryId = countryId; - String _vatNumber; - String get vatNumber => _$this._vatNumber; - set vatNumber(String vatNumber) => _$this._vatNumber = vatNumber; + String? _vatNumber; + String? get vatNumber => _$this._vatNumber; + set vatNumber(String? vatNumber) => _$this._vatNumber = vatNumber; - String _idNumber; - String get idNumber => _$this._idNumber; - set idNumber(String idNumber) => _$this._idNumber = idNumber; + String? _idNumber; + String? get idNumber => _$this._idNumber; + set idNumber(String? idNumber) => _$this._idNumber = idNumber; - String _pageSize; - String get pageSize => _$this._pageSize; - set pageSize(String pageSize) => _$this._pageSize = pageSize; + String? _pageSize; + String? get pageSize => _$this._pageSize; + set pageSize(String? pageSize) => _$this._pageSize = pageSize; - String _pageLayout; - String get pageLayout => _$this._pageLayout; - set pageLayout(String pageLayout) => _$this._pageLayout = pageLayout; + String? _pageLayout; + String? get pageLayout => _$this._pageLayout; + set pageLayout(String? pageLayout) => _$this._pageLayout = pageLayout; - int _fontSize; - int get fontSize => _$this._fontSize; - set fontSize(int fontSize) => _$this._fontSize = fontSize; + int? _fontSize; + int? get fontSize => _$this._fontSize; + set fontSize(int? fontSize) => _$this._fontSize = fontSize; - String _primaryColor; - String get primaryColor => _$this._primaryColor; - set primaryColor(String primaryColor) => _$this._primaryColor = primaryColor; + String? _primaryColor; + String? get primaryColor => _$this._primaryColor; + set primaryColor(String? primaryColor) => _$this._primaryColor = primaryColor; - String _secondaryColor; - String get secondaryColor => _$this._secondaryColor; - set secondaryColor(String secondaryColor) => + String? _secondaryColor; + String? get secondaryColor => _$this._secondaryColor; + set secondaryColor(String? secondaryColor) => _$this._secondaryColor = secondaryColor; - String _primaryFont; - String get primaryFont => _$this._primaryFont; - set primaryFont(String primaryFont) => _$this._primaryFont = primaryFont; + String? _primaryFont; + String? get primaryFont => _$this._primaryFont; + set primaryFont(String? primaryFont) => _$this._primaryFont = primaryFont; - String _secondaryFont; - String get secondaryFont => _$this._secondaryFont; - set secondaryFont(String secondaryFont) => + String? _secondaryFont; + String? get secondaryFont => _$this._secondaryFont; + set secondaryFont(String? secondaryFont) => _$this._secondaryFont = secondaryFont; - bool _hidePaidToDate; - bool get hidePaidToDate => _$this._hidePaidToDate; - set hidePaidToDate(bool hidePaidToDate) => + bool? _hidePaidToDate; + bool? get hidePaidToDate => _$this._hidePaidToDate; + set hidePaidToDate(bool? hidePaidToDate) => _$this._hidePaidToDate = hidePaidToDate; - bool _embedDocuments; - bool get embedDocuments => _$this._embedDocuments; - set embedDocuments(bool embedDocuments) => + bool? _embedDocuments; + bool? get embedDocuments => _$this._embedDocuments; + set embedDocuments(bool? embedDocuments) => _$this._embedDocuments = embedDocuments; - bool _allPagesHeader; - bool get allPagesHeader => _$this._allPagesHeader; - set allPagesHeader(bool allPagesHeader) => + bool? _allPagesHeader; + bool? get allPagesHeader => _$this._allPagesHeader; + set allPagesHeader(bool? allPagesHeader) => _$this._allPagesHeader = allPagesHeader; - bool _allPagesFooter; - bool get allPagesFooter => _$this._allPagesFooter; - set allPagesFooter(bool allPagesFooter) => + bool? _allPagesFooter; + bool? get allPagesFooter => _$this._allPagesFooter; + set allPagesFooter(bool? allPagesFooter) => _$this._allPagesFooter = allPagesFooter; - bool _enableReminder1; - bool get enableReminder1 => _$this._enableReminder1; - set enableReminder1(bool enableReminder1) => + bool? _enableReminder1; + bool? get enableReminder1 => _$this._enableReminder1; + set enableReminder1(bool? enableReminder1) => _$this._enableReminder1 = enableReminder1; - bool _enableReminder2; - bool get enableReminder2 => _$this._enableReminder2; - set enableReminder2(bool enableReminder2) => + bool? _enableReminder2; + bool? get enableReminder2 => _$this._enableReminder2; + set enableReminder2(bool? enableReminder2) => _$this._enableReminder2 = enableReminder2; - bool _enableReminder3; - bool get enableReminder3 => _$this._enableReminder3; - set enableReminder3(bool enableReminder3) => + bool? _enableReminder3; + bool? get enableReminder3 => _$this._enableReminder3; + set enableReminder3(bool? enableReminder3) => _$this._enableReminder3 = enableReminder3; - bool _enableReminderEndless; - bool get enableReminderEndless => _$this._enableReminderEndless; - set enableReminderEndless(bool enableReminderEndless) => + bool? _enableReminderEndless; + bool? get enableReminderEndless => _$this._enableReminderEndless; + set enableReminderEndless(bool? enableReminderEndless) => _$this._enableReminderEndless = enableReminderEndless; - int _numDaysReminder1; - int get numDaysReminder1 => _$this._numDaysReminder1; - set numDaysReminder1(int numDaysReminder1) => + int? _numDaysReminder1; + int? get numDaysReminder1 => _$this._numDaysReminder1; + set numDaysReminder1(int? numDaysReminder1) => _$this._numDaysReminder1 = numDaysReminder1; - int _numDaysReminder2; - int get numDaysReminder2 => _$this._numDaysReminder2; - set numDaysReminder2(int numDaysReminder2) => + int? _numDaysReminder2; + int? get numDaysReminder2 => _$this._numDaysReminder2; + set numDaysReminder2(int? numDaysReminder2) => _$this._numDaysReminder2 = numDaysReminder2; - int _numDaysReminder3; - int get numDaysReminder3 => _$this._numDaysReminder3; - set numDaysReminder3(int numDaysReminder3) => + int? _numDaysReminder3; + int? get numDaysReminder3 => _$this._numDaysReminder3; + set numDaysReminder3(int? numDaysReminder3) => _$this._numDaysReminder3 = numDaysReminder3; - String _scheduleReminder1; - String get scheduleReminder1 => _$this._scheduleReminder1; - set scheduleReminder1(String scheduleReminder1) => + String? _scheduleReminder1; + String? get scheduleReminder1 => _$this._scheduleReminder1; + set scheduleReminder1(String? scheduleReminder1) => _$this._scheduleReminder1 = scheduleReminder1; - String _scheduleReminder2; - String get scheduleReminder2 => _$this._scheduleReminder2; - set scheduleReminder2(String scheduleReminder2) => + String? _scheduleReminder2; + String? get scheduleReminder2 => _$this._scheduleReminder2; + set scheduleReminder2(String? scheduleReminder2) => _$this._scheduleReminder2 = scheduleReminder2; - String _scheduleReminder3; - String get scheduleReminder3 => _$this._scheduleReminder3; - set scheduleReminder3(String scheduleReminder3) => + String? _scheduleReminder3; + String? get scheduleReminder3 => _$this._scheduleReminder3; + set scheduleReminder3(String? scheduleReminder3) => _$this._scheduleReminder3 = scheduleReminder3; - String _endlessReminderFrequencyId; - String get endlessReminderFrequencyId => _$this._endlessReminderFrequencyId; - set endlessReminderFrequencyId(String endlessReminderFrequencyId) => + String? _endlessReminderFrequencyId; + String? get endlessReminderFrequencyId => _$this._endlessReminderFrequencyId; + set endlessReminderFrequencyId(String? endlessReminderFrequencyId) => _$this._endlessReminderFrequencyId = endlessReminderFrequencyId; - double _lateFeeAmount1; - double get lateFeeAmount1 => _$this._lateFeeAmount1; - set lateFeeAmount1(double lateFeeAmount1) => + double? _lateFeeAmount1; + double? get lateFeeAmount1 => _$this._lateFeeAmount1; + set lateFeeAmount1(double? lateFeeAmount1) => _$this._lateFeeAmount1 = lateFeeAmount1; - double _lateFeeAmount2; - double get lateFeeAmount2 => _$this._lateFeeAmount2; - set lateFeeAmount2(double lateFeeAmount2) => + double? _lateFeeAmount2; + double? get lateFeeAmount2 => _$this._lateFeeAmount2; + set lateFeeAmount2(double? lateFeeAmount2) => _$this._lateFeeAmount2 = lateFeeAmount2; - double _lateFeeAmount3; - double get lateFeeAmount3 => _$this._lateFeeAmount3; - set lateFeeAmount3(double lateFeeAmount3) => + double? _lateFeeAmount3; + double? get lateFeeAmount3 => _$this._lateFeeAmount3; + set lateFeeAmount3(double? lateFeeAmount3) => _$this._lateFeeAmount3 = lateFeeAmount3; - double _lateFeeAmountEndless; - double get lateFeeAmountEndless => _$this._lateFeeAmountEndless; - set lateFeeAmountEndless(double lateFeeAmountEndless) => + double? _lateFeeAmountEndless; + double? get lateFeeAmountEndless => _$this._lateFeeAmountEndless; + set lateFeeAmountEndless(double? lateFeeAmountEndless) => _$this._lateFeeAmountEndless = lateFeeAmountEndless; - double _lateFeePercent1; - double get lateFeePercent1 => _$this._lateFeePercent1; - set lateFeePercent1(double lateFeePercent1) => + double? _lateFeePercent1; + double? get lateFeePercent1 => _$this._lateFeePercent1; + set lateFeePercent1(double? lateFeePercent1) => _$this._lateFeePercent1 = lateFeePercent1; - double _lateFeePercent2; - double get lateFeePercent2 => _$this._lateFeePercent2; - set lateFeePercent2(double lateFeePercent2) => + double? _lateFeePercent2; + double? get lateFeePercent2 => _$this._lateFeePercent2; + set lateFeePercent2(double? lateFeePercent2) => _$this._lateFeePercent2 = lateFeePercent2; - double _lateFeePercent3; - double get lateFeePercent3 => _$this._lateFeePercent3; - set lateFeePercent3(double lateFeePercent3) => + double? _lateFeePercent3; + double? get lateFeePercent3 => _$this._lateFeePercent3; + set lateFeePercent3(double? lateFeePercent3) => _$this._lateFeePercent3 = lateFeePercent3; - double _lateFeePercentEndless; - double get lateFeePercentEndless => _$this._lateFeePercentEndless; - set lateFeePercentEndless(double lateFeePercentEndless) => + double? _lateFeePercentEndless; + double? get lateFeePercentEndless => _$this._lateFeePercentEndless; + set lateFeePercentEndless(double? lateFeePercentEndless) => _$this._lateFeePercentEndless = lateFeePercentEndless; - String _emailSubjectReminderEndless; - String get emailSubjectReminderEndless => _$this._emailSubjectReminderEndless; - set emailSubjectReminderEndless(String emailSubjectReminderEndless) => + String? _emailSubjectReminderEndless; + String? get emailSubjectReminderEndless => + _$this._emailSubjectReminderEndless; + set emailSubjectReminderEndless(String? emailSubjectReminderEndless) => _$this._emailSubjectReminderEndless = emailSubjectReminderEndless; - String _emailBodyReminderEndless; - String get emailBodyReminderEndless => _$this._emailBodyReminderEndless; - set emailBodyReminderEndless(String emailBodyReminderEndless) => + String? _emailBodyReminderEndless; + String? get emailBodyReminderEndless => _$this._emailBodyReminderEndless; + set emailBodyReminderEndless(String? emailBodyReminderEndless) => _$this._emailBodyReminderEndless = emailBodyReminderEndless; - bool _clientOnlinePaymentNotification; - bool get clientOnlinePaymentNotification => + bool? _clientOnlinePaymentNotification; + bool? get clientOnlinePaymentNotification => _$this._clientOnlinePaymentNotification; - set clientOnlinePaymentNotification(bool clientOnlinePaymentNotification) => + set clientOnlinePaymentNotification(bool? clientOnlinePaymentNotification) => _$this._clientOnlinePaymentNotification = clientOnlinePaymentNotification; - bool _clientManualPaymentNotification; - bool get clientManualPaymentNotification => + bool? _clientManualPaymentNotification; + bool? get clientManualPaymentNotification => _$this._clientManualPaymentNotification; - set clientManualPaymentNotification(bool clientManualPaymentNotification) => + set clientManualPaymentNotification(bool? clientManualPaymentNotification) => _$this._clientManualPaymentNotification = clientManualPaymentNotification; - bool _clientMarkPaidPaymentNotification; - bool get clientMarkPaidPaymentNotification => + bool? _clientMarkPaidPaymentNotification; + bool? get clientMarkPaidPaymentNotification => _$this._clientMarkPaidPaymentNotification; set clientMarkPaidPaymentNotification( - bool clientMarkPaidPaymentNotification) => + bool? clientMarkPaidPaymentNotification) => _$this._clientMarkPaidPaymentNotification = clientMarkPaidPaymentNotification; - String _counterNumberApplied; - String get counterNumberApplied => _$this._counterNumberApplied; - set counterNumberApplied(String counterNumberApplied) => + String? _counterNumberApplied; + String? get counterNumberApplied => _$this._counterNumberApplied; + set counterNumberApplied(String? counterNumberApplied) => _$this._counterNumberApplied = counterNumberApplied; - String _emailSendingMethod; - String get emailSendingMethod => _$this._emailSendingMethod; - set emailSendingMethod(String emailSendingMethod) => + String? _emailSendingMethod; + String? get emailSendingMethod => _$this._emailSendingMethod; + set emailSendingMethod(String? emailSendingMethod) => _$this._emailSendingMethod = emailSendingMethod; - String _gmailSendingUserId; - String get gmailSendingUserId => _$this._gmailSendingUserId; - set gmailSendingUserId(String gmailSendingUserId) => + String? _gmailSendingUserId; + String? get gmailSendingUserId => _$this._gmailSendingUserId; + set gmailSendingUserId(String? gmailSendingUserId) => _$this._gmailSendingUserId = gmailSendingUserId; - String _clientPortalTerms; - String get clientPortalTerms => _$this._clientPortalTerms; - set clientPortalTerms(String clientPortalTerms) => + String? _clientPortalTerms; + String? get clientPortalTerms => _$this._clientPortalTerms; + set clientPortalTerms(String? clientPortalTerms) => _$this._clientPortalTerms = clientPortalTerms; - String _clientPortalPrivacy; - String get clientPortalPrivacy => _$this._clientPortalPrivacy; - set clientPortalPrivacy(String clientPortalPrivacy) => + String? _clientPortalPrivacy; + String? get clientPortalPrivacy => _$this._clientPortalPrivacy; + set clientPortalPrivacy(String? clientPortalPrivacy) => _$this._clientPortalPrivacy = clientPortalPrivacy; - String _lockInvoices; - String get lockInvoices => _$this._lockInvoices; - set lockInvoices(String lockInvoices) => _$this._lockInvoices = lockInvoices; + String? _lockInvoices; + String? get lockInvoices => _$this._lockInvoices; + set lockInvoices(String? lockInvoices) => _$this._lockInvoices = lockInvoices; - String _autoBill; - String get autoBill => _$this._autoBill; - set autoBill(String autoBill) => _$this._autoBill = autoBill; + String? _autoBill; + String? get autoBill => _$this._autoBill; + set autoBill(String? autoBill) => _$this._autoBill = autoBill; - bool _autoBillStandardInvoices; - bool get autoBillStandardInvoices => _$this._autoBillStandardInvoices; - set autoBillStandardInvoices(bool autoBillStandardInvoices) => + bool? _autoBillStandardInvoices; + bool? get autoBillStandardInvoices => _$this._autoBillStandardInvoices; + set autoBillStandardInvoices(bool? autoBillStandardInvoices) => _$this._autoBillStandardInvoices = autoBillStandardInvoices; - bool _clientPortalAllowUnderPayment; - bool get clientPortalAllowUnderPayment => + bool? _clientPortalAllowUnderPayment; + bool? get clientPortalAllowUnderPayment => _$this._clientPortalAllowUnderPayment; - set clientPortalAllowUnderPayment(bool clientPortalAllowUnderPayment) => + set clientPortalAllowUnderPayment(bool? clientPortalAllowUnderPayment) => _$this._clientPortalAllowUnderPayment = clientPortalAllowUnderPayment; - bool _clientPortalAllowOverPayment; - bool get clientPortalAllowOverPayment => _$this._clientPortalAllowOverPayment; - set clientPortalAllowOverPayment(bool clientPortalAllowOverPayment) => + bool? _clientPortalAllowOverPayment; + bool? get clientPortalAllowOverPayment => + _$this._clientPortalAllowOverPayment; + set clientPortalAllowOverPayment(bool? clientPortalAllowOverPayment) => _$this._clientPortalAllowOverPayment = clientPortalAllowOverPayment; - String _autoBillDate; - String get autoBillDate => _$this._autoBillDate; - set autoBillDate(String autoBillDate) => _$this._autoBillDate = autoBillDate; + String? _autoBillDate; + String? get autoBillDate => _$this._autoBillDate; + set autoBillDate(String? autoBillDate) => _$this._autoBillDate = autoBillDate; - double _clientPortalUnderPaymentMinimum; - double get clientPortalUnderPaymentMinimum => + double? _clientPortalUnderPaymentMinimum; + double? get clientPortalUnderPaymentMinimum => _$this._clientPortalUnderPaymentMinimum; - set clientPortalUnderPaymentMinimum(double clientPortalUnderPaymentMinimum) => + set clientPortalUnderPaymentMinimum( + double? clientPortalUnderPaymentMinimum) => _$this._clientPortalUnderPaymentMinimum = clientPortalUnderPaymentMinimum; - String _useCreditsPayment; - String get useCreditsPayment => _$this._useCreditsPayment; - set useCreditsPayment(String useCreditsPayment) => + String? _useCreditsPayment; + String? get useCreditsPayment => _$this._useCreditsPayment; + set useCreditsPayment(String? useCreditsPayment) => _$this._useCreditsPayment = useCreditsPayment; - String _clientPortalCustomHeader; - String get clientPortalCustomHeader => _$this._clientPortalCustomHeader; - set clientPortalCustomHeader(String clientPortalCustomHeader) => + String? _clientPortalCustomHeader; + String? get clientPortalCustomHeader => _$this._clientPortalCustomHeader; + set clientPortalCustomHeader(String? clientPortalCustomHeader) => _$this._clientPortalCustomHeader = clientPortalCustomHeader; - String _clientPortalCustomCss; - String get clientPortalCustomCss => _$this._clientPortalCustomCss; - set clientPortalCustomCss(String clientPortalCustomCss) => + String? _clientPortalCustomCss; + String? get clientPortalCustomCss => _$this._clientPortalCustomCss; + set clientPortalCustomCss(String? clientPortalCustomCss) => _$this._clientPortalCustomCss = clientPortalCustomCss; - String _clientPortalCustomFooter; - String get clientPortalCustomFooter => _$this._clientPortalCustomFooter; - set clientPortalCustomFooter(String clientPortalCustomFooter) => + String? _clientPortalCustomFooter; + String? get clientPortalCustomFooter => _$this._clientPortalCustomFooter; + set clientPortalCustomFooter(String? clientPortalCustomFooter) => _$this._clientPortalCustomFooter = clientPortalCustomFooter; - String _clientPortalCustomJs; - String get clientPortalCustomJs => _$this._clientPortalCustomJs; - set clientPortalCustomJs(String clientPortalCustomJs) => + String? _clientPortalCustomJs; + String? get clientPortalCustomJs => _$this._clientPortalCustomJs; + set clientPortalCustomJs(String? clientPortalCustomJs) => _$this._clientPortalCustomJs = clientPortalCustomJs; - bool _hideEmptyColumnsOnPdf; - bool get hideEmptyColumnsOnPdf => _$this._hideEmptyColumnsOnPdf; - set hideEmptyColumnsOnPdf(bool hideEmptyColumnsOnPdf) => + bool? _hideEmptyColumnsOnPdf; + bool? get hideEmptyColumnsOnPdf => _$this._hideEmptyColumnsOnPdf; + set hideEmptyColumnsOnPdf(bool? hideEmptyColumnsOnPdf) => _$this._hideEmptyColumnsOnPdf = hideEmptyColumnsOnPdf; - int _entitySendTime; - int get entitySendTime => _$this._entitySendTime; - set entitySendTime(int entitySendTime) => + int? _entitySendTime; + int? get entitySendTime => _$this._entitySendTime; + set entitySendTime(int? entitySendTime) => _$this._entitySendTime = entitySendTime; - String _clientPortalTasks; - String get clientPortalTasks => _$this._clientPortalTasks; - set clientPortalTasks(String clientPortalTasks) => + String? _clientPortalTasks; + String? get clientPortalTasks => _$this._clientPortalTasks; + set clientPortalTasks(String? clientPortalTasks) => _$this._clientPortalTasks = clientPortalTasks; - bool _pageNumbering; - bool get pageNumbering => _$this._pageNumbering; - set pageNumbering(bool pageNumbering) => + bool? _pageNumbering; + bool? get pageNumbering => _$this._pageNumbering; + set pageNumbering(bool? pageNumbering) => _$this._pageNumbering = pageNumbering; - String _pageNumberingAlignment; - String get pageNumberingAlignment => _$this._pageNumberingAlignment; - set pageNumberingAlignment(String pageNumberingAlignment) => + String? _pageNumberingAlignment; + String? get pageNumberingAlignment => _$this._pageNumberingAlignment; + set pageNumberingAlignment(String? pageNumberingAlignment) => _$this._pageNumberingAlignment = pageNumberingAlignment; - bool _requirePurchaseOrderSignature; - bool get requirePurchaseOrderSignature => + bool? _requirePurchaseOrderSignature; + bool? get requirePurchaseOrderSignature => _$this._requirePurchaseOrderSignature; - set requirePurchaseOrderSignature(bool requirePurchaseOrderSignature) => + set requirePurchaseOrderSignature(bool? requirePurchaseOrderSignature) => _$this._requirePurchaseOrderSignature = requirePurchaseOrderSignature; - String _defaultPurchaseOrderTerms; - String get defaultPurchaseOrderTerms => _$this._defaultPurchaseOrderTerms; - set defaultPurchaseOrderTerms(String defaultPurchaseOrderTerms) => + String? _defaultPurchaseOrderTerms; + String? get defaultPurchaseOrderTerms => _$this._defaultPurchaseOrderTerms; + set defaultPurchaseOrderTerms(String? defaultPurchaseOrderTerms) => _$this._defaultPurchaseOrderTerms = defaultPurchaseOrderTerms; - String _defaultPurchaseOrderDesignId; - String get defaultPurchaseOrderDesignId => + String? _defaultPurchaseOrderDesignId; + String? get defaultPurchaseOrderDesignId => _$this._defaultPurchaseOrderDesignId; - set defaultPurchaseOrderDesignId(String defaultPurchaseOrderDesignId) => + set defaultPurchaseOrderDesignId(String? defaultPurchaseOrderDesignId) => _$this._defaultPurchaseOrderDesignId = defaultPurchaseOrderDesignId; - String _defaultPurchaseOrderFooter; - String get defaultPurchaseOrderFooter => _$this._defaultPurchaseOrderFooter; - set defaultPurchaseOrderFooter(String defaultPurchaseOrderFooter) => + String? _defaultPurchaseOrderFooter; + String? get defaultPurchaseOrderFooter => _$this._defaultPurchaseOrderFooter; + set defaultPurchaseOrderFooter(String? defaultPurchaseOrderFooter) => _$this._defaultPurchaseOrderFooter = defaultPurchaseOrderFooter; - String _purchaseOrderNumberPattern; - String get purchaseOrderNumberPattern => _$this._purchaseOrderNumberPattern; - set purchaseOrderNumberPattern(String purchaseOrderNumberPattern) => + String? _purchaseOrderNumberPattern; + String? get purchaseOrderNumberPattern => _$this._purchaseOrderNumberPattern; + set purchaseOrderNumberPattern(String? purchaseOrderNumberPattern) => _$this._purchaseOrderNumberPattern = purchaseOrderNumberPattern; - int _purchaseOrderNumberCounter; - int get purchaseOrderNumberCounter => _$this._purchaseOrderNumberCounter; - set purchaseOrderNumberCounter(int purchaseOrderNumberCounter) => + int? _purchaseOrderNumberCounter; + int? get purchaseOrderNumberCounter => _$this._purchaseOrderNumberCounter; + set purchaseOrderNumberCounter(int? purchaseOrderNumberCounter) => _$this._purchaseOrderNumberCounter = purchaseOrderNumberCounter; - String _qrIban; - String get qrIban => _$this._qrIban; - set qrIban(String qrIban) => _$this._qrIban = qrIban; + String? _qrIban; + String? get qrIban => _$this._qrIban; + set qrIban(String? qrIban) => _$this._qrIban = qrIban; - String _besrId; - String get besrId => _$this._besrId; - set besrId(String besrId) => _$this._besrId = besrId; + String? _besrId; + String? get besrId => _$this._besrId; + set besrId(String? besrId) => _$this._besrId = besrId; - String _postmarkSecret; - String get postmarkSecret => _$this._postmarkSecret; - set postmarkSecret(String postmarkSecret) => + String? _postmarkSecret; + String? get postmarkSecret => _$this._postmarkSecret; + set postmarkSecret(String? postmarkSecret) => _$this._postmarkSecret = postmarkSecret; - String _mailgunSecret; - String get mailgunSecret => _$this._mailgunSecret; - set mailgunSecret(String mailgunSecret) => + String? _mailgunSecret; + String? get mailgunSecret => _$this._mailgunSecret; + set mailgunSecret(String? mailgunSecret) => _$this._mailgunSecret = mailgunSecret; - String _mailgunDomain; - String get mailgunDomain => _$this._mailgunDomain; - set mailgunDomain(String mailgunDomain) => + String? _mailgunDomain; + String? get mailgunDomain => _$this._mailgunDomain; + set mailgunDomain(String? mailgunDomain) => _$this._mailgunDomain = mailgunDomain; - String _mailgunEndpoint; - String get mailgunEndpoint => _$this._mailgunEndpoint; - set mailgunEndpoint(String mailgunEndpoint) => + String? _mailgunEndpoint; + String? get mailgunEndpoint => _$this._mailgunEndpoint; + set mailgunEndpoint(String? mailgunEndpoint) => _$this._mailgunEndpoint = mailgunEndpoint; - String _emailAlignment; - String get emailAlignment => _$this._emailAlignment; - set emailAlignment(String emailAlignment) => + String? _emailAlignment; + String? get emailAlignment => _$this._emailAlignment; + set emailAlignment(String? emailAlignment) => _$this._emailAlignment = emailAlignment; - bool _showEmailFooter; - bool get showEmailFooter => _$this._showEmailFooter; - set showEmailFooter(bool showEmailFooter) => + bool? _showEmailFooter; + bool? get showEmailFooter => _$this._showEmailFooter; + set showEmailFooter(bool? showEmailFooter) => _$this._showEmailFooter = showEmailFooter; - String _companyLogoSize; - String get companyLogoSize => _$this._companyLogoSize; - set companyLogoSize(String companyLogoSize) => + String? _companyLogoSize; + String? get companyLogoSize => _$this._companyLogoSize; + set companyLogoSize(String? companyLogoSize) => _$this._companyLogoSize = companyLogoSize; - bool _showPaidStamp; - bool get showPaidStamp => _$this._showPaidStamp; - set showPaidStamp(bool showPaidStamp) => + bool? _showPaidStamp; + bool? get showPaidStamp => _$this._showPaidStamp; + set showPaidStamp(bool? showPaidStamp) => _$this._showPaidStamp = showPaidStamp; - bool _showShippingAddress; - bool get showShippingAddress => _$this._showShippingAddress; - set showShippingAddress(bool showShippingAddress) => + bool? _showShippingAddress; + bool? get showShippingAddress => _$this._showShippingAddress; + set showShippingAddress(bool? showShippingAddress) => _$this._showShippingAddress = showShippingAddress; - String _customSendingEmail; - String get customSendingEmail => _$this._customSendingEmail; - set customSendingEmail(String customSendingEmail) => + String? _customSendingEmail; + String? get customSendingEmail => _$this._customSendingEmail; + set customSendingEmail(String? customSendingEmail) => _$this._customSendingEmail = customSendingEmail; - bool _acceptPurchaseOrderNumber; - bool get acceptPurchaseOrderNumber => _$this._acceptPurchaseOrderNumber; - set acceptPurchaseOrderNumber(bool acceptPurchaseOrderNumber) => + bool? _acceptPurchaseOrderNumber; + bool? get acceptPurchaseOrderNumber => _$this._acceptPurchaseOrderNumber; + set acceptPurchaseOrderNumber(bool? acceptPurchaseOrderNumber) => _$this._acceptPurchaseOrderNumber = acceptPurchaseOrderNumber; - bool _clientInitiatedPayments; - bool get clientInitiatedPayments => _$this._clientInitiatedPayments; - set clientInitiatedPayments(bool clientInitiatedPayments) => + bool? _clientInitiatedPayments; + bool? get clientInitiatedPayments => _$this._clientInitiatedPayments; + set clientInitiatedPayments(bool? clientInitiatedPayments) => _$this._clientInitiatedPayments = clientInitiatedPayments; - double _clientInitiatedPaymentsMinimum; - double get clientInitiatedPaymentsMinimum => + double? _clientInitiatedPaymentsMinimum; + double? get clientInitiatedPaymentsMinimum => _$this._clientInitiatedPaymentsMinimum; - set clientInitiatedPaymentsMinimum(double clientInitiatedPaymentsMinimum) => + set clientInitiatedPaymentsMinimum(double? clientInitiatedPaymentsMinimum) => _$this._clientInitiatedPaymentsMinimum = clientInitiatedPaymentsMinimum; - bool _shareInvoiceQuoteColumns; - bool get shareInvoiceQuoteColumns => _$this._shareInvoiceQuoteColumns; - set shareInvoiceQuoteColumns(bool shareInvoiceQuoteColumns) => + bool? _shareInvoiceQuoteColumns; + bool? get shareInvoiceQuoteColumns => _$this._shareInvoiceQuoteColumns; + set shareInvoiceQuoteColumns(bool? shareInvoiceQuoteColumns) => _$this._shareInvoiceQuoteColumns = shareInvoiceQuoteColumns; - bool _allowBillableTaskItems; - bool get allowBillableTaskItems => _$this._allowBillableTaskItems; - set allowBillableTaskItems(bool allowBillableTaskItems) => + bool? _allowBillableTaskItems; + bool? get allowBillableTaskItems => _$this._allowBillableTaskItems; + set allowBillableTaskItems(bool? allowBillableTaskItems) => _$this._allowBillableTaskItems = allowBillableTaskItems; - bool _showTaskItemDescription; - bool get showTaskItemDescription => _$this._showTaskItemDescription; - set showTaskItemDescription(bool showTaskItemDescription) => + bool? _showTaskItemDescription; + bool? get showTaskItemDescription => _$this._showTaskItemDescription; + set showTaskItemDescription(bool? showTaskItemDescription) => _$this._showTaskItemDescription = showTaskItemDescription; - bool _enableEInvoice; - bool get enableEInvoice => _$this._enableEInvoice; - set enableEInvoice(bool enableEInvoice) => + bool? _enableEInvoice; + bool? get enableEInvoice => _$this._enableEInvoice; + set enableEInvoice(bool? enableEInvoice) => _$this._enableEInvoice = enableEInvoice; - String _eInvoiceType; - String get eInvoiceType => _$this._eInvoiceType; - set eInvoiceType(String eInvoiceType) => _$this._eInvoiceType = eInvoiceType; + String? _eInvoiceType; + String? get eInvoiceType => _$this._eInvoiceType; + set eInvoiceType(String? eInvoiceType) => _$this._eInvoiceType = eInvoiceType; - String _defaultExpensePaymentTypeId; - String get defaultExpensePaymentTypeId => _$this._defaultExpensePaymentTypeId; - set defaultExpensePaymentTypeId(String defaultExpensePaymentTypeId) => + String? _defaultExpensePaymentTypeId; + String? get defaultExpensePaymentTypeId => + _$this._defaultExpensePaymentTypeId; + set defaultExpensePaymentTypeId(String? defaultExpensePaymentTypeId) => _$this._defaultExpensePaymentTypeId = defaultExpensePaymentTypeId; - String _classification; - String get classification => _$this._classification; - set classification(String classification) => + String? _classification; + String? get classification => _$this._classification; + set classification(String? classification) => _$this._classification = classification; SettingsEntityBuilder(); @@ -5191,7 +5200,7 @@ class SettingsEntityBuilder } @override - void update(void Function(SettingsEntityBuilder) updates) { + void update(void Function(SettingsEntityBuilder)? updates) { if (updates != null) updates(this); } @@ -5424,7 +5433,7 @@ class SettingsEntityBuilder defaultExpensePaymentTypeId: defaultExpensePaymentTypeId, classification: classification); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'translations'; _translations?.build(); @@ -5455,15 +5464,15 @@ class _$PdfPreviewRequest extends PdfPreviewRequest { final String clientId; factory _$PdfPreviewRequest( - [void Function(PdfPreviewRequestBuilder) updates]) => + [void Function(PdfPreviewRequestBuilder)? updates]) => (new PdfPreviewRequestBuilder()..update(updates))._build(); _$PdfPreviewRequest._( - {this.entityType, - this.settingsType, - this.settings, - this.groupId, - this.clientId}) + {required this.entityType, + required this.settingsType, + required this.settings, + required this.groupId, + required this.clientId}) : super._() { BuiltValueNullFieldError.checkNotNull( entityType, r'PdfPreviewRequest', 'entityType'); @@ -5496,10 +5505,10 @@ class _$PdfPreviewRequest extends PdfPreviewRequest { clientId == other.clientId; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, entityType.hashCode); _$hash = $jc(_$hash, settingsType.hashCode); @@ -5524,28 +5533,28 @@ class _$PdfPreviewRequest extends PdfPreviewRequest { class PdfPreviewRequestBuilder implements Builder { - _$PdfPreviewRequest _$v; + _$PdfPreviewRequest? _$v; - String _entityType; - String get entityType => _$this._entityType; - set entityType(String entityType) => _$this._entityType = entityType; + String? _entityType; + String? get entityType => _$this._entityType; + set entityType(String? entityType) => _$this._entityType = entityType; - String _settingsType; - String get settingsType => _$this._settingsType; - set settingsType(String settingsType) => _$this._settingsType = settingsType; + String? _settingsType; + String? get settingsType => _$this._settingsType; + set settingsType(String? settingsType) => _$this._settingsType = settingsType; - SettingsEntityBuilder _settings; + SettingsEntityBuilder? _settings; SettingsEntityBuilder get settings => _$this._settings ??= new SettingsEntityBuilder(); - set settings(SettingsEntityBuilder settings) => _$this._settings = settings; + set settings(SettingsEntityBuilder? settings) => _$this._settings = settings; - String _groupId; - String get groupId => _$this._groupId; - set groupId(String groupId) => _$this._groupId = groupId; + String? _groupId; + String? get groupId => _$this._groupId; + set groupId(String? groupId) => _$this._groupId = groupId; - String _clientId; - String get clientId => _$this._clientId; - set clientId(String clientId) => _$this._clientId = clientId; + String? _clientId; + String? get clientId => _$this._clientId; + set clientId(String? clientId) => _$this._clientId = clientId; PdfPreviewRequestBuilder(); @@ -5569,7 +5578,7 @@ class PdfPreviewRequestBuilder } @override - void update(void Function(PdfPreviewRequestBuilder) updates) { + void update(void Function(PdfPreviewRequestBuilder)? updates) { if (updates != null) updates(this); } @@ -5591,7 +5600,7 @@ class PdfPreviewRequestBuilder clientId: BuiltValueNullFieldError.checkNotNull( clientId, r'PdfPreviewRequest', 'clientId')); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'settings'; settings.build(); diff --git a/lib/data/models/static/color_theme_model.dart b/lib/data/models/static/color_theme_model.dart index f42773271..006e97e03 100644 --- a/lib/data/models/static/color_theme_model.dart +++ b/lib/data/models/static/color_theme_model.dart @@ -15,11 +15,11 @@ class ColorTheme { this.colorDarkGray = const Color(0xff444444), }); - Color colorPrimary; - Color colorInfo; - Color colorSuccess; - Color colorWarning; - Color colorDanger; + Color? colorPrimary; + Color? colorInfo; + Color? colorSuccess; + Color? colorWarning; + Color? colorDanger; Color colorLightGray; Color colorDarkGray; } diff --git a/lib/data/models/static/country_model.dart b/lib/data/models/static/country_model.dart index ac11fa05b..063e82e01 100644 --- a/lib/data/models/static/country_model.dart +++ b/lib/data/models/static/country_model.dart @@ -142,7 +142,7 @@ abstract class CountryEntity extends Object */ @override - bool matchesFilter(String filter) { + bool matchesFilter(String? filter) { if (filter == null || filter.isEmpty) { return true; } @@ -161,7 +161,7 @@ abstract class CountryEntity extends Object } @override - String matchesFilterValue(String filter) { + String? matchesFilterValue(String? filter) { if (filter == null || filter.isEmpty) { return null; } @@ -183,7 +183,7 @@ abstract class CountryEntity extends Object } @override - double get listDisplayAmount => null; + double? get listDisplayAmount => null; static Serializer get serializer => _$countryEntitySerializer; } diff --git a/lib/data/models/static/country_model.g.dart b/lib/data/models/static/country_model.g.dart index aa1313760..123b69426 100644 --- a/lib/data/models/static/country_model.g.dart +++ b/lib/data/models/static/country_model.g.dart @@ -24,10 +24,10 @@ class _$CountryListResponseSerializer final String wireName = 'CountryListResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, CountryListResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: @@ -39,21 +39,21 @@ class _$CountryListResponseSerializer @override CountryListResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new CountryListResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(CountryEntity)])) - as BuiltList); + BuiltList, const [const FullType(CountryEntity)]))! + as BuiltList); break; } } @@ -73,10 +73,10 @@ class _$CountryItemResponseSerializer final String wireName = 'CountryItemResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, CountryItemResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType(CountryEntity)), @@ -87,19 +87,19 @@ class _$CountryItemResponseSerializer @override CountryItemResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new CountryItemResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, - specifiedType: const FullType(CountryEntity)) as CountryEntity); + specifiedType: const FullType(CountryEntity))! as CountryEntity); break; } } @@ -115,9 +115,9 @@ class _$CountryEntitySerializer implements StructuredSerializer { final String wireName = 'CountryEntity'; @override - Iterable serialize(Serializers serializers, CountryEntity object, + Iterable serialize(Serializers serializers, CountryEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'name', serializers.serialize(object.name, specifiedType: const FullType(String)), 'swap_postal_code', @@ -145,47 +145,47 @@ class _$CountryEntitySerializer implements StructuredSerializer { @override CountryEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new CountryEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'name': result.name = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'swap_postal_code': result.swapPostalCode = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'swap_currency_symbol': result.swapCurrencySymbol = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'thousand_separator': result.thousandSeparator = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'decimal_separator': result.decimalSeparator = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'iso_3166_2': result.iso2 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'iso_3166_3': result.iso3 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -199,10 +199,10 @@ class _$CountryListResponse extends CountryListResponse { final BuiltList data; factory _$CountryListResponse( - [void Function(CountryListResponseBuilder) updates]) => + [void Function(CountryListResponseBuilder)? updates]) => (new CountryListResponseBuilder()..update(updates))._build(); - _$CountryListResponse._({this.data}) : super._() { + _$CountryListResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull(data, r'CountryListResponse', 'data'); } @@ -221,10 +221,10 @@ class _$CountryListResponse extends CountryListResponse { return other is CountryListResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -241,12 +241,12 @@ class _$CountryListResponse extends CountryListResponse { class CountryListResponseBuilder implements Builder { - _$CountryListResponse _$v; + _$CountryListResponse? _$v; - ListBuilder _data; + ListBuilder? _data; ListBuilder get data => _$this._data ??= new ListBuilder(); - set data(ListBuilder data) => _$this._data = data; + set data(ListBuilder? data) => _$this._data = data; CountryListResponseBuilder(); @@ -266,7 +266,7 @@ class CountryListResponseBuilder } @override - void update(void Function(CountryListResponseBuilder) updates) { + void update(void Function(CountryListResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -278,7 +278,7 @@ class CountryListResponseBuilder try { _$result = _$v ?? new _$CountryListResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -298,10 +298,10 @@ class _$CountryItemResponse extends CountryItemResponse { final CountryEntity data; factory _$CountryItemResponse( - [void Function(CountryItemResponseBuilder) updates]) => + [void Function(CountryItemResponseBuilder)? updates]) => (new CountryItemResponseBuilder()..update(updates))._build(); - _$CountryItemResponse._({this.data}) : super._() { + _$CountryItemResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull(data, r'CountryItemResponse', 'data'); } @@ -320,10 +320,10 @@ class _$CountryItemResponse extends CountryItemResponse { return other is CountryItemResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -340,11 +340,11 @@ class _$CountryItemResponse extends CountryItemResponse { class CountryItemResponseBuilder implements Builder { - _$CountryItemResponse _$v; + _$CountryItemResponse? _$v; - CountryEntityBuilder _data; + CountryEntityBuilder? _data; CountryEntityBuilder get data => _$this._data ??= new CountryEntityBuilder(); - set data(CountryEntityBuilder data) => _$this._data = data; + set data(CountryEntityBuilder? data) => _$this._data = data; CountryItemResponseBuilder(); @@ -364,7 +364,7 @@ class CountryItemResponseBuilder } @override - void update(void Function(CountryItemResponseBuilder) updates) { + void update(void Function(CountryItemResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -376,7 +376,7 @@ class CountryItemResponseBuilder try { _$result = _$v ?? new _$CountryItemResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -409,18 +409,18 @@ class _$CountryEntity extends CountryEntity { @override final String id; - factory _$CountryEntity([void Function(CountryEntityBuilder) updates]) => + factory _$CountryEntity([void Function(CountryEntityBuilder)? updates]) => (new CountryEntityBuilder()..update(updates))._build(); _$CountryEntity._( - {this.name, - this.swapPostalCode, - this.swapCurrencySymbol, - this.thousandSeparator, - this.decimalSeparator, - this.iso2, - this.iso3, - this.id}) + {required this.name, + required this.swapPostalCode, + required this.swapCurrencySymbol, + required this.thousandSeparator, + required this.decimalSeparator, + required this.iso2, + required this.iso3, + required this.id}) : super._() { BuiltValueNullFieldError.checkNotNull(name, r'CountryEntity', 'name'); BuiltValueNullFieldError.checkNotNull( @@ -457,10 +457,10 @@ class _$CountryEntity extends CountryEntity { id == other.id; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, name.hashCode); _$hash = $jc(_$hash, swapPostalCode.hashCode); @@ -491,43 +491,43 @@ class _$CountryEntity extends CountryEntity { class CountryEntityBuilder implements Builder { - _$CountryEntity _$v; + _$CountryEntity? _$v; - String _name; - String get name => _$this._name; - set name(String name) => _$this._name = name; + String? _name; + String? get name => _$this._name; + set name(String? name) => _$this._name = name; - bool _swapPostalCode; - bool get swapPostalCode => _$this._swapPostalCode; - set swapPostalCode(bool swapPostalCode) => + bool? _swapPostalCode; + bool? get swapPostalCode => _$this._swapPostalCode; + set swapPostalCode(bool? swapPostalCode) => _$this._swapPostalCode = swapPostalCode; - bool _swapCurrencySymbol; - bool get swapCurrencySymbol => _$this._swapCurrencySymbol; - set swapCurrencySymbol(bool swapCurrencySymbol) => + bool? _swapCurrencySymbol; + bool? get swapCurrencySymbol => _$this._swapCurrencySymbol; + set swapCurrencySymbol(bool? swapCurrencySymbol) => _$this._swapCurrencySymbol = swapCurrencySymbol; - String _thousandSeparator; - String get thousandSeparator => _$this._thousandSeparator; - set thousandSeparator(String thousandSeparator) => + String? _thousandSeparator; + String? get thousandSeparator => _$this._thousandSeparator; + set thousandSeparator(String? thousandSeparator) => _$this._thousandSeparator = thousandSeparator; - String _decimalSeparator; - String get decimalSeparator => _$this._decimalSeparator; - set decimalSeparator(String decimalSeparator) => + String? _decimalSeparator; + String? get decimalSeparator => _$this._decimalSeparator; + set decimalSeparator(String? decimalSeparator) => _$this._decimalSeparator = decimalSeparator; - String _iso2; - String get iso2 => _$this._iso2; - set iso2(String iso2) => _$this._iso2 = iso2; + String? _iso2; + String? get iso2 => _$this._iso2; + set iso2(String? iso2) => _$this._iso2 = iso2; - String _iso3; - String get iso3 => _$this._iso3; - set iso3(String iso3) => _$this._iso3 = iso3; + String? _iso3; + String? get iso3 => _$this._iso3; + set iso3(String? iso3) => _$this._iso3 = iso3; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; CountryEntityBuilder(); @@ -554,7 +554,7 @@ class CountryEntityBuilder } @override - void update(void Function(CountryEntityBuilder) updates) { + void update(void Function(CountryEntityBuilder)? updates) { if (updates != null) updates(this); } diff --git a/lib/data/models/static/currency_model.dart b/lib/data/models/static/currency_model.dart index 393abd893..e0a093c65 100644 --- a/lib/data/models/static/currency_model.dart +++ b/lib/data/models/static/currency_model.dart @@ -94,7 +94,7 @@ abstract class CurrencyEntity extends Object double get exchangeRate; @override - bool matchesFilter(String filter) { + bool matchesFilter(String? filter) { if (filter == null || filter.isEmpty) { return true; } @@ -111,7 +111,7 @@ abstract class CurrencyEntity extends Object } @override - String matchesFilterValue(String filter) { + String? matchesFilterValue(String? filter) { if (filter == null || filter.isEmpty) { return null; } @@ -131,7 +131,7 @@ abstract class CurrencyEntity extends Object } @override - double get listDisplayAmount => null; + double? get listDisplayAmount => null; static Serializer get serializer => _$currencyEntitySerializer; diff --git a/lib/data/models/static/currency_model.g.dart b/lib/data/models/static/currency_model.g.dart index 7eb48c700..8e8a67152 100644 --- a/lib/data/models/static/currency_model.g.dart +++ b/lib/data/models/static/currency_model.g.dart @@ -24,10 +24,10 @@ class _$CurrencyListResponseSerializer final String wireName = 'CurrencyListResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, CurrencyListResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType( @@ -39,21 +39,21 @@ class _$CurrencyListResponseSerializer @override CurrencyListResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new CurrencyListResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(CurrencyEntity)])) - as BuiltList); + BuiltList, const [const FullType(CurrencyEntity)]))! + as BuiltList); break; } } @@ -73,10 +73,10 @@ class _$CurrencyItemResponseSerializer final String wireName = 'CurrencyItemResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, CurrencyItemResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType(CurrencyEntity)), @@ -87,19 +87,20 @@ class _$CurrencyItemResponseSerializer @override CurrencyItemResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new CurrencyItemResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, - specifiedType: const FullType(CurrencyEntity)) as CurrencyEntity); + specifiedType: const FullType(CurrencyEntity))! + as CurrencyEntity); break; } } @@ -116,9 +117,9 @@ class _$CurrencyEntitySerializer final String wireName = 'CurrencyEntity'; @override - Iterable serialize(Serializers serializers, CurrencyEntity object, + Iterable serialize(Serializers serializers, CurrencyEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'name', serializers.serialize(object.name, specifiedType: const FullType(String)), 'symbol', @@ -150,51 +151,51 @@ class _$CurrencyEntitySerializer @override CurrencyEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new CurrencyEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'name': result.name = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'symbol': result.symbol = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'precision': result.precision = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'thousand_separator': result.thousandSeparator = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'decimal_separator': result.decimalSeparator = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'code': result.code = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'swap_currency_symbol': result.swapCurrencySymbol = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'exchange_rate': result.exchangeRate = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -208,10 +209,10 @@ class _$CurrencyListResponse extends CurrencyListResponse { final BuiltList data; factory _$CurrencyListResponse( - [void Function(CurrencyListResponseBuilder) updates]) => + [void Function(CurrencyListResponseBuilder)? updates]) => (new CurrencyListResponseBuilder()..update(updates))._build(); - _$CurrencyListResponse._({this.data}) : super._() { + _$CurrencyListResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull( data, r'CurrencyListResponse', 'data'); } @@ -231,10 +232,10 @@ class _$CurrencyListResponse extends CurrencyListResponse { return other is CurrencyListResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -251,12 +252,12 @@ class _$CurrencyListResponse extends CurrencyListResponse { class CurrencyListResponseBuilder implements Builder { - _$CurrencyListResponse _$v; + _$CurrencyListResponse? _$v; - ListBuilder _data; + ListBuilder? _data; ListBuilder get data => _$this._data ??= new ListBuilder(); - set data(ListBuilder data) => _$this._data = data; + set data(ListBuilder? data) => _$this._data = data; CurrencyListResponseBuilder(); @@ -276,7 +277,7 @@ class CurrencyListResponseBuilder } @override - void update(void Function(CurrencyListResponseBuilder) updates) { + void update(void Function(CurrencyListResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -288,7 +289,7 @@ class CurrencyListResponseBuilder try { _$result = _$v ?? new _$CurrencyListResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -308,10 +309,10 @@ class _$CurrencyItemResponse extends CurrencyItemResponse { final CurrencyEntity data; factory _$CurrencyItemResponse( - [void Function(CurrencyItemResponseBuilder) updates]) => + [void Function(CurrencyItemResponseBuilder)? updates]) => (new CurrencyItemResponseBuilder()..update(updates))._build(); - _$CurrencyItemResponse._({this.data}) : super._() { + _$CurrencyItemResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull( data, r'CurrencyItemResponse', 'data'); } @@ -331,10 +332,10 @@ class _$CurrencyItemResponse extends CurrencyItemResponse { return other is CurrencyItemResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -351,12 +352,12 @@ class _$CurrencyItemResponse extends CurrencyItemResponse { class CurrencyItemResponseBuilder implements Builder { - _$CurrencyItemResponse _$v; + _$CurrencyItemResponse? _$v; - CurrencyEntityBuilder _data; + CurrencyEntityBuilder? _data; CurrencyEntityBuilder get data => _$this._data ??= new CurrencyEntityBuilder(); - set data(CurrencyEntityBuilder data) => _$this._data = data; + set data(CurrencyEntityBuilder? data) => _$this._data = data; CurrencyItemResponseBuilder(); @@ -376,7 +377,7 @@ class CurrencyItemResponseBuilder } @override - void update(void Function(CurrencyItemResponseBuilder) updates) { + void update(void Function(CurrencyItemResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -388,7 +389,7 @@ class CurrencyItemResponseBuilder try { _$result = _$v ?? new _$CurrencyItemResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -423,19 +424,19 @@ class _$CurrencyEntity extends CurrencyEntity { @override final String id; - factory _$CurrencyEntity([void Function(CurrencyEntityBuilder) updates]) => + factory _$CurrencyEntity([void Function(CurrencyEntityBuilder)? updates]) => (new CurrencyEntityBuilder()..update(updates))._build(); _$CurrencyEntity._( - {this.name, - this.symbol, - this.precision, - this.thousandSeparator, - this.decimalSeparator, - this.code, - this.swapCurrencySymbol, - this.exchangeRate, - this.id}) + {required this.name, + required this.symbol, + required this.precision, + required this.thousandSeparator, + required this.decimalSeparator, + required this.code, + required this.swapCurrencySymbol, + required this.exchangeRate, + required this.id}) : super._() { BuiltValueNullFieldError.checkNotNull(name, r'CurrencyEntity', 'name'); BuiltValueNullFieldError.checkNotNull(symbol, r'CurrencyEntity', 'symbol'); @@ -476,10 +477,10 @@ class _$CurrencyEntity extends CurrencyEntity { id == other.id; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, name.hashCode); _$hash = $jc(_$hash, symbol.hashCode); @@ -512,46 +513,46 @@ class _$CurrencyEntity extends CurrencyEntity { class CurrencyEntityBuilder implements Builder { - _$CurrencyEntity _$v; + _$CurrencyEntity? _$v; - String _name; - String get name => _$this._name; - set name(String name) => _$this._name = name; + String? _name; + String? get name => _$this._name; + set name(String? name) => _$this._name = name; - String _symbol; - String get symbol => _$this._symbol; - set symbol(String symbol) => _$this._symbol = symbol; + String? _symbol; + String? get symbol => _$this._symbol; + set symbol(String? symbol) => _$this._symbol = symbol; - int _precision; - int get precision => _$this._precision; - set precision(int precision) => _$this._precision = precision; + int? _precision; + int? get precision => _$this._precision; + set precision(int? precision) => _$this._precision = precision; - String _thousandSeparator; - String get thousandSeparator => _$this._thousandSeparator; - set thousandSeparator(String thousandSeparator) => + String? _thousandSeparator; + String? get thousandSeparator => _$this._thousandSeparator; + set thousandSeparator(String? thousandSeparator) => _$this._thousandSeparator = thousandSeparator; - String _decimalSeparator; - String get decimalSeparator => _$this._decimalSeparator; - set decimalSeparator(String decimalSeparator) => + String? _decimalSeparator; + String? get decimalSeparator => _$this._decimalSeparator; + set decimalSeparator(String? decimalSeparator) => _$this._decimalSeparator = decimalSeparator; - String _code; - String get code => _$this._code; - set code(String code) => _$this._code = code; + String? _code; + String? get code => _$this._code; + set code(String? code) => _$this._code = code; - bool _swapCurrencySymbol; - bool get swapCurrencySymbol => _$this._swapCurrencySymbol; - set swapCurrencySymbol(bool swapCurrencySymbol) => + bool? _swapCurrencySymbol; + bool? get swapCurrencySymbol => _$this._swapCurrencySymbol; + set swapCurrencySymbol(bool? swapCurrencySymbol) => _$this._swapCurrencySymbol = swapCurrencySymbol; - double _exchangeRate; - double get exchangeRate => _$this._exchangeRate; - set exchangeRate(double exchangeRate) => _$this._exchangeRate = exchangeRate; + double? _exchangeRate; + double? get exchangeRate => _$this._exchangeRate; + set exchangeRate(double? exchangeRate) => _$this._exchangeRate = exchangeRate; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; CurrencyEntityBuilder(); @@ -579,7 +580,7 @@ class CurrencyEntityBuilder } @override - void update(void Function(CurrencyEntityBuilder) updates) { + void update(void Function(CurrencyEntityBuilder)? updates) { if (updates != null) updates(this); } diff --git a/lib/data/models/static/date_format_model.dart b/lib/data/models/static/date_format_model.dart index a57107912..964061e2a 100644 --- a/lib/data/models/static/date_format_model.dart +++ b/lib/data/models/static/date_format_model.dart @@ -69,7 +69,7 @@ abstract class DateFormatEntity extends Object String get format; @override - bool matchesFilter(String filter) { + bool matchesFilter(String? filter) { if (filter == null || filter.isEmpty) { return true; } @@ -84,7 +84,7 @@ abstract class DateFormatEntity extends Object } @override - String matchesFilterValue(String filter) { + String? matchesFilterValue(String? filter) { if (filter == null || filter.isEmpty) { return null; } @@ -109,7 +109,7 @@ abstract class DateFormatEntity extends Object String get listDisplayName => preview; @override - double get listDisplayAmount => null; + double? get listDisplayAmount => null; static Serializer get serializer => _$dateFormatEntitySerializer; diff --git a/lib/data/models/static/date_format_model.g.dart b/lib/data/models/static/date_format_model.g.dart index 949aabce8..0d08813dd 100644 --- a/lib/data/models/static/date_format_model.g.dart +++ b/lib/data/models/static/date_format_model.g.dart @@ -24,10 +24,10 @@ class _$DateFormatListResponseSerializer final String wireName = 'DateFormatListResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, DateFormatListResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType( @@ -39,21 +39,21 @@ class _$DateFormatListResponseSerializer @override DateFormatListResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new DateFormatListResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(DateFormatEntity)])) - as BuiltList); + BuiltList, const [const FullType(DateFormatEntity)]))! + as BuiltList); break; } } @@ -73,10 +73,10 @@ class _$DateFormatItemResponseSerializer final String wireName = 'DateFormatItemResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, DateFormatItemResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType(DateFormatEntity)), @@ -87,19 +87,19 @@ class _$DateFormatItemResponseSerializer @override DateFormatItemResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new DateFormatItemResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, - specifiedType: const FullType(DateFormatEntity)) + specifiedType: const FullType(DateFormatEntity))! as DateFormatEntity); break; } @@ -117,9 +117,9 @@ class _$DateFormatEntitySerializer final String wireName = 'DateFormatEntity'; @override - Iterable serialize(Serializers serializers, DateFormatEntity object, + Iterable serialize(Serializers serializers, DateFormatEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'format_dart', serializers.serialize(object.format, specifiedType: const FullType(String)), @@ -132,23 +132,23 @@ class _$DateFormatEntitySerializer @override DateFormatEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new DateFormatEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'format_dart': result.format = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -162,10 +162,10 @@ class _$DateFormatListResponse extends DateFormatListResponse { final BuiltList data; factory _$DateFormatListResponse( - [void Function(DateFormatListResponseBuilder) updates]) => + [void Function(DateFormatListResponseBuilder)? updates]) => (new DateFormatListResponseBuilder()..update(updates))._build(); - _$DateFormatListResponse._({this.data}) : super._() { + _$DateFormatListResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull( data, r'DateFormatListResponse', 'data'); } @@ -185,10 +185,10 @@ class _$DateFormatListResponse extends DateFormatListResponse { return other is DateFormatListResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -205,12 +205,12 @@ class _$DateFormatListResponse extends DateFormatListResponse { class DateFormatListResponseBuilder implements Builder { - _$DateFormatListResponse _$v; + _$DateFormatListResponse? _$v; - ListBuilder _data; + ListBuilder? _data; ListBuilder get data => _$this._data ??= new ListBuilder(); - set data(ListBuilder data) => _$this._data = data; + set data(ListBuilder? data) => _$this._data = data; DateFormatListResponseBuilder(); @@ -230,7 +230,7 @@ class DateFormatListResponseBuilder } @override - void update(void Function(DateFormatListResponseBuilder) updates) { + void update(void Function(DateFormatListResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -242,7 +242,7 @@ class DateFormatListResponseBuilder try { _$result = _$v ?? new _$DateFormatListResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -262,10 +262,10 @@ class _$DateFormatItemResponse extends DateFormatItemResponse { final DateFormatEntity data; factory _$DateFormatItemResponse( - [void Function(DateFormatItemResponseBuilder) updates]) => + [void Function(DateFormatItemResponseBuilder)? updates]) => (new DateFormatItemResponseBuilder()..update(updates))._build(); - _$DateFormatItemResponse._({this.data}) : super._() { + _$DateFormatItemResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull( data, r'DateFormatItemResponse', 'data'); } @@ -285,10 +285,10 @@ class _$DateFormatItemResponse extends DateFormatItemResponse { return other is DateFormatItemResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -305,12 +305,12 @@ class _$DateFormatItemResponse extends DateFormatItemResponse { class DateFormatItemResponseBuilder implements Builder { - _$DateFormatItemResponse _$v; + _$DateFormatItemResponse? _$v; - DateFormatEntityBuilder _data; + DateFormatEntityBuilder? _data; DateFormatEntityBuilder get data => _$this._data ??= new DateFormatEntityBuilder(); - set data(DateFormatEntityBuilder data) => _$this._data = data; + set data(DateFormatEntityBuilder? data) => _$this._data = data; DateFormatItemResponseBuilder(); @@ -330,7 +330,7 @@ class DateFormatItemResponseBuilder } @override - void update(void Function(DateFormatItemResponseBuilder) updates) { + void update(void Function(DateFormatItemResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -342,7 +342,7 @@ class DateFormatItemResponseBuilder try { _$result = _$v ?? new _$DateFormatItemResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -364,10 +364,10 @@ class _$DateFormatEntity extends DateFormatEntity { final String id; factory _$DateFormatEntity( - [void Function(DateFormatEntityBuilder) updates]) => + [void Function(DateFormatEntityBuilder)? updates]) => (new DateFormatEntityBuilder()..update(updates))._build(); - _$DateFormatEntity._({this.format, this.id}) : super._() { + _$DateFormatEntity._({required this.format, required this.id}) : super._() { BuiltValueNullFieldError.checkNotNull( format, r'DateFormatEntity', 'format'); BuiltValueNullFieldError.checkNotNull(id, r'DateFormatEntity', 'id'); @@ -389,10 +389,10 @@ class _$DateFormatEntity extends DateFormatEntity { id == other.id; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, format.hashCode); _$hash = $jc(_$hash, id.hashCode); @@ -411,15 +411,15 @@ class _$DateFormatEntity extends DateFormatEntity { class DateFormatEntityBuilder implements Builder { - _$DateFormatEntity _$v; + _$DateFormatEntity? _$v; - String _format; - String get format => _$this._format; - set format(String format) => _$this._format = format; + String? _format; + String? get format => _$this._format; + set format(String? format) => _$this._format = format; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; DateFormatEntityBuilder(); @@ -440,7 +440,7 @@ class DateFormatEntityBuilder } @override - void update(void Function(DateFormatEntityBuilder) updates) { + void update(void Function(DateFormatEntityBuilder)? updates) { if (updates != null) updates(this); } diff --git a/lib/data/models/static/datetime_format_model.g.dart b/lib/data/models/static/datetime_format_model.g.dart index fab6ca58e..caf05a8d6 100644 --- a/lib/data/models/static/datetime_format_model.g.dart +++ b/lib/data/models/static/datetime_format_model.g.dart @@ -24,10 +24,10 @@ class _$DatetimeFormatListResponseSerializer final String wireName = 'DatetimeFormatListResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, DatetimeFormatListResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType( @@ -39,15 +39,15 @@ class _$DatetimeFormatListResponseSerializer @override DatetimeFormatListResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new DatetimeFormatListResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current as String?; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, @@ -73,10 +73,10 @@ class _$DatetimeFormatItemResponseSerializer final String wireName = 'DatetimeFormatItemResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, DatetimeFormatItemResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType(DatetimeFormatEntity)), @@ -87,15 +87,15 @@ class _$DatetimeFormatItemResponseSerializer @override DatetimeFormatItemResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new DatetimeFormatItemResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current as String?; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, @@ -120,10 +120,10 @@ class _$DatetimeFormatEntitySerializer final String wireName = 'DatetimeFormatEntity'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, DatetimeFormatEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'id', serializers.serialize(object.id, specifiedType: const FullType(String)), 'format_dart', @@ -136,23 +136,23 @@ class _$DatetimeFormatEntitySerializer @override DatetimeFormatEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new DatetimeFormatEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current as String?; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'format_dart': result.format = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; } } @@ -166,10 +166,10 @@ class _$DatetimeFormatListResponse extends DatetimeFormatListResponse { final BuiltList data; factory _$DatetimeFormatListResponse( - [void Function(DatetimeFormatListResponseBuilder) updates]) => + [void Function(DatetimeFormatListResponseBuilder)? updates]) => (new DatetimeFormatListResponseBuilder()..update(updates))._build(); - _$DatetimeFormatListResponse._({this.data}) : super._() { + _$DatetimeFormatListResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull( data, r'DatetimeFormatListResponse', 'data'); } @@ -189,10 +189,10 @@ class _$DatetimeFormatListResponse extends DatetimeFormatListResponse { return other is DatetimeFormatListResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -210,9 +210,9 @@ class _$DatetimeFormatListResponse extends DatetimeFormatListResponse { class DatetimeFormatListResponseBuilder implements Builder { - _$DatetimeFormatListResponse _$v; + _$DatetimeFormatListResponse? _$v; - ListBuilder _data; + ListBuilder? _data; ListBuilder get data => _$this._data ??= new ListBuilder(); set data(ListBuilder data) => _$this._data = data; @@ -235,7 +235,7 @@ class DatetimeFormatListResponseBuilder } @override - void update(void Function(DatetimeFormatListResponseBuilder) updates) { + void update(void Function(DatetimeFormatListResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -247,7 +247,7 @@ class DatetimeFormatListResponseBuilder try { _$result = _$v ?? new _$DatetimeFormatListResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -267,10 +267,10 @@ class _$DatetimeFormatItemResponse extends DatetimeFormatItemResponse { final DatetimeFormatEntity data; factory _$DatetimeFormatItemResponse( - [void Function(DatetimeFormatItemResponseBuilder) updates]) => + [void Function(DatetimeFormatItemResponseBuilder)? updates]) => (new DatetimeFormatItemResponseBuilder()..update(updates))._build(); - _$DatetimeFormatItemResponse._({this.data}) : super._() { + _$DatetimeFormatItemResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull( data, r'DatetimeFormatItemResponse', 'data'); } @@ -290,10 +290,10 @@ class _$DatetimeFormatItemResponse extends DatetimeFormatItemResponse { return other is DatetimeFormatItemResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -311,9 +311,9 @@ class _$DatetimeFormatItemResponse extends DatetimeFormatItemResponse { class DatetimeFormatItemResponseBuilder implements Builder { - _$DatetimeFormatItemResponse _$v; + _$DatetimeFormatItemResponse? _$v; - DatetimeFormatEntityBuilder _data; + DatetimeFormatEntityBuilder? _data; DatetimeFormatEntityBuilder get data => _$this._data ??= new DatetimeFormatEntityBuilder(); set data(DatetimeFormatEntityBuilder data) => _$this._data = data; @@ -336,7 +336,7 @@ class DatetimeFormatItemResponseBuilder } @override - void update(void Function(DatetimeFormatItemResponseBuilder) updates) { + void update(void Function(DatetimeFormatItemResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -348,7 +348,7 @@ class DatetimeFormatItemResponseBuilder try { _$result = _$v ?? new _$DatetimeFormatItemResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -370,10 +370,10 @@ class _$DatetimeFormatEntity extends DatetimeFormatEntity { final String format; factory _$DatetimeFormatEntity( - [void Function(DatetimeFormatEntityBuilder) updates]) => + [void Function(DatetimeFormatEntityBuilder)? updates]) => (new DatetimeFormatEntityBuilder()..update(updates))._build(); - _$DatetimeFormatEntity._({this.id, this.format}) : super._() { + _$DatetimeFormatEntity._({required this.id, required this.format}) : super._() { BuiltValueNullFieldError.checkNotNull(id, r'DatetimeFormatEntity', 'id'); BuiltValueNullFieldError.checkNotNull( format, r'DatetimeFormatEntity', 'format'); @@ -396,10 +396,10 @@ class _$DatetimeFormatEntity extends DatetimeFormatEntity { format == other.format; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, id.hashCode); _$hash = $jc(_$hash, format.hashCode); @@ -418,15 +418,15 @@ class _$DatetimeFormatEntity extends DatetimeFormatEntity { class DatetimeFormatEntityBuilder implements Builder { - _$DatetimeFormatEntity _$v; + _$DatetimeFormatEntity? _$v; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; - String _format; - String get format => _$this._format; - set format(String format) => _$this._format = format; + String? _format; + String? get format => _$this._format; + set format(String? format) => _$this._format = format; DatetimeFormatEntityBuilder(); @@ -447,7 +447,7 @@ class DatetimeFormatEntityBuilder } @override - void update(void Function(DatetimeFormatEntityBuilder) updates) { + void update(void Function(DatetimeFormatEntityBuilder)? updates) { if (updates != null) updates(this); } diff --git a/lib/data/models/static/document_status_model.g.dart b/lib/data/models/static/document_status_model.g.dart index 6360b66f3..468ff6294 100644 --- a/lib/data/models/static/document_status_model.g.dart +++ b/lib/data/models/static/document_status_model.g.dart @@ -20,10 +20,10 @@ class _$DocumentStatusEntitySerializer final String wireName = 'DocumentStatusEntity'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, DocumentStatusEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'id', serializers.serialize(object.id, specifiedType: const FullType(String)), 'name', @@ -35,23 +35,23 @@ class _$DocumentStatusEntitySerializer @override DocumentStatusEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new DocumentStatusEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'name': result.name = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -67,10 +67,10 @@ class _$DocumentStatusEntity extends DocumentStatusEntity { final String name; factory _$DocumentStatusEntity( - [void Function(DocumentStatusEntityBuilder) updates]) => + [void Function(DocumentStatusEntityBuilder)? updates]) => (new DocumentStatusEntityBuilder()..update(updates))._build(); - _$DocumentStatusEntity._({this.id, this.name}) : super._() { + _$DocumentStatusEntity._({required this.id, required this.name}) : super._() { BuiltValueNullFieldError.checkNotNull(id, r'DocumentStatusEntity', 'id'); BuiltValueNullFieldError.checkNotNull( name, r'DocumentStatusEntity', 'name'); @@ -93,10 +93,10 @@ class _$DocumentStatusEntity extends DocumentStatusEntity { name == other.name; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, id.hashCode); _$hash = $jc(_$hash, name.hashCode); @@ -115,15 +115,15 @@ class _$DocumentStatusEntity extends DocumentStatusEntity { class DocumentStatusEntityBuilder implements Builder { - _$DocumentStatusEntity _$v; + _$DocumentStatusEntity? _$v; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; - String _name; - String get name => _$this._name; - set name(String name) => _$this._name = name; + String? _name; + String? get name => _$this._name; + set name(String? name) => _$this._name = name; DocumentStatusEntityBuilder(); @@ -144,7 +144,7 @@ class DocumentStatusEntityBuilder } @override - void update(void Function(DocumentStatusEntityBuilder) updates) { + void update(void Function(DocumentStatusEntityBuilder)? updates) { if (updates != null) updates(this); } diff --git a/lib/data/models/static/font_model.dart b/lib/data/models/static/font_model.dart index 5c9430532..52964c7d4 100644 --- a/lib/data/models/static/font_model.dart +++ b/lib/data/models/static/font_model.dart @@ -14,7 +14,7 @@ class FontFields { abstract class FontEntity extends Object with SelectableEntity implements Built { - factory FontEntity({String id, String name}) { + factory FontEntity({String? id, String? name}) { return _$FontEntity._( id: id ?? '', name: name ?? '', @@ -29,7 +29,7 @@ abstract class FontEntity extends Object String get name; @override - bool matchesFilter(String filter) { + bool matchesFilter(String? filter) { if (filter == null || filter.isEmpty) { return true; } @@ -44,7 +44,7 @@ abstract class FontEntity extends Object } @override - String matchesFilterValue(String filter) { + String? matchesFilterValue(String? filter) { if (filter == null || filter.isEmpty) { return null; } @@ -60,7 +60,7 @@ abstract class FontEntity extends Object } @override - double get listDisplayAmount => null; + double? get listDisplayAmount => null; static Serializer get serializer => _$fontEntitySerializer; } diff --git a/lib/data/models/static/font_model.g.dart b/lib/data/models/static/font_model.g.dart index 074bd7fa6..6dc06c09e 100644 --- a/lib/data/models/static/font_model.g.dart +++ b/lib/data/models/static/font_model.g.dart @@ -15,9 +15,9 @@ class _$FontEntitySerializer implements StructuredSerializer { final String wireName = 'FontEntity'; @override - Iterable serialize(Serializers serializers, FontEntity object, + Iterable serialize(Serializers serializers, FontEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'name', serializers.serialize(object.name, specifiedType: const FullType(String)), 'id', @@ -28,23 +28,23 @@ class _$FontEntitySerializer implements StructuredSerializer { } @override - FontEntity deserialize(Serializers serializers, Iterable serialized, + FontEntity deserialize(Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new FontEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'name': result.name = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -59,10 +59,10 @@ class _$FontEntity extends FontEntity { @override final String id; - factory _$FontEntity([void Function(FontEntityBuilder) updates]) => + factory _$FontEntity([void Function(FontEntityBuilder)? updates]) => (new FontEntityBuilder()..update(updates))._build(); - _$FontEntity._({this.name, this.id}) : super._() { + _$FontEntity._({required this.name, required this.id}) : super._() { BuiltValueNullFieldError.checkNotNull(name, r'FontEntity', 'name'); BuiltValueNullFieldError.checkNotNull(id, r'FontEntity', 'id'); } @@ -80,10 +80,10 @@ class _$FontEntity extends FontEntity { return other is FontEntity && name == other.name && id == other.id; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, name.hashCode); _$hash = $jc(_$hash, id.hashCode); @@ -101,15 +101,15 @@ class _$FontEntity extends FontEntity { } class FontEntityBuilder implements Builder { - _$FontEntity _$v; + _$FontEntity? _$v; - String _name; - String get name => _$this._name; - set name(String name) => _$this._name = name; + String? _name; + String? get name => _$this._name; + set name(String? name) => _$this._name = name; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; FontEntityBuilder(); @@ -130,7 +130,7 @@ class FontEntityBuilder implements Builder { } @override - void update(void Function(FontEntityBuilder) updates) { + void update(void Function(FontEntityBuilder)? updates) { if (updates != null) updates(this); } diff --git a/lib/data/models/static/industry_model.dart b/lib/data/models/static/industry_model.dart index 4f2443608..caf557a97 100644 --- a/lib/data/models/static/industry_model.dart +++ b/lib/data/models/static/industry_model.dart @@ -62,7 +62,7 @@ abstract class IndustryEntity extends Object String get name; @override - bool matchesFilter(String filter) { + bool matchesFilter(String? filter) { if (filter == null || filter.isEmpty) { return true; } @@ -77,7 +77,7 @@ abstract class IndustryEntity extends Object } @override - String matchesFilterValue(String filter) { + String? matchesFilterValue(String? filter) { if (filter == null || filter.isEmpty) { return null; } @@ -93,7 +93,7 @@ abstract class IndustryEntity extends Object } @override - double get listDisplayAmount => null; + double? get listDisplayAmount => null; static Serializer get serializer => _$industryEntitySerializer; diff --git a/lib/data/models/static/industry_model.g.dart b/lib/data/models/static/industry_model.g.dart index f17616645..79c85f56d 100644 --- a/lib/data/models/static/industry_model.g.dart +++ b/lib/data/models/static/industry_model.g.dart @@ -24,10 +24,10 @@ class _$IndustryListResponseSerializer final String wireName = 'IndustryListResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, IndustryListResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType( @@ -39,21 +39,21 @@ class _$IndustryListResponseSerializer @override IndustryListResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new IndustryListResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(IndustryEntity)])) - as BuiltList); + BuiltList, const [const FullType(IndustryEntity)]))! + as BuiltList); break; } } @@ -73,10 +73,10 @@ class _$IndustryItemResponseSerializer final String wireName = 'IndustryItemResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, IndustryItemResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType(IndustryEntity)), @@ -87,19 +87,20 @@ class _$IndustryItemResponseSerializer @override IndustryItemResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new IndustryItemResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, - specifiedType: const FullType(IndustryEntity)) as IndustryEntity); + specifiedType: const FullType(IndustryEntity))! + as IndustryEntity); break; } } @@ -116,9 +117,9 @@ class _$IndustryEntitySerializer final String wireName = 'IndustryEntity'; @override - Iterable serialize(Serializers serializers, IndustryEntity object, + Iterable serialize(Serializers serializers, IndustryEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'name', serializers.serialize(object.name, specifiedType: const FullType(String)), 'id', @@ -130,23 +131,23 @@ class _$IndustryEntitySerializer @override IndustryEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new IndustryEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'name': result.name = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -160,10 +161,10 @@ class _$IndustryListResponse extends IndustryListResponse { final BuiltList data; factory _$IndustryListResponse( - [void Function(IndustryListResponseBuilder) updates]) => + [void Function(IndustryListResponseBuilder)? updates]) => (new IndustryListResponseBuilder()..update(updates))._build(); - _$IndustryListResponse._({this.data}) : super._() { + _$IndustryListResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull( data, r'IndustryListResponse', 'data'); } @@ -183,10 +184,10 @@ class _$IndustryListResponse extends IndustryListResponse { return other is IndustryListResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -203,12 +204,12 @@ class _$IndustryListResponse extends IndustryListResponse { class IndustryListResponseBuilder implements Builder { - _$IndustryListResponse _$v; + _$IndustryListResponse? _$v; - ListBuilder _data; + ListBuilder? _data; ListBuilder get data => _$this._data ??= new ListBuilder(); - set data(ListBuilder data) => _$this._data = data; + set data(ListBuilder? data) => _$this._data = data; IndustryListResponseBuilder(); @@ -228,7 +229,7 @@ class IndustryListResponseBuilder } @override - void update(void Function(IndustryListResponseBuilder) updates) { + void update(void Function(IndustryListResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -240,7 +241,7 @@ class IndustryListResponseBuilder try { _$result = _$v ?? new _$IndustryListResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -260,10 +261,10 @@ class _$IndustryItemResponse extends IndustryItemResponse { final IndustryEntity data; factory _$IndustryItemResponse( - [void Function(IndustryItemResponseBuilder) updates]) => + [void Function(IndustryItemResponseBuilder)? updates]) => (new IndustryItemResponseBuilder()..update(updates))._build(); - _$IndustryItemResponse._({this.data}) : super._() { + _$IndustryItemResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull( data, r'IndustryItemResponse', 'data'); } @@ -283,10 +284,10 @@ class _$IndustryItemResponse extends IndustryItemResponse { return other is IndustryItemResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -303,12 +304,12 @@ class _$IndustryItemResponse extends IndustryItemResponse { class IndustryItemResponseBuilder implements Builder { - _$IndustryItemResponse _$v; + _$IndustryItemResponse? _$v; - IndustryEntityBuilder _data; + IndustryEntityBuilder? _data; IndustryEntityBuilder get data => _$this._data ??= new IndustryEntityBuilder(); - set data(IndustryEntityBuilder data) => _$this._data = data; + set data(IndustryEntityBuilder? data) => _$this._data = data; IndustryItemResponseBuilder(); @@ -328,7 +329,7 @@ class IndustryItemResponseBuilder } @override - void update(void Function(IndustryItemResponseBuilder) updates) { + void update(void Function(IndustryItemResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -340,7 +341,7 @@ class IndustryItemResponseBuilder try { _$result = _$v ?? new _$IndustryItemResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -361,10 +362,10 @@ class _$IndustryEntity extends IndustryEntity { @override final String id; - factory _$IndustryEntity([void Function(IndustryEntityBuilder) updates]) => + factory _$IndustryEntity([void Function(IndustryEntityBuilder)? updates]) => (new IndustryEntityBuilder()..update(updates))._build(); - _$IndustryEntity._({this.name, this.id}) : super._() { + _$IndustryEntity._({required this.name, required this.id}) : super._() { BuiltValueNullFieldError.checkNotNull(name, r'IndustryEntity', 'name'); BuiltValueNullFieldError.checkNotNull(id, r'IndustryEntity', 'id'); } @@ -383,10 +384,10 @@ class _$IndustryEntity extends IndustryEntity { return other is IndustryEntity && name == other.name && id == other.id; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, name.hashCode); _$hash = $jc(_$hash, id.hashCode); @@ -405,15 +406,15 @@ class _$IndustryEntity extends IndustryEntity { class IndustryEntityBuilder implements Builder { - _$IndustryEntity _$v; + _$IndustryEntity? _$v; - String _name; - String get name => _$this._name; - set name(String name) => _$this._name = name; + String? _name; + String? get name => _$this._name; + set name(String? name) => _$this._name = name; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; IndustryEntityBuilder(); @@ -434,7 +435,7 @@ class IndustryEntityBuilder } @override - void update(void Function(IndustryEntityBuilder) updates) { + void update(void Function(IndustryEntityBuilder)? updates) { if (updates != null) updates(this); } diff --git a/lib/data/models/static/invoice_status_model.g.dart b/lib/data/models/static/invoice_status_model.g.dart index f19ce0f65..06aec1a31 100644 --- a/lib/data/models/static/invoice_status_model.g.dart +++ b/lib/data/models/static/invoice_status_model.g.dart @@ -20,10 +20,10 @@ class _$InvoiceStatusEntitySerializer final String wireName = 'InvoiceStatusEntity'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, InvoiceStatusEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'id', serializers.serialize(object.id, specifiedType: const FullType(String)), 'name', @@ -35,23 +35,23 @@ class _$InvoiceStatusEntitySerializer @override InvoiceStatusEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new InvoiceStatusEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'name': result.name = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -67,10 +67,10 @@ class _$InvoiceStatusEntity extends InvoiceStatusEntity { final String name; factory _$InvoiceStatusEntity( - [void Function(InvoiceStatusEntityBuilder) updates]) => + [void Function(InvoiceStatusEntityBuilder)? updates]) => (new InvoiceStatusEntityBuilder()..update(updates))._build(); - _$InvoiceStatusEntity._({this.id, this.name}) : super._() { + _$InvoiceStatusEntity._({required this.id, required this.name}) : super._() { BuiltValueNullFieldError.checkNotNull(id, r'InvoiceStatusEntity', 'id'); BuiltValueNullFieldError.checkNotNull(name, r'InvoiceStatusEntity', 'name'); } @@ -90,10 +90,10 @@ class _$InvoiceStatusEntity extends InvoiceStatusEntity { return other is InvoiceStatusEntity && id == other.id && name == other.name; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, id.hashCode); _$hash = $jc(_$hash, name.hashCode); @@ -112,15 +112,15 @@ class _$InvoiceStatusEntity extends InvoiceStatusEntity { class InvoiceStatusEntityBuilder implements Builder { - _$InvoiceStatusEntity _$v; + _$InvoiceStatusEntity? _$v; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; - String _name; - String get name => _$this._name; - set name(String name) => _$this._name = name; + String? _name; + String? get name => _$this._name; + set name(String? name) => _$this._name = name; InvoiceStatusEntityBuilder(); @@ -141,7 +141,7 @@ class InvoiceStatusEntityBuilder } @override - void update(void Function(InvoiceStatusEntityBuilder) updates) { + void update(void Function(InvoiceStatusEntityBuilder)? updates) { if (updates != null) updates(this); } diff --git a/lib/data/models/static/language_model.dart b/lib/data/models/static/language_model.dart index a94d9c392..99ea8da1a 100644 --- a/lib/data/models/static/language_model.dart +++ b/lib/data/models/static/language_model.dart @@ -65,7 +65,7 @@ abstract class LanguageEntity extends Object String get locale; @override - bool matchesFilter(String filter) { + bool matchesFilter(String? filter) { if (filter == null || filter.isEmpty) { return true; } @@ -82,7 +82,7 @@ abstract class LanguageEntity extends Object } @override - String matchesFilterValue(String filter) { + String? matchesFilterValue(String? filter) { if (filter == null || filter.isEmpty) { return null; } @@ -100,7 +100,7 @@ abstract class LanguageEntity extends Object String get listDisplayName => name; @override - double get listDisplayAmount => null; + double? get listDisplayAmount => null; static Serializer get serializer => _$languageEntitySerializer; diff --git a/lib/data/models/static/language_model.g.dart b/lib/data/models/static/language_model.g.dart index 4696d3da2..d8fe3f516 100644 --- a/lib/data/models/static/language_model.g.dart +++ b/lib/data/models/static/language_model.g.dart @@ -24,10 +24,10 @@ class _$LanguageListResponseSerializer final String wireName = 'LanguageListResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, LanguageListResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType( @@ -39,21 +39,21 @@ class _$LanguageListResponseSerializer @override LanguageListResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new LanguageListResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(LanguageEntity)])) - as BuiltList); + BuiltList, const [const FullType(LanguageEntity)]))! + as BuiltList); break; } } @@ -73,10 +73,10 @@ class _$LanguageItemResponseSerializer final String wireName = 'LanguageItemResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, LanguageItemResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType(LanguageEntity)), @@ -87,19 +87,20 @@ class _$LanguageItemResponseSerializer @override LanguageItemResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new LanguageItemResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, - specifiedType: const FullType(LanguageEntity)) as LanguageEntity); + specifiedType: const FullType(LanguageEntity))! + as LanguageEntity); break; } } @@ -116,9 +117,9 @@ class _$LanguageEntitySerializer final String wireName = 'LanguageEntity'; @override - Iterable serialize(Serializers serializers, LanguageEntity object, + Iterable serialize(Serializers serializers, LanguageEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'name', serializers.serialize(object.name, specifiedType: const FullType(String)), 'locale', @@ -133,27 +134,27 @@ class _$LanguageEntitySerializer @override LanguageEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new LanguageEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'name': result.name = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'locale': result.locale = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -167,10 +168,10 @@ class _$LanguageListResponse extends LanguageListResponse { final BuiltList data; factory _$LanguageListResponse( - [void Function(LanguageListResponseBuilder) updates]) => + [void Function(LanguageListResponseBuilder)? updates]) => (new LanguageListResponseBuilder()..update(updates))._build(); - _$LanguageListResponse._({this.data}) : super._() { + _$LanguageListResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull( data, r'LanguageListResponse', 'data'); } @@ -190,10 +191,10 @@ class _$LanguageListResponse extends LanguageListResponse { return other is LanguageListResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -210,12 +211,12 @@ class _$LanguageListResponse extends LanguageListResponse { class LanguageListResponseBuilder implements Builder { - _$LanguageListResponse _$v; + _$LanguageListResponse? _$v; - ListBuilder _data; + ListBuilder? _data; ListBuilder get data => _$this._data ??= new ListBuilder(); - set data(ListBuilder data) => _$this._data = data; + set data(ListBuilder? data) => _$this._data = data; LanguageListResponseBuilder(); @@ -235,7 +236,7 @@ class LanguageListResponseBuilder } @override - void update(void Function(LanguageListResponseBuilder) updates) { + void update(void Function(LanguageListResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -247,7 +248,7 @@ class LanguageListResponseBuilder try { _$result = _$v ?? new _$LanguageListResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -267,10 +268,10 @@ class _$LanguageItemResponse extends LanguageItemResponse { final LanguageEntity data; factory _$LanguageItemResponse( - [void Function(LanguageItemResponseBuilder) updates]) => + [void Function(LanguageItemResponseBuilder)? updates]) => (new LanguageItemResponseBuilder()..update(updates))._build(); - _$LanguageItemResponse._({this.data}) : super._() { + _$LanguageItemResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull( data, r'LanguageItemResponse', 'data'); } @@ -290,10 +291,10 @@ class _$LanguageItemResponse extends LanguageItemResponse { return other is LanguageItemResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -310,12 +311,12 @@ class _$LanguageItemResponse extends LanguageItemResponse { class LanguageItemResponseBuilder implements Builder { - _$LanguageItemResponse _$v; + _$LanguageItemResponse? _$v; - LanguageEntityBuilder _data; + LanguageEntityBuilder? _data; LanguageEntityBuilder get data => _$this._data ??= new LanguageEntityBuilder(); - set data(LanguageEntityBuilder data) => _$this._data = data; + set data(LanguageEntityBuilder? data) => _$this._data = data; LanguageItemResponseBuilder(); @@ -335,7 +336,7 @@ class LanguageItemResponseBuilder } @override - void update(void Function(LanguageItemResponseBuilder) updates) { + void update(void Function(LanguageItemResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -347,7 +348,7 @@ class LanguageItemResponseBuilder try { _$result = _$v ?? new _$LanguageItemResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -370,10 +371,12 @@ class _$LanguageEntity extends LanguageEntity { @override final String id; - factory _$LanguageEntity([void Function(LanguageEntityBuilder) updates]) => + factory _$LanguageEntity([void Function(LanguageEntityBuilder)? updates]) => (new LanguageEntityBuilder()..update(updates))._build(); - _$LanguageEntity._({this.name, this.locale, this.id}) : super._() { + _$LanguageEntity._( + {required this.name, required this.locale, required this.id}) + : super._() { BuiltValueNullFieldError.checkNotNull(name, r'LanguageEntity', 'name'); BuiltValueNullFieldError.checkNotNull(locale, r'LanguageEntity', 'locale'); BuiltValueNullFieldError.checkNotNull(id, r'LanguageEntity', 'id'); @@ -396,10 +399,10 @@ class _$LanguageEntity extends LanguageEntity { id == other.id; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, name.hashCode); _$hash = $jc(_$hash, locale.hashCode); @@ -420,19 +423,19 @@ class _$LanguageEntity extends LanguageEntity { class LanguageEntityBuilder implements Builder { - _$LanguageEntity _$v; + _$LanguageEntity? _$v; - String _name; - String get name => _$this._name; - set name(String name) => _$this._name = name; + String? _name; + String? get name => _$this._name; + set name(String? name) => _$this._name = name; - String _locale; - String get locale => _$this._locale; - set locale(String locale) => _$this._locale = locale; + String? _locale; + String? get locale => _$this._locale; + set locale(String? locale) => _$this._locale = locale; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; LanguageEntityBuilder(); @@ -454,7 +457,7 @@ class LanguageEntityBuilder } @override - void update(void Function(LanguageEntityBuilder) updates) { + void update(void Function(LanguageEntityBuilder)? updates) { if (updates != null) updates(this); } diff --git a/lib/data/models/static/payment_status_model.g.dart b/lib/data/models/static/payment_status_model.g.dart index fcd7baa5a..208623abe 100644 --- a/lib/data/models/static/payment_status_model.g.dart +++ b/lib/data/models/static/payment_status_model.g.dart @@ -20,10 +20,10 @@ class _$PaymentStatusEntitySerializer final String wireName = 'PaymentStatusEntity'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, PaymentStatusEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'id', serializers.serialize(object.id, specifiedType: const FullType(String)), 'name', @@ -35,23 +35,23 @@ class _$PaymentStatusEntitySerializer @override PaymentStatusEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new PaymentStatusEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'name': result.name = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -67,10 +67,10 @@ class _$PaymentStatusEntity extends PaymentStatusEntity { final String name; factory _$PaymentStatusEntity( - [void Function(PaymentStatusEntityBuilder) updates]) => + [void Function(PaymentStatusEntityBuilder)? updates]) => (new PaymentStatusEntityBuilder()..update(updates))._build(); - _$PaymentStatusEntity._({this.id, this.name}) : super._() { + _$PaymentStatusEntity._({required this.id, required this.name}) : super._() { BuiltValueNullFieldError.checkNotNull(id, r'PaymentStatusEntity', 'id'); BuiltValueNullFieldError.checkNotNull(name, r'PaymentStatusEntity', 'name'); } @@ -90,10 +90,10 @@ class _$PaymentStatusEntity extends PaymentStatusEntity { return other is PaymentStatusEntity && id == other.id && name == other.name; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, id.hashCode); _$hash = $jc(_$hash, name.hashCode); @@ -112,15 +112,15 @@ class _$PaymentStatusEntity extends PaymentStatusEntity { class PaymentStatusEntityBuilder implements Builder { - _$PaymentStatusEntity _$v; + _$PaymentStatusEntity? _$v; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; - String _name; - String get name => _$this._name; - set name(String name) => _$this._name = name; + String? _name; + String? get name => _$this._name; + set name(String? name) => _$this._name = name; PaymentStatusEntityBuilder(); @@ -141,7 +141,7 @@ class PaymentStatusEntityBuilder } @override - void update(void Function(PaymentStatusEntityBuilder) updates) { + void update(void Function(PaymentStatusEntityBuilder)? updates) { if (updates != null) updates(this); } diff --git a/lib/data/models/static/payment_type_model.dart b/lib/data/models/static/payment_type_model.dart index 402e3b6de..d76e44a9a 100644 --- a/lib/data/models/static/payment_type_model.dart +++ b/lib/data/models/static/payment_type_model.dart @@ -65,7 +65,7 @@ abstract class PaymentTypeEntity extends Object String get name; @override - bool matchesFilter(String filter) { + bool matchesFilter(String? filter) { if (filter == null || filter.isEmpty) { return true; } @@ -80,7 +80,7 @@ abstract class PaymentTypeEntity extends Object } @override - String matchesFilterValue(String filter) { + String? matchesFilterValue(String? filter) { if (filter == null || filter.isEmpty) { return null; } @@ -94,7 +94,7 @@ abstract class PaymentTypeEntity extends Object String get listDisplayName => name; @override - double get listDisplayAmount => null; + double? get listDisplayAmount => null; static Serializer get serializer => _$paymentTypeEntitySerializer; diff --git a/lib/data/models/static/payment_type_model.g.dart b/lib/data/models/static/payment_type_model.g.dart index 23efbfa0d..5e4c75115 100644 --- a/lib/data/models/static/payment_type_model.g.dart +++ b/lib/data/models/static/payment_type_model.g.dart @@ -24,10 +24,10 @@ class _$PaymentTypeListResponseSerializer final String wireName = 'PaymentTypeListResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, PaymentTypeListResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType( @@ -39,21 +39,21 @@ class _$PaymentTypeListResponseSerializer @override PaymentTypeListResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new PaymentTypeListResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(PaymentTypeEntity)])) - as BuiltList); + BuiltList, const [const FullType(PaymentTypeEntity)]))! + as BuiltList); break; } } @@ -73,10 +73,10 @@ class _$PaymentTypeItemResponseSerializer final String wireName = 'PaymentTypeItemResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, PaymentTypeItemResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType(PaymentTypeEntity)), @@ -87,19 +87,19 @@ class _$PaymentTypeItemResponseSerializer @override PaymentTypeItemResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new PaymentTypeItemResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, - specifiedType: const FullType(PaymentTypeEntity)) + specifiedType: const FullType(PaymentTypeEntity))! as PaymentTypeEntity); break; } @@ -117,9 +117,9 @@ class _$PaymentTypeEntitySerializer final String wireName = 'PaymentTypeEntity'; @override - Iterable serialize(Serializers serializers, PaymentTypeEntity object, + Iterable serialize(Serializers serializers, PaymentTypeEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'name', serializers.serialize(object.name, specifiedType: const FullType(String)), 'id', @@ -131,23 +131,23 @@ class _$PaymentTypeEntitySerializer @override PaymentTypeEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new PaymentTypeEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'name': result.name = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -161,10 +161,10 @@ class _$PaymentTypeListResponse extends PaymentTypeListResponse { final BuiltList data; factory _$PaymentTypeListResponse( - [void Function(PaymentTypeListResponseBuilder) updates]) => + [void Function(PaymentTypeListResponseBuilder)? updates]) => (new PaymentTypeListResponseBuilder()..update(updates))._build(); - _$PaymentTypeListResponse._({this.data}) : super._() { + _$PaymentTypeListResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull( data, r'PaymentTypeListResponse', 'data'); } @@ -184,10 +184,10 @@ class _$PaymentTypeListResponse extends PaymentTypeListResponse { return other is PaymentTypeListResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -205,12 +205,12 @@ class _$PaymentTypeListResponse extends PaymentTypeListResponse { class PaymentTypeListResponseBuilder implements Builder { - _$PaymentTypeListResponse _$v; + _$PaymentTypeListResponse? _$v; - ListBuilder _data; + ListBuilder? _data; ListBuilder get data => _$this._data ??= new ListBuilder(); - set data(ListBuilder data) => _$this._data = data; + set data(ListBuilder? data) => _$this._data = data; PaymentTypeListResponseBuilder(); @@ -230,7 +230,7 @@ class PaymentTypeListResponseBuilder } @override - void update(void Function(PaymentTypeListResponseBuilder) updates) { + void update(void Function(PaymentTypeListResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -242,7 +242,7 @@ class PaymentTypeListResponseBuilder try { _$result = _$v ?? new _$PaymentTypeListResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -262,10 +262,10 @@ class _$PaymentTypeItemResponse extends PaymentTypeItemResponse { final PaymentTypeEntity data; factory _$PaymentTypeItemResponse( - [void Function(PaymentTypeItemResponseBuilder) updates]) => + [void Function(PaymentTypeItemResponseBuilder)? updates]) => (new PaymentTypeItemResponseBuilder()..update(updates))._build(); - _$PaymentTypeItemResponse._({this.data}) : super._() { + _$PaymentTypeItemResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull( data, r'PaymentTypeItemResponse', 'data'); } @@ -285,10 +285,10 @@ class _$PaymentTypeItemResponse extends PaymentTypeItemResponse { return other is PaymentTypeItemResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -306,12 +306,12 @@ class _$PaymentTypeItemResponse extends PaymentTypeItemResponse { class PaymentTypeItemResponseBuilder implements Builder { - _$PaymentTypeItemResponse _$v; + _$PaymentTypeItemResponse? _$v; - PaymentTypeEntityBuilder _data; + PaymentTypeEntityBuilder? _data; PaymentTypeEntityBuilder get data => _$this._data ??= new PaymentTypeEntityBuilder(); - set data(PaymentTypeEntityBuilder data) => _$this._data = data; + set data(PaymentTypeEntityBuilder? data) => _$this._data = data; PaymentTypeItemResponseBuilder(); @@ -331,7 +331,7 @@ class PaymentTypeItemResponseBuilder } @override - void update(void Function(PaymentTypeItemResponseBuilder) updates) { + void update(void Function(PaymentTypeItemResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -343,7 +343,7 @@ class PaymentTypeItemResponseBuilder try { _$result = _$v ?? new _$PaymentTypeItemResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -365,10 +365,10 @@ class _$PaymentTypeEntity extends PaymentTypeEntity { final String id; factory _$PaymentTypeEntity( - [void Function(PaymentTypeEntityBuilder) updates]) => + [void Function(PaymentTypeEntityBuilder)? updates]) => (new PaymentTypeEntityBuilder()..update(updates))._build(); - _$PaymentTypeEntity._({this.name, this.id}) : super._() { + _$PaymentTypeEntity._({required this.name, required this.id}) : super._() { BuiltValueNullFieldError.checkNotNull(name, r'PaymentTypeEntity', 'name'); BuiltValueNullFieldError.checkNotNull(id, r'PaymentTypeEntity', 'id'); } @@ -387,10 +387,10 @@ class _$PaymentTypeEntity extends PaymentTypeEntity { return other is PaymentTypeEntity && name == other.name && id == other.id; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, name.hashCode); _$hash = $jc(_$hash, id.hashCode); @@ -409,15 +409,15 @@ class _$PaymentTypeEntity extends PaymentTypeEntity { class PaymentTypeEntityBuilder implements Builder { - _$PaymentTypeEntity _$v; + _$PaymentTypeEntity? _$v; - String _name; - String get name => _$this._name; - set name(String name) => _$this._name = name; + String? _name; + String? get name => _$this._name; + set name(String? name) => _$this._name = name; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; PaymentTypeEntityBuilder(); @@ -438,7 +438,7 @@ class PaymentTypeEntityBuilder } @override - void update(void Function(PaymentTypeEntityBuilder) updates) { + void update(void Function(PaymentTypeEntityBuilder)? updates) { if (updates != null) updates(this); } diff --git a/lib/data/models/static/size_model.dart b/lib/data/models/static/size_model.dart index 8060389bf..20266c643 100644 --- a/lib/data/models/static/size_model.dart +++ b/lib/data/models/static/size_model.dart @@ -62,7 +62,7 @@ abstract class SizeEntity extends Object String get name; @override - bool matchesFilter(String filter) { + bool matchesFilter(String? filter) { if (filter == null || filter.isEmpty) { return true; } @@ -77,7 +77,7 @@ abstract class SizeEntity extends Object } @override - String matchesFilterValue(String filter) { + String? matchesFilterValue(String? filter) { if (filter == null || filter.isEmpty) { return null; } @@ -93,7 +93,7 @@ abstract class SizeEntity extends Object } @override - double get listDisplayAmount => null; + double? get listDisplayAmount => null; static Serializer get serializer => _$sizeEntitySerializer; } diff --git a/lib/data/models/static/size_model.g.dart b/lib/data/models/static/size_model.g.dart index 410924fe9..fa6a21211 100644 --- a/lib/data/models/static/size_model.g.dart +++ b/lib/data/models/static/size_model.g.dart @@ -20,9 +20,9 @@ class _$SizeListResponseSerializer final String wireName = 'SizeListResponse'; @override - Iterable serialize(Serializers serializers, SizeListResponse object, + Iterable serialize(Serializers serializers, SizeListResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: @@ -34,21 +34,21 @@ class _$SizeListResponseSerializer @override SizeListResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new SizeListResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(SizeEntity)])) - as BuiltList); + BuiltList, const [const FullType(SizeEntity)]))! + as BuiltList); break; } } @@ -65,9 +65,9 @@ class _$SizeItemResponseSerializer final String wireName = 'SizeItemResponse'; @override - Iterable serialize(Serializers serializers, SizeItemResponse object, + Iterable serialize(Serializers serializers, SizeItemResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType(SizeEntity)), @@ -78,19 +78,19 @@ class _$SizeItemResponseSerializer @override SizeItemResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new SizeItemResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, - specifiedType: const FullType(SizeEntity)) as SizeEntity); + specifiedType: const FullType(SizeEntity))! as SizeEntity); break; } } @@ -106,9 +106,9 @@ class _$SizeEntitySerializer implements StructuredSerializer { final String wireName = 'SizeEntity'; @override - Iterable serialize(Serializers serializers, SizeEntity object, + Iterable serialize(Serializers serializers, SizeEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'name', serializers.serialize(object.name, specifiedType: const FullType(String)), 'id', @@ -119,23 +119,23 @@ class _$SizeEntitySerializer implements StructuredSerializer { } @override - SizeEntity deserialize(Serializers serializers, Iterable serialized, + SizeEntity deserialize(Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new SizeEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'name': result.name = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -149,10 +149,10 @@ class _$SizeListResponse extends SizeListResponse { final BuiltList data; factory _$SizeListResponse( - [void Function(SizeListResponseBuilder) updates]) => + [void Function(SizeListResponseBuilder)? updates]) => (new SizeListResponseBuilder()..update(updates))._build(); - _$SizeListResponse._({this.data}) : super._() { + _$SizeListResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull(data, r'SizeListResponse', 'data'); } @@ -170,10 +170,10 @@ class _$SizeListResponse extends SizeListResponse { return other is SizeListResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -189,12 +189,12 @@ class _$SizeListResponse extends SizeListResponse { class SizeListResponseBuilder implements Builder { - _$SizeListResponse _$v; + _$SizeListResponse? _$v; - ListBuilder _data; + ListBuilder? _data; ListBuilder get data => _$this._data ??= new ListBuilder(); - set data(ListBuilder data) => _$this._data = data; + set data(ListBuilder? data) => _$this._data = data; SizeListResponseBuilder(); @@ -214,7 +214,7 @@ class SizeListResponseBuilder } @override - void update(void Function(SizeListResponseBuilder) updates) { + void update(void Function(SizeListResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -226,7 +226,7 @@ class SizeListResponseBuilder try { _$result = _$v ?? new _$SizeListResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -246,10 +246,10 @@ class _$SizeItemResponse extends SizeItemResponse { final SizeEntity data; factory _$SizeItemResponse( - [void Function(SizeItemResponseBuilder) updates]) => + [void Function(SizeItemResponseBuilder)? updates]) => (new SizeItemResponseBuilder()..update(updates))._build(); - _$SizeItemResponse._({this.data}) : super._() { + _$SizeItemResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull(data, r'SizeItemResponse', 'data'); } @@ -267,10 +267,10 @@ class _$SizeItemResponse extends SizeItemResponse { return other is SizeItemResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -286,11 +286,11 @@ class _$SizeItemResponse extends SizeItemResponse { class SizeItemResponseBuilder implements Builder { - _$SizeItemResponse _$v; + _$SizeItemResponse? _$v; - SizeEntityBuilder _data; + SizeEntityBuilder? _data; SizeEntityBuilder get data => _$this._data ??= new SizeEntityBuilder(); - set data(SizeEntityBuilder data) => _$this._data = data; + set data(SizeEntityBuilder? data) => _$this._data = data; SizeItemResponseBuilder(); @@ -310,7 +310,7 @@ class SizeItemResponseBuilder } @override - void update(void Function(SizeItemResponseBuilder) updates) { + void update(void Function(SizeItemResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -322,7 +322,7 @@ class SizeItemResponseBuilder try { _$result = _$v ?? new _$SizeItemResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -343,10 +343,10 @@ class _$SizeEntity extends SizeEntity { @override final String id; - factory _$SizeEntity([void Function(SizeEntityBuilder) updates]) => + factory _$SizeEntity([void Function(SizeEntityBuilder)? updates]) => (new SizeEntityBuilder()..update(updates))._build(); - _$SizeEntity._({this.name, this.id}) : super._() { + _$SizeEntity._({required this.name, required this.id}) : super._() { BuiltValueNullFieldError.checkNotNull(name, r'SizeEntity', 'name'); BuiltValueNullFieldError.checkNotNull(id, r'SizeEntity', 'id'); } @@ -364,10 +364,10 @@ class _$SizeEntity extends SizeEntity { return other is SizeEntity && name == other.name && id == other.id; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, name.hashCode); _$hash = $jc(_$hash, id.hashCode); @@ -385,15 +385,15 @@ class _$SizeEntity extends SizeEntity { } class SizeEntityBuilder implements Builder { - _$SizeEntity _$v; + _$SizeEntity? _$v; - String _name; - String get name => _$this._name; - set name(String name) => _$this._name = name; + String? _name; + String? get name => _$this._name; + set name(String? name) => _$this._name = name; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; SizeEntityBuilder(); @@ -414,7 +414,7 @@ class SizeEntityBuilder implements Builder { } @override - void update(void Function(SizeEntityBuilder) updates) { + void update(void Function(SizeEntityBuilder)? updates) { if (updates != null) updates(this); } diff --git a/lib/data/models/static/static_data_model.g.dart b/lib/data/models/static/static_data_model.g.dart index 00097b314..25bf1c829 100644 --- a/lib/data/models/static/static_data_model.g.dart +++ b/lib/data/models/static/static_data_model.g.dart @@ -26,10 +26,10 @@ class _$StaticDataListResponseSerializer final String wireName = 'StaticDataListResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, StaticDataListResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType( @@ -41,21 +41,21 @@ class _$StaticDataListResponseSerializer @override StaticDataListResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new StaticDataListResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(StaticDataEntity)])) - as BuiltList); + BuiltList, const [const FullType(StaticDataEntity)]))! + as BuiltList); break; } } @@ -75,10 +75,10 @@ class _$StaticDataItemResponseSerializer final String wireName = 'StaticDataItemResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, StaticDataItemResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType(StaticDataEntity)), @@ -89,19 +89,19 @@ class _$StaticDataItemResponseSerializer @override StaticDataItemResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new StaticDataItemResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, - specifiedType: const FullType(StaticDataEntity)) + specifiedType: const FullType(StaticDataEntity))! as StaticDataEntity); break; } @@ -119,9 +119,9 @@ class _$StaticDataEntitySerializer final String wireName = 'StaticDataEntity'; @override - Iterable serialize(Serializers serializers, StaticDataEntity object, + Iterable serialize(Serializers serializers, StaticDataEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'currencies', serializers.serialize(object.currencies, specifiedType: const FullType( @@ -177,88 +177,88 @@ class _$StaticDataEntitySerializer @override StaticDataEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new StaticDataEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'currencies': result.currencies.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(CurrencyEntity)])) - as BuiltList); + BuiltList, const [const FullType(CurrencyEntity)]))! + as BuiltList); break; case 'sizes': result.sizes.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(SizeEntity)])) - as BuiltList); + BuiltList, const [const FullType(SizeEntity)]))! + as BuiltList); break; case 'industries': result.industries.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(IndustryEntity)])) - as BuiltList); + BuiltList, const [const FullType(IndustryEntity)]))! + as BuiltList); break; case 'timezones': result.timezones.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(TimezoneEntity)])) - as BuiltList); + BuiltList, const [const FullType(TimezoneEntity)]))! + as BuiltList); break; case 'gateways': result.gateways.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(GatewayEntity)])) - as BuiltList); + BuiltList, const [const FullType(GatewayEntity)]))! + as BuiltList); break; case 'date_formats': result.dateFormats.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(DateFormatEntity)])) - as BuiltList); + BuiltList, const [const FullType(DateFormatEntity)]))! + as BuiltList); break; case 'datetime_formats': result.datetimeFormats.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(DatetimeFormatEntity)])) - as BuiltList); + BuiltList, const [const FullType(DatetimeFormatEntity)]))! + as BuiltList); break; case 'languages': result.languages.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(LanguageEntity)])) - as BuiltList); + BuiltList, const [const FullType(LanguageEntity)]))! + as BuiltList); break; case 'payment_types': result.paymentTypes.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(PaymentTypeEntity)])) - as BuiltList); + BuiltList, const [const FullType(PaymentTypeEntity)]))! + as BuiltList); break; case 'countries': result.countries.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(CountryEntity)])) - as BuiltList); + BuiltList, const [const FullType(CountryEntity)]))! + as BuiltList); break; case 'invoice_status': result.invoiceStatus.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(InvoiceStatusEntity)])) - as BuiltList); + BuiltList, const [const FullType(InvoiceStatusEntity)]))! + as BuiltList); break; case 'templates': result.templates.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ const FullType(String), const FullType(TemplateEntity) - ]))); + ]))!); break; } } @@ -275,9 +275,9 @@ class _$TemplateEntitySerializer final String wireName = 'TemplateEntity'; @override - Iterable serialize(Serializers serializers, TemplateEntity object, + Iterable serialize(Serializers serializers, TemplateEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'subject', serializers.serialize(object.subject, specifiedType: const FullType(String)), @@ -290,23 +290,23 @@ class _$TemplateEntitySerializer @override TemplateEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TemplateEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'subject': result.subject = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'body': result.body = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -320,10 +320,10 @@ class _$StaticDataListResponse extends StaticDataListResponse { final BuiltList data; factory _$StaticDataListResponse( - [void Function(StaticDataListResponseBuilder) updates]) => + [void Function(StaticDataListResponseBuilder)? updates]) => (new StaticDataListResponseBuilder()..update(updates))._build(); - _$StaticDataListResponse._({this.data}) : super._() { + _$StaticDataListResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull( data, r'StaticDataListResponse', 'data'); } @@ -343,10 +343,10 @@ class _$StaticDataListResponse extends StaticDataListResponse { return other is StaticDataListResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -363,12 +363,12 @@ class _$StaticDataListResponse extends StaticDataListResponse { class StaticDataListResponseBuilder implements Builder { - _$StaticDataListResponse _$v; + _$StaticDataListResponse? _$v; - ListBuilder _data; + ListBuilder? _data; ListBuilder get data => _$this._data ??= new ListBuilder(); - set data(ListBuilder data) => _$this._data = data; + set data(ListBuilder? data) => _$this._data = data; StaticDataListResponseBuilder(); @@ -388,7 +388,7 @@ class StaticDataListResponseBuilder } @override - void update(void Function(StaticDataListResponseBuilder) updates) { + void update(void Function(StaticDataListResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -400,7 +400,7 @@ class StaticDataListResponseBuilder try { _$result = _$v ?? new _$StaticDataListResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -420,10 +420,10 @@ class _$StaticDataItemResponse extends StaticDataItemResponse { final StaticDataEntity data; factory _$StaticDataItemResponse( - [void Function(StaticDataItemResponseBuilder) updates]) => + [void Function(StaticDataItemResponseBuilder)? updates]) => (new StaticDataItemResponseBuilder()..update(updates))._build(); - _$StaticDataItemResponse._({this.data}) : super._() { + _$StaticDataItemResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull( data, r'StaticDataItemResponse', 'data'); } @@ -443,10 +443,10 @@ class _$StaticDataItemResponse extends StaticDataItemResponse { return other is StaticDataItemResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -463,12 +463,12 @@ class _$StaticDataItemResponse extends StaticDataItemResponse { class StaticDataItemResponseBuilder implements Builder { - _$StaticDataItemResponse _$v; + _$StaticDataItemResponse? _$v; - StaticDataEntityBuilder _data; + StaticDataEntityBuilder? _data; StaticDataEntityBuilder get data => _$this._data ??= new StaticDataEntityBuilder(); - set data(StaticDataEntityBuilder data) => _$this._data = data; + set data(StaticDataEntityBuilder? data) => _$this._data = data; StaticDataItemResponseBuilder(); @@ -488,7 +488,7 @@ class StaticDataItemResponseBuilder } @override - void update(void Function(StaticDataItemResponseBuilder) updates) { + void update(void Function(StaticDataItemResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -500,7 +500,7 @@ class StaticDataItemResponseBuilder try { _$result = _$v ?? new _$StaticDataItemResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -542,22 +542,22 @@ class _$StaticDataEntity extends StaticDataEntity { final BuiltMap templates; factory _$StaticDataEntity( - [void Function(StaticDataEntityBuilder) updates]) => + [void Function(StaticDataEntityBuilder)? updates]) => (new StaticDataEntityBuilder()..update(updates))._build(); _$StaticDataEntity._( - {this.currencies, - this.sizes, - this.industries, - this.timezones, - this.gateways, - this.dateFormats, - this.datetimeFormats, - this.languages, - this.paymentTypes, - this.countries, - this.invoiceStatus, - this.templates}) + {required this.currencies, + required this.sizes, + required this.industries, + required this.timezones, + required this.gateways, + required this.dateFormats, + required this.datetimeFormats, + required this.languages, + required this.paymentTypes, + required this.countries, + required this.invoiceStatus, + required this.templates}) : super._() { BuiltValueNullFieldError.checkNotNull( currencies, r'StaticDataEntity', 'currencies'); @@ -610,10 +610,10 @@ class _$StaticDataEntity extends StaticDataEntity { templates == other.templates; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, currencies.hashCode); _$hash = $jc(_$hash, sizes.hashCode); @@ -652,77 +652,77 @@ class _$StaticDataEntity extends StaticDataEntity { class StaticDataEntityBuilder implements Builder { - _$StaticDataEntity _$v; + _$StaticDataEntity? _$v; - ListBuilder _currencies; + ListBuilder? _currencies; ListBuilder get currencies => _$this._currencies ??= new ListBuilder(); - set currencies(ListBuilder currencies) => + set currencies(ListBuilder? currencies) => _$this._currencies = currencies; - ListBuilder _sizes; + ListBuilder? _sizes; ListBuilder get sizes => _$this._sizes ??= new ListBuilder(); - set sizes(ListBuilder sizes) => _$this._sizes = sizes; + set sizes(ListBuilder? sizes) => _$this._sizes = sizes; - ListBuilder _industries; + ListBuilder? _industries; ListBuilder get industries => _$this._industries ??= new ListBuilder(); - set industries(ListBuilder industries) => + set industries(ListBuilder? industries) => _$this._industries = industries; - ListBuilder _timezones; + ListBuilder? _timezones; ListBuilder get timezones => _$this._timezones ??= new ListBuilder(); - set timezones(ListBuilder timezones) => + set timezones(ListBuilder? timezones) => _$this._timezones = timezones; - ListBuilder _gateways; + ListBuilder? _gateways; ListBuilder get gateways => _$this._gateways ??= new ListBuilder(); - set gateways(ListBuilder gateways) => + set gateways(ListBuilder? gateways) => _$this._gateways = gateways; - ListBuilder _dateFormats; + ListBuilder? _dateFormats; ListBuilder get dateFormats => _$this._dateFormats ??= new ListBuilder(); - set dateFormats(ListBuilder dateFormats) => + set dateFormats(ListBuilder? dateFormats) => _$this._dateFormats = dateFormats; - ListBuilder _datetimeFormats; + ListBuilder? _datetimeFormats; ListBuilder get datetimeFormats => _$this._datetimeFormats ??= new ListBuilder(); - set datetimeFormats(ListBuilder datetimeFormats) => + set datetimeFormats(ListBuilder? datetimeFormats) => _$this._datetimeFormats = datetimeFormats; - ListBuilder _languages; + ListBuilder? _languages; ListBuilder get languages => _$this._languages ??= new ListBuilder(); - set languages(ListBuilder languages) => + set languages(ListBuilder? languages) => _$this._languages = languages; - ListBuilder _paymentTypes; + ListBuilder? _paymentTypes; ListBuilder get paymentTypes => _$this._paymentTypes ??= new ListBuilder(); - set paymentTypes(ListBuilder paymentTypes) => + set paymentTypes(ListBuilder? paymentTypes) => _$this._paymentTypes = paymentTypes; - ListBuilder _countries; + ListBuilder? _countries; ListBuilder get countries => _$this._countries ??= new ListBuilder(); - set countries(ListBuilder countries) => + set countries(ListBuilder? countries) => _$this._countries = countries; - ListBuilder _invoiceStatus; + ListBuilder? _invoiceStatus; ListBuilder get invoiceStatus => _$this._invoiceStatus ??= new ListBuilder(); - set invoiceStatus(ListBuilder invoiceStatus) => + set invoiceStatus(ListBuilder? invoiceStatus) => _$this._invoiceStatus = invoiceStatus; - MapBuilder _templates; + MapBuilder? _templates; MapBuilder get templates => _$this._templates ??= new MapBuilder(); - set templates(MapBuilder templates) => + set templates(MapBuilder? templates) => _$this._templates = templates; StaticDataEntityBuilder(); @@ -754,7 +754,7 @@ class StaticDataEntityBuilder } @override - void update(void Function(StaticDataEntityBuilder) updates) { + void update(void Function(StaticDataEntityBuilder)? updates) { if (updates != null) updates(this); } @@ -779,7 +779,7 @@ class StaticDataEntityBuilder invoiceStatus: invoiceStatus.build(), templates: templates.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'currencies'; currencies.build(); @@ -822,10 +822,10 @@ class _$TemplateEntity extends TemplateEntity { @override final String body; - factory _$TemplateEntity([void Function(TemplateEntityBuilder) updates]) => + factory _$TemplateEntity([void Function(TemplateEntityBuilder)? updates]) => (new TemplateEntityBuilder()..update(updates))._build(); - _$TemplateEntity._({this.subject, this.body}) : super._() { + _$TemplateEntity._({required this.subject, required this.body}) : super._() { BuiltValueNullFieldError.checkNotNull( subject, r'TemplateEntity', 'subject'); BuiltValueNullFieldError.checkNotNull(body, r'TemplateEntity', 'body'); @@ -847,10 +847,10 @@ class _$TemplateEntity extends TemplateEntity { body == other.body; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, subject.hashCode); _$hash = $jc(_$hash, body.hashCode); @@ -869,15 +869,15 @@ class _$TemplateEntity extends TemplateEntity { class TemplateEntityBuilder implements Builder { - _$TemplateEntity _$v; + _$TemplateEntity? _$v; - String _subject; - String get subject => _$this._subject; - set subject(String subject) => _$this._subject = subject; + String? _subject; + String? get subject => _$this._subject; + set subject(String? subject) => _$this._subject = subject; - String _body; - String get body => _$this._body; - set body(String body) => _$this._body = body; + String? _body; + String? get body => _$this._body; + set body(String? body) => _$this._body = body; TemplateEntityBuilder(); @@ -898,7 +898,7 @@ class TemplateEntityBuilder } @override - void update(void Function(TemplateEntityBuilder) updates) { + void update(void Function(TemplateEntityBuilder)? updates) { if (updates != null) updates(this); } diff --git a/lib/data/models/static/timezone_model.dart b/lib/data/models/static/timezone_model.dart index 4eb10915c..fe52ab3ba 100644 --- a/lib/data/models/static/timezone_model.dart +++ b/lib/data/models/static/timezone_model.dart @@ -69,7 +69,7 @@ abstract class TimezoneEntity extends Object String get location; @override - bool matchesFilter(String filter) { + bool matchesFilter(String? filter) { if (filter == null || filter.isEmpty) { return true; } @@ -86,7 +86,7 @@ abstract class TimezoneEntity extends Object } @override - String matchesFilterValue(String filter) { + String? matchesFilterValue(String? filter) { if (filter == null || filter.isEmpty) { return null; } @@ -106,7 +106,7 @@ abstract class TimezoneEntity extends Object } @override - double get listDisplayAmount => null; + double? get listDisplayAmount => null; static Serializer get serializer => _$timezoneEntitySerializer; diff --git a/lib/data/models/static/timezone_model.g.dart b/lib/data/models/static/timezone_model.g.dart index 9fcdc55d4..77e9172f5 100644 --- a/lib/data/models/static/timezone_model.g.dart +++ b/lib/data/models/static/timezone_model.g.dart @@ -24,10 +24,10 @@ class _$TimezoneListResponseSerializer final String wireName = 'TimezoneListResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, TimezoneListResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType( @@ -39,21 +39,21 @@ class _$TimezoneListResponseSerializer @override TimezoneListResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TimezoneListResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(TimezoneEntity)])) - as BuiltList); + BuiltList, const [const FullType(TimezoneEntity)]))! + as BuiltList); break; } } @@ -73,10 +73,10 @@ class _$TimezoneItemResponseSerializer final String wireName = 'TimezoneItemResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, TimezoneItemResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType(TimezoneEntity)), @@ -87,19 +87,20 @@ class _$TimezoneItemResponseSerializer @override TimezoneItemResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TimezoneItemResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, - specifiedType: const FullType(TimezoneEntity)) as TimezoneEntity); + specifiedType: const FullType(TimezoneEntity))! + as TimezoneEntity); break; } } @@ -116,9 +117,9 @@ class _$TimezoneEntitySerializer final String wireName = 'TimezoneEntity'; @override - Iterable serialize(Serializers serializers, TimezoneEntity object, + Iterable serialize(Serializers serializers, TimezoneEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'name', serializers.serialize(object.name, specifiedType: const FullType(String)), 'location', @@ -133,27 +134,27 @@ class _$TimezoneEntitySerializer @override TimezoneEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TimezoneEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'name': result.name = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'location': result.location = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -167,10 +168,10 @@ class _$TimezoneListResponse extends TimezoneListResponse { final BuiltList data; factory _$TimezoneListResponse( - [void Function(TimezoneListResponseBuilder) updates]) => + [void Function(TimezoneListResponseBuilder)? updates]) => (new TimezoneListResponseBuilder()..update(updates))._build(); - _$TimezoneListResponse._({this.data}) : super._() { + _$TimezoneListResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull( data, r'TimezoneListResponse', 'data'); } @@ -190,10 +191,10 @@ class _$TimezoneListResponse extends TimezoneListResponse { return other is TimezoneListResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -210,12 +211,12 @@ class _$TimezoneListResponse extends TimezoneListResponse { class TimezoneListResponseBuilder implements Builder { - _$TimezoneListResponse _$v; + _$TimezoneListResponse? _$v; - ListBuilder _data; + ListBuilder? _data; ListBuilder get data => _$this._data ??= new ListBuilder(); - set data(ListBuilder data) => _$this._data = data; + set data(ListBuilder? data) => _$this._data = data; TimezoneListResponseBuilder(); @@ -235,7 +236,7 @@ class TimezoneListResponseBuilder } @override - void update(void Function(TimezoneListResponseBuilder) updates) { + void update(void Function(TimezoneListResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -247,7 +248,7 @@ class TimezoneListResponseBuilder try { _$result = _$v ?? new _$TimezoneListResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -267,10 +268,10 @@ class _$TimezoneItemResponse extends TimezoneItemResponse { final TimezoneEntity data; factory _$TimezoneItemResponse( - [void Function(TimezoneItemResponseBuilder) updates]) => + [void Function(TimezoneItemResponseBuilder)? updates]) => (new TimezoneItemResponseBuilder()..update(updates))._build(); - _$TimezoneItemResponse._({this.data}) : super._() { + _$TimezoneItemResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull( data, r'TimezoneItemResponse', 'data'); } @@ -290,10 +291,10 @@ class _$TimezoneItemResponse extends TimezoneItemResponse { return other is TimezoneItemResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -310,12 +311,12 @@ class _$TimezoneItemResponse extends TimezoneItemResponse { class TimezoneItemResponseBuilder implements Builder { - _$TimezoneItemResponse _$v; + _$TimezoneItemResponse? _$v; - TimezoneEntityBuilder _data; + TimezoneEntityBuilder? _data; TimezoneEntityBuilder get data => _$this._data ??= new TimezoneEntityBuilder(); - set data(TimezoneEntityBuilder data) => _$this._data = data; + set data(TimezoneEntityBuilder? data) => _$this._data = data; TimezoneItemResponseBuilder(); @@ -335,7 +336,7 @@ class TimezoneItemResponseBuilder } @override - void update(void Function(TimezoneItemResponseBuilder) updates) { + void update(void Function(TimezoneItemResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -347,7 +348,7 @@ class TimezoneItemResponseBuilder try { _$result = _$v ?? new _$TimezoneItemResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -370,10 +371,12 @@ class _$TimezoneEntity extends TimezoneEntity { @override final String id; - factory _$TimezoneEntity([void Function(TimezoneEntityBuilder) updates]) => + factory _$TimezoneEntity([void Function(TimezoneEntityBuilder)? updates]) => (new TimezoneEntityBuilder()..update(updates))._build(); - _$TimezoneEntity._({this.name, this.location, this.id}) : super._() { + _$TimezoneEntity._( + {required this.name, required this.location, required this.id}) + : super._() { BuiltValueNullFieldError.checkNotNull(name, r'TimezoneEntity', 'name'); BuiltValueNullFieldError.checkNotNull( location, r'TimezoneEntity', 'location'); @@ -397,10 +400,10 @@ class _$TimezoneEntity extends TimezoneEntity { id == other.id; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, name.hashCode); _$hash = $jc(_$hash, location.hashCode); @@ -421,19 +424,19 @@ class _$TimezoneEntity extends TimezoneEntity { class TimezoneEntityBuilder implements Builder { - _$TimezoneEntity _$v; + _$TimezoneEntity? _$v; - String _name; - String get name => _$this._name; - set name(String name) => _$this._name = name; + String? _name; + String? get name => _$this._name; + set name(String? name) => _$this._name = name; - String _location; - String get location => _$this._location; - set location(String location) => _$this._location = location; + String? _location; + String? get location => _$this._location; + set location(String? location) => _$this._location = location; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; TimezoneEntityBuilder(); @@ -455,7 +458,7 @@ class TimezoneEntityBuilder } @override - void update(void Function(TimezoneEntityBuilder) updates) { + void update(void Function(TimezoneEntityBuilder)? updates) { if (updates != null) updates(this); } diff --git a/lib/data/models/subscription_model.dart b/lib/data/models/subscription_model.dart index a31d11714..6915d47a0 100644 --- a/lib/data/models/subscription_model.dart +++ b/lib/data/models/subscription_model.dart @@ -60,7 +60,7 @@ abstract class SubscriptionEntity extends Object implements Built { // STARTER: properties - do not remove comment - factory SubscriptionEntity({String id, AppState state}) { + factory SubscriptionEntity({String? id, AppState? state}) { return _$SubscriptionEntity._( id: id ?? BaseEntity.nextId, name: '', @@ -179,16 +179,16 @@ abstract class SubscriptionEntity extends Object String get displayName => id; @override - List getActions( - {UserCompanyEntity userCompany, - ClientEntity client, + List getActions( + {UserCompanyEntity? userCompany, + ClientEntity? client, bool includeEdit = false, bool includePreview = false, bool multiselect = false}) { - final actions = []; + final actions = []; - if (!isDeleted) { - if (!multiselect && includeEdit && userCompany.canEditEntity(this)) { + if (!isDeleted!) { + if (!multiselect && includeEdit && userCompany!.canEditEntity(this)) { actions.add(EntityAction.edit); } } @@ -201,22 +201,22 @@ abstract class SubscriptionEntity extends Object } int compareTo( - SubscriptionEntity subscription, String sortField, bool sortAscending) { + SubscriptionEntity? subscription, String sortField, bool sortAscending) { int response = 0; final subscriptionA = sortAscending ? this : subscription; final subscriptionB = sortAscending ? subscription : this; switch (sortField) { case SubscriptionFields.name: - response = subscriptionA.displayName + response = subscriptionA!.displayName .toLowerCase() - .compareTo(subscriptionB.displayName.toLowerCase()); + .compareTo(subscriptionB!.displayName.toLowerCase()); break; case SubscriptionFields.createdAt: - response = subscriptionA.createdAt.compareTo(subscriptionB.createdAt); + response = subscriptionA!.createdAt.compareTo(subscriptionB!.createdAt); break; case SubscriptionFields.updatedAt: - response = subscriptionA.updatedAt.compareTo(subscriptionB.updatedAt); + response = subscriptionA!.updatedAt.compareTo(subscriptionB!.updatedAt); break; default: print('## ERROR: sort by subscription.$sortField is not implemented'); @@ -225,14 +225,14 @@ abstract class SubscriptionEntity extends Object if (response == 0) { // STARTER: sort default - do not remove comment - return subscriptionA.createdAt.compareTo(subscriptionB.createdAt); + return subscriptionA!.createdAt.compareTo(subscriptionB!.createdAt); } else { return response; } } @override - bool matchesFilter(String filter) { + bool matchesFilter(String? filter) { return matchesStrings( haystacks: [ name, @@ -242,7 +242,7 @@ abstract class SubscriptionEntity extends Object } @override - String matchesFilterValue(String filter) { + String? matchesFilterValue(String? filter) { return matchesStringsValue( haystacks: [ name, @@ -255,10 +255,10 @@ abstract class SubscriptionEntity extends Object String get listDisplayName => name; @override - double get listDisplayAmount => null; + double? get listDisplayAmount => null; @override - FormatNumberType get listDisplayAmountType => null; + FormatNumberType? get listDisplayAmountType => null; // ignore: unused_element static void _initializeBuilder(SubscriptionEntityBuilder builder) => builder diff --git a/lib/data/models/subscription_model.g.dart b/lib/data/models/subscription_model.g.dart index 66fecbbf3..cdb376f1f 100644 --- a/lib/data/models/subscription_model.g.dart +++ b/lib/data/models/subscription_model.g.dart @@ -26,10 +26,10 @@ class _$SubscriptionListResponseSerializer final String wireName = 'SubscriptionListResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, SubscriptionListResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType( @@ -41,21 +41,21 @@ class _$SubscriptionListResponseSerializer @override SubscriptionListResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new SubscriptionListResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(SubscriptionEntity)])) - as BuiltList); + BuiltList, const [const FullType(SubscriptionEntity)]))! + as BuiltList); break; } } @@ -75,10 +75,10 @@ class _$SubscriptionItemResponseSerializer final String wireName = 'SubscriptionItemResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, SubscriptionItemResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType(SubscriptionEntity)), @@ -89,19 +89,19 @@ class _$SubscriptionItemResponseSerializer @override SubscriptionItemResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new SubscriptionItemResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, - specifiedType: const FullType(SubscriptionEntity)) + specifiedType: const FullType(SubscriptionEntity))! as SubscriptionEntity); break; } @@ -119,9 +119,10 @@ class _$SubscriptionEntitySerializer final String wireName = 'SubscriptionEntity'; @override - Iterable serialize(Serializers serializers, SubscriptionEntity object, + Iterable serialize( + Serializers serializers, SubscriptionEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'name', serializers.serialize(object.name, specifiedType: const FullType(String)), 'group_id', @@ -205,7 +206,7 @@ class _$SubscriptionEntitySerializer 'id', serializers.serialize(object.id, specifiedType: const FullType(String)), ]; - Object value; + Object? value; value = object.isChanged; if (value != null) { result @@ -239,144 +240,144 @@ class _$SubscriptionEntitySerializer @override SubscriptionEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new SubscriptionEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'name': result.name = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'group_id': result.groupId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'product_ids': result.productIds = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'recurring_product_ids': result.recurringProductIds = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'optional_product_ids': result.optionalProductIds = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'optional_recurring_product_ids': result.optionalRecurringProductIds = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'registration_required': result.registrationRequired = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'use_inventory_management': result.useInventoryManagement = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'frequency_id': result.frequencyId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'auto_bill': result.autoBill = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'promo_code': result.promoCode = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'promo_discount': result.promoDiscount = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'price': result.price = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'is_amount_discount': result.isAmountDiscount = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'allow_cancellation': result.allowCancellation = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'per_seat_enabled': result.perSeatEnabled = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'max_seats_limit': result.maxSeatsLimit = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'trial_enabled': result.trialEnabled = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'trial_duration': result.trialDuration = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'allow_query_overrides': result.allowQueryOverrides = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'allow_plan_changes': result.allowPlanChanges = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'refund_period': result.refundPeriod = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'webhook_configuration': result.webhookConfiguration.replace(serializers.deserialize(value, - specifiedType: const FullType(WebhookConfigurationEntity)) + specifiedType: const FullType(WebhookConfigurationEntity))! as WebhookConfigurationEntity); break; case 'purchase_page': result.purchasePage = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'isChanged': result.isChanged = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'created_at': result.createdAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'updated_at': result.updatedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'archived_at': result.archivedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'is_deleted': result.isDeleted = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'user_id': result.createdUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'assigned_user_id': result.assignedUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -396,10 +397,10 @@ class _$WebhookConfigurationEntitySerializer final String wireName = 'WebhookConfigurationEntity'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, WebhookConfigurationEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'return_url', serializers.serialize(object.returnUrl, specifiedType: const FullType(String)), @@ -423,36 +424,36 @@ class _$WebhookConfigurationEntitySerializer @override WebhookConfigurationEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new WebhookConfigurationEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'return_url': result.returnUrl = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'post_purchase_url': result.postPurchaseUrl = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'post_purchase_rest_method': result.postPurchaseRestMethod = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'post_purchase_headers': result.postPurchaseHeaders.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(String)]))); + const [const FullType(String), const FullType(String)]))!); break; case 'post_purchase_body': result.postPurchaseBody = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -466,10 +467,10 @@ class _$SubscriptionListResponse extends SubscriptionListResponse { final BuiltList data; factory _$SubscriptionListResponse( - [void Function(SubscriptionListResponseBuilder) updates]) => + [void Function(SubscriptionListResponseBuilder)? updates]) => (new SubscriptionListResponseBuilder()..update(updates))._build(); - _$SubscriptionListResponse._({this.data}) : super._() { + _$SubscriptionListResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull( data, r'SubscriptionListResponse', 'data'); } @@ -489,10 +490,10 @@ class _$SubscriptionListResponse extends SubscriptionListResponse { return other is SubscriptionListResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -510,12 +511,12 @@ class _$SubscriptionListResponse extends SubscriptionListResponse { class SubscriptionListResponseBuilder implements Builder { - _$SubscriptionListResponse _$v; + _$SubscriptionListResponse? _$v; - ListBuilder _data; + ListBuilder? _data; ListBuilder get data => _$this._data ??= new ListBuilder(); - set data(ListBuilder data) => _$this._data = data; + set data(ListBuilder? data) => _$this._data = data; SubscriptionListResponseBuilder(); @@ -535,7 +536,7 @@ class SubscriptionListResponseBuilder } @override - void update(void Function(SubscriptionListResponseBuilder) updates) { + void update(void Function(SubscriptionListResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -547,7 +548,7 @@ class SubscriptionListResponseBuilder try { _$result = _$v ?? new _$SubscriptionListResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -567,10 +568,10 @@ class _$SubscriptionItemResponse extends SubscriptionItemResponse { final SubscriptionEntity data; factory _$SubscriptionItemResponse( - [void Function(SubscriptionItemResponseBuilder) updates]) => + [void Function(SubscriptionItemResponseBuilder)? updates]) => (new SubscriptionItemResponseBuilder()..update(updates))._build(); - _$SubscriptionItemResponse._({this.data}) : super._() { + _$SubscriptionItemResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull( data, r'SubscriptionItemResponse', 'data'); } @@ -590,10 +591,10 @@ class _$SubscriptionItemResponse extends SubscriptionItemResponse { return other is SubscriptionItemResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -611,12 +612,12 @@ class _$SubscriptionItemResponse extends SubscriptionItemResponse { class SubscriptionItemResponseBuilder implements Builder { - _$SubscriptionItemResponse _$v; + _$SubscriptionItemResponse? _$v; - SubscriptionEntityBuilder _data; + SubscriptionEntityBuilder? _data; SubscriptionEntityBuilder get data => _$this._data ??= new SubscriptionEntityBuilder(); - set data(SubscriptionEntityBuilder data) => _$this._data = data; + set data(SubscriptionEntityBuilder? data) => _$this._data = data; SubscriptionItemResponseBuilder(); @@ -636,7 +637,7 @@ class SubscriptionItemResponseBuilder } @override - void update(void Function(SubscriptionItemResponseBuilder) updates) { + void update(void Function(SubscriptionItemResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -648,7 +649,7 @@ class SubscriptionItemResponseBuilder try { _$result = _$v ?? new _$SubscriptionItemResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -713,7 +714,7 @@ class _$SubscriptionEntity extends SubscriptionEntity { @override final String purchasePage; @override - final bool isChanged; + final bool? isChanged; @override final int createdAt; @override @@ -721,51 +722,51 @@ class _$SubscriptionEntity extends SubscriptionEntity { @override final int archivedAt; @override - final bool isDeleted; + final bool? isDeleted; @override - final String createdUserId; + final String? createdUserId; @override - final String assignedUserId; + final String? assignedUserId; @override final String id; factory _$SubscriptionEntity( - [void Function(SubscriptionEntityBuilder) updates]) => + [void Function(SubscriptionEntityBuilder)? updates]) => (new SubscriptionEntityBuilder()..update(updates))._build(); _$SubscriptionEntity._( - {this.name, - this.groupId, - this.productIds, - this.recurringProductIds, - this.optionalProductIds, - this.optionalRecurringProductIds, - this.registrationRequired, - this.useInventoryManagement, - this.frequencyId, - this.autoBill, - this.promoCode, - this.promoDiscount, - this.price, - this.isAmountDiscount, - this.allowCancellation, - this.perSeatEnabled, - this.maxSeatsLimit, - this.trialEnabled, - this.trialDuration, - this.allowQueryOverrides, - this.allowPlanChanges, - this.refundPeriod, - this.webhookConfiguration, - this.purchasePage, + {required this.name, + required this.groupId, + required this.productIds, + required this.recurringProductIds, + required this.optionalProductIds, + required this.optionalRecurringProductIds, + required this.registrationRequired, + required this.useInventoryManagement, + required this.frequencyId, + required this.autoBill, + required this.promoCode, + required this.promoDiscount, + required this.price, + required this.isAmountDiscount, + required this.allowCancellation, + required this.perSeatEnabled, + required this.maxSeatsLimit, + required this.trialEnabled, + required this.trialDuration, + required this.allowQueryOverrides, + required this.allowPlanChanges, + required this.refundPeriod, + required this.webhookConfiguration, + required this.purchasePage, this.isChanged, - this.createdAt, - this.updatedAt, - this.archivedAt, + required this.createdAt, + required this.updatedAt, + required this.archivedAt, this.isDeleted, this.createdUserId, this.assignedUserId, - this.id}) + required this.id}) : super._() { BuiltValueNullFieldError.checkNotNull(name, r'SubscriptionEntity', 'name'); BuiltValueNullFieldError.checkNotNull( @@ -870,10 +871,10 @@ class _$SubscriptionEntity extends SubscriptionEntity { id == other.id; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, name.hashCode); _$hash = $jc(_$hash, groupId.hashCode); @@ -952,151 +953,154 @@ class _$SubscriptionEntity extends SubscriptionEntity { class SubscriptionEntityBuilder implements Builder { - _$SubscriptionEntity _$v; + _$SubscriptionEntity? _$v; - String _name; - String get name => _$this._name; - set name(String name) => _$this._name = name; + String? _name; + String? get name => _$this._name; + set name(String? name) => _$this._name = name; - String _groupId; - String get groupId => _$this._groupId; - set groupId(String groupId) => _$this._groupId = groupId; + String? _groupId; + String? get groupId => _$this._groupId; + set groupId(String? groupId) => _$this._groupId = groupId; - String _productIds; - String get productIds => _$this._productIds; - set productIds(String productIds) => _$this._productIds = productIds; + String? _productIds; + String? get productIds => _$this._productIds; + set productIds(String? productIds) => _$this._productIds = productIds; - String _recurringProductIds; - String get recurringProductIds => _$this._recurringProductIds; - set recurringProductIds(String recurringProductIds) => + String? _recurringProductIds; + String? get recurringProductIds => _$this._recurringProductIds; + set recurringProductIds(String? recurringProductIds) => _$this._recurringProductIds = recurringProductIds; - String _optionalProductIds; - String get optionalProductIds => _$this._optionalProductIds; - set optionalProductIds(String optionalProductIds) => + String? _optionalProductIds; + String? get optionalProductIds => _$this._optionalProductIds; + set optionalProductIds(String? optionalProductIds) => _$this._optionalProductIds = optionalProductIds; - String _optionalRecurringProductIds; - String get optionalRecurringProductIds => _$this._optionalRecurringProductIds; - set optionalRecurringProductIds(String optionalRecurringProductIds) => + String? _optionalRecurringProductIds; + String? get optionalRecurringProductIds => + _$this._optionalRecurringProductIds; + set optionalRecurringProductIds(String? optionalRecurringProductIds) => _$this._optionalRecurringProductIds = optionalRecurringProductIds; - bool _registrationRequired; - bool get registrationRequired => _$this._registrationRequired; - set registrationRequired(bool registrationRequired) => + bool? _registrationRequired; + bool? get registrationRequired => _$this._registrationRequired; + set registrationRequired(bool? registrationRequired) => _$this._registrationRequired = registrationRequired; - bool _useInventoryManagement; - bool get useInventoryManagement => _$this._useInventoryManagement; - set useInventoryManagement(bool useInventoryManagement) => + bool? _useInventoryManagement; + bool? get useInventoryManagement => _$this._useInventoryManagement; + set useInventoryManagement(bool? useInventoryManagement) => _$this._useInventoryManagement = useInventoryManagement; - String _frequencyId; - String get frequencyId => _$this._frequencyId; - set frequencyId(String frequencyId) => _$this._frequencyId = frequencyId; + String? _frequencyId; + String? get frequencyId => _$this._frequencyId; + set frequencyId(String? frequencyId) => _$this._frequencyId = frequencyId; - String _autoBill; - String get autoBill => _$this._autoBill; - set autoBill(String autoBill) => _$this._autoBill = autoBill; + String? _autoBill; + String? get autoBill => _$this._autoBill; + set autoBill(String? autoBill) => _$this._autoBill = autoBill; - String _promoCode; - String get promoCode => _$this._promoCode; - set promoCode(String promoCode) => _$this._promoCode = promoCode; + String? _promoCode; + String? get promoCode => _$this._promoCode; + set promoCode(String? promoCode) => _$this._promoCode = promoCode; - double _promoDiscount; - double get promoDiscount => _$this._promoDiscount; - set promoDiscount(double promoDiscount) => + double? _promoDiscount; + double? get promoDiscount => _$this._promoDiscount; + set promoDiscount(double? promoDiscount) => _$this._promoDiscount = promoDiscount; - double _price; - double get price => _$this._price; - set price(double price) => _$this._price = price; + double? _price; + double? get price => _$this._price; + set price(double? price) => _$this._price = price; - bool _isAmountDiscount; - bool get isAmountDiscount => _$this._isAmountDiscount; - set isAmountDiscount(bool isAmountDiscount) => + bool? _isAmountDiscount; + bool? get isAmountDiscount => _$this._isAmountDiscount; + set isAmountDiscount(bool? isAmountDiscount) => _$this._isAmountDiscount = isAmountDiscount; - bool _allowCancellation; - bool get allowCancellation => _$this._allowCancellation; - set allowCancellation(bool allowCancellation) => + bool? _allowCancellation; + bool? get allowCancellation => _$this._allowCancellation; + set allowCancellation(bool? allowCancellation) => _$this._allowCancellation = allowCancellation; - bool _perSeatEnabled; - bool get perSeatEnabled => _$this._perSeatEnabled; - set perSeatEnabled(bool perSeatEnabled) => + bool? _perSeatEnabled; + bool? get perSeatEnabled => _$this._perSeatEnabled; + set perSeatEnabled(bool? perSeatEnabled) => _$this._perSeatEnabled = perSeatEnabled; - int _maxSeatsLimit; - int get maxSeatsLimit => _$this._maxSeatsLimit; - set maxSeatsLimit(int maxSeatsLimit) => _$this._maxSeatsLimit = maxSeatsLimit; + int? _maxSeatsLimit; + int? get maxSeatsLimit => _$this._maxSeatsLimit; + set maxSeatsLimit(int? maxSeatsLimit) => + _$this._maxSeatsLimit = maxSeatsLimit; - bool _trialEnabled; - bool get trialEnabled => _$this._trialEnabled; - set trialEnabled(bool trialEnabled) => _$this._trialEnabled = trialEnabled; + bool? _trialEnabled; + bool? get trialEnabled => _$this._trialEnabled; + set trialEnabled(bool? trialEnabled) => _$this._trialEnabled = trialEnabled; - int _trialDuration; - int get trialDuration => _$this._trialDuration; - set trialDuration(int trialDuration) => _$this._trialDuration = trialDuration; + int? _trialDuration; + int? get trialDuration => _$this._trialDuration; + set trialDuration(int? trialDuration) => + _$this._trialDuration = trialDuration; - bool _allowQueryOverrides; - bool get allowQueryOverrides => _$this._allowQueryOverrides; - set allowQueryOverrides(bool allowQueryOverrides) => + bool? _allowQueryOverrides; + bool? get allowQueryOverrides => _$this._allowQueryOverrides; + set allowQueryOverrides(bool? allowQueryOverrides) => _$this._allowQueryOverrides = allowQueryOverrides; - bool _allowPlanChanges; - bool get allowPlanChanges => _$this._allowPlanChanges; - set allowPlanChanges(bool allowPlanChanges) => + bool? _allowPlanChanges; + bool? get allowPlanChanges => _$this._allowPlanChanges; + set allowPlanChanges(bool? allowPlanChanges) => _$this._allowPlanChanges = allowPlanChanges; - int _refundPeriod; - int get refundPeriod => _$this._refundPeriod; - set refundPeriod(int refundPeriod) => _$this._refundPeriod = refundPeriod; + int? _refundPeriod; + int? get refundPeriod => _$this._refundPeriod; + set refundPeriod(int? refundPeriod) => _$this._refundPeriod = refundPeriod; - WebhookConfigurationEntityBuilder _webhookConfiguration; + WebhookConfigurationEntityBuilder? _webhookConfiguration; WebhookConfigurationEntityBuilder get webhookConfiguration => _$this._webhookConfiguration ??= new WebhookConfigurationEntityBuilder(); set webhookConfiguration( - WebhookConfigurationEntityBuilder webhookConfiguration) => + WebhookConfigurationEntityBuilder? webhookConfiguration) => _$this._webhookConfiguration = webhookConfiguration; - String _purchasePage; - String get purchasePage => _$this._purchasePage; - set purchasePage(String purchasePage) => _$this._purchasePage = purchasePage; + String? _purchasePage; + String? get purchasePage => _$this._purchasePage; + set purchasePage(String? purchasePage) => _$this._purchasePage = purchasePage; - bool _isChanged; - bool get isChanged => _$this._isChanged; - set isChanged(bool isChanged) => _$this._isChanged = isChanged; + bool? _isChanged; + bool? get isChanged => _$this._isChanged; + set isChanged(bool? isChanged) => _$this._isChanged = isChanged; - int _createdAt; - int get createdAt => _$this._createdAt; - set createdAt(int createdAt) => _$this._createdAt = createdAt; + int? _createdAt; + int? get createdAt => _$this._createdAt; + set createdAt(int? createdAt) => _$this._createdAt = createdAt; - int _updatedAt; - int get updatedAt => _$this._updatedAt; - set updatedAt(int updatedAt) => _$this._updatedAt = updatedAt; + int? _updatedAt; + int? get updatedAt => _$this._updatedAt; + set updatedAt(int? updatedAt) => _$this._updatedAt = updatedAt; - int _archivedAt; - int get archivedAt => _$this._archivedAt; - set archivedAt(int archivedAt) => _$this._archivedAt = archivedAt; + int? _archivedAt; + int? get archivedAt => _$this._archivedAt; + set archivedAt(int? archivedAt) => _$this._archivedAt = archivedAt; - bool _isDeleted; - bool get isDeleted => _$this._isDeleted; - set isDeleted(bool isDeleted) => _$this._isDeleted = isDeleted; + bool? _isDeleted; + bool? get isDeleted => _$this._isDeleted; + set isDeleted(bool? isDeleted) => _$this._isDeleted = isDeleted; - String _createdUserId; - String get createdUserId => _$this._createdUserId; - set createdUserId(String createdUserId) => + String? _createdUserId; + String? get createdUserId => _$this._createdUserId; + set createdUserId(String? createdUserId) => _$this._createdUserId = createdUserId; - String _assignedUserId; - String get assignedUserId => _$this._assignedUserId; - set assignedUserId(String assignedUserId) => + String? _assignedUserId; + String? get assignedUserId => _$this._assignedUserId; + set assignedUserId(String? assignedUserId) => _$this._assignedUserId = assignedUserId; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; SubscriptionEntityBuilder() { SubscriptionEntity._initializeBuilder(this); @@ -1149,7 +1153,7 @@ class SubscriptionEntityBuilder } @override - void update(void Function(SubscriptionEntityBuilder) updates) { + void update(void Function(SubscriptionEntityBuilder)? updates) { if (updates != null) updates(this); } @@ -1203,7 +1207,7 @@ class SubscriptionEntityBuilder assignedUserId: assignedUserId, id: BuiltValueNullFieldError.checkNotNull(id, r'SubscriptionEntity', 'id')); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'webhookConfiguration'; webhookConfiguration.build(); @@ -1231,15 +1235,15 @@ class _$WebhookConfigurationEntity extends WebhookConfigurationEntity { final String postPurchaseBody; factory _$WebhookConfigurationEntity( - [void Function(WebhookConfigurationEntityBuilder) updates]) => + [void Function(WebhookConfigurationEntityBuilder)? updates]) => (new WebhookConfigurationEntityBuilder()..update(updates))._build(); _$WebhookConfigurationEntity._( - {this.returnUrl, - this.postPurchaseUrl, - this.postPurchaseRestMethod, - this.postPurchaseHeaders, - this.postPurchaseBody}) + {required this.returnUrl, + required this.postPurchaseUrl, + required this.postPurchaseRestMethod, + required this.postPurchaseHeaders, + required this.postPurchaseBody}) : super._() { BuiltValueNullFieldError.checkNotNull( returnUrl, r'WebhookConfigurationEntity', 'returnUrl'); @@ -1273,10 +1277,10 @@ class _$WebhookConfigurationEntity extends WebhookConfigurationEntity { postPurchaseBody == other.postPurchaseBody; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, returnUrl.hashCode); _$hash = $jc(_$hash, postPurchaseUrl.hashCode); @@ -1302,31 +1306,31 @@ class _$WebhookConfigurationEntity extends WebhookConfigurationEntity { class WebhookConfigurationEntityBuilder implements Builder { - _$WebhookConfigurationEntity _$v; + _$WebhookConfigurationEntity? _$v; - String _returnUrl; - String get returnUrl => _$this._returnUrl; - set returnUrl(String returnUrl) => _$this._returnUrl = returnUrl; + String? _returnUrl; + String? get returnUrl => _$this._returnUrl; + set returnUrl(String? returnUrl) => _$this._returnUrl = returnUrl; - String _postPurchaseUrl; - String get postPurchaseUrl => _$this._postPurchaseUrl; - set postPurchaseUrl(String postPurchaseUrl) => + String? _postPurchaseUrl; + String? get postPurchaseUrl => _$this._postPurchaseUrl; + set postPurchaseUrl(String? postPurchaseUrl) => _$this._postPurchaseUrl = postPurchaseUrl; - String _postPurchaseRestMethod; - String get postPurchaseRestMethod => _$this._postPurchaseRestMethod; - set postPurchaseRestMethod(String postPurchaseRestMethod) => + String? _postPurchaseRestMethod; + String? get postPurchaseRestMethod => _$this._postPurchaseRestMethod; + set postPurchaseRestMethod(String? postPurchaseRestMethod) => _$this._postPurchaseRestMethod = postPurchaseRestMethod; - MapBuilder _postPurchaseHeaders; + MapBuilder? _postPurchaseHeaders; MapBuilder get postPurchaseHeaders => _$this._postPurchaseHeaders ??= new MapBuilder(); - set postPurchaseHeaders(MapBuilder postPurchaseHeaders) => + set postPurchaseHeaders(MapBuilder? postPurchaseHeaders) => _$this._postPurchaseHeaders = postPurchaseHeaders; - String _postPurchaseBody; - String get postPurchaseBody => _$this._postPurchaseBody; - set postPurchaseBody(String postPurchaseBody) => + String? _postPurchaseBody; + String? get postPurchaseBody => _$this._postPurchaseBody; + set postPurchaseBody(String? postPurchaseBody) => _$this._postPurchaseBody = postPurchaseBody; WebhookConfigurationEntityBuilder() { @@ -1353,7 +1357,7 @@ class WebhookConfigurationEntityBuilder } @override - void update(void Function(WebhookConfigurationEntityBuilder) updates) { + void update(void Function(WebhookConfigurationEntityBuilder)? updates) { if (updates != null) updates(this); } @@ -1381,7 +1385,7 @@ class WebhookConfigurationEntityBuilder r'WebhookConfigurationEntity', 'postPurchaseBody')); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'postPurchaseHeaders'; postPurchaseHeaders.build(); diff --git a/lib/data/models/system_log_model.g.dart b/lib/data/models/system_log_model.g.dart index 2de211c43..cc65006e0 100644 --- a/lib/data/models/system_log_model.g.dart +++ b/lib/data/models/system_log_model.g.dart @@ -17,9 +17,9 @@ class _$SystemLogEntitySerializer final String wireName = 'SystemLogEntity'; @override - Iterable serialize(Serializers serializers, SystemLogEntity object, + Iterable serialize(Serializers serializers, SystemLogEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'id', serializers.serialize(object.id, specifiedType: const FullType(String)), 'company_id', @@ -50,51 +50,51 @@ class _$SystemLogEntitySerializer @override SystemLogEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new SystemLogEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current as String?; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'company_id': result.companyId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'user_id': result.userId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'client_id': result.clientId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'event_id': result.eventId = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int)) as int?; break; case 'category_id': result.categoryId = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int)) as int?; break; case 'type_id': result.typeId = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int)) as int?; break; case 'log': result.log = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'created_at': result.createdAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int)) as int?; break; } } @@ -123,19 +123,19 @@ class _$SystemLogEntity extends SystemLogEntity { @override final int createdAt; - factory _$SystemLogEntity([void Function(SystemLogEntityBuilder) updates]) => + factory _$SystemLogEntity([void Function(SystemLogEntityBuilder)? updates]) => (new SystemLogEntityBuilder()..update(updates))._build(); _$SystemLogEntity._( - {this.id, - this.companyId, - this.userId, - this.clientId, - this.eventId, - this.categoryId, - this.typeId, - this.log, - this.createdAt}) + {required this.id, + required this.companyId, + required this.userId, + required this.clientId, + required this.eventId, + required this.categoryId, + required this.typeId, + required this.log, + required this.createdAt}) : super._() { BuiltValueNullFieldError.checkNotNull(id, r'SystemLogEntity', 'id'); BuiltValueNullFieldError.checkNotNull( @@ -176,10 +176,10 @@ class _$SystemLogEntity extends SystemLogEntity { createdAt == other.createdAt; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, id.hashCode); _$hash = $jc(_$hash, companyId.hashCode); @@ -212,43 +212,43 @@ class _$SystemLogEntity extends SystemLogEntity { class SystemLogEntityBuilder implements Builder { - _$SystemLogEntity _$v; + _$SystemLogEntity? _$v; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; - String _companyId; - String get companyId => _$this._companyId; - set companyId(String companyId) => _$this._companyId = companyId; + String? _companyId; + String? get companyId => _$this._companyId; + set companyId(String? companyId) => _$this._companyId = companyId; - String _userId; - String get userId => _$this._userId; - set userId(String userId) => _$this._userId = userId; + String? _userId; + String? get userId => _$this._userId; + set userId(String? userId) => _$this._userId = userId; - String _clientId; - String get clientId => _$this._clientId; - set clientId(String clientId) => _$this._clientId = clientId; + String? _clientId; + String? get clientId => _$this._clientId; + set clientId(String? clientId) => _$this._clientId = clientId; - int _eventId; - int get eventId => _$this._eventId; - set eventId(int eventId) => _$this._eventId = eventId; + int? _eventId; + int? get eventId => _$this._eventId; + set eventId(int? eventId) => _$this._eventId = eventId; - int _categoryId; - int get categoryId => _$this._categoryId; - set categoryId(int categoryId) => _$this._categoryId = categoryId; + int? _categoryId; + int? get categoryId => _$this._categoryId; + set categoryId(int? categoryId) => _$this._categoryId = categoryId; - int _typeId; - int get typeId => _$this._typeId; - set typeId(int typeId) => _$this._typeId = typeId; + int? _typeId; + int? get typeId => _$this._typeId; + set typeId(int? typeId) => _$this._typeId = typeId; - String _log; - String get log => _$this._log; - set log(String log) => _$this._log = log; + String? _log; + String? get log => _$this._log; + set log(String? log) => _$this._log = log; - int _createdAt; - int get createdAt => _$this._createdAt; - set createdAt(int createdAt) => _$this._createdAt = createdAt; + int? _createdAt; + int? get createdAt => _$this._createdAt; + set createdAt(int? createdAt) => _$this._createdAt = createdAt; SystemLogEntityBuilder(); @@ -276,7 +276,7 @@ class SystemLogEntityBuilder } @override - void update(void Function(SystemLogEntityBuilder) updates) { + void update(void Function(SystemLogEntityBuilder)? updates) { if (updates != null) updates(this); } diff --git a/lib/data/models/task_model.dart b/lib/data/models/task_model.dart index 6df68d1e3..b176be13d 100644 --- a/lib/data/models/task_model.dart +++ b/lib/data/models/task_model.dart @@ -86,10 +86,10 @@ class TaskFields { abstract class TaskTime implements Built { factory TaskTime({ - DateTime startDate, - DateTime endDate, - String description, - bool isBillable, + DateTime? startDate, + DateTime? endDate, + String? description, + bool? isBillable, }) { return _$TaskTime._( startDate: startDate ?? @@ -108,27 +108,25 @@ abstract class TaskTime implements Built { @memoized int get hashCode; - @nullable - DateTime get startDate; + DateTime? get startDate; - @nullable - DateTime get endDate; + DateTime? get endDate; String get description; bool get isBillable; - Duration get duration => (endDate ?? DateTime.now()).difference(startDate); + Duration get duration => (endDate ?? DateTime.now()).difference(startDate!); List get asList { final startTime = startDate != null - ? (startDate.millisecondsSinceEpoch / 1000).floor() + ? (startDate!.millisecondsSinceEpoch / 1000).floor() : 0; var endTime = - endDate != null ? (endDate.millisecondsSinceEpoch / 1000).floor() : 0; + endDate != null ? (endDate!.millisecondsSinceEpoch / 1000).floor() : 0; - final store = StoreProvider.of(navigatorKey.currentContext); - final company = store.state.company; + final store = StoreProvider.of(navigatorKey.currentContext!); + final company = store.state.company!; // Handle the end time being before the start time if (!company.showTaskEndDate && endTime != 0) { @@ -154,7 +152,7 @@ abstract class TaskTime implements Built { startDate == null && endDate == null && description.isEmpty; Map getParts() { - final localStartDate = startDate.toLocal(); + final localStartDate = startDate!.toLocal(); final localEndDate = (endDate ?? DateTime.now()).toLocal(); final startSqlDate = convertDateTimeToSqlDate(localStartDate); final endSqlDate = convertDateTimeToSqlDate(localEndDate); @@ -199,21 +197,21 @@ abstract class TaskTime implements Built { return TaskTime( startDate: DateTime( - dateTime.toLocal()?.year, - dateTime.toLocal()?.month, - dateTime.toLocal()?.day, - startDate?.toLocal()?.hour ?? now.hour, - startDate?.toLocal()?.minute ?? now.minute, - startDate?.toLocal()?.second ?? now.second, + dateTime.toLocal().year, + dateTime.toLocal().month, + dateTime.toLocal().day, + startDate?.toLocal().hour ?? now.hour, + startDate?.toLocal().minute ?? now.minute, + startDate?.toLocal().second ?? now.second, ).toUtc(), endDate: syncDates && endDate != null ? DateTime( - dateTime.toLocal()?.year, - dateTime.toLocal()?.month, - dateTime.toLocal()?.day, - endDate.toLocal().hour, - endDate.toLocal().minute, - endDate.toLocal().second, + dateTime.toLocal().year, + dateTime.toLocal().month, + dateTime.toLocal().day, + endDate!.toLocal().hour, + endDate!.toLocal().minute, + endDate!.toLocal().second, ) : endDate, description: description, @@ -232,12 +230,12 @@ abstract class TaskTime implements Built { return TaskTime( startDate: startDate, endDate: DateTime( - dateTime.toLocal()?.year, - dateTime.toLocal()?.month, - dateTime.toLocal()?.day, - endDate?.toLocal()?.hour ?? now.hour, - endDate?.toLocal()?.minute ?? now.minute, - endDate?.toLocal()?.second ?? now.second, + dateTime.toLocal().year, + dateTime.toLocal().month, + dateTime.toLocal().day, + endDate?.toLocal().hour ?? now.hour, + endDate?.toLocal().minute ?? now.minute, + endDate?.toLocal().second ?? now.second, ).toUtc(), description: description, isBillable: isBillable, @@ -249,9 +247,9 @@ abstract class TaskTime implements Built { return TaskTime( startDate: DateTime( - startDate?.toLocal()?.year ?? now.year, - startDate?.toLocal()?.month ?? now.month, - startDate?.toLocal()?.day ?? now.day, + startDate?.toLocal().year ?? now.year, + startDate?.toLocal().month ?? now.month, + startDate?.toLocal().day ?? now.day, dateTime.toLocal().hour, dateTime.toLocal().minute, dateTime.toLocal().second, @@ -267,9 +265,9 @@ abstract class TaskTime implements Built { return TaskTime( startDate: startDate, endDate: DateTime( - endDate?.toLocal()?.year ?? startDate?.toLocal()?.year ?? now.year, - endDate?.toLocal()?.month ?? startDate?.toLocal()?.month ?? now.month, - endDate?.toLocal()?.day ?? startDate?.toLocal()?.day ?? now.day, + endDate?.toLocal().year ?? startDate?.toLocal().year ?? now.year, + endDate?.toLocal().month ?? startDate?.toLocal().month ?? now.month, + endDate?.toLocal().day ?? startDate?.toLocal().day ?? now.day, dateTime.toLocal().hour, dateTime.toLocal().minute, dateTime.toLocal().second, @@ -296,11 +294,11 @@ abstract class TaskEntity extends Object with BaseEntity, SelectableEntity, BelongsToClient implements Built { factory TaskEntity({ - String id, - AppState state, - ClientEntity client, - UserEntity user, - ProjectEntity project, + String? id, + AppState? state, + ClientEntity? client, + UserEntity? user, + ProjectEntity? project, }) { final isRunning = state?.company?.autoStartTasks ?? false; @@ -327,7 +325,7 @@ abstract class TaskEntity extends Object createdAt: 0, createdUserId: '', statusId: defaultTaskStatusId( - state?.taskStatusState?.map ?? BuiltMap()), + state?.taskStatusState?.map ?? BuiltMap())!, documents: BuiltList(), ); } @@ -352,7 +350,7 @@ abstract class TaskEntity extends Object TaskEntity stop() { final times = getTaskTimes(); - final taskTime = times.last.stop; + final taskTime = times.last!.stop; return updateTaskTime(taskTime, times.length - 1); } @@ -370,28 +368,28 @@ abstract class TaskEntity extends Object bool get areTimesValid { final times = getTaskTimes(); - DateTime lastDateTime = DateTime(2000); + DateTime? lastDateTime = DateTime(2000); int countRunning = 0; bool isValid = true; times.forEach((time) { - final startDate = time.startDate; + final startDate = time!.startDate; final endDate = time.endDate; if (time.isRunning) { countRunning++; - if (startDate.isBefore(lastDateTime)) { + if (startDate!.isBefore(lastDateTime!)) { isValid = false; } } else { - if (startDate.isBefore(lastDateTime) || startDate.isAfter(endDate)) { + if (startDate!.isBefore(lastDateTime!) || startDate.isAfter(endDate!)) { isValid = false; } - if (endDate.isBefore(startDate) || endDate.isBefore(lastDateTime)) { + if (endDate!.isBefore(startDate) || endDate.isBefore(lastDateTime!)) { isValid = false; } - lastDateTime = lastDateTime.isAfter(endDate) ? lastDateTime : endDate; + lastDateTime = lastDateTime!.isAfter(endDate) ? lastDateTime : endDate; } }); @@ -400,27 +398,27 @@ abstract class TaskEntity extends Object List get getInvalidTimeIndices { final times = getTaskTimes(); - DateTime lastDateTime = DateTime(2000); + DateTime? lastDateTime = DateTime(2000); final indices = []; int counter = 0; times.forEach((time) { - final startDate = time.startDate; + final startDate = time!.startDate; final endDate = time.endDate; if (time.isRunning) { - if (startDate.isBefore(lastDateTime)) { + if (startDate!.isBefore(lastDateTime!)) { indices.add(counter); } } else { - if (startDate.isBefore(lastDateTime) || startDate.isAfter(endDate)) { + if (startDate!.isBefore(lastDateTime!) || startDate.isAfter(endDate!)) { indices.add(counter); } - if (endDate.isBefore(startDate) || endDate.isBefore(lastDateTime)) { + if (endDate!.isBefore(startDate) || endDate.isBefore(lastDateTime!)) { indices.add(counter); } - lastDateTime = lastDateTime.isAfter(endDate) ? lastDateTime : endDate; + lastDateTime = lastDateTime!.isAfter(endDate) ? lastDateTime : endDate; } counter++; @@ -436,10 +434,10 @@ abstract class TaskEntity extends Object return false; } - return taskTimes.any((taskTime) => taskTime.isRunning); + return taskTimes.any((taskTime) => taskTime!.isRunning); } - bool isBetween(String startDate, String endDate) { + bool isBetween(String? startDate, String? endDate) { final taskTimes = getTaskTimes(); if (taskTimes.isEmpty) { @@ -447,21 +445,21 @@ abstract class TaskEntity extends Object } final taskStartDate = - convertDateTimeToSqlDate(taskTimes.first.startDate.toLocal()); - if (startDate.compareTo(taskStartDate) <= 0 && - endDate.compareTo(taskStartDate) >= 0) { + convertDateTimeToSqlDate(taskTimes.first!.startDate!.toLocal()); + if (startDate!.compareTo(taskStartDate) <= 0 && + endDate!.compareTo(taskStartDate) >= 0) { return true; } - final completedTimes = taskTimes.where((element) => !element.isRunning); + final completedTimes = taskTimes.where((element) => !element!.isRunning); if (completedTimes.isNotEmpty) { - final lastTaskTime = completedTimes.last; + final lastTaskTime = completedTimes.last!; final taskEndDate = - convertDateTimeToSqlDate(lastTaskTime.endDate.toLocal()); + convertDateTimeToSqlDate(lastTaskTime.endDate!.toLocal()); if (startDate.compareTo(taskEndDate) <= 0 && - endDate.compareTo(taskEndDate) >= 0) { + endDate!.compareTo(taskEndDate) >= 0) { return true; } } @@ -469,7 +467,7 @@ abstract class TaskEntity extends Object return false; } - int get startTimestamp { + int? get startTimestamp { if (timeLog.isEmpty) { return null; } @@ -485,7 +483,7 @@ abstract class TaskEntity extends Object return first[0]; } - int get endTimestamp { + int? get endTimestamp { if (timeLog.isEmpty) { return null; } @@ -506,8 +504,8 @@ abstract class TaskEntity extends Object return last[1].round(); } - List getTaskTimes({bool sort = true}) { - final List details = []; + List getTaskTimes({bool sort = true}) { + final List details = []; if (timeLog.isEmpty) { return details; @@ -515,8 +513,8 @@ abstract class TaskEntity extends Object final List log = jsonDecode(timeLog); log.forEach((dynamic detail) { - int startDate; - int endDate; + int? startDate; + int? endDate; final taskItem = detail as List; if (taskItem[0] == false || taskItem[0] == null) { @@ -544,7 +542,7 @@ abstract class TaskEntity extends Object if (sort) { details - .sort((timeA, timeB) => timeA.startDate.compareTo(timeB.startDate)); + .sort((timeA, timeB) => timeA!.startDate!.compareTo(timeB!.startDate!)); } return details; @@ -590,8 +588,8 @@ abstract class TaskEntity extends Object int seconds = 0; getTaskTimes().forEach((taskTime) { - if (!onlyBillable || taskTime.isBillable) { - seconds += taskTime.duration.inSeconds; + if (!onlyBillable || taskTime!.isBillable) { + seconds += taskTime!.duration.inSeconds; } }); @@ -628,28 +626,27 @@ abstract class TaskEntity extends Object @BuiltValueField(wireName: 'status_id') String get statusId; - @nullable @BuiltValueField(wireName: 'status_order') - int get statusOrder; + int? get statusOrder; BuiltList get documents; @override - List getActions( - {UserCompanyEntity userCompany, - ClientEntity client, + List getActions( + {UserCompanyEntity? userCompany, + ClientEntity? client, bool includeEdit = false, bool includePreview = false, bool multiselect = false}) { - final actions = []; + final actions = []; - final isLocked = userCompany.company.invoiceTaskLock && isInvoiced; + final isLocked = userCompany!.company!.invoiceTaskLock && isInvoiced; - if (!isDeleted) { + if (!isDeleted!) { if (includeEdit && userCompany.canEditEntity(this) && !isLocked && - !isDeleted && + !isDeleted! && !multiselect) { actions.add(EntityAction.edit); } @@ -682,13 +679,13 @@ abstract class TaskEntity extends Object } } - if (!isDeleted && !multiselect && isOld) { + if (!isDeleted! && !multiselect && isOld) { if (userCompany.canEditEntity(this)) { actions.add(EntityAction.changeStatus); } } - if (!isDeleted && multiselect) { + if (!isDeleted! && multiselect) { actions.add(EntityAction.documents); } @@ -700,113 +697,113 @@ abstract class TaskEntity extends Object } int compareTo( - TaskEntity task, + TaskEntity? task, String sortField, bool sortAscending, - BuiltMap userMap, - BuiltMap clientMap, - BuiltMap projectMap, - BuiltMap invoiceMap, - BuiltMap taskStatusMap, + BuiltMap userMap, + BuiltMap clientMap, + BuiltMap projectMap, + BuiltMap invoiceMap, + BuiltMap taskStatusMap, ) { int response = 0; - final TaskEntity taskA = sortAscending ? this : task; - final TaskEntity taskB = sortAscending ? task : this; + final TaskEntity? taskA = sortAscending ? this : task; + final TaskEntity? taskB = sortAscending ? task : this; switch (sortField) { case TaskFields.duration: case TaskFields.amount: response = - taskA.calculateDuration().compareTo(taskB.calculateDuration()); + taskA!.calculateDuration().compareTo(taskB!.calculateDuration()); break; case TaskFields.description: - response = taskA.description.compareTo(taskB.description); + response = taskA!.description.compareTo(taskB!.description); break; case TaskFields.customValue1: - response = taskA.customValue1.compareTo(taskB.customValue1); + response = taskA!.customValue1.compareTo(taskB!.customValue1); break; case TaskFields.customValue2: - response = taskA.customValue2.compareTo(taskB.customValue2); + response = taskA!.customValue2.compareTo(taskB!.customValue2); break; case TaskFields.customValue3: - response = taskA.customValue3.compareTo(taskB.customValue3); + response = taskA!.customValue3.compareTo(taskB!.customValue3); break; case TaskFields.customValue4: - response = taskA.customValue4.compareTo(taskB.customValue4); + response = taskA!.customValue4.compareTo(taskB!.customValue4); break; case TaskFields.clientId: case TaskFields.client: - final clientA = clientMap[taskA.clientId] ?? ClientEntity(); - final clientB = clientMap[taskB.clientId] ?? ClientEntity(); + final clientA = clientMap[taskA!.clientId] ?? ClientEntity(); + final clientB = clientMap[taskB!.clientId] ?? ClientEntity(); response = removeDiacritics(clientA.listDisplayName) .toLowerCase() .compareTo(removeDiacritics(clientB.listDisplayName).toLowerCase()); break; case TaskFields.projectId: case TaskFields.project: - final projectA = projectMap[taskA.projectId] ?? ProjectEntity(); - final projectB = projectMap[taskB.projectId] ?? ProjectEntity(); + final projectA = projectMap[taskA!.projectId] ?? ProjectEntity(); + final projectB = projectMap[taskB!.projectId] ?? ProjectEntity(); response = projectA.listDisplayName .toLowerCase() .compareTo(projectB.listDisplayName.toLowerCase()); break; case TaskFields.invoiceId: - final invoiceA = invoiceMap[taskA.invoiceId] ?? InvoiceEntity(); - final invoiceB = invoiceMap[taskB.invoiceId] ?? InvoiceEntity(); + final invoiceA = invoiceMap[taskA!.invoiceId] ?? InvoiceEntity(); + final invoiceB = invoiceMap[taskB!.invoiceId] ?? InvoiceEntity(); response = invoiceA.listDisplayName .toLowerCase() .compareTo(invoiceB.listDisplayName.toLowerCase()); break; case EntityFields.state: final stateA = - EntityState.valueOf(taskA.entityState) ?? EntityState.active; + EntityState.valueOf(taskA!.entityState) ?? EntityState.active; final stateB = - EntityState.valueOf(taskB.entityState) ?? EntityState.active; + EntityState.valueOf(taskB!.entityState) ?? EntityState.active; response = stateA.name.toLowerCase().compareTo(stateB.name.toLowerCase()); break; case TaskFields.date: case TaskFields.timeLog: response = - taskA.timeLog.toLowerCase().compareTo(taskB.timeLog.toLowerCase()); + taskA!.timeLog.toLowerCase().compareTo(taskB!.timeLog.toLowerCase()); break; case EntityFields.createdAt: - response = taskA.createdAt.compareTo(taskB.createdAt); + response = taskA!.createdAt.compareTo(taskB!.createdAt); break; case TaskFields.archivedAt: - response = taskA.archivedAt.compareTo(taskB.archivedAt); + response = taskA!.archivedAt.compareTo(taskB!.archivedAt); break; case TaskFields.updatedAt: - response = taskA.updatedAt.compareTo(taskB.updatedAt); + response = taskA!.updatedAt.compareTo(taskB!.updatedAt); break; case TaskFields.documents: - response = taskA.documents.length.compareTo(taskB.documents.length); + response = taskA!.documents.length.compareTo(taskB!.documents.length); break; case TaskFields.number: response = compareNatural( - taskA.number.toLowerCase(), taskB.number.toLowerCase()); + taskA!.number.toLowerCase(), taskB!.number.toLowerCase()); break; case TaskFields.createdBy: - final userA = userMap[taskA.createdUserId] ?? UserEntity(); - final userB = userMap[taskB.createdUserId] ?? UserEntity(); + final userA = userMap[taskA!.createdUserId] ?? UserEntity(); + final userB = userMap[taskB!.createdUserId] ?? UserEntity(); response = userA.fullName .toLowerCase() .compareTo(userB.fullName.toLowerCase()); break; case TaskFields.assignedTo: - final userA = userMap[taskA.assignedUserId] ?? UserEntity(); - final userB = userMap[taskB.assignedUserId] ?? UserEntity(); + final userA = userMap[taskA!.assignedUserId] ?? UserEntity(); + final userB = userMap[taskB!.assignedUserId] ?? UserEntity(); response = userA.fullName .toLowerCase() .compareTo(userB.fullName.toLowerCase()); break; case TaskFields.status: - final taskAStatus = taskA.isRunning + final taskAStatus = taskA!.isRunning ? -1 : taskA.isInvoiced ? 999999 : (taskStatusMap[taskA.statusId]?.statusOrder ?? 0); - final taskBStatus = taskB.isRunning + final taskBStatus = taskB!.isRunning ? -1 : taskB.isInvoiced ? 999999 @@ -819,14 +816,14 @@ abstract class TaskEntity extends Object } if (response == 0) { - response = task.number.toLowerCase().compareTo(number.toLowerCase()); + response = task!.number.toLowerCase().compareTo(number.toLowerCase()); } return response; } @override - bool matchesFilter(String filter) { + bool matchesFilter(String? filter) { return matchesStrings( haystacks: [ number, @@ -862,7 +859,7 @@ abstract class TaskEntity extends Object } @override - String matchesFilterValue(String filter) { + String? matchesFilterValue(String? filter) { return matchesStringsValue( haystacks: [ number, diff --git a/lib/data/models/task_model.g.dart b/lib/data/models/task_model.g.dart index a31d41757..35c8e30f7 100644 --- a/lib/data/models/task_model.g.dart +++ b/lib/data/models/task_model.g.dart @@ -21,9 +21,9 @@ class _$TaskListResponseSerializer final String wireName = 'TaskListResponse'; @override - Iterable serialize(Serializers serializers, TaskListResponse object, + Iterable serialize(Serializers serializers, TaskListResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: @@ -35,21 +35,21 @@ class _$TaskListResponseSerializer @override TaskListResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TaskListResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(TaskEntity)])) - as BuiltList); + BuiltList, const [const FullType(TaskEntity)]))! + as BuiltList); break; } } @@ -66,9 +66,9 @@ class _$TaskItemResponseSerializer final String wireName = 'TaskItemResponse'; @override - Iterable serialize(Serializers serializers, TaskItemResponse object, + Iterable serialize(Serializers serializers, TaskItemResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType(TaskEntity)), @@ -79,19 +79,19 @@ class _$TaskItemResponseSerializer @override TaskItemResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TaskItemResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, - specifiedType: const FullType(TaskEntity)) as TaskEntity); + specifiedType: const FullType(TaskEntity))! as TaskEntity); break; } } @@ -107,9 +107,9 @@ class _$TaskTimeSerializer implements StructuredSerializer { final String wireName = 'TaskTime'; @override - Iterable serialize(Serializers serializers, TaskTime object, + Iterable serialize(Serializers serializers, TaskTime object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'description', serializers.serialize(object.description, specifiedType: const FullType(String)), @@ -117,7 +117,7 @@ class _$TaskTimeSerializer implements StructuredSerializer { serializers.serialize(object.isBillable, specifiedType: const FullType(bool)), ]; - Object value; + Object? value; value = object.startDate; if (value != null) { result @@ -136,31 +136,31 @@ class _$TaskTimeSerializer implements StructuredSerializer { } @override - TaskTime deserialize(Serializers serializers, Iterable serialized, + TaskTime deserialize(Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TaskTimeBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'startDate': result.startDate = serializers.deserialize(value, - specifiedType: const FullType(DateTime)) as DateTime; + specifiedType: const FullType(DateTime)) as DateTime?; break; case 'endDate': result.endDate = serializers.deserialize(value, - specifiedType: const FullType(DateTime)) as DateTime; + specifiedType: const FullType(DateTime)) as DateTime?; break; case 'description': result.description = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'isBillable': result.isBillable = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; } } @@ -176,9 +176,9 @@ class _$TaskEntitySerializer implements StructuredSerializer { final String wireName = 'TaskEntity'; @override - Iterable serialize(Serializers serializers, TaskEntity object, + Iterable serialize(Serializers serializers, TaskEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'description', serializers.serialize(object.description, specifiedType: const FullType(String)), @@ -230,7 +230,7 @@ class _$TaskEntitySerializer implements StructuredSerializer { 'id', serializers.serialize(object.id, specifiedType: const FullType(String)), ]; - Object value; + Object? value; value = object.statusOrder; if (value != null) { result @@ -269,105 +269,105 @@ class _$TaskEntitySerializer implements StructuredSerializer { } @override - TaskEntity deserialize(Serializers serializers, Iterable serialized, + TaskEntity deserialize(Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TaskEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'description': result.description = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'number': result.number = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'invoice_id': result.invoiceId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'client_id': result.clientId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'rate': result.rate = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'project_id': result.projectId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'time_log': result.timeLog = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value1': result.customValue1 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value2': result.customValue2 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value3': result.customValue3 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value4': result.customValue4 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'status_id': result.statusId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'status_order': result.statusOrder = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int)) as int?; break; case 'documents': result.documents.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(DocumentEntity)])) - as BuiltList); + BuiltList, const [const FullType(DocumentEntity)]))! + as BuiltList); break; case 'isChanged': result.isChanged = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'created_at': result.createdAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'updated_at': result.updatedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'archived_at': result.archivedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'is_deleted': result.isDeleted = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'user_id': result.createdUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'assigned_user_id': result.assignedUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -381,10 +381,10 @@ class _$TaskListResponse extends TaskListResponse { final BuiltList data; factory _$TaskListResponse( - [void Function(TaskListResponseBuilder) updates]) => + [void Function(TaskListResponseBuilder)? updates]) => (new TaskListResponseBuilder()..update(updates))._build(); - _$TaskListResponse._({this.data}) : super._() { + _$TaskListResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull(data, r'TaskListResponse', 'data'); } @@ -402,10 +402,10 @@ class _$TaskListResponse extends TaskListResponse { return other is TaskListResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -421,12 +421,12 @@ class _$TaskListResponse extends TaskListResponse { class TaskListResponseBuilder implements Builder { - _$TaskListResponse _$v; + _$TaskListResponse? _$v; - ListBuilder _data; + ListBuilder? _data; ListBuilder get data => _$this._data ??= new ListBuilder(); - set data(ListBuilder data) => _$this._data = data; + set data(ListBuilder? data) => _$this._data = data; TaskListResponseBuilder(); @@ -446,7 +446,7 @@ class TaskListResponseBuilder } @override - void update(void Function(TaskListResponseBuilder) updates) { + void update(void Function(TaskListResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -458,7 +458,7 @@ class TaskListResponseBuilder try { _$result = _$v ?? new _$TaskListResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -478,10 +478,10 @@ class _$TaskItemResponse extends TaskItemResponse { final TaskEntity data; factory _$TaskItemResponse( - [void Function(TaskItemResponseBuilder) updates]) => + [void Function(TaskItemResponseBuilder)? updates]) => (new TaskItemResponseBuilder()..update(updates))._build(); - _$TaskItemResponse._({this.data}) : super._() { + _$TaskItemResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull(data, r'TaskItemResponse', 'data'); } @@ -499,10 +499,10 @@ class _$TaskItemResponse extends TaskItemResponse { return other is TaskItemResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -518,11 +518,11 @@ class _$TaskItemResponse extends TaskItemResponse { class TaskItemResponseBuilder implements Builder { - _$TaskItemResponse _$v; + _$TaskItemResponse? _$v; - TaskEntityBuilder _data; + TaskEntityBuilder? _data; TaskEntityBuilder get data => _$this._data ??= new TaskEntityBuilder(); - set data(TaskEntityBuilder data) => _$this._data = data; + set data(TaskEntityBuilder? data) => _$this._data = data; TaskItemResponseBuilder(); @@ -542,7 +542,7 @@ class TaskItemResponseBuilder } @override - void update(void Function(TaskItemResponseBuilder) updates) { + void update(void Function(TaskItemResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -554,7 +554,7 @@ class TaskItemResponseBuilder try { _$result = _$v ?? new _$TaskItemResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -571,19 +571,22 @@ class TaskItemResponseBuilder class _$TaskTime extends TaskTime { @override - final DateTime startDate; + final DateTime? startDate; @override - final DateTime endDate; + final DateTime? endDate; @override final String description; @override final bool isBillable; - factory _$TaskTime([void Function(TaskTimeBuilder) updates]) => + factory _$TaskTime([void Function(TaskTimeBuilder)? updates]) => (new TaskTimeBuilder()..update(updates))._build(); _$TaskTime._( - {this.startDate, this.endDate, this.description, this.isBillable}) + {this.startDate, + this.endDate, + required this.description, + required this.isBillable}) : super._() { BuiltValueNullFieldError.checkNotNull( description, r'TaskTime', 'description'); @@ -608,10 +611,10 @@ class _$TaskTime extends TaskTime { isBillable == other.isBillable; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, startDate.hashCode); _$hash = $jc(_$hash, endDate.hashCode); @@ -633,23 +636,23 @@ class _$TaskTime extends TaskTime { } class TaskTimeBuilder implements Builder { - _$TaskTime _$v; + _$TaskTime? _$v; - DateTime _startDate; - DateTime get startDate => _$this._startDate; - set startDate(DateTime startDate) => _$this._startDate = startDate; + DateTime? _startDate; + DateTime? get startDate => _$this._startDate; + set startDate(DateTime? startDate) => _$this._startDate = startDate; - DateTime _endDate; - DateTime get endDate => _$this._endDate; - set endDate(DateTime endDate) => _$this._endDate = endDate; + DateTime? _endDate; + DateTime? get endDate => _$this._endDate; + set endDate(DateTime? endDate) => _$this._endDate = endDate; - String _description; - String get description => _$this._description; - set description(String description) => _$this._description = description; + String? _description; + String? get description => _$this._description; + set description(String? description) => _$this._description = description; - bool _isBillable; - bool get isBillable => _$this._isBillable; - set isBillable(bool isBillable) => _$this._isBillable = isBillable; + bool? _isBillable; + bool? get isBillable => _$this._isBillable; + set isBillable(bool? isBillable) => _$this._isBillable = isBillable; TaskTimeBuilder(); @@ -672,7 +675,7 @@ class TaskTimeBuilder implements Builder { } @override - void update(void Function(TaskTimeBuilder) updates) { + void update(void Function(TaskTimeBuilder)? updates) { if (updates != null) updates(this); } @@ -719,11 +722,11 @@ class _$TaskEntity extends TaskEntity { @override final String statusId; @override - final int statusOrder; + final int? statusOrder; @override final BuiltList documents; @override - final bool isChanged; + final bool? isChanged; @override final int createdAt; @override @@ -731,40 +734,40 @@ class _$TaskEntity extends TaskEntity { @override final int archivedAt; @override - final bool isDeleted; + final bool? isDeleted; @override - final String createdUserId; + final String? createdUserId; @override - final String assignedUserId; + final String? assignedUserId; @override final String id; - factory _$TaskEntity([void Function(TaskEntityBuilder) updates]) => + factory _$TaskEntity([void Function(TaskEntityBuilder)? updates]) => (new TaskEntityBuilder()..update(updates))._build(); _$TaskEntity._( - {this.description, - this.number, - this.invoiceId, - this.clientId, - this.rate, - this.projectId, - this.timeLog, - this.customValue1, - this.customValue2, - this.customValue3, - this.customValue4, - this.statusId, + {required this.description, + required this.number, + required this.invoiceId, + required this.clientId, + required this.rate, + required this.projectId, + required this.timeLog, + required this.customValue1, + required this.customValue2, + required this.customValue3, + required this.customValue4, + required this.statusId, this.statusOrder, - this.documents, + required this.documents, this.isChanged, - this.createdAt, - this.updatedAt, - this.archivedAt, + required this.createdAt, + required this.updatedAt, + required this.archivedAt, this.isDeleted, this.createdUserId, this.assignedUserId, - this.id}) + required this.id}) : super._() { BuiltValueNullFieldError.checkNotNull( description, r'TaskEntity', 'description'); @@ -831,10 +834,10 @@ class _$TaskEntity extends TaskEntity { id == other.id; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, description.hashCode); _$hash = $jc(_$hash, number.hashCode); @@ -892,99 +895,99 @@ class _$TaskEntity extends TaskEntity { } class TaskEntityBuilder implements Builder { - _$TaskEntity _$v; + _$TaskEntity? _$v; - String _description; - String get description => _$this._description; - set description(String description) => _$this._description = description; + String? _description; + String? get description => _$this._description; + set description(String? description) => _$this._description = description; - String _number; - String get number => _$this._number; - set number(String number) => _$this._number = number; + String? _number; + String? get number => _$this._number; + set number(String? number) => _$this._number = number; - String _invoiceId; - String get invoiceId => _$this._invoiceId; - set invoiceId(String invoiceId) => _$this._invoiceId = invoiceId; + String? _invoiceId; + String? get invoiceId => _$this._invoiceId; + set invoiceId(String? invoiceId) => _$this._invoiceId = invoiceId; - String _clientId; - String get clientId => _$this._clientId; - set clientId(String clientId) => _$this._clientId = clientId; + String? _clientId; + String? get clientId => _$this._clientId; + set clientId(String? clientId) => _$this._clientId = clientId; - double _rate; - double get rate => _$this._rate; - set rate(double rate) => _$this._rate = rate; + double? _rate; + double? get rate => _$this._rate; + set rate(double? rate) => _$this._rate = rate; - String _projectId; - String get projectId => _$this._projectId; - set projectId(String projectId) => _$this._projectId = projectId; + String? _projectId; + String? get projectId => _$this._projectId; + set projectId(String? projectId) => _$this._projectId = projectId; - String _timeLog; - String get timeLog => _$this._timeLog; - set timeLog(String timeLog) => _$this._timeLog = timeLog; + String? _timeLog; + String? get timeLog => _$this._timeLog; + set timeLog(String? timeLog) => _$this._timeLog = timeLog; - String _customValue1; - String get customValue1 => _$this._customValue1; - set customValue1(String customValue1) => _$this._customValue1 = customValue1; + String? _customValue1; + String? get customValue1 => _$this._customValue1; + set customValue1(String? customValue1) => _$this._customValue1 = customValue1; - String _customValue2; - String get customValue2 => _$this._customValue2; - set customValue2(String customValue2) => _$this._customValue2 = customValue2; + String? _customValue2; + String? get customValue2 => _$this._customValue2; + set customValue2(String? customValue2) => _$this._customValue2 = customValue2; - String _customValue3; - String get customValue3 => _$this._customValue3; - set customValue3(String customValue3) => _$this._customValue3 = customValue3; + String? _customValue3; + String? get customValue3 => _$this._customValue3; + set customValue3(String? customValue3) => _$this._customValue3 = customValue3; - String _customValue4; - String get customValue4 => _$this._customValue4; - set customValue4(String customValue4) => _$this._customValue4 = customValue4; + String? _customValue4; + String? get customValue4 => _$this._customValue4; + set customValue4(String? customValue4) => _$this._customValue4 = customValue4; - String _statusId; - String get statusId => _$this._statusId; - set statusId(String statusId) => _$this._statusId = statusId; + String? _statusId; + String? get statusId => _$this._statusId; + set statusId(String? statusId) => _$this._statusId = statusId; - int _statusOrder; - int get statusOrder => _$this._statusOrder; - set statusOrder(int statusOrder) => _$this._statusOrder = statusOrder; + int? _statusOrder; + int? get statusOrder => _$this._statusOrder; + set statusOrder(int? statusOrder) => _$this._statusOrder = statusOrder; - ListBuilder _documents; + ListBuilder? _documents; ListBuilder get documents => _$this._documents ??= new ListBuilder(); - set documents(ListBuilder documents) => + set documents(ListBuilder? documents) => _$this._documents = documents; - bool _isChanged; - bool get isChanged => _$this._isChanged; - set isChanged(bool isChanged) => _$this._isChanged = isChanged; + bool? _isChanged; + bool? get isChanged => _$this._isChanged; + set isChanged(bool? isChanged) => _$this._isChanged = isChanged; - int _createdAt; - int get createdAt => _$this._createdAt; - set createdAt(int createdAt) => _$this._createdAt = createdAt; + int? _createdAt; + int? get createdAt => _$this._createdAt; + set createdAt(int? createdAt) => _$this._createdAt = createdAt; - int _updatedAt; - int get updatedAt => _$this._updatedAt; - set updatedAt(int updatedAt) => _$this._updatedAt = updatedAt; + int? _updatedAt; + int? get updatedAt => _$this._updatedAt; + set updatedAt(int? updatedAt) => _$this._updatedAt = updatedAt; - int _archivedAt; - int get archivedAt => _$this._archivedAt; - set archivedAt(int archivedAt) => _$this._archivedAt = archivedAt; + int? _archivedAt; + int? get archivedAt => _$this._archivedAt; + set archivedAt(int? archivedAt) => _$this._archivedAt = archivedAt; - bool _isDeleted; - bool get isDeleted => _$this._isDeleted; - set isDeleted(bool isDeleted) => _$this._isDeleted = isDeleted; + bool? _isDeleted; + bool? get isDeleted => _$this._isDeleted; + set isDeleted(bool? isDeleted) => _$this._isDeleted = isDeleted; - String _createdUserId; - String get createdUserId => _$this._createdUserId; - set createdUserId(String createdUserId) => + String? _createdUserId; + String? get createdUserId => _$this._createdUserId; + set createdUserId(String? createdUserId) => _$this._createdUserId = createdUserId; - String _assignedUserId; - String get assignedUserId => _$this._assignedUserId; - set assignedUserId(String assignedUserId) => + String? _assignedUserId; + String? get assignedUserId => _$this._assignedUserId; + set assignedUserId(String? assignedUserId) => _$this._assignedUserId = assignedUserId; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; TaskEntityBuilder(); @@ -1025,7 +1028,7 @@ class TaskEntityBuilder implements Builder { } @override - void update(void Function(TaskEntityBuilder) updates) { + void update(void Function(TaskEntityBuilder)? updates) { if (updates != null) updates(this); } @@ -1069,7 +1072,7 @@ class TaskEntityBuilder implements Builder { assignedUserId: assignedUserId, id: BuiltValueNullFieldError.checkNotNull(id, r'TaskEntity', 'id')); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'documents'; documents.build(); diff --git a/lib/data/models/task_status_model.dart b/lib/data/models/task_status_model.dart index f6655aa01..59a592864 100644 --- a/lib/data/models/task_status_model.dart +++ b/lib/data/models/task_status_model.dart @@ -58,7 +58,7 @@ class TaskStatusFields { abstract class TaskStatusEntity extends Object with BaseEntity, SelectableEntity, EntityStatus implements Built { - factory TaskStatusEntity({String id, AppState state}) { + factory TaskStatusEntity({String? id, AppState? state}) { return _$TaskStatusEntity._( id: id ?? BaseEntity.nextId, name: '', @@ -89,23 +89,22 @@ abstract class TaskStatusEntity extends Object String get color; - @nullable @BuiltValueField(wireName: 'status_order') - int get statusOrder; + int? get statusOrder; @override - List getActions( - {UserCompanyEntity userCompany, - ClientEntity client, + List getActions( + {UserCompanyEntity? userCompany, + ClientEntity? client, bool includeEdit = false, bool includePreview = false, bool multiselect = false}) { - final actions = []; + final actions = []; - if (!isDeleted && + if (!isDeleted! && !multiselect && includeEdit && - userCompany.canEditEntity(this)) { + userCompany!.canEditEntity(this)) { actions.add(EntityAction.edit); } @@ -117,24 +116,24 @@ abstract class TaskStatusEntity extends Object } int compareTo({ - TaskStatusEntity taskStatus, - String sortField, - bool sortAscending, + TaskStatusEntity? taskStatus, + String? sortField, + required bool sortAscending, }) { int response = 0; - final TaskStatusEntity taskStatusA = sortAscending ? this : taskStatus; - final TaskStatusEntity taskStatusB = sortAscending ? taskStatus : this; + final TaskStatusEntity? taskStatusA = sortAscending ? this : taskStatus; + final TaskStatusEntity? taskStatusB = sortAscending ? taskStatus : this; switch (sortField) { case TaskStatusFields.name: - response = taskStatusA.name.compareTo(taskStatusB.name); + response = taskStatusA!.name.compareTo(taskStatusB!.name); break; case TaskStatusFields.order: - response = (taskStatusA.statusOrder ?? 99999) - .compareTo(taskStatusB.statusOrder ?? 99999); + response = (taskStatusA!.statusOrder ?? 99999) + .compareTo(taskStatusB!.statusOrder ?? 99999); break; case TaskStatusFields.updatedAt: - response = taskStatusA.updatedAt.compareTo(taskStatusB.updatedAt); + response = taskStatusA!.updatedAt.compareTo(taskStatusB!.updatedAt); break; default: print('## ERROR: sort by taskStatus.$sortField is not implemented'); @@ -145,7 +144,7 @@ abstract class TaskStatusEntity extends Object } @override - bool matchesFilter(String filter) { + bool matchesFilter(String? filter) { return matchesStrings( haystacks: [ name, @@ -155,7 +154,7 @@ abstract class TaskStatusEntity extends Object } @override - String matchesFilterValue(String filter) { + String? matchesFilterValue(String? filter) { return matchesStringsValue( haystacks: [ name, diff --git a/lib/data/models/task_status_model.g.dart b/lib/data/models/task_status_model.g.dart index 2aaabc30a..131930198 100644 --- a/lib/data/models/task_status_model.g.dart +++ b/lib/data/models/task_status_model.g.dart @@ -24,10 +24,10 @@ class _$TaskStatusListResponseSerializer final String wireName = 'TaskStatusListResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, TaskStatusListResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType( @@ -39,21 +39,21 @@ class _$TaskStatusListResponseSerializer @override TaskStatusListResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TaskStatusListResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(TaskStatusEntity)])) - as BuiltList); + BuiltList, const [const FullType(TaskStatusEntity)]))! + as BuiltList); break; } } @@ -73,10 +73,10 @@ class _$TaskStatusItemResponseSerializer final String wireName = 'TaskStatusItemResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, TaskStatusItemResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType(TaskStatusEntity)), @@ -87,19 +87,19 @@ class _$TaskStatusItemResponseSerializer @override TaskStatusItemResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TaskStatusItemResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, - specifiedType: const FullType(TaskStatusEntity)) + specifiedType: const FullType(TaskStatusEntity))! as TaskStatusEntity); break; } @@ -117,9 +117,9 @@ class _$TaskStatusEntitySerializer final String wireName = 'TaskStatusEntity'; @override - Iterable serialize(Serializers serializers, TaskStatusEntity object, + Iterable serialize(Serializers serializers, TaskStatusEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'name', serializers.serialize(object.name, specifiedType: const FullType(String)), 'color', @@ -137,7 +137,7 @@ class _$TaskStatusEntitySerializer 'id', serializers.serialize(object.id, specifiedType: const FullType(String)), ]; - Object value; + Object? value; value = object.statusOrder; if (value != null) { result @@ -177,59 +177,59 @@ class _$TaskStatusEntitySerializer @override TaskStatusEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TaskStatusEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'name': result.name = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'color': result.color = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'status_order': result.statusOrder = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int)) as int?; break; case 'isChanged': result.isChanged = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'created_at': result.createdAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'updated_at': result.updatedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'archived_at': result.archivedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'is_deleted': result.isDeleted = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'user_id': result.createdUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'assigned_user_id': result.assignedUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -243,10 +243,10 @@ class _$TaskStatusListResponse extends TaskStatusListResponse { final BuiltList data; factory _$TaskStatusListResponse( - [void Function(TaskStatusListResponseBuilder) updates]) => + [void Function(TaskStatusListResponseBuilder)? updates]) => (new TaskStatusListResponseBuilder()..update(updates))._build(); - _$TaskStatusListResponse._({this.data}) : super._() { + _$TaskStatusListResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull( data, r'TaskStatusListResponse', 'data'); } @@ -266,10 +266,10 @@ class _$TaskStatusListResponse extends TaskStatusListResponse { return other is TaskStatusListResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -286,12 +286,12 @@ class _$TaskStatusListResponse extends TaskStatusListResponse { class TaskStatusListResponseBuilder implements Builder { - _$TaskStatusListResponse _$v; + _$TaskStatusListResponse? _$v; - ListBuilder _data; + ListBuilder? _data; ListBuilder get data => _$this._data ??= new ListBuilder(); - set data(ListBuilder data) => _$this._data = data; + set data(ListBuilder? data) => _$this._data = data; TaskStatusListResponseBuilder(); @@ -311,7 +311,7 @@ class TaskStatusListResponseBuilder } @override - void update(void Function(TaskStatusListResponseBuilder) updates) { + void update(void Function(TaskStatusListResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -323,7 +323,7 @@ class TaskStatusListResponseBuilder try { _$result = _$v ?? new _$TaskStatusListResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -343,10 +343,10 @@ class _$TaskStatusItemResponse extends TaskStatusItemResponse { final TaskStatusEntity data; factory _$TaskStatusItemResponse( - [void Function(TaskStatusItemResponseBuilder) updates]) => + [void Function(TaskStatusItemResponseBuilder)? updates]) => (new TaskStatusItemResponseBuilder()..update(updates))._build(); - _$TaskStatusItemResponse._({this.data}) : super._() { + _$TaskStatusItemResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull( data, r'TaskStatusItemResponse', 'data'); } @@ -366,10 +366,10 @@ class _$TaskStatusItemResponse extends TaskStatusItemResponse { return other is TaskStatusItemResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -386,12 +386,12 @@ class _$TaskStatusItemResponse extends TaskStatusItemResponse { class TaskStatusItemResponseBuilder implements Builder { - _$TaskStatusItemResponse _$v; + _$TaskStatusItemResponse? _$v; - TaskStatusEntityBuilder _data; + TaskStatusEntityBuilder? _data; TaskStatusEntityBuilder get data => _$this._data ??= new TaskStatusEntityBuilder(); - set data(TaskStatusEntityBuilder data) => _$this._data = data; + set data(TaskStatusEntityBuilder? data) => _$this._data = data; TaskStatusItemResponseBuilder(); @@ -411,7 +411,7 @@ class TaskStatusItemResponseBuilder } @override - void update(void Function(TaskStatusItemResponseBuilder) updates) { + void update(void Function(TaskStatusItemResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -423,7 +423,7 @@ class TaskStatusItemResponseBuilder try { _$result = _$v ?? new _$TaskStatusItemResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -444,9 +444,9 @@ class _$TaskStatusEntity extends TaskStatusEntity { @override final String color; @override - final int statusOrder; + final int? statusOrder; @override - final bool isChanged; + final bool? isChanged; @override final int createdAt; @override @@ -454,30 +454,30 @@ class _$TaskStatusEntity extends TaskStatusEntity { @override final int archivedAt; @override - final bool isDeleted; + final bool? isDeleted; @override - final String createdUserId; + final String? createdUserId; @override - final String assignedUserId; + final String? assignedUserId; @override final String id; factory _$TaskStatusEntity( - [void Function(TaskStatusEntityBuilder) updates]) => + [void Function(TaskStatusEntityBuilder)? updates]) => (new TaskStatusEntityBuilder()..update(updates))._build(); _$TaskStatusEntity._( - {this.name, - this.color, + {required this.name, + required this.color, this.statusOrder, this.isChanged, - this.createdAt, - this.updatedAt, - this.archivedAt, + required this.createdAt, + required this.updatedAt, + required this.archivedAt, this.isDeleted, this.createdUserId, this.assignedUserId, - this.id}) + required this.id}) : super._() { BuiltValueNullFieldError.checkNotNull(name, r'TaskStatusEntity', 'name'); BuiltValueNullFieldError.checkNotNull(color, r'TaskStatusEntity', 'color'); @@ -515,10 +515,10 @@ class _$TaskStatusEntity extends TaskStatusEntity { id == other.id; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, name.hashCode); _$hash = $jc(_$hash, color.hashCode); @@ -555,53 +555,53 @@ class _$TaskStatusEntity extends TaskStatusEntity { class TaskStatusEntityBuilder implements Builder { - _$TaskStatusEntity _$v; + _$TaskStatusEntity? _$v; - String _name; - String get name => _$this._name; - set name(String name) => _$this._name = name; + String? _name; + String? get name => _$this._name; + set name(String? name) => _$this._name = name; - String _color; - String get color => _$this._color; - set color(String color) => _$this._color = color; + String? _color; + String? get color => _$this._color; + set color(String? color) => _$this._color = color; - int _statusOrder; - int get statusOrder => _$this._statusOrder; - set statusOrder(int statusOrder) => _$this._statusOrder = statusOrder; + int? _statusOrder; + int? get statusOrder => _$this._statusOrder; + set statusOrder(int? statusOrder) => _$this._statusOrder = statusOrder; - bool _isChanged; - bool get isChanged => _$this._isChanged; - set isChanged(bool isChanged) => _$this._isChanged = isChanged; + bool? _isChanged; + bool? get isChanged => _$this._isChanged; + set isChanged(bool? isChanged) => _$this._isChanged = isChanged; - int _createdAt; - int get createdAt => _$this._createdAt; - set createdAt(int createdAt) => _$this._createdAt = createdAt; + int? _createdAt; + int? get createdAt => _$this._createdAt; + set createdAt(int? createdAt) => _$this._createdAt = createdAt; - int _updatedAt; - int get updatedAt => _$this._updatedAt; - set updatedAt(int updatedAt) => _$this._updatedAt = updatedAt; + int? _updatedAt; + int? get updatedAt => _$this._updatedAt; + set updatedAt(int? updatedAt) => _$this._updatedAt = updatedAt; - int _archivedAt; - int get archivedAt => _$this._archivedAt; - set archivedAt(int archivedAt) => _$this._archivedAt = archivedAt; + int? _archivedAt; + int? get archivedAt => _$this._archivedAt; + set archivedAt(int? archivedAt) => _$this._archivedAt = archivedAt; - bool _isDeleted; - bool get isDeleted => _$this._isDeleted; - set isDeleted(bool isDeleted) => _$this._isDeleted = isDeleted; + bool? _isDeleted; + bool? get isDeleted => _$this._isDeleted; + set isDeleted(bool? isDeleted) => _$this._isDeleted = isDeleted; - String _createdUserId; - String get createdUserId => _$this._createdUserId; - set createdUserId(String createdUserId) => + String? _createdUserId; + String? get createdUserId => _$this._createdUserId; + set createdUserId(String? createdUserId) => _$this._createdUserId = createdUserId; - String _assignedUserId; - String get assignedUserId => _$this._assignedUserId; - set assignedUserId(String assignedUserId) => + String? _assignedUserId; + String? get assignedUserId => _$this._assignedUserId; + set assignedUserId(String? assignedUserId) => _$this._assignedUserId = assignedUserId; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; TaskStatusEntityBuilder() { TaskStatusEntity._initializeBuilder(this); @@ -633,7 +633,7 @@ class TaskStatusEntityBuilder } @override - void update(void Function(TaskStatusEntityBuilder) updates) { + void update(void Function(TaskStatusEntityBuilder)? updates) { if (updates != null) updates(this); } diff --git a/lib/data/models/tax_model.g.dart b/lib/data/models/tax_model.g.dart index c174bab89..73b64dda9 100644 --- a/lib/data/models/tax_model.g.dart +++ b/lib/data/models/tax_model.g.dart @@ -22,9 +22,9 @@ class _$TaxDataEntitySerializer implements StructuredSerializer { final String wireName = 'TaxDataEntity'; @override - Iterable serialize(Serializers serializers, TaxDataEntity object, + Iterable serialize(Serializers serializers, TaxDataEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'geoPostalCode', serializers.serialize(object.geoPostalCode, specifiedType: const FullType(String)), @@ -65,59 +65,59 @@ class _$TaxDataEntitySerializer implements StructuredSerializer { @override TaxDataEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TaxDataEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current as String?; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'geoPostalCode': result.geoPostalCode = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'geoCity': result.geoCity = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'geoCounty': result.geoCounty = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'geoState': result.geoState = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'taxSales': result.taxSales = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double)) as double?; break; case 'stateSalesTax': result.stateSalesTax = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double)) as double?; break; case 'citySalesTax': result.citySalesTax = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double)) as double?; break; case 'cityTaxCode': result.cityTaxCode = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'countySalesTax': result.countySalesTax = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double)) as double?; break; case 'countyTaxCode': result.countyTaxCode = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'districtSalesTax': result.districtSalesTax = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double)) as double?; break; } } @@ -134,9 +134,9 @@ class _$TaxConfigEntitySerializer final String wireName = 'TaxConfigEntity'; @override - Iterable serialize(Serializers serializers, TaxConfigEntity object, + Iterable serialize(Serializers serializers, TaxConfigEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'version', serializers.serialize(object.version, specifiedType: const FullType(String)), @@ -156,30 +156,30 @@ class _$TaxConfigEntitySerializer @override TaxConfigEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TaxConfigEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current as String?; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'version': result.version = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'seller_subregion': result.sellerSubregion = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'regions': result.regions.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ const FullType(String), const FullType(TaxConfigRegionEntity) - ]))); + ]))!); break; } } @@ -199,10 +199,10 @@ class _$TaxConfigRegionEntitySerializer final String wireName = 'TaxConfigRegionEntity'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, TaxConfigRegionEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'has_sales_above_threshold', serializers.serialize(object.hasSalesAboveThreshold, specifiedType: const FullType(bool)), @@ -224,34 +224,34 @@ class _$TaxConfigRegionEntitySerializer @override TaxConfigRegionEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TaxConfigRegionEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current as String?; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'has_sales_above_threshold': result.hasSalesAboveThreshold = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'tax_all_subregions': result.taxAll = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'tax_threshold': result.taxThreshold = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double)) as double?; break; case 'subregions': result.subregions.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ const FullType(String), const FullType(TaxConfigSubregionEntity) - ]))); + ]))!); break; } } @@ -271,10 +271,10 @@ class _$TaxConfigSubregionEntitySerializer final String wireName = 'TaxConfigSubregionEntity'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, TaxConfigSubregionEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'apply_tax', serializers.serialize(object.applyTax, specifiedType: const FullType(bool)), @@ -294,31 +294,31 @@ class _$TaxConfigSubregionEntitySerializer @override TaxConfigSubregionEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TaxConfigSubregionEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current as String?; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'apply_tax': result.applyTax = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'tax_rate': result.taxRate = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double)) as double?; break; case 'tax_name': result.taxName = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'reduced_tax_rate': result.reducedTaxRate = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double)) as double?; break; } } @@ -351,21 +351,21 @@ class _$TaxDataEntity extends TaxDataEntity { @override final double districtSalesTax; - factory _$TaxDataEntity([void Function(TaxDataEntityBuilder) updates]) => + factory _$TaxDataEntity([void Function(TaxDataEntityBuilder)? updates]) => (new TaxDataEntityBuilder()..update(updates))._build(); _$TaxDataEntity._( - {this.geoPostalCode, - this.geoCity, - this.geoCounty, - this.geoState, - this.taxSales, - this.stateSalesTax, - this.citySalesTax, - this.cityTaxCode, - this.countySalesTax, - this.countyTaxCode, - this.districtSalesTax}) + {required this.geoPostalCode, + required this.geoCity, + required this.geoCounty, + required this.geoState, + required this.taxSales, + required this.stateSalesTax, + required this.citySalesTax, + required this.cityTaxCode, + required this.countySalesTax, + required this.countyTaxCode, + required this.districtSalesTax}) : super._() { BuiltValueNullFieldError.checkNotNull( geoPostalCode, r'TaxDataEntity', 'geoPostalCode'); @@ -452,55 +452,55 @@ class _$TaxDataEntity extends TaxDataEntity { class TaxDataEntityBuilder implements Builder { - _$TaxDataEntity _$v; + _$TaxDataEntity? _$v; - String _geoPostalCode; - String get geoPostalCode => _$this._geoPostalCode; - set geoPostalCode(String geoPostalCode) => + String? _geoPostalCode; + String? get geoPostalCode => _$this._geoPostalCode; + set geoPostalCode(String? geoPostalCode) => _$this._geoPostalCode = geoPostalCode; - String _geoCity; - String get geoCity => _$this._geoCity; - set geoCity(String geoCity) => _$this._geoCity = geoCity; + String? _geoCity; + String? get geoCity => _$this._geoCity; + set geoCity(String? geoCity) => _$this._geoCity = geoCity; - String _geoCounty; - String get geoCounty => _$this._geoCounty; - set geoCounty(String geoCounty) => _$this._geoCounty = geoCounty; + String? _geoCounty; + String? get geoCounty => _$this._geoCounty; + set geoCounty(String? geoCounty) => _$this._geoCounty = geoCounty; - String _geoState; - String get geoState => _$this._geoState; - set geoState(String geoState) => _$this._geoState = geoState; + String? _geoState; + String? get geoState => _$this._geoState; + set geoState(String? geoState) => _$this._geoState = geoState; - double _taxSales; - double get taxSales => _$this._taxSales; - set taxSales(double taxSales) => _$this._taxSales = taxSales; + double? _taxSales; + double? get taxSales => _$this._taxSales; + set taxSales(double? taxSales) => _$this._taxSales = taxSales; - double _stateSalesTax; - double get stateSalesTax => _$this._stateSalesTax; - set stateSalesTax(double stateSalesTax) => + double? _stateSalesTax; + double? get stateSalesTax => _$this._stateSalesTax; + set stateSalesTax(double? stateSalesTax) => _$this._stateSalesTax = stateSalesTax; - double _citySalesTax; - double get citySalesTax => _$this._citySalesTax; - set citySalesTax(double citySalesTax) => _$this._citySalesTax = citySalesTax; + double? _citySalesTax; + double? get citySalesTax => _$this._citySalesTax; + set citySalesTax(double? citySalesTax) => _$this._citySalesTax = citySalesTax; - String _cityTaxCode; - String get cityTaxCode => _$this._cityTaxCode; - set cityTaxCode(String cityTaxCode) => _$this._cityTaxCode = cityTaxCode; + String? _cityTaxCode; + String? get cityTaxCode => _$this._cityTaxCode; + set cityTaxCode(String? cityTaxCode) => _$this._cityTaxCode = cityTaxCode; - double _countySalesTax; - double get countySalesTax => _$this._countySalesTax; - set countySalesTax(double countySalesTax) => + double? _countySalesTax; + double? get countySalesTax => _$this._countySalesTax; + set countySalesTax(double? countySalesTax) => _$this._countySalesTax = countySalesTax; - String _countyTaxCode; - String get countyTaxCode => _$this._countyTaxCode; - set countyTaxCode(String countyTaxCode) => + String? _countyTaxCode; + String? get countyTaxCode => _$this._countyTaxCode; + set countyTaxCode(String? countyTaxCode) => _$this._countyTaxCode = countyTaxCode; - double _districtSalesTax; - double get districtSalesTax => _$this._districtSalesTax; - set districtSalesTax(double districtSalesTax) => + double? _districtSalesTax; + double? get districtSalesTax => _$this._districtSalesTax; + set districtSalesTax(double? districtSalesTax) => _$this._districtSalesTax = districtSalesTax; TaxDataEntityBuilder() { @@ -533,7 +533,7 @@ class TaxDataEntityBuilder } @override - void update(void Function(TaxDataEntityBuilder) updates) { + void update(void Function(TaxDataEntityBuilder)? updates) { if (updates != null) updates(this); } @@ -576,10 +576,10 @@ class _$TaxConfigEntity extends TaxConfigEntity { @override final BuiltMap regions; - factory _$TaxConfigEntity([void Function(TaxConfigEntityBuilder) updates]) => + factory _$TaxConfigEntity([void Function(TaxConfigEntityBuilder)? updates]) => (new TaxConfigEntityBuilder()..update(updates))._build(); - _$TaxConfigEntity._({this.version, this.sellerSubregion, this.regions}) + _$TaxConfigEntity._({required this.version, required this.sellerSubregion, required this.regions}) : super._() { BuiltValueNullFieldError.checkNotNull( version, r'TaxConfigEntity', 'version'); @@ -606,10 +606,10 @@ class _$TaxConfigEntity extends TaxConfigEntity { regions == other.regions; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, version.hashCode); _$hash = $jc(_$hash, sellerSubregion.hashCode); @@ -630,18 +630,18 @@ class _$TaxConfigEntity extends TaxConfigEntity { class TaxConfigEntityBuilder implements Builder { - _$TaxConfigEntity _$v; + _$TaxConfigEntity? _$v; - String _version; - String get version => _$this._version; - set version(String version) => _$this._version = version; + String? _version; + String? get version => _$this._version; + set version(String? version) => _$this._version = version; - String _sellerSubregion; - String get sellerSubregion => _$this._sellerSubregion; - set sellerSubregion(String sellerSubregion) => + String? _sellerSubregion; + String? get sellerSubregion => _$this._sellerSubregion; + set sellerSubregion(String? sellerSubregion) => _$this._sellerSubregion = sellerSubregion; - MapBuilder _regions; + MapBuilder? _regions; MapBuilder get regions => _$this._regions ??= new MapBuilder(); set regions(MapBuilder regions) => @@ -669,7 +669,7 @@ class TaxConfigEntityBuilder } @override - void update(void Function(TaxConfigEntityBuilder) updates) { + void update(void Function(TaxConfigEntityBuilder)? updates) { if (updates != null) updates(this); } @@ -687,7 +687,7 @@ class TaxConfigEntityBuilder sellerSubregion, r'TaxConfigEntity', 'sellerSubregion'), regions: regions.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'regions'; regions.build(); @@ -713,14 +713,14 @@ class _$TaxConfigRegionEntity extends TaxConfigRegionEntity { final BuiltMap subregions; factory _$TaxConfigRegionEntity( - [void Function(TaxConfigRegionEntityBuilder) updates]) => + [void Function(TaxConfigRegionEntityBuilder)? updates]) => (new TaxConfigRegionEntityBuilder()..update(updates))._build(); _$TaxConfigRegionEntity._( - {this.hasSalesAboveThreshold, - this.taxAll, - this.taxThreshold, - this.subregions}) + {required this.hasSalesAboveThreshold, + required this.taxAll, + required this.taxThreshold, + required this.subregions}) : super._() { BuiltValueNullFieldError.checkNotNull(hasSalesAboveThreshold, r'TaxConfigRegionEntity', 'hasSalesAboveThreshold'); @@ -751,10 +751,10 @@ class _$TaxConfigRegionEntity extends TaxConfigRegionEntity { subregions == other.subregions; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, hasSalesAboveThreshold.hashCode); _$hash = $jc(_$hash, taxAll.hashCode); @@ -777,22 +777,22 @@ class _$TaxConfigRegionEntity extends TaxConfigRegionEntity { class TaxConfigRegionEntityBuilder implements Builder { - _$TaxConfigRegionEntity _$v; + _$TaxConfigRegionEntity? _$v; - bool _hasSalesAboveThreshold; - bool get hasSalesAboveThreshold => _$this._hasSalesAboveThreshold; - set hasSalesAboveThreshold(bool hasSalesAboveThreshold) => + bool? _hasSalesAboveThreshold; + bool? get hasSalesAboveThreshold => _$this._hasSalesAboveThreshold; + set hasSalesAboveThreshold(bool? hasSalesAboveThreshold) => _$this._hasSalesAboveThreshold = hasSalesAboveThreshold; - bool _taxAll; - bool get taxAll => _$this._taxAll; - set taxAll(bool taxAll) => _$this._taxAll = taxAll; + bool? _taxAll; + bool? get taxAll => _$this._taxAll; + set taxAll(bool? taxAll) => _$this._taxAll = taxAll; - double _taxThreshold; - double get taxThreshold => _$this._taxThreshold; - set taxThreshold(double taxThreshold) => _$this._taxThreshold = taxThreshold; + double? _taxThreshold; + double? get taxThreshold => _$this._taxThreshold; + set taxThreshold(double? taxThreshold) => _$this._taxThreshold = taxThreshold; - MapBuilder _subregions; + MapBuilder? _subregions; MapBuilder get subregions => _$this._subregions ??= new MapBuilder(); set subregions(MapBuilder subregions) => @@ -821,7 +821,7 @@ class TaxConfigRegionEntityBuilder } @override - void update(void Function(TaxConfigRegionEntityBuilder) updates) { + void update(void Function(TaxConfigRegionEntityBuilder)? updates) { if (updates != null) updates(this); } @@ -843,7 +843,7 @@ class TaxConfigRegionEntityBuilder taxThreshold, r'TaxConfigRegionEntity', 'taxThreshold'), subregions: subregions.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'subregions'; subregions.build(); @@ -869,11 +869,11 @@ class _$TaxConfigSubregionEntity extends TaxConfigSubregionEntity { final double reducedTaxRate; factory _$TaxConfigSubregionEntity( - [void Function(TaxConfigSubregionEntityBuilder) updates]) => + [void Function(TaxConfigSubregionEntityBuilder)? updates]) => (new TaxConfigSubregionEntityBuilder()..update(updates))._build(); _$TaxConfigSubregionEntity._( - {this.applyTax, this.taxRate, this.taxName, this.reducedTaxRate}) + {required this.applyTax, required this.taxRate, required this.taxName, required this.reducedTaxRate}) : super._() { BuiltValueNullFieldError.checkNotNull( applyTax, r'TaxConfigSubregionEntity', 'applyTax'); @@ -904,10 +904,10 @@ class _$TaxConfigSubregionEntity extends TaxConfigSubregionEntity { reducedTaxRate == other.reducedTaxRate; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, applyTax.hashCode); _$hash = $jc(_$hash, taxRate.hashCode); @@ -931,23 +931,23 @@ class _$TaxConfigSubregionEntity extends TaxConfigSubregionEntity { class TaxConfigSubregionEntityBuilder implements Builder { - _$TaxConfigSubregionEntity _$v; + _$TaxConfigSubregionEntity? _$v; - bool _applyTax; - bool get applyTax => _$this._applyTax; - set applyTax(bool applyTax) => _$this._applyTax = applyTax; + bool? _applyTax; + bool? get applyTax => _$this._applyTax; + set applyTax(bool? applyTax) => _$this._applyTax = applyTax; - double _taxRate; - double get taxRate => _$this._taxRate; - set taxRate(double taxRate) => _$this._taxRate = taxRate; + double? _taxRate; + double? get taxRate => _$this._taxRate; + set taxRate(double? taxRate) => _$this._taxRate = taxRate; - String _taxName; - String get taxName => _$this._taxName; - set taxName(String taxName) => _$this._taxName = taxName; + String? _taxName; + String? get taxName => _$this._taxName; + set taxName(String? taxName) => _$this._taxName = taxName; - double _reducedTaxRate; - double get reducedTaxRate => _$this._reducedTaxRate; - set reducedTaxRate(double reducedTaxRate) => + double? _reducedTaxRate; + double? get reducedTaxRate => _$this._reducedTaxRate; + set reducedTaxRate(double? reducedTaxRate) => _$this._reducedTaxRate = reducedTaxRate; TaxConfigSubregionEntityBuilder() { @@ -973,7 +973,7 @@ class TaxConfigSubregionEntityBuilder } @override - void update(void Function(TaxConfigSubregionEntityBuilder) updates) { + void update(void Function(TaxConfigSubregionEntityBuilder)? updates) { if (updates != null) updates(this); } diff --git a/lib/data/models/tax_rate_model.dart b/lib/data/models/tax_rate_model.dart index b39947075..0756ded67 100644 --- a/lib/data/models/tax_rate_model.dart +++ b/lib/data/models/tax_rate_model.dart @@ -56,7 +56,7 @@ class TaxRateFields { abstract class TaxRateEntity extends Object with BaseEntity, SelectableEntity implements Built { - factory TaxRateEntity({String id, String name, double rate, AppState state}) { + factory TaxRateEntity({String? id, String? name, double? rate, AppState? state}) { return _$TaxRateEntity._( id: BaseEntity.nextId, isChanged: false, @@ -93,18 +93,18 @@ abstract class TaxRateEntity extends Object bool get isEmpty => rate == 0 && name.isEmpty; - int compareTo(TaxRateEntity taxRate, String sortField, bool sortAscending) { + int compareTo(TaxRateEntity? taxRate, String sortField, bool sortAscending) { int response = 0; - final TaxRateEntity taxRateA = sortAscending ? this : taxRate; - final TaxRateEntity taxRateB = sortAscending ? taxRate : this; + final TaxRateEntity? taxRateA = sortAscending ? this : taxRate; + final TaxRateEntity? taxRateB = sortAscending ? taxRate : this; switch (sortField) { case TaxRateFields.name: response = - taxRateA.name.toLowerCase().compareTo(taxRateB.name.toLowerCase()); + taxRateA!.name.toLowerCase().compareTo(taxRateB!.name.toLowerCase()); break; case TaxRateFields.rate: - response = taxRateA.rate.compareTo(taxRateB.rate); + response = taxRateA!.rate.compareTo(taxRateB!.rate); break; default: print('## ERROR: sort by .$sortField is not implemented'); @@ -115,7 +115,7 @@ abstract class TaxRateEntity extends Object } @override - bool matchesFilter(String filter) { + bool matchesFilter(String? filter) { return matchesStrings( haystacks: [name], needle: filter, @@ -123,7 +123,7 @@ abstract class TaxRateEntity extends Object } @override - String matchesFilterValue(String filter) { + String? matchesFilterValue(String? filter) { return matchesStringsValue( haystacks: [name], needle: filter, @@ -131,16 +131,16 @@ abstract class TaxRateEntity extends Object } @override - List getActions( - {UserCompanyEntity userCompany, - ClientEntity client, + List getActions( + {UserCompanyEntity? userCompany, + ClientEntity? client, bool includeEdit = false, bool includePreview = false, bool multiselect = false}) { - final actions = []; + final actions = []; - if (!isDeleted && !multiselect) { - if (includeEdit && userCompany.canEditEntity(this)) { + if (!isDeleted! && !multiselect) { + if (includeEdit && userCompany!.canEditEntity(this)) { actions.add(EntityAction.edit); } } @@ -153,10 +153,10 @@ abstract class TaxRateEntity extends Object } @override - double get listDisplayAmount => null; + double? get listDisplayAmount => null; @override - FormatNumberType get listDisplayAmountType => null; + FormatNumberType? get listDisplayAmountType => null; static Serializer get serializer => _$taxRateEntitySerializer; } diff --git a/lib/data/models/tax_rate_model.g.dart b/lib/data/models/tax_rate_model.g.dart index 48116e176..88bd402f1 100644 --- a/lib/data/models/tax_rate_model.g.dart +++ b/lib/data/models/tax_rate_model.g.dart @@ -24,10 +24,10 @@ class _$TaxRateListResponseSerializer final String wireName = 'TaxRateListResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, TaxRateListResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: @@ -39,21 +39,21 @@ class _$TaxRateListResponseSerializer @override TaxRateListResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TaxRateListResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(TaxRateEntity)])) - as BuiltList); + BuiltList, const [const FullType(TaxRateEntity)]))! + as BuiltList); break; } } @@ -73,10 +73,10 @@ class _$TaxRateItemResponseSerializer final String wireName = 'TaxRateItemResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, TaxRateItemResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType(TaxRateEntity)), @@ -87,19 +87,19 @@ class _$TaxRateItemResponseSerializer @override TaxRateItemResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TaxRateItemResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, - specifiedType: const FullType(TaxRateEntity)) as TaxRateEntity); + specifiedType: const FullType(TaxRateEntity))! as TaxRateEntity); break; } } @@ -115,9 +115,9 @@ class _$TaxRateEntitySerializer implements StructuredSerializer { final String wireName = 'TaxRateEntity'; @override - Iterable serialize(Serializers serializers, TaxRateEntity object, + Iterable serialize(Serializers serializers, TaxRateEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'name', serializers.serialize(object.name, specifiedType: const FullType(String)), 'rate', @@ -134,7 +134,7 @@ class _$TaxRateEntitySerializer implements StructuredSerializer { 'id', serializers.serialize(object.id, specifiedType: const FullType(String)), ]; - Object value; + Object? value; value = object.isChanged; if (value != null) { result @@ -168,55 +168,55 @@ class _$TaxRateEntitySerializer implements StructuredSerializer { @override TaxRateEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TaxRateEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'name': result.name = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'rate': result.rate = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'isChanged': result.isChanged = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'created_at': result.createdAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'updated_at': result.updatedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'archived_at': result.archivedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'is_deleted': result.isDeleted = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'user_id': result.createdUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'assigned_user_id': result.assignedUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -230,10 +230,10 @@ class _$TaxRateListResponse extends TaxRateListResponse { final BuiltList data; factory _$TaxRateListResponse( - [void Function(TaxRateListResponseBuilder) updates]) => + [void Function(TaxRateListResponseBuilder)? updates]) => (new TaxRateListResponseBuilder()..update(updates))._build(); - _$TaxRateListResponse._({this.data}) : super._() { + _$TaxRateListResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull(data, r'TaxRateListResponse', 'data'); } @@ -252,10 +252,10 @@ class _$TaxRateListResponse extends TaxRateListResponse { return other is TaxRateListResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -272,12 +272,12 @@ class _$TaxRateListResponse extends TaxRateListResponse { class TaxRateListResponseBuilder implements Builder { - _$TaxRateListResponse _$v; + _$TaxRateListResponse? _$v; - ListBuilder _data; + ListBuilder? _data; ListBuilder get data => _$this._data ??= new ListBuilder(); - set data(ListBuilder data) => _$this._data = data; + set data(ListBuilder? data) => _$this._data = data; TaxRateListResponseBuilder(); @@ -297,7 +297,7 @@ class TaxRateListResponseBuilder } @override - void update(void Function(TaxRateListResponseBuilder) updates) { + void update(void Function(TaxRateListResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -309,7 +309,7 @@ class TaxRateListResponseBuilder try { _$result = _$v ?? new _$TaxRateListResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -329,10 +329,10 @@ class _$TaxRateItemResponse extends TaxRateItemResponse { final TaxRateEntity data; factory _$TaxRateItemResponse( - [void Function(TaxRateItemResponseBuilder) updates]) => + [void Function(TaxRateItemResponseBuilder)? updates]) => (new TaxRateItemResponseBuilder()..update(updates))._build(); - _$TaxRateItemResponse._({this.data}) : super._() { + _$TaxRateItemResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull(data, r'TaxRateItemResponse', 'data'); } @@ -351,10 +351,10 @@ class _$TaxRateItemResponse extends TaxRateItemResponse { return other is TaxRateItemResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -371,11 +371,11 @@ class _$TaxRateItemResponse extends TaxRateItemResponse { class TaxRateItemResponseBuilder implements Builder { - _$TaxRateItemResponse _$v; + _$TaxRateItemResponse? _$v; - TaxRateEntityBuilder _data; + TaxRateEntityBuilder? _data; TaxRateEntityBuilder get data => _$this._data ??= new TaxRateEntityBuilder(); - set data(TaxRateEntityBuilder data) => _$this._data = data; + set data(TaxRateEntityBuilder? data) => _$this._data = data; TaxRateItemResponseBuilder(); @@ -395,7 +395,7 @@ class TaxRateItemResponseBuilder } @override - void update(void Function(TaxRateItemResponseBuilder) updates) { + void update(void Function(TaxRateItemResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -407,7 +407,7 @@ class TaxRateItemResponseBuilder try { _$result = _$v ?? new _$TaxRateItemResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -428,7 +428,7 @@ class _$TaxRateEntity extends TaxRateEntity { @override final double rate; @override - final bool isChanged; + final bool? isChanged; @override final int createdAt; @override @@ -436,28 +436,28 @@ class _$TaxRateEntity extends TaxRateEntity { @override final int archivedAt; @override - final bool isDeleted; + final bool? isDeleted; @override - final String createdUserId; + final String? createdUserId; @override - final String assignedUserId; + final String? assignedUserId; @override final String id; - factory _$TaxRateEntity([void Function(TaxRateEntityBuilder) updates]) => + factory _$TaxRateEntity([void Function(TaxRateEntityBuilder)? updates]) => (new TaxRateEntityBuilder()..update(updates))._build(); _$TaxRateEntity._( - {this.name, - this.rate, + {required this.name, + required this.rate, this.isChanged, - this.createdAt, - this.updatedAt, - this.archivedAt, + required this.createdAt, + required this.updatedAt, + required this.archivedAt, this.isDeleted, this.createdUserId, this.assignedUserId, - this.id}) + required this.id}) : super._() { BuiltValueNullFieldError.checkNotNull(name, r'TaxRateEntity', 'name'); BuiltValueNullFieldError.checkNotNull(rate, r'TaxRateEntity', 'rate'); @@ -493,10 +493,10 @@ class _$TaxRateEntity extends TaxRateEntity { id == other.id; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, name.hashCode); _$hash = $jc(_$hash, rate.hashCode); @@ -531,49 +531,49 @@ class _$TaxRateEntity extends TaxRateEntity { class TaxRateEntityBuilder implements Builder { - _$TaxRateEntity _$v; + _$TaxRateEntity? _$v; - String _name; - String get name => _$this._name; - set name(String name) => _$this._name = name; + String? _name; + String? get name => _$this._name; + set name(String? name) => _$this._name = name; - double _rate; - double get rate => _$this._rate; - set rate(double rate) => _$this._rate = rate; + double? _rate; + double? get rate => _$this._rate; + set rate(double? rate) => _$this._rate = rate; - bool _isChanged; - bool get isChanged => _$this._isChanged; - set isChanged(bool isChanged) => _$this._isChanged = isChanged; + bool? _isChanged; + bool? get isChanged => _$this._isChanged; + set isChanged(bool? isChanged) => _$this._isChanged = isChanged; - int _createdAt; - int get createdAt => _$this._createdAt; - set createdAt(int createdAt) => _$this._createdAt = createdAt; + int? _createdAt; + int? get createdAt => _$this._createdAt; + set createdAt(int? createdAt) => _$this._createdAt = createdAt; - int _updatedAt; - int get updatedAt => _$this._updatedAt; - set updatedAt(int updatedAt) => _$this._updatedAt = updatedAt; + int? _updatedAt; + int? get updatedAt => _$this._updatedAt; + set updatedAt(int? updatedAt) => _$this._updatedAt = updatedAt; - int _archivedAt; - int get archivedAt => _$this._archivedAt; - set archivedAt(int archivedAt) => _$this._archivedAt = archivedAt; + int? _archivedAt; + int? get archivedAt => _$this._archivedAt; + set archivedAt(int? archivedAt) => _$this._archivedAt = archivedAt; - bool _isDeleted; - bool get isDeleted => _$this._isDeleted; - set isDeleted(bool isDeleted) => _$this._isDeleted = isDeleted; + bool? _isDeleted; + bool? get isDeleted => _$this._isDeleted; + set isDeleted(bool? isDeleted) => _$this._isDeleted = isDeleted; - String _createdUserId; - String get createdUserId => _$this._createdUserId; - set createdUserId(String createdUserId) => + String? _createdUserId; + String? get createdUserId => _$this._createdUserId; + set createdUserId(String? createdUserId) => _$this._createdUserId = createdUserId; - String _assignedUserId; - String get assignedUserId => _$this._assignedUserId; - set assignedUserId(String assignedUserId) => + String? _assignedUserId; + String? get assignedUserId => _$this._assignedUserId; + set assignedUserId(String? assignedUserId) => _$this._assignedUserId = assignedUserId; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; TaxRateEntityBuilder(); @@ -602,7 +602,7 @@ class TaxRateEntityBuilder } @override - void update(void Function(TaxRateEntityBuilder) updates) { + void update(void Function(TaxRateEntityBuilder)? updates) { if (updates != null) updates(this); } diff --git a/lib/data/models/token_model.dart b/lib/data/models/token_model.dart index 7297a749d..b960e0e86 100644 --- a/lib/data/models/token_model.dart +++ b/lib/data/models/token_model.dart @@ -57,7 +57,7 @@ class TokenFields { abstract class TokenEntity extends Object with BaseEntity, SelectableEntity implements Built { - factory TokenEntity({String id, AppState state}) { + factory TokenEntity({String? id, AppState? state}) { return _$TokenEntity._( id: id ?? BaseEntity.nextId, isChanged: false, @@ -97,7 +97,7 @@ abstract class TokenEntity extends Object static String obscureToken(String value) => base64Encode(utf8.encode(value)); - static String unobscureToken(String value) { + static String? unobscureToken(String? value) { if (value == null || value.isEmpty) { return null; } @@ -110,15 +110,15 @@ abstract class TokenEntity extends Object return name; } - int compareTo(TokenEntity token, String sortField, bool sortAscending) { + int compareTo(TokenEntity? token, String sortField, bool sortAscending) { int response = 0; - final TokenEntity tokenA = sortAscending ? this : token; - final TokenEntity tokenB = sortAscending ? token : this; + final TokenEntity? tokenA = sortAscending ? this : token; + final TokenEntity? tokenB = sortAscending ? token : this; switch (sortField) { case TokenFields.name: response = - tokenA.name.toLowerCase().compareTo(tokenB.name.toLowerCase()); + tokenA!.name.toLowerCase().compareTo(tokenB!.name.toLowerCase()); break; default: print('## ERROR: sort by token.$sortField is not implemented'); @@ -129,7 +129,7 @@ abstract class TokenEntity extends Object } @override - bool matchesFilter(String filter) { + bool matchesFilter(String? filter) { return matchesStrings( haystacks: [ name, @@ -139,7 +139,7 @@ abstract class TokenEntity extends Object } @override - String matchesFilterValue(String filter) { + String? matchesFilterValue(String? filter) { return matchesStringsValue( haystacks: [], needle: filter, @@ -147,20 +147,20 @@ abstract class TokenEntity extends Object } @override - List getActions( - {UserCompanyEntity userCompany, - ClientEntity client, + List getActions( + {UserCompanyEntity? userCompany, + ClientEntity? client, bool includeEdit = false, bool includePreview = false, bool multiselect = false}) { - final actions = []; + final actions = []; if (!isMasked && !multiselect) { actions.add(EntityAction.copy); } - if (!isDeleted && !multiselect) { - if (includeEdit && userCompany.canEditEntity(this)) { + if (!isDeleted! && !multiselect) { + if (includeEdit && userCompany!.canEditEntity(this)) { actions.add(EntityAction.edit); } } @@ -173,10 +173,10 @@ abstract class TokenEntity extends Object } @override - double get listDisplayAmount => null; + double? get listDisplayAmount => null; @override - FormatNumberType get listDisplayAmountType => null; + FormatNumberType? get listDisplayAmountType => null; static Serializer get serializer => _$tokenEntitySerializer; } diff --git a/lib/data/models/token_model.g.dart b/lib/data/models/token_model.g.dart index 1044252e4..c5645ac75 100644 --- a/lib/data/models/token_model.g.dart +++ b/lib/data/models/token_model.g.dart @@ -20,9 +20,9 @@ class _$TokenListResponseSerializer final String wireName = 'TokenListResponse'; @override - Iterable serialize(Serializers serializers, TokenListResponse object, + Iterable serialize(Serializers serializers, TokenListResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: @@ -34,21 +34,21 @@ class _$TokenListResponseSerializer @override TokenListResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TokenListResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(TokenEntity)])) - as BuiltList); + BuiltList, const [const FullType(TokenEntity)]))! + as BuiltList); break; } } @@ -65,9 +65,9 @@ class _$TokenItemResponseSerializer final String wireName = 'TokenItemResponse'; @override - Iterable serialize(Serializers serializers, TokenItemResponse object, + Iterable serialize(Serializers serializers, TokenItemResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType(TokenEntity)), @@ -78,19 +78,19 @@ class _$TokenItemResponseSerializer @override TokenItemResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TokenItemResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, - specifiedType: const FullType(TokenEntity)) as TokenEntity); + specifiedType: const FullType(TokenEntity))! as TokenEntity); break; } } @@ -106,9 +106,9 @@ class _$TokenEntitySerializer implements StructuredSerializer { final String wireName = 'TokenEntity'; @override - Iterable serialize(Serializers serializers, TokenEntity object, + Iterable serialize(Serializers serializers, TokenEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'is_system', serializers.serialize(object.isSystem, specifiedType: const FullType(bool)), @@ -129,7 +129,7 @@ class _$TokenEntitySerializer implements StructuredSerializer { 'id', serializers.serialize(object.id, specifiedType: const FullType(String)), ]; - Object value; + Object? value; value = object.isChanged; if (value != null) { result @@ -162,59 +162,59 @@ class _$TokenEntitySerializer implements StructuredSerializer { } @override - TokenEntity deserialize(Serializers serializers, Iterable serialized, + TokenEntity deserialize(Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TokenEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'is_system': result.isSystem = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'token': result.token = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'name': result.name = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'isChanged': result.isChanged = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'created_at': result.createdAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'updated_at': result.updatedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'archived_at': result.archivedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'is_deleted': result.isDeleted = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'user_id': result.createdUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'assigned_user_id': result.assignedUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -228,10 +228,10 @@ class _$TokenListResponse extends TokenListResponse { final BuiltList data; factory _$TokenListResponse( - [void Function(TokenListResponseBuilder) updates]) => + [void Function(TokenListResponseBuilder)? updates]) => (new TokenListResponseBuilder()..update(updates))._build(); - _$TokenListResponse._({this.data}) : super._() { + _$TokenListResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull(data, r'TokenListResponse', 'data'); } @@ -249,10 +249,10 @@ class _$TokenListResponse extends TokenListResponse { return other is TokenListResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -269,12 +269,12 @@ class _$TokenListResponse extends TokenListResponse { class TokenListResponseBuilder implements Builder { - _$TokenListResponse _$v; + _$TokenListResponse? _$v; - ListBuilder _data; + ListBuilder? _data; ListBuilder get data => _$this._data ??= new ListBuilder(); - set data(ListBuilder data) => _$this._data = data; + set data(ListBuilder? data) => _$this._data = data; TokenListResponseBuilder(); @@ -294,7 +294,7 @@ class TokenListResponseBuilder } @override - void update(void Function(TokenListResponseBuilder) updates) { + void update(void Function(TokenListResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -306,7 +306,7 @@ class TokenListResponseBuilder try { _$result = _$v ?? new _$TokenListResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -326,10 +326,10 @@ class _$TokenItemResponse extends TokenItemResponse { final TokenEntity data; factory _$TokenItemResponse( - [void Function(TokenItemResponseBuilder) updates]) => + [void Function(TokenItemResponseBuilder)? updates]) => (new TokenItemResponseBuilder()..update(updates))._build(); - _$TokenItemResponse._({this.data}) : super._() { + _$TokenItemResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull(data, r'TokenItemResponse', 'data'); } @@ -347,10 +347,10 @@ class _$TokenItemResponse extends TokenItemResponse { return other is TokenItemResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -367,11 +367,11 @@ class _$TokenItemResponse extends TokenItemResponse { class TokenItemResponseBuilder implements Builder { - _$TokenItemResponse _$v; + _$TokenItemResponse? _$v; - TokenEntityBuilder _data; + TokenEntityBuilder? _data; TokenEntityBuilder get data => _$this._data ??= new TokenEntityBuilder(); - set data(TokenEntityBuilder data) => _$this._data = data; + set data(TokenEntityBuilder? data) => _$this._data = data; TokenItemResponseBuilder(); @@ -391,7 +391,7 @@ class TokenItemResponseBuilder } @override - void update(void Function(TokenItemResponseBuilder) updates) { + void update(void Function(TokenItemResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -403,7 +403,7 @@ class TokenItemResponseBuilder try { _$result = _$v ?? new _$TokenItemResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -426,7 +426,7 @@ class _$TokenEntity extends TokenEntity { @override final String name; @override - final bool isChanged; + final bool? isChanged; @override final int createdAt; @override @@ -434,29 +434,29 @@ class _$TokenEntity extends TokenEntity { @override final int archivedAt; @override - final bool isDeleted; + final bool? isDeleted; @override - final String createdUserId; + final String? createdUserId; @override - final String assignedUserId; + final String? assignedUserId; @override final String id; - factory _$TokenEntity([void Function(TokenEntityBuilder) updates]) => + factory _$TokenEntity([void Function(TokenEntityBuilder)? updates]) => (new TokenEntityBuilder()..update(updates))._build(); _$TokenEntity._( - {this.isSystem, - this.token, - this.name, + {required this.isSystem, + required this.token, + required this.name, this.isChanged, - this.createdAt, - this.updatedAt, - this.archivedAt, + required this.createdAt, + required this.updatedAt, + required this.archivedAt, this.isDeleted, this.createdUserId, this.assignedUserId, - this.id}) + required this.id}) : super._() { BuiltValueNullFieldError.checkNotNull(isSystem, r'TokenEntity', 'isSystem'); BuiltValueNullFieldError.checkNotNull(token, r'TokenEntity', 'token'); @@ -494,10 +494,10 @@ class _$TokenEntity extends TokenEntity { id == other.id; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, isSystem.hashCode); _$hash = $jc(_$hash, token.hashCode); @@ -533,53 +533,53 @@ class _$TokenEntity extends TokenEntity { } class TokenEntityBuilder implements Builder { - _$TokenEntity _$v; + _$TokenEntity? _$v; - bool _isSystem; - bool get isSystem => _$this._isSystem; - set isSystem(bool isSystem) => _$this._isSystem = isSystem; + bool? _isSystem; + bool? get isSystem => _$this._isSystem; + set isSystem(bool? isSystem) => _$this._isSystem = isSystem; - String _token; - String get token => _$this._token; - set token(String token) => _$this._token = token; + String? _token; + String? get token => _$this._token; + set token(String? token) => _$this._token = token; - String _name; - String get name => _$this._name; - set name(String name) => _$this._name = name; + String? _name; + String? get name => _$this._name; + set name(String? name) => _$this._name = name; - bool _isChanged; - bool get isChanged => _$this._isChanged; - set isChanged(bool isChanged) => _$this._isChanged = isChanged; + bool? _isChanged; + bool? get isChanged => _$this._isChanged; + set isChanged(bool? isChanged) => _$this._isChanged = isChanged; - int _createdAt; - int get createdAt => _$this._createdAt; - set createdAt(int createdAt) => _$this._createdAt = createdAt; + int? _createdAt; + int? get createdAt => _$this._createdAt; + set createdAt(int? createdAt) => _$this._createdAt = createdAt; - int _updatedAt; - int get updatedAt => _$this._updatedAt; - set updatedAt(int updatedAt) => _$this._updatedAt = updatedAt; + int? _updatedAt; + int? get updatedAt => _$this._updatedAt; + set updatedAt(int? updatedAt) => _$this._updatedAt = updatedAt; - int _archivedAt; - int get archivedAt => _$this._archivedAt; - set archivedAt(int archivedAt) => _$this._archivedAt = archivedAt; + int? _archivedAt; + int? get archivedAt => _$this._archivedAt; + set archivedAt(int? archivedAt) => _$this._archivedAt = archivedAt; - bool _isDeleted; - bool get isDeleted => _$this._isDeleted; - set isDeleted(bool isDeleted) => _$this._isDeleted = isDeleted; + bool? _isDeleted; + bool? get isDeleted => _$this._isDeleted; + set isDeleted(bool? isDeleted) => _$this._isDeleted = isDeleted; - String _createdUserId; - String get createdUserId => _$this._createdUserId; - set createdUserId(String createdUserId) => + String? _createdUserId; + String? get createdUserId => _$this._createdUserId; + set createdUserId(String? createdUserId) => _$this._createdUserId = createdUserId; - String _assignedUserId; - String get assignedUserId => _$this._assignedUserId; - set assignedUserId(String assignedUserId) => + String? _assignedUserId; + String? get assignedUserId => _$this._assignedUserId; + set assignedUserId(String? assignedUserId) => _$this._assignedUserId = assignedUserId; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; TokenEntityBuilder(); @@ -609,7 +609,7 @@ class TokenEntityBuilder implements Builder { } @override - void update(void Function(TokenEntityBuilder) updates) { + void update(void Function(TokenEntityBuilder)? updates) { if (updates != null) updates(this); } diff --git a/lib/data/models/transaction_model.dart b/lib/data/models/transaction_model.dart index 3a4033f84..6c0538f1b 100644 --- a/lib/data/models/transaction_model.dart +++ b/lib/data/models/transaction_model.dart @@ -71,15 +71,15 @@ class TransactionFields { abstract class TransactionEntity extends Object with BaseEntity implements Built { - factory TransactionEntity({String id, AppState state}) { + factory TransactionEntity({String? id, AppState? state}) { String bankAccountId = ''; if (state != null) { final bankAccounts = state.bankAccountState.list .map((bankAccountId) => state.bankAccountState.map[bankAccountId]) - .where((bankAccount) => !bankAccount.isDeleted) + .where((bankAccount) => !bankAccount!.isDeleted!) .toList(); if (bankAccounts.length == 1) { - bankAccountId = bankAccounts.first.id; + bankAccountId = bankAccounts.first!.id; } } @@ -161,17 +161,14 @@ abstract class TransactionEntity extends Object @BuiltValueField(wireName: 'bank_transaction_rule_id') String get transactionRuleId; - @nullable @BuiltValueField(serialize: false) - String get pendingVendorId; + String? get pendingVendorId; - @nullable @BuiltValueField(serialize: false) - String get pendingCategoryId; + String? get pendingCategoryId; - @nullable @BuiltValueField(serialize: false) - String get pendingExpenseId; + String? get pendingExpenseId; @override EntityType get entityType => EntityType.transaction; @@ -189,14 +186,14 @@ abstract class TransactionEntity extends Object bool get isConverted => statusId == kTransactionStatusConverted; @override - List getActions( - {UserCompanyEntity userCompany, - ClientEntity client, + List getActions( + {UserCompanyEntity? userCompany, + ClientEntity? client, bool includeEdit = false, bool multiselect = false}) { - final actions = []; + final actions = []; - if (!isDeleted && userCompany.canEditEntity(this)) { + if (!isDeleted! && userCompany!.canEditEntity(this)) { if (!multiselect && includeEdit) { actions.add(EntityAction.edit); } @@ -218,14 +215,14 @@ abstract class TransactionEntity extends Object } int compareTo( - TransactionEntity transaction, + TransactionEntity? transaction, String sortField, bool sortAscending, - BuiltMap vendorMap, - BuiltMap invoiceMap, - BuiltMap expenseMap, - BuiltMap expenseCategoryMap, - BuiltMap bankAccountMap, + BuiltMap vendorMap, + BuiltMap invoiceMap, + BuiltMap expenseMap, + BuiltMap expenseCategoryMap, + BuiltMap bankAccountMap, ) { int response = 0; final transactionA = sortAscending ? this : transaction; @@ -233,60 +230,60 @@ abstract class TransactionEntity extends Object switch (sortField) { case TransactionFields.description: - response = transactionA.description + response = transactionA!.description .toLowerCase() - .compareTo(transactionB.description.toLowerCase()); + .compareTo(transactionB!.description.toLowerCase()); break; case TransactionFields.deposit: case TransactionFields.withdrawal: case TransactionFields.amount: - response = transactionA.amount.compareTo(transactionB.amount); + response = transactionA!.amount.compareTo(transactionB!.amount); break; case TransactionFields.status: - response = transactionA.statusId.compareTo(transactionB.statusId); + response = transactionA!.statusId.compareTo(transactionB!.statusId); break; case TransactionFields.date: - response = transactionA.date.compareTo(transactionB.date); + response = transactionA!.date.compareTo(transactionB!.date); break; case TransactionFields.defaultCategory: - response = transactionA.category + response = transactionA!.category .toLowerCase() - .compareTo(transactionB.category.toLowerCase()); + .compareTo(transactionB!.category.toLowerCase()); break; case TransactionFields.accountType: final bankAccountA = - bankAccountMap[transactionA.bankAccountId] ?? BankAccountEntity(); + bankAccountMap[transactionA!.bankAccountId] ?? BankAccountEntity(); final bankAccountB = - bankAccountMap[transactionB.bankAccountId] ?? BankAccountEntity(); + bankAccountMap[transactionB!.bankAccountId] ?? BankAccountEntity(); response = bankAccountA.type.compareTo(bankAccountB.type); break; case TransactionFields.invoices: final invoiceA = - invoiceMap[transactionA.firstInvoiceId] ?? InvoiceEntity(); + invoiceMap[transactionA!.firstInvoiceId] ?? InvoiceEntity(); final invoiceB = - invoiceMap[transactionB.firstInvoiceId] ?? InvoiceEntity(); + invoiceMap[transactionB!.firstInvoiceId] ?? InvoiceEntity(); response = invoiceA.listDisplayName .toLowerCase() .compareTo(invoiceB.listDisplayName.toLowerCase()); break; case TransactionFields.expense: - final expenseA = expenseMap[transactionA.expenseId] ?? ExpenseEntity(); - final expenseB = expenseMap[transactionB.expenseId] ?? ExpenseEntity(); + final expenseA = expenseMap[transactionA!.expenseId] ?? ExpenseEntity(); + final expenseB = expenseMap[transactionB!.expenseId] ?? ExpenseEntity(); response = expenseA.listDisplayName .toLowerCase() .compareTo(expenseB.listDisplayName.toLowerCase()); break; case TransactionFields.vendor: - final vendorA = vendorMap[transactionA.vendorId] ?? VendorEntity(); - final vendorB = vendorMap[transactionB.vendorId] ?? VendorEntity(); + final vendorA = vendorMap[transactionA!.vendorId] ?? VendorEntity(); + final vendorB = vendorMap[transactionB!.vendorId] ?? VendorEntity(); response = vendorA.listDisplayName .toLowerCase() .compareTo(vendorB.listDisplayName.toLowerCase()); break; case TransactionFields.category: - final categoryA = expenseCategoryMap[transactionA.categoryId] ?? + final categoryA = expenseCategoryMap[transactionA!.categoryId] ?? ExpenseCategoryEntity(); - final categoryB = expenseCategoryMap[transactionB.categoryId] ?? + final categoryB = expenseCategoryMap[transactionB!.categoryId] ?? ExpenseCategoryEntity(); response = categoryA.listDisplayName .toLowerCase() @@ -294,9 +291,9 @@ abstract class TransactionEntity extends Object break; case TransactionFields.bankAccount: final bankAccountA = - bankAccountMap[transactionA.bankAccountId] ?? BankAccountEntity(); + bankAccountMap[transactionA!.bankAccountId] ?? BankAccountEntity(); final bankAccountB = - bankAccountMap[transactionB.bankAccountId] ?? BankAccountEntity(); + bankAccountMap[transactionB!.bankAccountId] ?? BankAccountEntity(); response = bankAccountA.listDisplayName .toLowerCase() .compareTo(bankAccountB.listDisplayName.toLowerCase()); @@ -308,7 +305,7 @@ abstract class TransactionEntity extends Object if (response == 0) { // STARTER: sort default - do not remove comment - return transactionA.transactionId.compareTo(transactionB.transactionId); + return transactionA!.transactionId.compareTo(transactionB!.transactionId); } else { return response; } @@ -336,7 +333,7 @@ abstract class TransactionEntity extends Object } @override - bool matchesFilter(String filter) { + bool matchesFilter(String? filter) { return matchesStrings( haystacks: [ category, @@ -347,7 +344,7 @@ abstract class TransactionEntity extends Object } @override - String matchesFilterValue(String filter) { + String? matchesFilterValue(String? filter) { return matchesStringsValue( haystacks: [ category, @@ -357,7 +354,7 @@ abstract class TransactionEntity extends Object ); } - String get firstInvoiceId { + String? get firstInvoiceId { if (invoiceIds.isEmpty) { return null; } @@ -366,11 +363,11 @@ abstract class TransactionEntity extends Object } @override - String get listDisplayName { + String? get listDisplayName { if (description.isNotEmpty) { return description.split('\n').first; } else { - return AppLocalization.of(navigatorKey.currentContext).transaction; + return AppLocalization.of(navigatorKey.currentContext!)!.transaction; } } diff --git a/lib/data/models/transaction_model.g.dart b/lib/data/models/transaction_model.g.dart index 64581b425..412d03911 100644 --- a/lib/data/models/transaction_model.g.dart +++ b/lib/data/models/transaction_model.g.dart @@ -26,10 +26,10 @@ class _$TransactionListResponseSerializer final String wireName = 'TransactionListResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, TransactionListResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType( @@ -41,21 +41,21 @@ class _$TransactionListResponseSerializer @override TransactionListResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TransactionListResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(TransactionEntity)])) - as BuiltList); + BuiltList, const [const FullType(TransactionEntity)]))! + as BuiltList); break; } } @@ -75,10 +75,10 @@ class _$TransactionItemResponseSerializer final String wireName = 'TransactionItemResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, TransactionItemResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType(TransactionEntity)), @@ -89,19 +89,19 @@ class _$TransactionItemResponseSerializer @override TransactionItemResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TransactionItemResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, - specifiedType: const FullType(TransactionEntity)) + specifiedType: const FullType(TransactionEntity))! as TransactionEntity); break; } @@ -119,9 +119,9 @@ class _$TransactionEntitySerializer final String wireName = 'TransactionEntity'; @override - Iterable serialize(Serializers serializers, TransactionEntity object, + Iterable serialize(Serializers serializers, TransactionEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'amount', serializers.serialize(object.amount, specifiedType: const FullType(double)), @@ -178,7 +178,7 @@ class _$TransactionEntitySerializer 'id', serializers.serialize(object.id, specifiedType: const FullType(String)), ]; - Object value; + Object? value; value = object.isChanged; if (value != null) { result @@ -212,107 +212,107 @@ class _$TransactionEntitySerializer @override TransactionEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TransactionEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'amount': result.amount = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'currency_id': result.currencyId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'category_type': result.category = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'base_type': result.baseType = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'date': result.date = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'bank_integration_id': result.bankAccountId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'description': result.description = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'status_id': result.statusId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'ninja_category_id': result.categoryId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'invoice_ids': result.invoiceIds = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'payment_id': result.paymentId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'expense_id': result.expenseId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'vendor_id': result.vendorId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'transaction_id': result.transactionId = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'bank_transaction_rule_id': result.transactionRuleId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'isChanged': result.isChanged = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'created_at': result.createdAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'updated_at': result.updatedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'archived_at': result.archivedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'is_deleted': result.isDeleted = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'user_id': result.createdUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'assigned_user_id': result.assignedUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -332,10 +332,10 @@ class _$TransactionStatusEntitySerializer final String wireName = 'TransactionStatusEntity'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, TransactionStatusEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'id', serializers.serialize(object.id, specifiedType: const FullType(String)), 'name', @@ -347,23 +347,23 @@ class _$TransactionStatusEntitySerializer @override TransactionStatusEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TransactionStatusEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'name': result.name = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -377,10 +377,10 @@ class _$TransactionListResponse extends TransactionListResponse { final BuiltList data; factory _$TransactionListResponse( - [void Function(TransactionListResponseBuilder) updates]) => + [void Function(TransactionListResponseBuilder)? updates]) => (new TransactionListResponseBuilder()..update(updates))._build(); - _$TransactionListResponse._({this.data}) : super._() { + _$TransactionListResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull( data, r'TransactionListResponse', 'data'); } @@ -400,10 +400,10 @@ class _$TransactionListResponse extends TransactionListResponse { return other is TransactionListResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -421,12 +421,12 @@ class _$TransactionListResponse extends TransactionListResponse { class TransactionListResponseBuilder implements Builder { - _$TransactionListResponse _$v; + _$TransactionListResponse? _$v; - ListBuilder _data; + ListBuilder? _data; ListBuilder get data => _$this._data ??= new ListBuilder(); - set data(ListBuilder data) => _$this._data = data; + set data(ListBuilder? data) => _$this._data = data; TransactionListResponseBuilder(); @@ -446,7 +446,7 @@ class TransactionListResponseBuilder } @override - void update(void Function(TransactionListResponseBuilder) updates) { + void update(void Function(TransactionListResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -458,7 +458,7 @@ class TransactionListResponseBuilder try { _$result = _$v ?? new _$TransactionListResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -478,10 +478,10 @@ class _$TransactionItemResponse extends TransactionItemResponse { final TransactionEntity data; factory _$TransactionItemResponse( - [void Function(TransactionItemResponseBuilder) updates]) => + [void Function(TransactionItemResponseBuilder)? updates]) => (new TransactionItemResponseBuilder()..update(updates))._build(); - _$TransactionItemResponse._({this.data}) : super._() { + _$TransactionItemResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull( data, r'TransactionItemResponse', 'data'); } @@ -501,10 +501,10 @@ class _$TransactionItemResponse extends TransactionItemResponse { return other is TransactionItemResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -522,12 +522,12 @@ class _$TransactionItemResponse extends TransactionItemResponse { class TransactionItemResponseBuilder implements Builder { - _$TransactionItemResponse _$v; + _$TransactionItemResponse? _$v; - TransactionEntityBuilder _data; + TransactionEntityBuilder? _data; TransactionEntityBuilder get data => _$this._data ??= new TransactionEntityBuilder(); - set data(TransactionEntityBuilder data) => _$this._data = data; + set data(TransactionEntityBuilder? data) => _$this._data = data; TransactionItemResponseBuilder(); @@ -547,7 +547,7 @@ class TransactionItemResponseBuilder } @override - void update(void Function(TransactionItemResponseBuilder) updates) { + void update(void Function(TransactionItemResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -559,7 +559,7 @@ class TransactionItemResponseBuilder try { _$result = _$v ?? new _$TransactionItemResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -606,13 +606,13 @@ class _$TransactionEntity extends TransactionEntity { @override final String transactionRuleId; @override - final String pendingVendorId; + final String? pendingVendorId; @override - final String pendingCategoryId; + final String? pendingCategoryId; @override - final String pendingExpenseId; + final String? pendingExpenseId; @override - final bool isChanged; + final bool? isChanged; @override final int createdAt; @override @@ -620,45 +620,45 @@ class _$TransactionEntity extends TransactionEntity { @override final int archivedAt; @override - final bool isDeleted; + final bool? isDeleted; @override - final String createdUserId; + final String? createdUserId; @override - final String assignedUserId; + final String? assignedUserId; @override final String id; factory _$TransactionEntity( - [void Function(TransactionEntityBuilder) updates]) => + [void Function(TransactionEntityBuilder)? updates]) => (new TransactionEntityBuilder()..update(updates))._build(); _$TransactionEntity._( - {this.amount, - this.currencyId, - this.category, - this.baseType, - this.date, - this.bankAccountId, - this.description, - this.statusId, - this.categoryId, - this.invoiceIds, - this.paymentId, - this.expenseId, - this.vendorId, - this.transactionId, - this.transactionRuleId, + {required this.amount, + required this.currencyId, + required this.category, + required this.baseType, + required this.date, + required this.bankAccountId, + required this.description, + required this.statusId, + required this.categoryId, + required this.invoiceIds, + required this.paymentId, + required this.expenseId, + required this.vendorId, + required this.transactionId, + required this.transactionRuleId, this.pendingVendorId, this.pendingCategoryId, this.pendingExpenseId, this.isChanged, - this.createdAt, - this.updatedAt, - this.archivedAt, + required this.createdAt, + required this.updatedAt, + required this.archivedAt, this.isDeleted, this.createdUserId, this.assignedUserId, - this.id}) + required this.id}) : super._() { BuiltValueNullFieldError.checkNotNull( amount, r'TransactionEntity', 'amount'); @@ -738,10 +738,10 @@ class _$TransactionEntity extends TransactionEntity { id == other.id; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, amount.hashCode); _$hash = $jc(_$hash, currencyId.hashCode); @@ -808,118 +808,119 @@ class _$TransactionEntity extends TransactionEntity { class TransactionEntityBuilder implements Builder { - _$TransactionEntity _$v; + _$TransactionEntity? _$v; - double _amount; - double get amount => _$this._amount; - set amount(double amount) => _$this._amount = amount; + double? _amount; + double? get amount => _$this._amount; + set amount(double? amount) => _$this._amount = amount; - String _currencyId; - String get currencyId => _$this._currencyId; - set currencyId(String currencyId) => _$this._currencyId = currencyId; + String? _currencyId; + String? get currencyId => _$this._currencyId; + set currencyId(String? currencyId) => _$this._currencyId = currencyId; - String _category; - String get category => _$this._category; - set category(String category) => _$this._category = category; + String? _category; + String? get category => _$this._category; + set category(String? category) => _$this._category = category; - String _baseType; - String get baseType => _$this._baseType; - set baseType(String baseType) => _$this._baseType = baseType; + String? _baseType; + String? get baseType => _$this._baseType; + set baseType(String? baseType) => _$this._baseType = baseType; - String _date; - String get date => _$this._date; - set date(String date) => _$this._date = date; + String? _date; + String? get date => _$this._date; + set date(String? date) => _$this._date = date; - String _bankAccountId; - String get bankAccountId => _$this._bankAccountId; - set bankAccountId(String bankAccountId) => + String? _bankAccountId; + String? get bankAccountId => _$this._bankAccountId; + set bankAccountId(String? bankAccountId) => _$this._bankAccountId = bankAccountId; - String _description; - String get description => _$this._description; - set description(String description) => _$this._description = description; + String? _description; + String? get description => _$this._description; + set description(String? description) => _$this._description = description; - String _statusId; - String get statusId => _$this._statusId; - set statusId(String statusId) => _$this._statusId = statusId; + String? _statusId; + String? get statusId => _$this._statusId; + set statusId(String? statusId) => _$this._statusId = statusId; - String _categoryId; - String get categoryId => _$this._categoryId; - set categoryId(String categoryId) => _$this._categoryId = categoryId; + String? _categoryId; + String? get categoryId => _$this._categoryId; + set categoryId(String? categoryId) => _$this._categoryId = categoryId; - String _invoiceIds; - String get invoiceIds => _$this._invoiceIds; - set invoiceIds(String invoiceIds) => _$this._invoiceIds = invoiceIds; + String? _invoiceIds; + String? get invoiceIds => _$this._invoiceIds; + set invoiceIds(String? invoiceIds) => _$this._invoiceIds = invoiceIds; - String _paymentId; - String get paymentId => _$this._paymentId; - set paymentId(String paymentId) => _$this._paymentId = paymentId; + String? _paymentId; + String? get paymentId => _$this._paymentId; + set paymentId(String? paymentId) => _$this._paymentId = paymentId; - String _expenseId; - String get expenseId => _$this._expenseId; - set expenseId(String expenseId) => _$this._expenseId = expenseId; + String? _expenseId; + String? get expenseId => _$this._expenseId; + set expenseId(String? expenseId) => _$this._expenseId = expenseId; - String _vendorId; - String get vendorId => _$this._vendorId; - set vendorId(String vendorId) => _$this._vendorId = vendorId; + String? _vendorId; + String? get vendorId => _$this._vendorId; + set vendorId(String? vendorId) => _$this._vendorId = vendorId; - int _transactionId; - int get transactionId => _$this._transactionId; - set transactionId(int transactionId) => _$this._transactionId = transactionId; + int? _transactionId; + int? get transactionId => _$this._transactionId; + set transactionId(int? transactionId) => + _$this._transactionId = transactionId; - String _transactionRuleId; - String get transactionRuleId => _$this._transactionRuleId; - set transactionRuleId(String transactionRuleId) => + String? _transactionRuleId; + String? get transactionRuleId => _$this._transactionRuleId; + set transactionRuleId(String? transactionRuleId) => _$this._transactionRuleId = transactionRuleId; - String _pendingVendorId; - String get pendingVendorId => _$this._pendingVendorId; - set pendingVendorId(String pendingVendorId) => + String? _pendingVendorId; + String? get pendingVendorId => _$this._pendingVendorId; + set pendingVendorId(String? pendingVendorId) => _$this._pendingVendorId = pendingVendorId; - String _pendingCategoryId; - String get pendingCategoryId => _$this._pendingCategoryId; - set pendingCategoryId(String pendingCategoryId) => + String? _pendingCategoryId; + String? get pendingCategoryId => _$this._pendingCategoryId; + set pendingCategoryId(String? pendingCategoryId) => _$this._pendingCategoryId = pendingCategoryId; - String _pendingExpenseId; - String get pendingExpenseId => _$this._pendingExpenseId; - set pendingExpenseId(String pendingExpenseId) => + String? _pendingExpenseId; + String? get pendingExpenseId => _$this._pendingExpenseId; + set pendingExpenseId(String? pendingExpenseId) => _$this._pendingExpenseId = pendingExpenseId; - bool _isChanged; - bool get isChanged => _$this._isChanged; - set isChanged(bool isChanged) => _$this._isChanged = isChanged; + bool? _isChanged; + bool? get isChanged => _$this._isChanged; + set isChanged(bool? isChanged) => _$this._isChanged = isChanged; - int _createdAt; - int get createdAt => _$this._createdAt; - set createdAt(int createdAt) => _$this._createdAt = createdAt; + int? _createdAt; + int? get createdAt => _$this._createdAt; + set createdAt(int? createdAt) => _$this._createdAt = createdAt; - int _updatedAt; - int get updatedAt => _$this._updatedAt; - set updatedAt(int updatedAt) => _$this._updatedAt = updatedAt; + int? _updatedAt; + int? get updatedAt => _$this._updatedAt; + set updatedAt(int? updatedAt) => _$this._updatedAt = updatedAt; - int _archivedAt; - int get archivedAt => _$this._archivedAt; - set archivedAt(int archivedAt) => _$this._archivedAt = archivedAt; + int? _archivedAt; + int? get archivedAt => _$this._archivedAt; + set archivedAt(int? archivedAt) => _$this._archivedAt = archivedAt; - bool _isDeleted; - bool get isDeleted => _$this._isDeleted; - set isDeleted(bool isDeleted) => _$this._isDeleted = isDeleted; + bool? _isDeleted; + bool? get isDeleted => _$this._isDeleted; + set isDeleted(bool? isDeleted) => _$this._isDeleted = isDeleted; - String _createdUserId; - String get createdUserId => _$this._createdUserId; - set createdUserId(String createdUserId) => + String? _createdUserId; + String? get createdUserId => _$this._createdUserId; + set createdUserId(String? createdUserId) => _$this._createdUserId = createdUserId; - String _assignedUserId; - String get assignedUserId => _$this._assignedUserId; - set assignedUserId(String assignedUserId) => + String? _assignedUserId; + String? get assignedUserId => _$this._assignedUserId; + set assignedUserId(String? assignedUserId) => _$this._assignedUserId = assignedUserId; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; TransactionEntityBuilder() { TransactionEntity._initializeBuilder(this); @@ -966,7 +967,7 @@ class TransactionEntityBuilder } @override - void update(void Function(TransactionEntityBuilder) updates) { + void update(void Function(TransactionEntityBuilder)? updates) { if (updates != null) updates(this); } @@ -1023,10 +1024,11 @@ class _$TransactionStatusEntity extends TransactionStatusEntity { final String name; factory _$TransactionStatusEntity( - [void Function(TransactionStatusEntityBuilder) updates]) => + [void Function(TransactionStatusEntityBuilder)? updates]) => (new TransactionStatusEntityBuilder()..update(updates))._build(); - _$TransactionStatusEntity._({this.id, this.name}) : super._() { + _$TransactionStatusEntity._({required this.id, required this.name}) + : super._() { BuiltValueNullFieldError.checkNotNull(id, r'TransactionStatusEntity', 'id'); BuiltValueNullFieldError.checkNotNull( name, r'TransactionStatusEntity', 'name'); @@ -1049,10 +1051,10 @@ class _$TransactionStatusEntity extends TransactionStatusEntity { name == other.name; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, id.hashCode); _$hash = $jc(_$hash, name.hashCode); @@ -1072,15 +1074,15 @@ class _$TransactionStatusEntity extends TransactionStatusEntity { class TransactionStatusEntityBuilder implements Builder { - _$TransactionStatusEntity _$v; + _$TransactionStatusEntity? _$v; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; - String _name; - String get name => _$this._name; - set name(String name) => _$this._name = name; + String? _name; + String? get name => _$this._name; + set name(String? name) => _$this._name = name; TransactionStatusEntityBuilder(); @@ -1101,7 +1103,7 @@ class TransactionStatusEntityBuilder } @override - void update(void Function(TransactionStatusEntityBuilder) updates) { + void update(void Function(TransactionStatusEntityBuilder)? updates) { if (updates != null) updates(this); } diff --git a/lib/data/models/transaction_rule_model.dart b/lib/data/models/transaction_rule_model.dart index e7e052303..b9caafabf 100644 --- a/lib/data/models/transaction_rule_model.dart +++ b/lib/data/models/transaction_rule_model.dart @@ -53,7 +53,7 @@ class TransactionRuleFields { abstract class TransactionRuleEntity extends Object with BaseEntity implements Built { - factory TransactionRuleEntity({String id, AppState state}) { + factory TransactionRuleEntity({String? id, AppState? state}) { return _$TransactionRuleEntity._( id: id ?? BaseEntity.nextId, isChanged: false, @@ -96,23 +96,23 @@ abstract class TransactionRuleEntity extends Object @BuiltValueField(wireName: 'category_id') String get categoryId; - BuiltList get rules; + BuiltList get rules; @override EntityType get entityType => EntityType.transactionRule; @override - List getActions( - {UserCompanyEntity userCompany, - ClientEntity client, + List getActions( + {UserCompanyEntity? userCompany, + ClientEntity? client, bool includeEdit = false, bool multiselect = false}) { - final actions = []; + final actions = []; - if (!isDeleted && + if (!isDeleted! && !multiselect && includeEdit && - userCompany.canEditEntity(this)) { + userCompany!.canEditEntity(this)) { actions.add(EntityAction.edit); } @@ -123,7 +123,7 @@ abstract class TransactionRuleEntity extends Object return actions..addAll(super.getActions(userCompany: userCompany)); } - int compareTo(TransactionRuleEntity transactionRule, String sortField, + int compareTo(TransactionRuleEntity? transactionRule, String sortField, bool sortAscending) { int response = 0; final transactionRuleA = sortAscending ? this : transactionRule; @@ -132,9 +132,9 @@ abstract class TransactionRuleEntity extends Object switch (sortField) { // STARTER: sort switch - do not remove comment case TransactionRuleFields.name: - response = transactionRuleA.name + response = transactionRuleA!.name .toLowerCase() - .compareTo(transactionRuleB.name.toLowerCase()); + .compareTo(transactionRuleB!.name.toLowerCase()); break; default: @@ -145,14 +145,14 @@ abstract class TransactionRuleEntity extends Object if (response == 0) { // STARTER: sort default - do not remove comment - return transactionRuleA.name.compareTo(transactionRuleB.name); + return transactionRuleA!.name.compareTo(transactionRuleB!.name); } else { return response; } } @override - bool matchesFilter(String filter) { + bool matchesFilter(String? filter) { return matchesStrings( haystacks: [ name, @@ -162,7 +162,7 @@ abstract class TransactionRuleEntity extends Object } @override - String matchesFilterValue(String filter) { + String? matchesFilterValue(String? filter) { return matchesStringsValue( haystacks: [ // @@ -175,10 +175,10 @@ abstract class TransactionRuleEntity extends Object String get listDisplayName => name; @override - double get listDisplayAmount => null; + double? get listDisplayAmount => null; @override - FormatNumberType get listDisplayAmountType => null; + FormatNumberType? get listDisplayAmountType => null; static Serializer get serializer => _$transactionRuleEntitySerializer; @@ -189,7 +189,7 @@ abstract class TransactionRuleCriteriaEntity Built { factory TransactionRuleCriteriaEntity( - {String searchKey, String operator, String value}) { + {String? searchKey, String? operator, String? value}) { return _$TransactionRuleCriteriaEntity._( searchKey: searchKey ?? SEARCH_KEY_DESCRIPTION, operator: operator ?? STRING_OPERATOR_CONTAINS, diff --git a/lib/data/models/transaction_rule_model.g.dart b/lib/data/models/transaction_rule_model.g.dart index 9f92e1df9..e56f175d7 100644 --- a/lib/data/models/transaction_rule_model.g.dart +++ b/lib/data/models/transaction_rule_model.g.dart @@ -29,10 +29,10 @@ class _$TransactionRuleListResponseSerializer final String wireName = 'TransactionRuleListResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, TransactionRuleListResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType( @@ -44,21 +44,21 @@ class _$TransactionRuleListResponseSerializer @override TransactionRuleListResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TransactionRuleListResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, - specifiedType: const FullType( - BuiltList, const [const FullType(TransactionRuleEntity)])) - as BuiltList); + specifiedType: const FullType(BuiltList, const [ + const FullType(TransactionRuleEntity) + ]))! as BuiltList); break; } } @@ -78,10 +78,10 @@ class _$TransactionRuleItemResponseSerializer final String wireName = 'TransactionRuleItemResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, TransactionRuleItemResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType(TransactionRuleEntity)), @@ -92,19 +92,19 @@ class _$TransactionRuleItemResponseSerializer @override TransactionRuleItemResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TransactionRuleItemResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, - specifiedType: const FullType(TransactionRuleEntity)) + specifiedType: const FullType(TransactionRuleEntity))! as TransactionRuleEntity); break; } @@ -125,10 +125,10 @@ class _$TransactionRuleEntitySerializer final String wireName = 'TransactionRuleEntity'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, TransactionRuleEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'name', serializers.serialize(object.name, specifiedType: const FullType(String)), 'matches_on_all', @@ -149,7 +149,7 @@ class _$TransactionRuleEntitySerializer 'rules', serializers.serialize(object.rules, specifiedType: const FullType(BuiltList, - const [const FullType(TransactionRuleCriteriaEntity)])), + const [const FullType.nullable(TransactionRuleCriteriaEntity)])), 'created_at', serializers.serialize(object.createdAt, specifiedType: const FullType(int)), @@ -162,7 +162,7 @@ class _$TransactionRuleEntitySerializer 'id', serializers.serialize(object.id, specifiedType: const FullType(String)), ]; - Object value; + Object? value; value = object.isChanged; if (value != null) { result @@ -196,77 +196,77 @@ class _$TransactionRuleEntitySerializer @override TransactionRuleEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TransactionRuleEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'name': result.name = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'matches_on_all': result.matchesOnAll = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'auto_convert': result.autoConvert = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'applies_to': result.appliesTo = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'vendor_id': result.vendorId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'category_id': result.categoryId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'rules': result.rules.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltList, const [ - const FullType(TransactionRuleCriteriaEntity) - ])) as BuiltList); + const FullType.nullable(TransactionRuleCriteriaEntity) + ]))! as BuiltList); break; case 'isChanged': result.isChanged = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'created_at': result.createdAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'updated_at': result.updatedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'archived_at': result.archivedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'is_deleted': result.isDeleted = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'user_id': result.createdUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'assigned_user_id': result.assignedUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -286,10 +286,10 @@ class _$TransactionRuleCriteriaEntitySerializer final String wireName = 'TransactionRuleCriteriaEntity'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, TransactionRuleCriteriaEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'search_key', serializers.serialize(object.searchKey, specifiedType: const FullType(String)), @@ -306,27 +306,27 @@ class _$TransactionRuleCriteriaEntitySerializer @override TransactionRuleCriteriaEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TransactionRuleCriteriaEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'search_key': result.searchKey = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'operator': result.operator = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'value': result.value = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -340,10 +340,10 @@ class _$TransactionRuleListResponse extends TransactionRuleListResponse { final BuiltList data; factory _$TransactionRuleListResponse( - [void Function(TransactionRuleListResponseBuilder) updates]) => + [void Function(TransactionRuleListResponseBuilder)? updates]) => (new TransactionRuleListResponseBuilder()..update(updates))._build(); - _$TransactionRuleListResponse._({this.data}) : super._() { + _$TransactionRuleListResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull( data, r'TransactionRuleListResponse', 'data'); } @@ -363,10 +363,10 @@ class _$TransactionRuleListResponse extends TransactionRuleListResponse { return other is TransactionRuleListResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -385,12 +385,12 @@ class TransactionRuleListResponseBuilder implements Builder { - _$TransactionRuleListResponse _$v; + _$TransactionRuleListResponse? _$v; - ListBuilder _data; + ListBuilder? _data; ListBuilder get data => _$this._data ??= new ListBuilder(); - set data(ListBuilder data) => _$this._data = data; + set data(ListBuilder? data) => _$this._data = data; TransactionRuleListResponseBuilder(); @@ -410,7 +410,7 @@ class TransactionRuleListResponseBuilder } @override - void update(void Function(TransactionRuleListResponseBuilder) updates) { + void update(void Function(TransactionRuleListResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -422,7 +422,7 @@ class TransactionRuleListResponseBuilder try { _$result = _$v ?? new _$TransactionRuleListResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -442,10 +442,10 @@ class _$TransactionRuleItemResponse extends TransactionRuleItemResponse { final TransactionRuleEntity data; factory _$TransactionRuleItemResponse( - [void Function(TransactionRuleItemResponseBuilder) updates]) => + [void Function(TransactionRuleItemResponseBuilder)? updates]) => (new TransactionRuleItemResponseBuilder()..update(updates))._build(); - _$TransactionRuleItemResponse._({this.data}) : super._() { + _$TransactionRuleItemResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull( data, r'TransactionRuleItemResponse', 'data'); } @@ -465,10 +465,10 @@ class _$TransactionRuleItemResponse extends TransactionRuleItemResponse { return other is TransactionRuleItemResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -487,12 +487,12 @@ class TransactionRuleItemResponseBuilder implements Builder { - _$TransactionRuleItemResponse _$v; + _$TransactionRuleItemResponse? _$v; - TransactionRuleEntityBuilder _data; + TransactionRuleEntityBuilder? _data; TransactionRuleEntityBuilder get data => _$this._data ??= new TransactionRuleEntityBuilder(); - set data(TransactionRuleEntityBuilder data) => _$this._data = data; + set data(TransactionRuleEntityBuilder? data) => _$this._data = data; TransactionRuleItemResponseBuilder(); @@ -512,7 +512,7 @@ class TransactionRuleItemResponseBuilder } @override - void update(void Function(TransactionRuleItemResponseBuilder) updates) { + void update(void Function(TransactionRuleItemResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -524,7 +524,7 @@ class TransactionRuleItemResponseBuilder try { _$result = _$v ?? new _$TransactionRuleItemResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -553,9 +553,9 @@ class _$TransactionRuleEntity extends TransactionRuleEntity { @override final String categoryId; @override - final BuiltList rules; + final BuiltList rules; @override - final bool isChanged; + final bool? isChanged; @override final int createdAt; @override @@ -563,34 +563,34 @@ class _$TransactionRuleEntity extends TransactionRuleEntity { @override final int archivedAt; @override - final bool isDeleted; + final bool? isDeleted; @override - final String createdUserId; + final String? createdUserId; @override - final String assignedUserId; + final String? assignedUserId; @override final String id; factory _$TransactionRuleEntity( - [void Function(TransactionRuleEntityBuilder) updates]) => + [void Function(TransactionRuleEntityBuilder)? updates]) => (new TransactionRuleEntityBuilder()..update(updates))._build(); _$TransactionRuleEntity._( - {this.name, - this.matchesOnAll, - this.autoConvert, - this.appliesTo, - this.vendorId, - this.categoryId, - this.rules, + {required this.name, + required this.matchesOnAll, + required this.autoConvert, + required this.appliesTo, + required this.vendorId, + required this.categoryId, + required this.rules, this.isChanged, - this.createdAt, - this.updatedAt, - this.archivedAt, + required this.createdAt, + required this.updatedAt, + required this.archivedAt, this.isDeleted, this.createdUserId, this.assignedUserId, - this.id}) + required this.id}) : super._() { BuiltValueNullFieldError.checkNotNull( name, r'TransactionRuleEntity', 'name'); @@ -645,10 +645,10 @@ class _$TransactionRuleEntity extends TransactionRuleEntity { id == other.id; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, name.hashCode); _$hash = $jc(_$hash, matchesOnAll.hashCode); @@ -693,71 +693,71 @@ class _$TransactionRuleEntity extends TransactionRuleEntity { class TransactionRuleEntityBuilder implements Builder { - _$TransactionRuleEntity _$v; + _$TransactionRuleEntity? _$v; - String _name; - String get name => _$this._name; - set name(String name) => _$this._name = name; + String? _name; + String? get name => _$this._name; + set name(String? name) => _$this._name = name; - bool _matchesOnAll; - bool get matchesOnAll => _$this._matchesOnAll; - set matchesOnAll(bool matchesOnAll) => _$this._matchesOnAll = matchesOnAll; + bool? _matchesOnAll; + bool? get matchesOnAll => _$this._matchesOnAll; + set matchesOnAll(bool? matchesOnAll) => _$this._matchesOnAll = matchesOnAll; - bool _autoConvert; - bool get autoConvert => _$this._autoConvert; - set autoConvert(bool autoConvert) => _$this._autoConvert = autoConvert; + bool? _autoConvert; + bool? get autoConvert => _$this._autoConvert; + set autoConvert(bool? autoConvert) => _$this._autoConvert = autoConvert; - String _appliesTo; - String get appliesTo => _$this._appliesTo; - set appliesTo(String appliesTo) => _$this._appliesTo = appliesTo; + String? _appliesTo; + String? get appliesTo => _$this._appliesTo; + set appliesTo(String? appliesTo) => _$this._appliesTo = appliesTo; - String _vendorId; - String get vendorId => _$this._vendorId; - set vendorId(String vendorId) => _$this._vendorId = vendorId; + String? _vendorId; + String? get vendorId => _$this._vendorId; + set vendorId(String? vendorId) => _$this._vendorId = vendorId; - String _categoryId; - String get categoryId => _$this._categoryId; - set categoryId(String categoryId) => _$this._categoryId = categoryId; + String? _categoryId; + String? get categoryId => _$this._categoryId; + set categoryId(String? categoryId) => _$this._categoryId = categoryId; - ListBuilder _rules; - ListBuilder get rules => - _$this._rules ??= new ListBuilder(); - set rules(ListBuilder rules) => + ListBuilder? _rules; + ListBuilder get rules => + _$this._rules ??= new ListBuilder(); + set rules(ListBuilder? rules) => _$this._rules = rules; - bool _isChanged; - bool get isChanged => _$this._isChanged; - set isChanged(bool isChanged) => _$this._isChanged = isChanged; + bool? _isChanged; + bool? get isChanged => _$this._isChanged; + set isChanged(bool? isChanged) => _$this._isChanged = isChanged; - int _createdAt; - int get createdAt => _$this._createdAt; - set createdAt(int createdAt) => _$this._createdAt = createdAt; + int? _createdAt; + int? get createdAt => _$this._createdAt; + set createdAt(int? createdAt) => _$this._createdAt = createdAt; - int _updatedAt; - int get updatedAt => _$this._updatedAt; - set updatedAt(int updatedAt) => _$this._updatedAt = updatedAt; + int? _updatedAt; + int? get updatedAt => _$this._updatedAt; + set updatedAt(int? updatedAt) => _$this._updatedAt = updatedAt; - int _archivedAt; - int get archivedAt => _$this._archivedAt; - set archivedAt(int archivedAt) => _$this._archivedAt = archivedAt; + int? _archivedAt; + int? get archivedAt => _$this._archivedAt; + set archivedAt(int? archivedAt) => _$this._archivedAt = archivedAt; - bool _isDeleted; - bool get isDeleted => _$this._isDeleted; - set isDeleted(bool isDeleted) => _$this._isDeleted = isDeleted; + bool? _isDeleted; + bool? get isDeleted => _$this._isDeleted; + set isDeleted(bool? isDeleted) => _$this._isDeleted = isDeleted; - String _createdUserId; - String get createdUserId => _$this._createdUserId; - set createdUserId(String createdUserId) => + String? _createdUserId; + String? get createdUserId => _$this._createdUserId; + set createdUserId(String? createdUserId) => _$this._createdUserId = createdUserId; - String _assignedUserId; - String get assignedUserId => _$this._assignedUserId; - set assignedUserId(String assignedUserId) => + String? _assignedUserId; + String? get assignedUserId => _$this._assignedUserId; + set assignedUserId(String? assignedUserId) => _$this._assignedUserId = assignedUserId; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; TransactionRuleEntityBuilder(); @@ -791,7 +791,7 @@ class TransactionRuleEntityBuilder } @override - void update(void Function(TransactionRuleEntityBuilder) updates) { + void update(void Function(TransactionRuleEntityBuilder)? updates) { if (updates != null) updates(this); } @@ -827,7 +827,7 @@ class TransactionRuleEntityBuilder assignedUserId: assignedUserId, id: BuiltValueNullFieldError.checkNotNull(id, r'TransactionRuleEntity', 'id')); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'rules'; rules.build(); @@ -851,10 +851,11 @@ class _$TransactionRuleCriteriaEntity extends TransactionRuleCriteriaEntity { final String value; factory _$TransactionRuleCriteriaEntity( - [void Function(TransactionRuleCriteriaEntityBuilder) updates]) => + [void Function(TransactionRuleCriteriaEntityBuilder)? updates]) => (new TransactionRuleCriteriaEntityBuilder()..update(updates))._build(); - _$TransactionRuleCriteriaEntity._({this.searchKey, this.operator, this.value}) + _$TransactionRuleCriteriaEntity._( + {required this.searchKey, required this.operator, required this.value}) : super._() { BuiltValueNullFieldError.checkNotNull( searchKey, r'TransactionRuleCriteriaEntity', 'searchKey'); @@ -882,10 +883,10 @@ class _$TransactionRuleCriteriaEntity extends TransactionRuleCriteriaEntity { value == other.value; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, searchKey.hashCode); _$hash = $jc(_$hash, operator.hashCode); @@ -908,19 +909,19 @@ class TransactionRuleCriteriaEntityBuilder implements Builder { - _$TransactionRuleCriteriaEntity _$v; + _$TransactionRuleCriteriaEntity? _$v; - String _searchKey; - String get searchKey => _$this._searchKey; - set searchKey(String searchKey) => _$this._searchKey = searchKey; + String? _searchKey; + String? get searchKey => _$this._searchKey; + set searchKey(String? searchKey) => _$this._searchKey = searchKey; - String _operator; - String get operator => _$this._operator; - set operator(String operator) => _$this._operator = operator; + String? _operator; + String? get operator => _$this._operator; + set operator(String? operator) => _$this._operator = operator; - String _value; - String get value => _$this._value; - set value(String value) => _$this._value = value; + String? _value; + String? get value => _$this._value; + set value(String? value) => _$this._value = value; TransactionRuleCriteriaEntityBuilder() { TransactionRuleCriteriaEntity._initializeBuilder(this); @@ -944,7 +945,7 @@ class TransactionRuleCriteriaEntityBuilder } @override - void update(void Function(TransactionRuleCriteriaEntityBuilder) updates) { + void update(void Function(TransactionRuleCriteriaEntityBuilder)? updates) { if (updates != null) updates(this); } diff --git a/lib/data/models/user_model.dart b/lib/data/models/user_model.dart index 72ae7e480..3eba576b7 100644 --- a/lib/data/models/user_model.dart +++ b/lib/data/models/user_model.dart @@ -115,7 +115,7 @@ abstract class UserEntity extends Object with BaseEntity, SelectableEntity implements Built { factory UserEntity( - {String id, AppState state, UserCompanyEntity userCompany}) { + {String? id, AppState? state, UserCompanyEntity? userCompany}) { return _$UserEntity._( id: id ?? BaseEntity.nextId, isChanged: false, @@ -171,9 +171,8 @@ abstract class UserEntity extends Object String get password; - @nullable @BuiltValueField(wireName: 'email_verified_at') - int get emailVerifiedAt; + int? get emailVerifiedAt; @BuiltValueField(wireName: 'verified_phone_number') bool get phoneVerified; @@ -202,9 +201,8 @@ abstract class UserEntity extends Object @BuiltValueField(wireName: 'oauth_user_token') String get oauthUserToken; - @nullable @BuiltValueField(wireName: 'company_user') - UserCompanyEntity get userCompany; + UserCompanyEntity? get userCompany; @BuiltValueField(wireName: 'oauth_provider_id') String get oauthProvider; @@ -219,24 +217,24 @@ abstract class UserEntity extends Object return fullName.isNotEmpty ? fullName : email; } - int compareTo(UserEntity user, String sortField, bool sortAscending) { + int compareTo(UserEntity? user, String sortField, bool sortAscending) { int response = 0; - final UserEntity userA = sortAscending ? this : user; - final UserEntity userB = sortAscending ? user : this; + final UserEntity? userA = sortAscending ? this : user; + final UserEntity? userB = sortAscending ? user : this; switch (sortField) { case UserFields.lastName: - response = userA.lastName + response = userA!.lastName .toLowerCase() - .compareTo(userB.lastName.toLowerCase()); + .compareTo(userB!.lastName.toLowerCase()); break; case UserFields.firstName: - response = userA.firstName + response = userA!.firstName .toLowerCase() - .compareTo(userB.firstName.toLowerCase()); + .compareTo(userB!.firstName.toLowerCase()); break; case UserFields.email: - response = userA.email.compareTo(userB.email); + response = userA!.email.compareTo(userB!.email); break; default: print('## ERROR: sort by user.$sortField is not implemented'); @@ -247,7 +245,7 @@ abstract class UserEntity extends Object } @override - bool matchesFilter(String filter) { + bool matchesFilter(String? filter) { return matchesStrings( haystacks: [ firstName, @@ -264,7 +262,7 @@ abstract class UserEntity extends Object } @override - String matchesFilterValue(String filter) { + String? matchesFilterValue(String? filter) { return matchesStringsValue( haystacks: [ firstName, @@ -281,22 +279,22 @@ abstract class UserEntity extends Object } @override - List getActions( - {UserCompanyEntity userCompany, - ClientEntity client, + List getActions( + {UserCompanyEntity? userCompany, + ClientEntity? client, bool includeEdit = false, bool includePreview = false, bool multiselect = false}) { - final actions = []; + final actions = []; - if (!isDeleted && !multiselect) { - if (includeEdit && userCompany.canEditEntity(this)) { + if (!isDeleted! && !multiselect) { + if (includeEdit && userCompany!.canEditEntity(this)) { actions.add(EntityAction.edit); } } - if (userCompany.isAdmin || userCompany.isOwner) { - if (!isDeleted && !isEmailVerified) { + if (userCompany!.isAdmin || userCompany.isOwner) { + if (!isDeleted! && !isEmailVerified) { actions.add(EntityAction.resendInvite); } @@ -311,10 +309,10 @@ abstract class UserEntity extends Object } @override - double get listDisplayAmount => null; + double? get listDisplayAmount => null; @override - FormatNumberType get listDisplayAmountType => null; + FormatNumberType? get listDisplayAmountType => null; bool get isConnectedToOAuth => isConnectedToGoogle || isConnectedToMicrosoft; diff --git a/lib/data/models/user_model.g.dart b/lib/data/models/user_model.g.dart index 9759f6ab6..c7f7e9af0 100644 --- a/lib/data/models/user_model.g.dart +++ b/lib/data/models/user_model.g.dart @@ -26,9 +26,9 @@ class _$UserListResponseSerializer final String wireName = 'UserListResponse'; @override - Iterable serialize(Serializers serializers, UserListResponse object, + Iterable serialize(Serializers serializers, UserListResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: @@ -40,21 +40,21 @@ class _$UserListResponseSerializer @override UserListResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new UserListResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(UserEntity)])) - as BuiltList); + BuiltList, const [const FullType(UserEntity)]))! + as BuiltList); break; } } @@ -71,9 +71,9 @@ class _$UserItemResponseSerializer final String wireName = 'UserItemResponse'; @override - Iterable serialize(Serializers serializers, UserItemResponse object, + Iterable serialize(Serializers serializers, UserItemResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType(UserEntity)), @@ -84,19 +84,19 @@ class _$UserItemResponseSerializer @override UserItemResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new UserItemResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, - specifiedType: const FullType(UserEntity)) as UserEntity); + specifiedType: const FullType(UserEntity))! as UserEntity); break; } } @@ -116,10 +116,10 @@ class _$UserTwoFactorResponseSerializer final String wireName = 'UserTwoFactorResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, UserTwoFactorResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType(UserTwoFactorData)), @@ -130,19 +130,19 @@ class _$UserTwoFactorResponseSerializer @override UserTwoFactorResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new UserTwoFactorResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, - specifiedType: const FullType(UserTwoFactorData)) + specifiedType: const FullType(UserTwoFactorData))! as UserTwoFactorData); break; } @@ -160,9 +160,9 @@ class _$UserTwoFactorDataSerializer final String wireName = 'UserTwoFactorData'; @override - Iterable serialize(Serializers serializers, UserTwoFactorData object, + Iterable serialize(Serializers serializers, UserTwoFactorData object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'secret', serializers.serialize(object.secret, specifiedType: const FullType(String)), @@ -176,23 +176,23 @@ class _$UserTwoFactorDataSerializer @override UserTwoFactorData deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new UserTwoFactorDataBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'secret': result.secret = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'qrCode': result.qrCode = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -212,10 +212,10 @@ class _$UserCompanyItemResponseSerializer final String wireName = 'UserCompanyItemResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, UserCompanyItemResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType(UserCompanyEntity)), @@ -226,19 +226,19 @@ class _$UserCompanyItemResponseSerializer @override UserCompanyItemResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new UserCompanyItemResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, - specifiedType: const FullType(UserCompanyEntity)) + specifiedType: const FullType(UserCompanyEntity))! as UserCompanyEntity); break; } @@ -255,9 +255,9 @@ class _$UserEntitySerializer implements StructuredSerializer { final String wireName = 'UserEntity'; @override - Iterable serialize(Serializers serializers, UserEntity object, + Iterable serialize(Serializers serializers, UserEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'first_name', serializers.serialize(object.firstName, specifiedType: const FullType(String)), @@ -315,7 +315,7 @@ class _$UserEntitySerializer implements StructuredSerializer { 'id', serializers.serialize(object.id, specifiedType: const FullType(String)), ]; - Object value; + Object? value; value = object.emailVerifiedAt; if (value != null) { result @@ -361,116 +361,116 @@ class _$UserEntitySerializer implements StructuredSerializer { } @override - UserEntity deserialize(Serializers serializers, Iterable serialized, + UserEntity deserialize(Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new UserEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'first_name': result.firstName = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'last_name': result.lastName = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'email': result.email = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'phone': result.phone = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'password': result.password = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'email_verified_at': result.emailVerifiedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int)) as int?; break; case 'verified_phone_number': result.phoneVerified = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'custom_value1': result.customValue1 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value2': result.customValue2 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value3': result.customValue3 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value4': result.customValue4 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'google_2fa_secret': result.isTwoFactorEnabled = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'has_password': result.hasPassword = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'last_confirmed_email_address': result.lastEmailAddress = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'oauth_user_token': result.oauthUserToken = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'company_user': result.userCompany.replace(serializers.deserialize(value, - specifiedType: const FullType(UserCompanyEntity)) + specifiedType: const FullType(UserCompanyEntity))! as UserCompanyEntity); break; case 'oauth_provider_id': result.oauthProvider = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'isChanged': result.isChanged = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'created_at': result.createdAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'updated_at': result.updatedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'archived_at': result.archivedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'is_deleted': result.isDeleted = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'user_id': result.createdUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'assigned_user_id': result.assignedUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -484,10 +484,10 @@ class _$UserListResponse extends UserListResponse { final BuiltList data; factory _$UserListResponse( - [void Function(UserListResponseBuilder) updates]) => + [void Function(UserListResponseBuilder)? updates]) => (new UserListResponseBuilder()..update(updates))._build(); - _$UserListResponse._({this.data}) : super._() { + _$UserListResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull(data, r'UserListResponse', 'data'); } @@ -505,10 +505,10 @@ class _$UserListResponse extends UserListResponse { return other is UserListResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -524,12 +524,12 @@ class _$UserListResponse extends UserListResponse { class UserListResponseBuilder implements Builder { - _$UserListResponse _$v; + _$UserListResponse? _$v; - ListBuilder _data; + ListBuilder? _data; ListBuilder get data => _$this._data ??= new ListBuilder(); - set data(ListBuilder data) => _$this._data = data; + set data(ListBuilder? data) => _$this._data = data; UserListResponseBuilder(); @@ -549,7 +549,7 @@ class UserListResponseBuilder } @override - void update(void Function(UserListResponseBuilder) updates) { + void update(void Function(UserListResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -561,7 +561,7 @@ class UserListResponseBuilder try { _$result = _$v ?? new _$UserListResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -581,10 +581,10 @@ class _$UserItemResponse extends UserItemResponse { final UserEntity data; factory _$UserItemResponse( - [void Function(UserItemResponseBuilder) updates]) => + [void Function(UserItemResponseBuilder)? updates]) => (new UserItemResponseBuilder()..update(updates))._build(); - _$UserItemResponse._({this.data}) : super._() { + _$UserItemResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull(data, r'UserItemResponse', 'data'); } @@ -602,10 +602,10 @@ class _$UserItemResponse extends UserItemResponse { return other is UserItemResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -621,11 +621,11 @@ class _$UserItemResponse extends UserItemResponse { class UserItemResponseBuilder implements Builder { - _$UserItemResponse _$v; + _$UserItemResponse? _$v; - UserEntityBuilder _data; + UserEntityBuilder? _data; UserEntityBuilder get data => _$this._data ??= new UserEntityBuilder(); - set data(UserEntityBuilder data) => _$this._data = data; + set data(UserEntityBuilder? data) => _$this._data = data; UserItemResponseBuilder(); @@ -645,7 +645,7 @@ class UserItemResponseBuilder } @override - void update(void Function(UserItemResponseBuilder) updates) { + void update(void Function(UserItemResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -657,7 +657,7 @@ class UserItemResponseBuilder try { _$result = _$v ?? new _$UserItemResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -677,10 +677,10 @@ class _$UserTwoFactorResponse extends UserTwoFactorResponse { final UserTwoFactorData data; factory _$UserTwoFactorResponse( - [void Function(UserTwoFactorResponseBuilder) updates]) => + [void Function(UserTwoFactorResponseBuilder)? updates]) => (new UserTwoFactorResponseBuilder()..update(updates))._build(); - _$UserTwoFactorResponse._({this.data}) : super._() { + _$UserTwoFactorResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull( data, r'UserTwoFactorResponse', 'data'); } @@ -700,10 +700,10 @@ class _$UserTwoFactorResponse extends UserTwoFactorResponse { return other is UserTwoFactorResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -720,12 +720,12 @@ class _$UserTwoFactorResponse extends UserTwoFactorResponse { class UserTwoFactorResponseBuilder implements Builder { - _$UserTwoFactorResponse _$v; + _$UserTwoFactorResponse? _$v; - UserTwoFactorDataBuilder _data; + UserTwoFactorDataBuilder? _data; UserTwoFactorDataBuilder get data => _$this._data ??= new UserTwoFactorDataBuilder(); - set data(UserTwoFactorDataBuilder data) => _$this._data = data; + set data(UserTwoFactorDataBuilder? data) => _$this._data = data; UserTwoFactorResponseBuilder(); @@ -745,7 +745,7 @@ class UserTwoFactorResponseBuilder } @override - void update(void Function(UserTwoFactorResponseBuilder) updates) { + void update(void Function(UserTwoFactorResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -757,7 +757,7 @@ class UserTwoFactorResponseBuilder try { _$result = _$v ?? new _$UserTwoFactorResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -779,10 +779,11 @@ class _$UserTwoFactorData extends UserTwoFactorData { final String qrCode; factory _$UserTwoFactorData( - [void Function(UserTwoFactorDataBuilder) updates]) => + [void Function(UserTwoFactorDataBuilder)? updates]) => (new UserTwoFactorDataBuilder()..update(updates))._build(); - _$UserTwoFactorData._({this.secret, this.qrCode}) : super._() { + _$UserTwoFactorData._({required this.secret, required this.qrCode}) + : super._() { BuiltValueNullFieldError.checkNotNull( secret, r'UserTwoFactorData', 'secret'); BuiltValueNullFieldError.checkNotNull( @@ -805,10 +806,10 @@ class _$UserTwoFactorData extends UserTwoFactorData { qrCode == other.qrCode; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, secret.hashCode); _$hash = $jc(_$hash, qrCode.hashCode); @@ -827,15 +828,15 @@ class _$UserTwoFactorData extends UserTwoFactorData { class UserTwoFactorDataBuilder implements Builder { - _$UserTwoFactorData _$v; + _$UserTwoFactorData? _$v; - String _secret; - String get secret => _$this._secret; - set secret(String secret) => _$this._secret = secret; + String? _secret; + String? get secret => _$this._secret; + set secret(String? secret) => _$this._secret = secret; - String _qrCode; - String get qrCode => _$this._qrCode; - set qrCode(String qrCode) => _$this._qrCode = qrCode; + String? _qrCode; + String? get qrCode => _$this._qrCode; + set qrCode(String? qrCode) => _$this._qrCode = qrCode; UserTwoFactorDataBuilder(); @@ -856,7 +857,7 @@ class UserTwoFactorDataBuilder } @override - void update(void Function(UserTwoFactorDataBuilder) updates) { + void update(void Function(UserTwoFactorDataBuilder)? updates) { if (updates != null) updates(this); } @@ -880,10 +881,10 @@ class _$UserCompanyItemResponse extends UserCompanyItemResponse { final UserCompanyEntity data; factory _$UserCompanyItemResponse( - [void Function(UserCompanyItemResponseBuilder) updates]) => + [void Function(UserCompanyItemResponseBuilder)? updates]) => (new UserCompanyItemResponseBuilder()..update(updates))._build(); - _$UserCompanyItemResponse._({this.data}) : super._() { + _$UserCompanyItemResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull( data, r'UserCompanyItemResponse', 'data'); } @@ -903,10 +904,10 @@ class _$UserCompanyItemResponse extends UserCompanyItemResponse { return other is UserCompanyItemResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -924,12 +925,12 @@ class _$UserCompanyItemResponse extends UserCompanyItemResponse { class UserCompanyItemResponseBuilder implements Builder { - _$UserCompanyItemResponse _$v; + _$UserCompanyItemResponse? _$v; - UserCompanyEntityBuilder _data; + UserCompanyEntityBuilder? _data; UserCompanyEntityBuilder get data => _$this._data ??= new UserCompanyEntityBuilder(); - set data(UserCompanyEntityBuilder data) => _$this._data = data; + set data(UserCompanyEntityBuilder? data) => _$this._data = data; UserCompanyItemResponseBuilder(); @@ -949,7 +950,7 @@ class UserCompanyItemResponseBuilder } @override - void update(void Function(UserCompanyItemResponseBuilder) updates) { + void update(void Function(UserCompanyItemResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -961,7 +962,7 @@ class UserCompanyItemResponseBuilder try { _$result = _$v ?? new _$UserCompanyItemResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -988,7 +989,7 @@ class _$UserEntity extends UserEntity { @override final String password; @override - final int emailVerifiedAt; + final int? emailVerifiedAt; @override final bool phoneVerified; @override @@ -1008,11 +1009,11 @@ class _$UserEntity extends UserEntity { @override final String oauthUserToken; @override - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; @override final String oauthProvider; @override - final bool isChanged; + final bool? isChanged; @override final int createdAt; @override @@ -1020,43 +1021,43 @@ class _$UserEntity extends UserEntity { @override final int archivedAt; @override - final bool isDeleted; + final bool? isDeleted; @override - final String createdUserId; + final String? createdUserId; @override - final String assignedUserId; + final String? assignedUserId; @override final String id; - factory _$UserEntity([void Function(UserEntityBuilder) updates]) => + factory _$UserEntity([void Function(UserEntityBuilder)? updates]) => (new UserEntityBuilder()..update(updates))._build(); _$UserEntity._( - {this.firstName, - this.lastName, - this.email, - this.phone, - this.password, + {required this.firstName, + required this.lastName, + required this.email, + required this.phone, + required this.password, this.emailVerifiedAt, - this.phoneVerified, - this.customValue1, - this.customValue2, - this.customValue3, - this.customValue4, - this.isTwoFactorEnabled, - this.hasPassword, - this.lastEmailAddress, - this.oauthUserToken, + required this.phoneVerified, + required this.customValue1, + required this.customValue2, + required this.customValue3, + required this.customValue4, + required this.isTwoFactorEnabled, + required this.hasPassword, + required this.lastEmailAddress, + required this.oauthUserToken, this.userCompany, - this.oauthProvider, + required this.oauthProvider, this.isChanged, - this.createdAt, - this.updatedAt, - this.archivedAt, + required this.createdAt, + required this.updatedAt, + required this.archivedAt, this.isDeleted, this.createdUserId, this.assignedUserId, - this.id}) + required this.id}) : super._() { BuiltValueNullFieldError.checkNotNull( firstName, r'UserEntity', 'firstName'); @@ -1131,10 +1132,10 @@ class _$UserEntity extends UserEntity { id == other.id; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, firstName.hashCode); _$hash = $jc(_$hash, lastName.hashCode); @@ -1198,117 +1199,117 @@ class _$UserEntity extends UserEntity { } class UserEntityBuilder implements Builder { - _$UserEntity _$v; + _$UserEntity? _$v; - String _firstName; - String get firstName => _$this._firstName; - set firstName(String firstName) => _$this._firstName = firstName; + String? _firstName; + String? get firstName => _$this._firstName; + set firstName(String? firstName) => _$this._firstName = firstName; - String _lastName; - String get lastName => _$this._lastName; - set lastName(String lastName) => _$this._lastName = lastName; + String? _lastName; + String? get lastName => _$this._lastName; + set lastName(String? lastName) => _$this._lastName = lastName; - String _email; - String get email => _$this._email; - set email(String email) => _$this._email = email; + String? _email; + String? get email => _$this._email; + set email(String? email) => _$this._email = email; - String _phone; - String get phone => _$this._phone; - set phone(String phone) => _$this._phone = phone; + String? _phone; + String? get phone => _$this._phone; + set phone(String? phone) => _$this._phone = phone; - String _password; - String get password => _$this._password; - set password(String password) => _$this._password = password; + String? _password; + String? get password => _$this._password; + set password(String? password) => _$this._password = password; - int _emailVerifiedAt; - int get emailVerifiedAt => _$this._emailVerifiedAt; - set emailVerifiedAt(int emailVerifiedAt) => + int? _emailVerifiedAt; + int? get emailVerifiedAt => _$this._emailVerifiedAt; + set emailVerifiedAt(int? emailVerifiedAt) => _$this._emailVerifiedAt = emailVerifiedAt; - bool _phoneVerified; - bool get phoneVerified => _$this._phoneVerified; - set phoneVerified(bool phoneVerified) => + bool? _phoneVerified; + bool? get phoneVerified => _$this._phoneVerified; + set phoneVerified(bool? phoneVerified) => _$this._phoneVerified = phoneVerified; - String _customValue1; - String get customValue1 => _$this._customValue1; - set customValue1(String customValue1) => _$this._customValue1 = customValue1; + String? _customValue1; + String? get customValue1 => _$this._customValue1; + set customValue1(String? customValue1) => _$this._customValue1 = customValue1; - String _customValue2; - String get customValue2 => _$this._customValue2; - set customValue2(String customValue2) => _$this._customValue2 = customValue2; + String? _customValue2; + String? get customValue2 => _$this._customValue2; + set customValue2(String? customValue2) => _$this._customValue2 = customValue2; - String _customValue3; - String get customValue3 => _$this._customValue3; - set customValue3(String customValue3) => _$this._customValue3 = customValue3; + String? _customValue3; + String? get customValue3 => _$this._customValue3; + set customValue3(String? customValue3) => _$this._customValue3 = customValue3; - String _customValue4; - String get customValue4 => _$this._customValue4; - set customValue4(String customValue4) => _$this._customValue4 = customValue4; + String? _customValue4; + String? get customValue4 => _$this._customValue4; + set customValue4(String? customValue4) => _$this._customValue4 = customValue4; - bool _isTwoFactorEnabled; - bool get isTwoFactorEnabled => _$this._isTwoFactorEnabled; - set isTwoFactorEnabled(bool isTwoFactorEnabled) => + bool? _isTwoFactorEnabled; + bool? get isTwoFactorEnabled => _$this._isTwoFactorEnabled; + set isTwoFactorEnabled(bool? isTwoFactorEnabled) => _$this._isTwoFactorEnabled = isTwoFactorEnabled; - bool _hasPassword; - bool get hasPassword => _$this._hasPassword; - set hasPassword(bool hasPassword) => _$this._hasPassword = hasPassword; + bool? _hasPassword; + bool? get hasPassword => _$this._hasPassword; + set hasPassword(bool? hasPassword) => _$this._hasPassword = hasPassword; - String _lastEmailAddress; - String get lastEmailAddress => _$this._lastEmailAddress; - set lastEmailAddress(String lastEmailAddress) => + String? _lastEmailAddress; + String? get lastEmailAddress => _$this._lastEmailAddress; + set lastEmailAddress(String? lastEmailAddress) => _$this._lastEmailAddress = lastEmailAddress; - String _oauthUserToken; - String get oauthUserToken => _$this._oauthUserToken; - set oauthUserToken(String oauthUserToken) => + String? _oauthUserToken; + String? get oauthUserToken => _$this._oauthUserToken; + set oauthUserToken(String? oauthUserToken) => _$this._oauthUserToken = oauthUserToken; - UserCompanyEntityBuilder _userCompany; + UserCompanyEntityBuilder? _userCompany; UserCompanyEntityBuilder get userCompany => _$this._userCompany ??= new UserCompanyEntityBuilder(); - set userCompany(UserCompanyEntityBuilder userCompany) => + set userCompany(UserCompanyEntityBuilder? userCompany) => _$this._userCompany = userCompany; - String _oauthProvider; - String get oauthProvider => _$this._oauthProvider; - set oauthProvider(String oauthProvider) => + String? _oauthProvider; + String? get oauthProvider => _$this._oauthProvider; + set oauthProvider(String? oauthProvider) => _$this._oauthProvider = oauthProvider; - bool _isChanged; - bool get isChanged => _$this._isChanged; - set isChanged(bool isChanged) => _$this._isChanged = isChanged; + bool? _isChanged; + bool? get isChanged => _$this._isChanged; + set isChanged(bool? isChanged) => _$this._isChanged = isChanged; - int _createdAt; - int get createdAt => _$this._createdAt; - set createdAt(int createdAt) => _$this._createdAt = createdAt; + int? _createdAt; + int? get createdAt => _$this._createdAt; + set createdAt(int? createdAt) => _$this._createdAt = createdAt; - int _updatedAt; - int get updatedAt => _$this._updatedAt; - set updatedAt(int updatedAt) => _$this._updatedAt = updatedAt; + int? _updatedAt; + int? get updatedAt => _$this._updatedAt; + set updatedAt(int? updatedAt) => _$this._updatedAt = updatedAt; - int _archivedAt; - int get archivedAt => _$this._archivedAt; - set archivedAt(int archivedAt) => _$this._archivedAt = archivedAt; + int? _archivedAt; + int? get archivedAt => _$this._archivedAt; + set archivedAt(int? archivedAt) => _$this._archivedAt = archivedAt; - bool _isDeleted; - bool get isDeleted => _$this._isDeleted; - set isDeleted(bool isDeleted) => _$this._isDeleted = isDeleted; + bool? _isDeleted; + bool? get isDeleted => _$this._isDeleted; + set isDeleted(bool? isDeleted) => _$this._isDeleted = isDeleted; - String _createdUserId; - String get createdUserId => _$this._createdUserId; - set createdUserId(String createdUserId) => + String? _createdUserId; + String? get createdUserId => _$this._createdUserId; + set createdUserId(String? createdUserId) => _$this._createdUserId = createdUserId; - String _assignedUserId; - String get assignedUserId => _$this._assignedUserId; - set assignedUserId(String assignedUserId) => + String? _assignedUserId; + String? get assignedUserId => _$this._assignedUserId; + set assignedUserId(String? assignedUserId) => _$this._assignedUserId = assignedUserId; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; UserEntityBuilder() { UserEntity._initializeBuilder(this); @@ -1354,7 +1355,7 @@ class UserEntityBuilder implements Builder { } @override - void update(void Function(UserEntityBuilder) updates) { + void update(void Function(UserEntityBuilder)? updates) { if (updates != null) updates(this); } @@ -1402,7 +1403,7 @@ class UserEntityBuilder implements Builder { assignedUserId: assignedUserId, id: BuiltValueNullFieldError.checkNotNull(id, r'UserEntity', 'id')); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'userCompany'; _userCompany?.build(); diff --git a/lib/data/models/vendor_model.dart b/lib/data/models/vendor_model.dart index 355306ada..5663b9796 100644 --- a/lib/data/models/vendor_model.dart +++ b/lib/data/models/vendor_model.dart @@ -88,7 +88,7 @@ class VendorFields { abstract class VendorEntity extends Object with BaseEntity, SelectableEntity, HasActivities implements Built { - factory VendorEntity({String id, AppState state, UserEntity user}) { + factory VendorEntity({String? id, AppState? state, UserEntity? user}) { return _$VendorEntity._( id: id ?? BaseEntity.nextId, number: '', @@ -143,18 +143,17 @@ abstract class VendorEntity extends Object ..isChanged = false ..isDeleted = false); - @nullable @BuiltValueField(compare: false) - int get loadedAt; + int? get loadedAt; - bool get isLoaded => loadedAt != null && loadedAt > 0; + bool get isLoaded => loadedAt != null && loadedAt! > 0; bool get isStale { if (!isLoaded) { return true; } - return DateTime.now().millisecondsSinceEpoch - loadedAt > + return DateTime.now().millisecondsSinceEpoch - loadedAt! > kMillisecondsToRefreshActivities; } @@ -221,7 +220,7 @@ abstract class VendorEntity extends Object String get classification; - BuiltList get contacts; + BuiltList get contacts; @override BuiltList get activities; @@ -229,22 +228,22 @@ abstract class VendorEntity extends Object BuiltList get documents; @override - List getActions( - {UserCompanyEntity userCompany, - ClientEntity client, + List getActions( + {UserCompanyEntity? userCompany, + ClientEntity? client, bool includeEdit = false, bool includePreview = false, bool multiselect = false}) { - final actions = []; + final actions = []; - if (!isDeleted && !multiselect) { - if (includeEdit && userCompany.canEditEntity(this)) { + if (!isDeleted! && !multiselect) { + if (includeEdit && userCompany!.canEditEntity(this)) { actions.add(EntityAction.edit); } actions.add(EntityAction.vendorPortal); - if (userCompany.canCreate(EntityType.purchaseOrder)) { + if (userCompany!.canCreate(EntityType.purchaseOrder)) { actions.add(EntityAction.newPurchaseOrder); } @@ -257,7 +256,7 @@ abstract class VendorEntity extends Object } } - if (!isDeleted && multiselect) { + if (!isDeleted! && multiselect) { actions.add(EntityAction.documents); } @@ -268,115 +267,115 @@ abstract class VendorEntity extends Object return actions..addAll(super.getActions(userCompany: userCompany)); } - int compareTo(VendorEntity vendor, String sortField, bool sortAscending, - BuiltMap userMap, StaticState staticState) { + int compareTo(VendorEntity? vendor, String sortField, bool sortAscending, + BuiltMap userMap, StaticState staticState) { int response = 0; - final VendorEntity vendorA = sortAscending ? this : vendor; - final VendorEntity vendorB = sortAscending ? vendor : this; + final VendorEntity? vendorA = sortAscending ? this : vendor; + final VendorEntity? vendorB = sortAscending ? vendor : this; switch (sortField) { case VendorFields.name: - response = removeDiacritics(vendorA.name) + response = removeDiacritics(vendorA!.name) .toLowerCase() - .compareTo(removeDiacritics(vendorB.name).toLowerCase()); + .compareTo(removeDiacritics(vendorB!.name).toLowerCase()); break; case VendorFields.city: response = - vendorA.city.toLowerCase().compareTo(vendorB.city.toLowerCase()); + vendorA!.city.toLowerCase().compareTo(vendorB!.city.toLowerCase()); break; case VendorFields.phone: - response = - vendorA.phone.toLowerCase().compareTo(vendorB.phone.toLowerCase()); + response = vendorA!.phone + .toLowerCase() + .compareTo(vendorB!.phone.toLowerCase()); break; case EntityFields.state: case VendorFields.state: - final stateA = - EntityState.valueOf(vendorA.entityState) ?? EntityState.active; - final stateB = - EntityState.valueOf(vendorB.entityState) ?? EntityState.active; + final stateA = EntityState.valueOf(vendorA!.entityState); + final stateB = EntityState.valueOf(vendorB!.entityState); response = stateA.name.toLowerCase().compareTo(stateB.name.toLowerCase()); break; case EntityFields.assignedTo: - final userA = userMap[vendorA.assignedUserId] ?? UserEntity(); - final userB = userMap[vendorB.assignedUserId] ?? UserEntity(); + final userA = userMap[vendorA!.assignedUserId] ?? UserEntity(); + final userB = userMap[vendorB!.assignedUserId] ?? UserEntity(); response = userA.listDisplayName .toLowerCase() .compareTo(userB.listDisplayName.toLowerCase()); break; case EntityFields.createdBy: - final userA = userMap[vendorA.createdUserId] ?? UserEntity(); - final userB = userMap[vendorB.createdUserId] ?? UserEntity(); + final userA = userMap[vendorA!.createdUserId] ?? UserEntity(); + final userB = userMap[vendorB!.createdUserId] ?? UserEntity(); response = userA.listDisplayName .toLowerCase() .compareTo(userB.listDisplayName.toLowerCase()); break; case EntityFields.createdAt: - response = vendorA.createdAt.compareTo(vendorB.createdAt); + response = vendorA!.createdAt.compareTo(vendorB!.createdAt); break; case VendorFields.archivedAt: - response = vendorA.archivedAt.compareTo(vendorB.archivedAt); + response = vendorA!.archivedAt.compareTo(vendorB!.archivedAt); break; case VendorFields.updatedAt: - response = vendorA.updatedAt.compareTo(vendorB.updatedAt); + response = vendorA!.updatedAt.compareTo(vendorB!.updatedAt); break; case VendorFields.documents: - response = vendorA.documents.length.compareTo(vendorB.documents.length); + response = + vendorA!.documents.length.compareTo(vendorB!.documents.length); break; case VendorFields.number: response = compareNatural( - vendorA.number.toLowerCase(), vendorB.number.toLowerCase()); + vendorA!.number.toLowerCase(), vendorB!.number.toLowerCase()); break; case VendorFields.address1: - response = vendorA.address1.compareTo(vendorB.address1); + response = vendorA!.address1.compareTo(vendorB!.address1); break; case VendorFields.address2: - response = vendorA.address2.compareTo(vendorB.address2); + response = vendorA!.address2.compareTo(vendorB!.address2); break; case VendorFields.postalCode: - response = vendorA.postalCode.compareTo(vendorB.postalCode); + response = vendorA!.postalCode.compareTo(vendorB!.postalCode); break; case VendorFields.countryId: - response = vendorA.countryId.compareTo(vendorB.countryId); + response = vendorA!.countryId.compareTo(vendorB!.countryId); break; case VendorFields.languageId: - response = vendorA.languageId.compareTo(vendorB.languageId); + response = vendorA!.languageId.compareTo(vendorB!.languageId); break; case VendorFields.privateNotes: - response = vendorA.privateNotes.compareTo(vendorB.privateNotes); + response = vendorA!.privateNotes.compareTo(vendorB!.privateNotes); break; case VendorFields.publicNotes: - response = vendorA.publicNotes.compareTo(vendorB.publicNotes); + response = vendorA!.publicNotes.compareTo(vendorB!.publicNotes); break; case VendorFields.website: - response = vendorA.website.compareTo(vendorB.website); + response = vendorA!.website.compareTo(vendorB!.website); break; case VendorFields.vatNumber: - response = vendorA.vatNumber.compareTo(vendorB.vatNumber); + response = vendorA!.vatNumber.compareTo(vendorB!.vatNumber); break; case VendorFields.idNumber: - response = vendorA.idNumber.compareTo(vendorB.idNumber); + response = vendorA!.idNumber.compareTo(vendorB!.idNumber); break; case VendorFields.currencyId: final currencyMap = staticState.currencyMap; - response = currencyMap[vendorA.currencyId] + response = currencyMap[vendorA!.currencyId]! .listDisplayName - .compareTo(currencyMap[vendorB.currencyId].listDisplayName); + .compareTo(currencyMap[vendorB!.currencyId]!.listDisplayName); break; case VendorFields.customValue1: - response = vendorA.customValue1.compareTo(vendorB.customValue1); + response = vendorA!.customValue1.compareTo(vendorB!.customValue1); break; case VendorFields.customValue2: - response = vendorA.customValue2.compareTo(vendorB.customValue2); + response = vendorA!.customValue2.compareTo(vendorB!.customValue2); break; case VendorFields.customValue3: - response = vendorA.customValue3.compareTo(vendorB.customValue3); + response = vendorA!.customValue3.compareTo(vendorB!.customValue3); break; case VendorFields.customValue4: - response = vendorA.customValue4.compareTo(vendorB.customValue4); + response = vendorA!.customValue4.compareTo(vendorB!.customValue4); break; case VendorFields.classification: - response = vendorA.classification.compareTo(vendorB.classification); + response = vendorA!.classification.compareTo(vendorB!.classification); break; default: print('## ERROR: sort by vendor.$sortField is not implemented'); @@ -384,19 +383,19 @@ abstract class VendorEntity extends Object } if (response == 0) { - response = vendor.number.toLowerCase().compareTo(number.toLowerCase()); + response = vendor!.number.toLowerCase().compareTo(number.toLowerCase()); } return response; } - bool matchesNameOrEmail(String filter) { + bool matchesNameOrEmail(String? filter) { if (matchesString(haystack: name, needle: filter)) { return true; } for (var i = 0; i < contacts.length; i++) { - final contact = contacts[i]; + final contact = contacts[i]!; if (matchesString(haystack: contact.fullName, needle: filter)) { return true; } @@ -410,9 +409,9 @@ abstract class VendorEntity extends Object } @override - bool matchesFilter(String filter) { + bool matchesFilter(String? filter) { for (final contact in contacts) { - if (contact.matchesFilter(filter)) { + if (contact!.matchesFilter(filter)) { return true; } } @@ -439,9 +438,9 @@ abstract class VendorEntity extends Object } @override - String matchesFilterValue(String filter) { + String? matchesFilterValue(String? filter) { for (final contact in contacts) { - final value = contact.matchesFilterValue(filter); + final value = contact!.matchesFilterValue(filter); if (value != null) { return value; } @@ -474,7 +473,7 @@ abstract class VendorEntity extends Object } @override - double get listDisplayAmount => null; + double? get listDisplayAmount => null; @override FormatNumberType get listDisplayAmountType => FormatNumberType.money; @@ -483,38 +482,38 @@ abstract class VendorEntity extends Object if (name.isNotEmpty) { return name; } else { - return primaryContact.fullNameOrEmail; + return primaryContact!.fullNameOrEmail; } } - List get emailContacts { - final list = contacts.where((contact) => contact.sendEmail).toList(); + List get emailContacts { + final list = contacts.where((contact) => contact!.sendEmail).toList(); return list.isEmpty ? [primaryContact] : list; } - VendorContactEntity get primaryContact => - contacts.firstWhere((contact) => contact.isPrimary, + VendorContactEntity? get primaryContact => + contacts.firstWhere((contact) => contact!.isPrimary, orElse: () => VendorContactEntity()); - bool get hasCurrency => currencyId != null && currencyId.isNotEmpty; + bool get hasCurrency => currencyId.isNotEmpty; - bool get hasLanguage => languageId != null && languageId.isNotEmpty; + bool get hasLanguage => languageId.isNotEmpty; - bool get hasUser => assignedUserId != null && assignedUserId.isNotEmpty; + bool get hasUser => assignedUserId != null && assignedUserId!.isNotEmpty; bool get hasEmailAddress => - contacts.where((contact) => contact.email?.isNotEmpty).isNotEmpty; + contacts.where((contact) => contact!.email.isNotEmpty).isNotEmpty; bool get hasNameSet { final contact = contacts.first; return name.isNotEmpty || - contact.fullName.isNotEmpty || + contact!.fullName.isNotEmpty || contact.email.isNotEmpty; } - VendorContactEntity getContact(String contactId) => contacts - .firstWhere((contact) => contact.id == contactId, orElse: () => null); + VendorContactEntity? getContact(String? contactId) => contacts + .firstWhere((contact) => contact!.id == contactId, orElse: () => null); static void _initializeBuilder(VendorEntityBuilder builder) => builder ..activities.replace(BuiltList()) @@ -622,7 +621,7 @@ abstract class VendorContactEntity extends Object } @override - bool matchesFilter(String filter) { + bool matchesFilter(String? filter) { return matchesStrings( haystacks: [ '$firstName $lastName', @@ -634,7 +633,7 @@ abstract class VendorContactEntity extends Object } @override - String matchesFilterValue(String filter) { + String? matchesFilterValue(String? filter) { return matchesStringsValue( haystacks: [ '$firstName $lastName', @@ -651,7 +650,7 @@ abstract class VendorContactEntity extends Object } @override - double get listDisplayAmount => null; + double? get listDisplayAmount => null; @override FormatNumberType get listDisplayAmountType => FormatNumberType.money; diff --git a/lib/data/models/vendor_model.g.dart b/lib/data/models/vendor_model.g.dart index d775c7c2e..7fe6bf7fc 100644 --- a/lib/data/models/vendor_model.g.dart +++ b/lib/data/models/vendor_model.g.dart @@ -23,9 +23,10 @@ class _$VendorListResponseSerializer final String wireName = 'VendorListResponse'; @override - Iterable serialize(Serializers serializers, VendorListResponse object, + Iterable serialize( + Serializers serializers, VendorListResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: @@ -37,21 +38,21 @@ class _$VendorListResponseSerializer @override VendorListResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new VendorListResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(VendorEntity)])) - as BuiltList); + BuiltList, const [const FullType(VendorEntity)]))! + as BuiltList); break; } } @@ -68,9 +69,10 @@ class _$VendorItemResponseSerializer final String wireName = 'VendorItemResponse'; @override - Iterable serialize(Serializers serializers, VendorItemResponse object, + Iterable serialize( + Serializers serializers, VendorItemResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType(VendorEntity)), @@ -81,19 +83,19 @@ class _$VendorItemResponseSerializer @override VendorItemResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new VendorItemResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, - specifiedType: const FullType(VendorEntity)) as VendorEntity); + specifiedType: const FullType(VendorEntity))! as VendorEntity); break; } } @@ -109,9 +111,9 @@ class _$VendorEntitySerializer implements StructuredSerializer { final String wireName = 'VendorEntity'; @override - Iterable serialize(Serializers serializers, VendorEntity object, + Iterable serialize(Serializers serializers, VendorEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'name', serializers.serialize(object.name, specifiedType: const FullType(String)), 'address1', @@ -179,7 +181,7 @@ class _$VendorEntitySerializer implements StructuredSerializer { 'contacts', serializers.serialize(object.contacts, specifiedType: const FullType( - BuiltList, const [const FullType(VendorContactEntity)])), + BuiltList, const [const FullType.nullable(VendorContactEntity)])), 'activities', serializers.serialize(object.activities, specifiedType: const FullType( @@ -200,7 +202,7 @@ class _$VendorEntitySerializer implements StructuredSerializer { 'id', serializers.serialize(object.id, specifiedType: const FullType(String)), ]; - Object value; + Object? value; value = object.loadedAt; if (value != null) { result @@ -239,157 +241,158 @@ class _$VendorEntitySerializer implements StructuredSerializer { } @override - VendorEntity deserialize(Serializers serializers, Iterable serialized, + VendorEntity deserialize( + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new VendorEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'loadedAt': result.loadedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int)) as int?; break; case 'name': result.name = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'address1': result.address1 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'address2': result.address2 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'city': result.city = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'state': result.state = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'postal_code': result.postalCode = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'country_id': result.countryId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'language_id': result.languageId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'phone': result.phone = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'private_notes': result.privateNotes = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'public_notes': result.publicNotes = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'website': result.website = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'number': result.number = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'vat_number': result.vatNumber = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'id_number': result.idNumber = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'currency_id': result.currencyId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value1': result.customValue1 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value2': result.customValue2 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value3': result.customValue3 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value4': result.customValue4 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'last_login': result.lastLogin = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'classification': result.classification = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'contacts': result.contacts.replace(serializers.deserialize(value, - specifiedType: const FullType( - BuiltList, const [const FullType(VendorContactEntity)])) - as BuiltList); + specifiedType: const FullType(BuiltList, const [ + const FullType.nullable(VendorContactEntity) + ]))! as BuiltList); break; case 'activities': result.activities.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(ActivityEntity)])) - as BuiltList); + BuiltList, const [const FullType(ActivityEntity)]))! + as BuiltList); break; case 'documents': result.documents.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(DocumentEntity)])) - as BuiltList); + BuiltList, const [const FullType(DocumentEntity)]))! + as BuiltList); break; case 'isChanged': result.isChanged = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'created_at': result.createdAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'updated_at': result.updatedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'archived_at': result.archivedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'is_deleted': result.isDeleted = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'user_id': result.createdUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'assigned_user_id': result.assignedUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -409,10 +412,10 @@ class _$VendorContactEntitySerializer final String wireName = 'VendorContactEntity'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, VendorContactEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'first_name', serializers.serialize(object.firstName, specifiedType: const FullType(String)), @@ -457,7 +460,7 @@ class _$VendorContactEntitySerializer 'id', serializers.serialize(object.id, specifiedType: const FullType(String)), ]; - Object value; + Object? value; value = object.isChanged; if (value != null) { result @@ -491,91 +494,91 @@ class _$VendorContactEntitySerializer @override VendorContactEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new VendorContactEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'first_name': result.firstName = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'last_name': result.lastName = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'email': result.email = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'is_primary': result.isPrimary = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'send_email': result.sendEmail = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'phone': result.phone = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value1': result.customValue1 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value2': result.customValue2 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value3': result.customValue3 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'custom_value4': result.customValue4 = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'link': result.link = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'isChanged': result.isChanged = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'created_at': result.createdAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'updated_at': result.updatedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'archived_at': result.archivedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'is_deleted': result.isDeleted = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'user_id': result.createdUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'assigned_user_id': result.assignedUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -589,10 +592,10 @@ class _$VendorListResponse extends VendorListResponse { final BuiltList data; factory _$VendorListResponse( - [void Function(VendorListResponseBuilder) updates]) => + [void Function(VendorListResponseBuilder)? updates]) => (new VendorListResponseBuilder()..update(updates))._build(); - _$VendorListResponse._({this.data}) : super._() { + _$VendorListResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull(data, r'VendorListResponse', 'data'); } @@ -611,10 +614,10 @@ class _$VendorListResponse extends VendorListResponse { return other is VendorListResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -631,12 +634,12 @@ class _$VendorListResponse extends VendorListResponse { class VendorListResponseBuilder implements Builder { - _$VendorListResponse _$v; + _$VendorListResponse? _$v; - ListBuilder _data; + ListBuilder? _data; ListBuilder get data => _$this._data ??= new ListBuilder(); - set data(ListBuilder data) => _$this._data = data; + set data(ListBuilder? data) => _$this._data = data; VendorListResponseBuilder(); @@ -656,7 +659,7 @@ class VendorListResponseBuilder } @override - void update(void Function(VendorListResponseBuilder) updates) { + void update(void Function(VendorListResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -668,7 +671,7 @@ class VendorListResponseBuilder try { _$result = _$v ?? new _$VendorListResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -688,10 +691,10 @@ class _$VendorItemResponse extends VendorItemResponse { final VendorEntity data; factory _$VendorItemResponse( - [void Function(VendorItemResponseBuilder) updates]) => + [void Function(VendorItemResponseBuilder)? updates]) => (new VendorItemResponseBuilder()..update(updates))._build(); - _$VendorItemResponse._({this.data}) : super._() { + _$VendorItemResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull(data, r'VendorItemResponse', 'data'); } @@ -710,10 +713,10 @@ class _$VendorItemResponse extends VendorItemResponse { return other is VendorItemResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -730,11 +733,11 @@ class _$VendorItemResponse extends VendorItemResponse { class VendorItemResponseBuilder implements Builder { - _$VendorItemResponse _$v; + _$VendorItemResponse? _$v; - VendorEntityBuilder _data; + VendorEntityBuilder? _data; VendorEntityBuilder get data => _$this._data ??= new VendorEntityBuilder(); - set data(VendorEntityBuilder data) => _$this._data = data; + set data(VendorEntityBuilder? data) => _$this._data = data; VendorItemResponseBuilder(); @@ -754,7 +757,7 @@ class VendorItemResponseBuilder } @override - void update(void Function(VendorItemResponseBuilder) updates) { + void update(void Function(VendorItemResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -766,7 +769,7 @@ class VendorItemResponseBuilder try { _$result = _$v ?? new _$VendorItemResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -783,7 +786,7 @@ class VendorItemResponseBuilder class _$VendorEntity extends VendorEntity { @override - final int loadedAt; + final int? loadedAt; @override final String name; @override @@ -829,13 +832,13 @@ class _$VendorEntity extends VendorEntity { @override final String classification; @override - final BuiltList contacts; + final BuiltList contacts; @override final BuiltList activities; @override final BuiltList documents; @override - final bool isChanged; + final bool? isChanged; @override final int createdAt; @override @@ -843,52 +846,52 @@ class _$VendorEntity extends VendorEntity { @override final int archivedAt; @override - final bool isDeleted; + final bool? isDeleted; @override - final String createdUserId; + final String? createdUserId; @override - final String assignedUserId; + final String? assignedUserId; @override final String id; - factory _$VendorEntity([void Function(VendorEntityBuilder) updates]) => + factory _$VendorEntity([void Function(VendorEntityBuilder)? updates]) => (new VendorEntityBuilder()..update(updates))._build(); _$VendorEntity._( {this.loadedAt, - this.name, - this.address1, - this.address2, - this.city, - this.state, - this.postalCode, - this.countryId, - this.languageId, - this.phone, - this.privateNotes, - this.publicNotes, - this.website, - this.number, - this.vatNumber, - this.idNumber, - this.currencyId, - this.customValue1, - this.customValue2, - this.customValue3, - this.customValue4, - this.lastLogin, - this.classification, - this.contacts, - this.activities, - this.documents, + required this.name, + required this.address1, + required this.address2, + required this.city, + required this.state, + required this.postalCode, + required this.countryId, + required this.languageId, + required this.phone, + required this.privateNotes, + required this.publicNotes, + required this.website, + required this.number, + required this.vatNumber, + required this.idNumber, + required this.currencyId, + required this.customValue1, + required this.customValue2, + required this.customValue3, + required this.customValue4, + required this.lastLogin, + required this.classification, + required this.contacts, + required this.activities, + required this.documents, this.isChanged, - this.createdAt, - this.updatedAt, - this.archivedAt, + required this.createdAt, + required this.updatedAt, + required this.archivedAt, this.isDeleted, this.createdUserId, this.assignedUserId, - this.id}) + required this.id}) : super._() { BuiltValueNullFieldError.checkNotNull(name, r'VendorEntity', 'name'); BuiltValueNullFieldError.checkNotNull( @@ -989,10 +992,10 @@ class _$VendorEntity extends VendorEntity { id == other.id; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, name.hashCode); _$hash = $jc(_$hash, address1.hashCode); @@ -1074,152 +1077,152 @@ class _$VendorEntity extends VendorEntity { class VendorEntityBuilder implements Builder { - _$VendorEntity _$v; + _$VendorEntity? _$v; - int _loadedAt; - int get loadedAt => _$this._loadedAt; - set loadedAt(int loadedAt) => _$this._loadedAt = loadedAt; + int? _loadedAt; + int? get loadedAt => _$this._loadedAt; + set loadedAt(int? loadedAt) => _$this._loadedAt = loadedAt; - String _name; - String get name => _$this._name; - set name(String name) => _$this._name = name; + String? _name; + String? get name => _$this._name; + set name(String? name) => _$this._name = name; - String _address1; - String get address1 => _$this._address1; - set address1(String address1) => _$this._address1 = address1; + String? _address1; + String? get address1 => _$this._address1; + set address1(String? address1) => _$this._address1 = address1; - String _address2; - String get address2 => _$this._address2; - set address2(String address2) => _$this._address2 = address2; + String? _address2; + String? get address2 => _$this._address2; + set address2(String? address2) => _$this._address2 = address2; - String _city; - String get city => _$this._city; - set city(String city) => _$this._city = city; + String? _city; + String? get city => _$this._city; + set city(String? city) => _$this._city = city; - String _state; - String get state => _$this._state; - set state(String state) => _$this._state = state; + String? _state; + String? get state => _$this._state; + set state(String? state) => _$this._state = state; - String _postalCode; - String get postalCode => _$this._postalCode; - set postalCode(String postalCode) => _$this._postalCode = postalCode; + String? _postalCode; + String? get postalCode => _$this._postalCode; + set postalCode(String? postalCode) => _$this._postalCode = postalCode; - String _countryId; - String get countryId => _$this._countryId; - set countryId(String countryId) => _$this._countryId = countryId; + String? _countryId; + String? get countryId => _$this._countryId; + set countryId(String? countryId) => _$this._countryId = countryId; - String _languageId; - String get languageId => _$this._languageId; - set languageId(String languageId) => _$this._languageId = languageId; + String? _languageId; + String? get languageId => _$this._languageId; + set languageId(String? languageId) => _$this._languageId = languageId; - String _phone; - String get phone => _$this._phone; - set phone(String phone) => _$this._phone = phone; + String? _phone; + String? get phone => _$this._phone; + set phone(String? phone) => _$this._phone = phone; - String _privateNotes; - String get privateNotes => _$this._privateNotes; - set privateNotes(String privateNotes) => _$this._privateNotes = privateNotes; + String? _privateNotes; + String? get privateNotes => _$this._privateNotes; + set privateNotes(String? privateNotes) => _$this._privateNotes = privateNotes; - String _publicNotes; - String get publicNotes => _$this._publicNotes; - set publicNotes(String publicNotes) => _$this._publicNotes = publicNotes; + String? _publicNotes; + String? get publicNotes => _$this._publicNotes; + set publicNotes(String? publicNotes) => _$this._publicNotes = publicNotes; - String _website; - String get website => _$this._website; - set website(String website) => _$this._website = website; + String? _website; + String? get website => _$this._website; + set website(String? website) => _$this._website = website; - String _number; - String get number => _$this._number; - set number(String number) => _$this._number = number; + String? _number; + String? get number => _$this._number; + set number(String? number) => _$this._number = number; - String _vatNumber; - String get vatNumber => _$this._vatNumber; - set vatNumber(String vatNumber) => _$this._vatNumber = vatNumber; + String? _vatNumber; + String? get vatNumber => _$this._vatNumber; + set vatNumber(String? vatNumber) => _$this._vatNumber = vatNumber; - String _idNumber; - String get idNumber => _$this._idNumber; - set idNumber(String idNumber) => _$this._idNumber = idNumber; + String? _idNumber; + String? get idNumber => _$this._idNumber; + set idNumber(String? idNumber) => _$this._idNumber = idNumber; - String _currencyId; - String get currencyId => _$this._currencyId; - set currencyId(String currencyId) => _$this._currencyId = currencyId; + String? _currencyId; + String? get currencyId => _$this._currencyId; + set currencyId(String? currencyId) => _$this._currencyId = currencyId; - String _customValue1; - String get customValue1 => _$this._customValue1; - set customValue1(String customValue1) => _$this._customValue1 = customValue1; + String? _customValue1; + String? get customValue1 => _$this._customValue1; + set customValue1(String? customValue1) => _$this._customValue1 = customValue1; - String _customValue2; - String get customValue2 => _$this._customValue2; - set customValue2(String customValue2) => _$this._customValue2 = customValue2; + String? _customValue2; + String? get customValue2 => _$this._customValue2; + set customValue2(String? customValue2) => _$this._customValue2 = customValue2; - String _customValue3; - String get customValue3 => _$this._customValue3; - set customValue3(String customValue3) => _$this._customValue3 = customValue3; + String? _customValue3; + String? get customValue3 => _$this._customValue3; + set customValue3(String? customValue3) => _$this._customValue3 = customValue3; - String _customValue4; - String get customValue4 => _$this._customValue4; - set customValue4(String customValue4) => _$this._customValue4 = customValue4; + String? _customValue4; + String? get customValue4 => _$this._customValue4; + set customValue4(String? customValue4) => _$this._customValue4 = customValue4; - int _lastLogin; - int get lastLogin => _$this._lastLogin; - set lastLogin(int lastLogin) => _$this._lastLogin = lastLogin; + int? _lastLogin; + int? get lastLogin => _$this._lastLogin; + set lastLogin(int? lastLogin) => _$this._lastLogin = lastLogin; - String _classification; - String get classification => _$this._classification; - set classification(String classification) => + String? _classification; + String? get classification => _$this._classification; + set classification(String? classification) => _$this._classification = classification; - ListBuilder _contacts; - ListBuilder get contacts => - _$this._contacts ??= new ListBuilder(); - set contacts(ListBuilder contacts) => + ListBuilder? _contacts; + ListBuilder get contacts => + _$this._contacts ??= new ListBuilder(); + set contacts(ListBuilder? contacts) => _$this._contacts = contacts; - ListBuilder _activities; + ListBuilder? _activities; ListBuilder get activities => _$this._activities ??= new ListBuilder(); - set activities(ListBuilder activities) => + set activities(ListBuilder? activities) => _$this._activities = activities; - ListBuilder _documents; + ListBuilder? _documents; ListBuilder get documents => _$this._documents ??= new ListBuilder(); - set documents(ListBuilder documents) => + set documents(ListBuilder? documents) => _$this._documents = documents; - bool _isChanged; - bool get isChanged => _$this._isChanged; - set isChanged(bool isChanged) => _$this._isChanged = isChanged; + bool? _isChanged; + bool? get isChanged => _$this._isChanged; + set isChanged(bool? isChanged) => _$this._isChanged = isChanged; - int _createdAt; - int get createdAt => _$this._createdAt; - set createdAt(int createdAt) => _$this._createdAt = createdAt; + int? _createdAt; + int? get createdAt => _$this._createdAt; + set createdAt(int? createdAt) => _$this._createdAt = createdAt; - int _updatedAt; - int get updatedAt => _$this._updatedAt; - set updatedAt(int updatedAt) => _$this._updatedAt = updatedAt; + int? _updatedAt; + int? get updatedAt => _$this._updatedAt; + set updatedAt(int? updatedAt) => _$this._updatedAt = updatedAt; - int _archivedAt; - int get archivedAt => _$this._archivedAt; - set archivedAt(int archivedAt) => _$this._archivedAt = archivedAt; + int? _archivedAt; + int? get archivedAt => _$this._archivedAt; + set archivedAt(int? archivedAt) => _$this._archivedAt = archivedAt; - bool _isDeleted; - bool get isDeleted => _$this._isDeleted; - set isDeleted(bool isDeleted) => _$this._isDeleted = isDeleted; + bool? _isDeleted; + bool? get isDeleted => _$this._isDeleted; + set isDeleted(bool? isDeleted) => _$this._isDeleted = isDeleted; - String _createdUserId; - String get createdUserId => _$this._createdUserId; - set createdUserId(String createdUserId) => + String? _createdUserId; + String? get createdUserId => _$this._createdUserId; + set createdUserId(String? createdUserId) => _$this._createdUserId = createdUserId; - String _assignedUserId; - String get assignedUserId => _$this._assignedUserId; - set assignedUserId(String assignedUserId) => + String? _assignedUserId; + String? get assignedUserId => _$this._assignedUserId; + set assignedUserId(String? assignedUserId) => _$this._assignedUserId = assignedUserId; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; VendorEntityBuilder() { VendorEntity._initializeBuilder(this); @@ -1274,7 +1277,7 @@ class VendorEntityBuilder } @override - void update(void Function(VendorEntityBuilder) updates) { + void update(void Function(VendorEntityBuilder)? updates) { if (updates != null) updates(this); } @@ -1331,7 +1334,7 @@ class VendorEntityBuilder assignedUserId: assignedUserId, id: BuiltValueNullFieldError.checkNotNull(id, r'VendorEntity', 'id')); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'contacts'; contacts.build(); @@ -1374,7 +1377,7 @@ class _$VendorContactEntity extends VendorContactEntity { @override final String link; @override - final bool isChanged; + final bool? isChanged; @override final int createdAt; @override @@ -1382,38 +1385,38 @@ class _$VendorContactEntity extends VendorContactEntity { @override final int archivedAt; @override - final bool isDeleted; + final bool? isDeleted; @override - final String createdUserId; + final String? createdUserId; @override - final String assignedUserId; + final String? assignedUserId; @override final String id; factory _$VendorContactEntity( - [void Function(VendorContactEntityBuilder) updates]) => + [void Function(VendorContactEntityBuilder)? updates]) => (new VendorContactEntityBuilder()..update(updates))._build(); _$VendorContactEntity._( - {this.firstName, - this.lastName, - this.email, - this.isPrimary, - this.sendEmail, - this.phone, - this.customValue1, - this.customValue2, - this.customValue3, - this.customValue4, - this.link, + {required this.firstName, + required this.lastName, + required this.email, + required this.isPrimary, + required this.sendEmail, + required this.phone, + required this.customValue1, + required this.customValue2, + required this.customValue3, + required this.customValue4, + required this.link, this.isChanged, - this.createdAt, - this.updatedAt, - this.archivedAt, + required this.createdAt, + required this.updatedAt, + required this.archivedAt, this.isDeleted, this.createdUserId, this.assignedUserId, - this.id}) + required this.id}) : super._() { BuiltValueNullFieldError.checkNotNull( firstName, r'VendorContactEntity', 'firstName'); @@ -1479,10 +1482,10 @@ class _$VendorContactEntity extends VendorContactEntity { id == other.id; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, firstName.hashCode); _$hash = $jc(_$hash, lastName.hashCode); @@ -1535,85 +1538,85 @@ class _$VendorContactEntity extends VendorContactEntity { class VendorContactEntityBuilder implements Builder { - _$VendorContactEntity _$v; + _$VendorContactEntity? _$v; - String _firstName; - String get firstName => _$this._firstName; - set firstName(String firstName) => _$this._firstName = firstName; + String? _firstName; + String? get firstName => _$this._firstName; + set firstName(String? firstName) => _$this._firstName = firstName; - String _lastName; - String get lastName => _$this._lastName; - set lastName(String lastName) => _$this._lastName = lastName; + String? _lastName; + String? get lastName => _$this._lastName; + set lastName(String? lastName) => _$this._lastName = lastName; - String _email; - String get email => _$this._email; - set email(String email) => _$this._email = email; + String? _email; + String? get email => _$this._email; + set email(String? email) => _$this._email = email; - bool _isPrimary; - bool get isPrimary => _$this._isPrimary; - set isPrimary(bool isPrimary) => _$this._isPrimary = isPrimary; + bool? _isPrimary; + bool? get isPrimary => _$this._isPrimary; + set isPrimary(bool? isPrimary) => _$this._isPrimary = isPrimary; - bool _sendEmail; - bool get sendEmail => _$this._sendEmail; - set sendEmail(bool sendEmail) => _$this._sendEmail = sendEmail; + bool? _sendEmail; + bool? get sendEmail => _$this._sendEmail; + set sendEmail(bool? sendEmail) => _$this._sendEmail = sendEmail; - String _phone; - String get phone => _$this._phone; - set phone(String phone) => _$this._phone = phone; + String? _phone; + String? get phone => _$this._phone; + set phone(String? phone) => _$this._phone = phone; - String _customValue1; - String get customValue1 => _$this._customValue1; - set customValue1(String customValue1) => _$this._customValue1 = customValue1; + String? _customValue1; + String? get customValue1 => _$this._customValue1; + set customValue1(String? customValue1) => _$this._customValue1 = customValue1; - String _customValue2; - String get customValue2 => _$this._customValue2; - set customValue2(String customValue2) => _$this._customValue2 = customValue2; + String? _customValue2; + String? get customValue2 => _$this._customValue2; + set customValue2(String? customValue2) => _$this._customValue2 = customValue2; - String _customValue3; - String get customValue3 => _$this._customValue3; - set customValue3(String customValue3) => _$this._customValue3 = customValue3; + String? _customValue3; + String? get customValue3 => _$this._customValue3; + set customValue3(String? customValue3) => _$this._customValue3 = customValue3; - String _customValue4; - String get customValue4 => _$this._customValue4; - set customValue4(String customValue4) => _$this._customValue4 = customValue4; + String? _customValue4; + String? get customValue4 => _$this._customValue4; + set customValue4(String? customValue4) => _$this._customValue4 = customValue4; - String _link; - String get link => _$this._link; - set link(String link) => _$this._link = link; + String? _link; + String? get link => _$this._link; + set link(String? link) => _$this._link = link; - bool _isChanged; - bool get isChanged => _$this._isChanged; - set isChanged(bool isChanged) => _$this._isChanged = isChanged; + bool? _isChanged; + bool? get isChanged => _$this._isChanged; + set isChanged(bool? isChanged) => _$this._isChanged = isChanged; - int _createdAt; - int get createdAt => _$this._createdAt; - set createdAt(int createdAt) => _$this._createdAt = createdAt; + int? _createdAt; + int? get createdAt => _$this._createdAt; + set createdAt(int? createdAt) => _$this._createdAt = createdAt; - int _updatedAt; - int get updatedAt => _$this._updatedAt; - set updatedAt(int updatedAt) => _$this._updatedAt = updatedAt; + int? _updatedAt; + int? get updatedAt => _$this._updatedAt; + set updatedAt(int? updatedAt) => _$this._updatedAt = updatedAt; - int _archivedAt; - int get archivedAt => _$this._archivedAt; - set archivedAt(int archivedAt) => _$this._archivedAt = archivedAt; + int? _archivedAt; + int? get archivedAt => _$this._archivedAt; + set archivedAt(int? archivedAt) => _$this._archivedAt = archivedAt; - bool _isDeleted; - bool get isDeleted => _$this._isDeleted; - set isDeleted(bool isDeleted) => _$this._isDeleted = isDeleted; + bool? _isDeleted; + bool? get isDeleted => _$this._isDeleted; + set isDeleted(bool? isDeleted) => _$this._isDeleted = isDeleted; - String _createdUserId; - String get createdUserId => _$this._createdUserId; - set createdUserId(String createdUserId) => + String? _createdUserId; + String? get createdUserId => _$this._createdUserId; + set createdUserId(String? createdUserId) => _$this._createdUserId = createdUserId; - String _assignedUserId; - String get assignedUserId => _$this._assignedUserId; - set assignedUserId(String assignedUserId) => + String? _assignedUserId; + String? get assignedUserId => _$this._assignedUserId; + set assignedUserId(String? assignedUserId) => _$this._assignedUserId = assignedUserId; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; VendorContactEntityBuilder() { VendorContactEntity._initializeBuilder(this); @@ -1653,7 +1656,7 @@ class VendorContactEntityBuilder } @override - void update(void Function(VendorContactEntityBuilder) updates) { + void update(void Function(VendorContactEntityBuilder)? updates) { if (updates != null) updates(this); } diff --git a/lib/data/models/webhook_model.dart b/lib/data/models/webhook_model.dart index e7c06e706..083027c1e 100644 --- a/lib/data/models/webhook_model.dart +++ b/lib/data/models/webhook_model.dart @@ -53,7 +53,7 @@ class WebhookFields { abstract class WebhookEntity extends Object with BaseEntity, SelectableEntity implements Built { - factory WebhookEntity({String id, AppState state}) { + factory WebhookEntity({String? id, AppState? state}) { return _$WebhookEntity._( id: id ?? BaseEntity.nextId, isChanged: false, @@ -230,18 +230,18 @@ abstract class WebhookEntity extends Object return targetUrl; } - String get eventType => EVENT_MAP[eventId]; + String? get eventType => EVENT_MAP[eventId]; - int compareTo(WebhookEntity webhook, String sortField, bool sortAscending) { + int compareTo(WebhookEntity? webhook, String sortField, bool sortAscending) { int response = 0; - final WebhookEntity webhookA = sortAscending ? this : webhook; - final WebhookEntity webhookB = sortAscending ? webhook : this; + final WebhookEntity? webhookA = sortAscending ? this : webhook; + final WebhookEntity? webhookB = sortAscending ? webhook : this; switch (sortField) { case WebhookFields.targetUrl: - response = webhookA.targetUrl + response = webhookA!.targetUrl .toLowerCase() - .compareTo(webhookB.targetUrl.toLowerCase()); + .compareTo(webhookB!.targetUrl.toLowerCase()); break; default: print('## ERROR: sort by webhook.$sortField is not implemented'); @@ -252,7 +252,7 @@ abstract class WebhookEntity extends Object } @override - bool matchesFilter(String filter) { + bool matchesFilter(String? filter) { return matchesStrings( haystacks: [ targetUrl, @@ -262,7 +262,7 @@ abstract class WebhookEntity extends Object } @override - String matchesFilterValue(String filter) { + String? matchesFilterValue(String? filter) { return matchesStringsValue( haystacks: [ targetUrl, @@ -272,16 +272,16 @@ abstract class WebhookEntity extends Object } @override - List getActions( - {UserCompanyEntity userCompany, - ClientEntity client, + List getActions( + {UserCompanyEntity? userCompany, + ClientEntity? client, bool includeEdit = false, bool includePreview = false, bool multiselect = false}) { - final actions = []; + final actions = []; - if (!isDeleted && !multiselect) { - if (includeEdit && userCompany.canEditEntity(this)) { + if (!isDeleted! && !multiselect) { + if (includeEdit && userCompany!.canEditEntity(this)) { actions.add(EntityAction.edit); } } @@ -294,10 +294,10 @@ abstract class WebhookEntity extends Object } @override - double get listDisplayAmount => null; + double? get listDisplayAmount => null; @override - FormatNumberType get listDisplayAmountType => null; + FormatNumberType? get listDisplayAmountType => null; // ignore: unused_element static void _initializeBuilder(WebhookEntityBuilder builder) => builder diff --git a/lib/data/models/webhook_model.g.dart b/lib/data/models/webhook_model.g.dart index 3df1182e8..2ae3ed8d2 100644 --- a/lib/data/models/webhook_model.g.dart +++ b/lib/data/models/webhook_model.g.dart @@ -24,10 +24,10 @@ class _$WebhookListResponseSerializer final String wireName = 'WebhookListResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, WebhookListResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: @@ -39,21 +39,21 @@ class _$WebhookListResponseSerializer @override WebhookListResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new WebhookListResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(WebhookEntity)])) - as BuiltList); + BuiltList, const [const FullType(WebhookEntity)]))! + as BuiltList); break; } } @@ -73,10 +73,10 @@ class _$WebhookItemResponseSerializer final String wireName = 'WebhookItemResponse'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, WebhookItemResponse object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'data', serializers.serialize(object.data, specifiedType: const FullType(WebhookEntity)), @@ -87,19 +87,19 @@ class _$WebhookItemResponseSerializer @override WebhookItemResponse deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new WebhookItemResponseBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'data': result.data.replace(serializers.deserialize(value, - specifiedType: const FullType(WebhookEntity)) as WebhookEntity); + specifiedType: const FullType(WebhookEntity))! as WebhookEntity); break; } } @@ -115,9 +115,9 @@ class _$WebhookEntitySerializer implements StructuredSerializer { final String wireName = 'WebhookEntity'; @override - Iterable serialize(Serializers serializers, WebhookEntity object, + Iterable serialize(Serializers serializers, WebhookEntity object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'event_id', serializers.serialize(object.eventId, specifiedType: const FullType(String)), @@ -146,7 +146,7 @@ class _$WebhookEntitySerializer implements StructuredSerializer { 'id', serializers.serialize(object.id, specifiedType: const FullType(String)), ]; - Object value; + Object? value; value = object.isChanged; if (value != null) { result @@ -180,68 +180,68 @@ class _$WebhookEntitySerializer implements StructuredSerializer { @override WebhookEntity deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new WebhookEntityBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'event_id': result.eventId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'target_url': result.targetUrl = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'format': result.format = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'rest_method': result.restMethod = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'headers': result.headers.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(String)]))); + const [const FullType(String), const FullType(String)]))!); break; case 'isChanged': result.isChanged = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'created_at': result.createdAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'updated_at': result.updatedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'archived_at': result.archivedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'is_deleted': result.isDeleted = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'user_id': result.createdUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'assigned_user_id': result.assignedUserId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -255,10 +255,10 @@ class _$WebhookListResponse extends WebhookListResponse { final BuiltList data; factory _$WebhookListResponse( - [void Function(WebhookListResponseBuilder) updates]) => + [void Function(WebhookListResponseBuilder)? updates]) => (new WebhookListResponseBuilder()..update(updates))._build(); - _$WebhookListResponse._({this.data}) : super._() { + _$WebhookListResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull(data, r'WebhookListResponse', 'data'); } @@ -277,10 +277,10 @@ class _$WebhookListResponse extends WebhookListResponse { return other is WebhookListResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -297,12 +297,12 @@ class _$WebhookListResponse extends WebhookListResponse { class WebhookListResponseBuilder implements Builder { - _$WebhookListResponse _$v; + _$WebhookListResponse? _$v; - ListBuilder _data; + ListBuilder? _data; ListBuilder get data => _$this._data ??= new ListBuilder(); - set data(ListBuilder data) => _$this._data = data; + set data(ListBuilder? data) => _$this._data = data; WebhookListResponseBuilder(); @@ -322,7 +322,7 @@ class WebhookListResponseBuilder } @override - void update(void Function(WebhookListResponseBuilder) updates) { + void update(void Function(WebhookListResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -334,7 +334,7 @@ class WebhookListResponseBuilder try { _$result = _$v ?? new _$WebhookListResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -354,10 +354,10 @@ class _$WebhookItemResponse extends WebhookItemResponse { final WebhookEntity data; factory _$WebhookItemResponse( - [void Function(WebhookItemResponseBuilder) updates]) => + [void Function(WebhookItemResponseBuilder)? updates]) => (new WebhookItemResponseBuilder()..update(updates))._build(); - _$WebhookItemResponse._({this.data}) : super._() { + _$WebhookItemResponse._({required this.data}) : super._() { BuiltValueNullFieldError.checkNotNull(data, r'WebhookItemResponse', 'data'); } @@ -376,10 +376,10 @@ class _$WebhookItemResponse extends WebhookItemResponse { return other is WebhookItemResponse && data == other.data; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, data.hashCode); _$hash = $jf(_$hash); @@ -396,11 +396,11 @@ class _$WebhookItemResponse extends WebhookItemResponse { class WebhookItemResponseBuilder implements Builder { - _$WebhookItemResponse _$v; + _$WebhookItemResponse? _$v; - WebhookEntityBuilder _data; + WebhookEntityBuilder? _data; WebhookEntityBuilder get data => _$this._data ??= new WebhookEntityBuilder(); - set data(WebhookEntityBuilder data) => _$this._data = data; + set data(WebhookEntityBuilder? data) => _$this._data = data; WebhookItemResponseBuilder(); @@ -420,7 +420,7 @@ class WebhookItemResponseBuilder } @override - void update(void Function(WebhookItemResponseBuilder) updates) { + void update(void Function(WebhookItemResponseBuilder)? updates) { if (updates != null) updates(this); } @@ -432,7 +432,7 @@ class WebhookItemResponseBuilder try { _$result = _$v ?? new _$WebhookItemResponse._(data: data.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'data'; data.build(); @@ -459,7 +459,7 @@ class _$WebhookEntity extends WebhookEntity { @override final BuiltMap headers; @override - final bool isChanged; + final bool? isChanged; @override final int createdAt; @override @@ -467,31 +467,31 @@ class _$WebhookEntity extends WebhookEntity { @override final int archivedAt; @override - final bool isDeleted; + final bool? isDeleted; @override - final String createdUserId; + final String? createdUserId; @override - final String assignedUserId; + final String? assignedUserId; @override final String id; - factory _$WebhookEntity([void Function(WebhookEntityBuilder) updates]) => + factory _$WebhookEntity([void Function(WebhookEntityBuilder)? updates]) => (new WebhookEntityBuilder()..update(updates))._build(); _$WebhookEntity._( - {this.eventId, - this.targetUrl, - this.format, - this.restMethod, - this.headers, + {required this.eventId, + required this.targetUrl, + required this.format, + required this.restMethod, + required this.headers, this.isChanged, - this.createdAt, - this.updatedAt, - this.archivedAt, + required this.createdAt, + required this.updatedAt, + required this.archivedAt, this.isDeleted, this.createdUserId, this.assignedUserId, - this.id}) + required this.id}) : super._() { BuiltValueNullFieldError.checkNotNull(eventId, r'WebhookEntity', 'eventId'); BuiltValueNullFieldError.checkNotNull( @@ -535,10 +535,10 @@ class _$WebhookEntity extends WebhookEntity { id == other.id; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, eventId.hashCode); _$hash = $jc(_$hash, targetUrl.hashCode); @@ -579,62 +579,62 @@ class _$WebhookEntity extends WebhookEntity { class WebhookEntityBuilder implements Builder { - _$WebhookEntity _$v; + _$WebhookEntity? _$v; - String _eventId; - String get eventId => _$this._eventId; - set eventId(String eventId) => _$this._eventId = eventId; + String? _eventId; + String? get eventId => _$this._eventId; + set eventId(String? eventId) => _$this._eventId = eventId; - String _targetUrl; - String get targetUrl => _$this._targetUrl; - set targetUrl(String targetUrl) => _$this._targetUrl = targetUrl; + String? _targetUrl; + String? get targetUrl => _$this._targetUrl; + set targetUrl(String? targetUrl) => _$this._targetUrl = targetUrl; - String _format; - String get format => _$this._format; - set format(String format) => _$this._format = format; + String? _format; + String? get format => _$this._format; + set format(String? format) => _$this._format = format; - String _restMethod; - String get restMethod => _$this._restMethod; - set restMethod(String restMethod) => _$this._restMethod = restMethod; + String? _restMethod; + String? get restMethod => _$this._restMethod; + set restMethod(String? restMethod) => _$this._restMethod = restMethod; - MapBuilder _headers; + MapBuilder? _headers; MapBuilder get headers => _$this._headers ??= new MapBuilder(); - set headers(MapBuilder headers) => _$this._headers = headers; + set headers(MapBuilder? headers) => _$this._headers = headers; - bool _isChanged; - bool get isChanged => _$this._isChanged; - set isChanged(bool isChanged) => _$this._isChanged = isChanged; + bool? _isChanged; + bool? get isChanged => _$this._isChanged; + set isChanged(bool? isChanged) => _$this._isChanged = isChanged; - int _createdAt; - int get createdAt => _$this._createdAt; - set createdAt(int createdAt) => _$this._createdAt = createdAt; + int? _createdAt; + int? get createdAt => _$this._createdAt; + set createdAt(int? createdAt) => _$this._createdAt = createdAt; - int _updatedAt; - int get updatedAt => _$this._updatedAt; - set updatedAt(int updatedAt) => _$this._updatedAt = updatedAt; + int? _updatedAt; + int? get updatedAt => _$this._updatedAt; + set updatedAt(int? updatedAt) => _$this._updatedAt = updatedAt; - int _archivedAt; - int get archivedAt => _$this._archivedAt; - set archivedAt(int archivedAt) => _$this._archivedAt = archivedAt; + int? _archivedAt; + int? get archivedAt => _$this._archivedAt; + set archivedAt(int? archivedAt) => _$this._archivedAt = archivedAt; - bool _isDeleted; - bool get isDeleted => _$this._isDeleted; - set isDeleted(bool isDeleted) => _$this._isDeleted = isDeleted; + bool? _isDeleted; + bool? get isDeleted => _$this._isDeleted; + set isDeleted(bool? isDeleted) => _$this._isDeleted = isDeleted; - String _createdUserId; - String get createdUserId => _$this._createdUserId; - set createdUserId(String createdUserId) => + String? _createdUserId; + String? get createdUserId => _$this._createdUserId; + set createdUserId(String? createdUserId) => _$this._createdUserId = createdUserId; - String _assignedUserId; - String get assignedUserId => _$this._assignedUserId; - set assignedUserId(String assignedUserId) => + String? _assignedUserId; + String? get assignedUserId => _$this._assignedUserId; + set assignedUserId(String? assignedUserId) => _$this._assignedUserId = assignedUserId; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; WebhookEntityBuilder() { WebhookEntity._initializeBuilder(this); @@ -668,7 +668,7 @@ class WebhookEntityBuilder } @override - void update(void Function(WebhookEntityBuilder) updates) { + void update(void Function(WebhookEntityBuilder)? updates) { if (updates != null) updates(this); } @@ -702,7 +702,7 @@ class WebhookEntityBuilder id: BuiltValueNullFieldError.checkNotNull( id, r'WebhookEntity', 'id')); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'headers'; headers.build(); diff --git a/lib/data/models/widget_model.dart b/lib/data/models/widget_model.dart index 1c9461871..8546447ea 100644 --- a/lib/data/models/widget_model.dart +++ b/lib/data/models/widget_model.dart @@ -19,13 +19,13 @@ class WidgetData { this.dashboardFields, }); - WidgetData.fromState(AppState state, AppLocalization localization) + WidgetData.fromState(AppState state, AppLocalization? localization) : url = formatApiUrl(state.authState.url), - companyId = state.account.defaultCompanyId, + companyId = state.account!.defaultCompanyId, companies = { for (var userCompany in state.userCompanyStates - .where((state) => state.company.hasName)) - userCompany.company.id: WidgetCompany.fromUserCompany( + .where((state) => state.company!.hasName)) + userCompany.company!.id: WidgetCompany.fromUserCompany( userCompanyState: userCompany, staticState: state.staticState, ) @@ -36,11 +36,11 @@ class WidgetData { DashboardUISettings.FIELD_COMPLETED_PAYMENTS, ], key: (dynamic item) => item, - value: (dynamic item) => localization.lookup('$item')), + value: (dynamic item) => localization!.lookup('$item')), dateRanges = Map.fromIterable( DateRange.values.where((value) => value != DateRange.custom), key: (dynamic item) => toSnakeCase('$item'), - value: (dynamic item) => localization.lookup(toSnakeCase('$item'))); + value: (dynamic item) => localization!.lookup(toSnakeCase('$item'))); WidgetData.fromJson(Map json) : url = json['url'], @@ -57,11 +57,11 @@ class WidgetData { 'dashboard_fields': dashboardFields, }; - final String url; - final String companyId; - final Map companies; - final Map dateRanges; - final Map dashboardFields; + final String? url; + final String? companyId; + final Map? companies; + final Map? dateRanges; + final Map? dashboardFields; } class WidgetCompany { @@ -75,23 +75,23 @@ class WidgetCompany { this.currencies}); WidgetCompany.fromUserCompany( - {UserCompanyState userCompanyState, StaticState staticState}) - : id = userCompanyState.userCompany.company.id, - name = userCompanyState.userCompany.company.displayName, - token = userCompanyState.userCompany.token.token, + {required UserCompanyState userCompanyState, StaticState? staticState}) + : id = userCompanyState.userCompany!.company!.id, + name = userCompanyState.userCompany!.company!.displayName, + token = userCompanyState.userCompany!.token!.token, accentColor = - userCompanyState.userCompany.settings.validatedAccentColor, + userCompanyState.userCompany!.settings!.validatedAccentColor, firstMonthOfYear = - parseInt(userCompanyState.userCompany.company.firstMonthOfYear), - currencyId = userCompanyState.userCompany.company.currencyId, + parseInt(userCompanyState.userCompany!.company!.firstMonthOfYear), + currencyId = userCompanyState.userCompany!.company!.currencyId, currencies = { for (var currencyId in getCurrencyIds( - userCompanyState.userCompany.company, + userCompanyState.userCompany!.company!, userCompanyState.clientState.map, userCompanyState.groupState.map, ).where((currencyId) => currencyId != kCurrencyAll)) currencyId: WidgetCurrency.fromCurrency( - staticState.currencyMap[currencyId], + staticState!.currencyMap[currencyId]!, ) }; @@ -114,13 +114,13 @@ class WidgetCompany { 'first_month_of_year': firstMonthOfYear, }; - final String id; - final String name; - final String token; - final String accentColor; - final String currencyId; - final int firstMonthOfYear; - final Map currencies; + final String? id; + final String? name; + final String? token; + final String? accentColor; + final String? currencyId; + final int? firstMonthOfYear; + final Map? currencies; } class WidgetCurrency { @@ -150,8 +150,8 @@ class WidgetCurrency { 'exchange_rate': exchangeRate, }; - final String id; - final String name; - final String code; - final double exchangeRate; + final String? id; + final String? name; + final String? code; + final double? exchangeRate; } diff --git a/lib/data/repositories/auth_repository.dart b/lib/data/repositories/auth_repository.dart index 59f287428..f9db190c3 100644 --- a/lib/data/repositories/auth_repository.dart +++ b/lib/data/repositories/auth_repository.dart @@ -1,4 +1,5 @@ // Dart imports: +import 'dart:async'; import 'dart:convert'; import 'dart:core'; import 'dart:io'; @@ -25,11 +26,11 @@ class AuthRepository { final WebClient webClient; Future signUp({ - String url, - String secret, - @required String email, - @required String password, - @required String referralCode, + String? url, + String? secret, + required String email, + required String password, + required String referralCode, }) async { final credentials = { 'email': email, @@ -51,13 +52,13 @@ class AuthRepository { } Future oauthSignUp({ - @required String url, - @required String idToken, - @required String accessToken, - @required String referralCode, - @required String provider, - String firstName = '', - String lastName = '', + required String url, + required String? idToken, + required String? accessToken, + required String referralCode, + required String provider, + String? firstName = '', + String? lastName = '', }) async { final credentials = { 'terms_of_service': true, @@ -78,12 +79,12 @@ class AuthRepository { } Future login( - {String email, - String password, - String url, - String secret, - String platform, - String oneTimePassword}) async { + {String? email, + String? password, + String? url, + String? secret, + String? platform, + String? oneTimePassword}) async { final credentials = { 'email': email, 'password': password, @@ -95,7 +96,7 @@ class AuthRepository { return sendRequest(url: url, data: credentials, secret: secret); } - Future logout({@required Credentials credentials}) async { + Future logout({required Credentials credentials}) async { return webClient.post( '${credentials.url}/logout', credentials.token, @@ -103,14 +104,14 @@ class AuthRepository { } Future oauthLogin({ - @required String idToken, - @required String accessToken, - @required String url, - @required String secret, - @required String platform, - @required String provider, - @required String email, - @required String authCode, + required String? idToken, + required String? accessToken, + required String url, + required String secret, + required String platform, + required String provider, + required String? email, + required String? authCode, }) async { final credentials = { 'id_token': idToken, @@ -125,11 +126,11 @@ class AuthRepository { } Future refresh({ - @required String url, - @required String token, - @required int updatedAt, - @required bool currentCompany, - @required bool includeStatic, + required String url, + required String token, + required int updatedAt, + required bool currentCompany, + required bool includeStatic, }) async { url = formatApiUrl(url) + '/refresh?'; @@ -150,7 +151,7 @@ class AuthRepository { } Future recoverPassword( - {String email, String url, String secret, String platform}) async { + {String? email, String? url, String? secret, String? platform}) async { final credentials = { 'email': email, }; @@ -160,15 +161,15 @@ class AuthRepository { } Future setDefaultCompany({ - @required Credentials credentials, - @required String companyId, + required Credentials credentials, + required String companyId, }) async { final url = '${credentials.url}/companies/$companyId/default'; return webClient.post(url, credentials.token); } Future addCompany({ - @required Credentials credentials, + required Credentials credentials, }) async { final url = '${credentials.url}/companies'; final data = { @@ -179,10 +180,10 @@ class AuthRepository { } Future deleteCompany({ - @required Credentials credentials, - @required String companyId, - @required String password, - @required String reason, + required Credentials credentials, + required String companyId, + required String password, + required String reason, }) async { final url = '${credentials.url}/companies/$companyId'; return webClient.delete( @@ -196,10 +197,10 @@ class AuthRepository { } Future purgeData({ - @required Credentials credentials, - @required String companyId, - @required String password, - @required String idToken, + required Credentials credentials, + required String companyId, + required String password, + required String idToken, }) async { return webClient.post( '${credentials.url}/companies/purge_save_settings/$companyId', @@ -210,7 +211,7 @@ class AuthRepository { } Future resendConfirmation( - {@required Credentials credentials, @required String userId}) async { + {required Credentials credentials, required String userId}) async { return webClient.post( '${credentials.url}/user/$userId/reconfirm', credentials.token, @@ -218,10 +219,10 @@ class AuthRepository { } Future sendRequest({ - String url, + required String url, dynamic data, - String token, - String secret, + String? token, + String? secret, bool includeStatic = true, }) async { if (url.contains('?')) { @@ -245,8 +246,9 @@ class AuthRepository { secret: secret, data: json.encode(data)); } - return await compute(SerializationUtils.deserializeWith, - [LoginResponse.serializer, response]); + return await (compute(SerializationUtils.deserializeWith, + [LoginResponse.serializer, response]) + as FutureOr); } String get _tokenName => kIsWeb diff --git a/lib/data/repositories/bank_account_repository.dart b/lib/data/repositories/bank_account_repository.dart index 934ca3857..1be42152c 100644 --- a/lib/data/repositories/bank_account_repository.dart +++ b/lib/data/repositories/bank_account_repository.dart @@ -15,22 +15,22 @@ class BankAccountRepository { final WebClient webClient; Future loadItem( - Credentials credentials, String entityId) async { + Credentials credentials, String? entityId) async { final dynamic response = await webClient.get( '${credentials.url}/bank_integrations/$entityId', credentials.token); final BankAccountItemResponse bankAccountResponse = serializers - .deserializeWith(BankAccountItemResponse.serializer, response); + .deserializeWith(BankAccountItemResponse.serializer, response)!; return bankAccountResponse.data; } Future> loadList(Credentials credentials) async { - final String url = credentials.url + '/bank_integrations?'; + final String url = credentials.url! + '/bank_integrations?'; final dynamic response = await webClient.get(url, credentials.token); final BankAccountListResponse bankAccountResponse = serializers - .deserializeWith(BankAccountListResponse.serializer, response); + .deserializeWith(BankAccountListResponse.serializer, response)!; return bankAccountResponse.data; } @@ -41,13 +41,13 @@ class BankAccountRepository { ids = ids.sublist(0, kMaxEntitiesPerBulkAction); } - final url = credentials.url + + final url = credentials.url! + '/bank_integrations/bulk?per_page=$kMaxEntitiesPerBulkAction'; final dynamic response = await webClient.post(url, credentials.token, data: json.encode({'ids': ids, 'action': action.toApiParam()})); final BankAccountListResponse bankAccountResponse = serializers - .deserializeWith(BankAccountListResponse.serializer, response); + .deserializeWith(BankAccountListResponse.serializer, response)!; return bankAccountResponse.data.toList(); } @@ -60,7 +60,7 @@ class BankAccountRepository { if (bankAccount.isNew) { response = await webClient.post( - credentials.url + '/bank_integrations', credentials.token, + credentials.url! + '/bank_integrations', credentials.token, data: json.encode(data)); } else { final url = '${credentials.url}/bank_integrations/${bankAccount.id}'; @@ -69,7 +69,7 @@ class BankAccountRepository { } final BankAccountItemResponse bankAccountResponse = serializers - .deserializeWith(BankAccountItemResponse.serializer, response); + .deserializeWith(BankAccountItemResponse.serializer, response)!; return bankAccountResponse.data; } diff --git a/lib/data/repositories/client_repository.dart b/lib/data/repositories/client_repository.dart index e06f5f9cc..ea8525b41 100644 --- a/lib/data/repositories/client_repository.dart +++ b/lib/data/repositories/client_repository.dart @@ -1,4 +1,5 @@ // Dart imports: +import 'dart:async'; import 'dart:convert'; import 'dart:core'; @@ -25,15 +26,16 @@ class ClientRepository { final WebClient webClient; Future loadItem( - Credentials credentials, String entityId) async { + Credentials credentials, String? entityId) async { final String url = '${credentials.url}/clients/$entityId?include=gateway_tokens,activities,ledger,system_logs,documents'; final dynamic response = await webClient.get(url, credentials.token); - final ClientItemResponse clientResponse = await compute( - SerializationUtils.deserializeWith, - [ClientItemResponse.serializer, response]); + final ClientItemResponse clientResponse = await (compute( + SerializationUtils.deserializeWith, + [ClientItemResponse.serializer, response]) + as FutureOr); return clientResponse.data; } @@ -41,15 +43,16 @@ class ClientRepository { Future> loadList( Credentials credentials, int page) async { final String url = - credentials.url + '/clients?per_page=$kMaxRecordsPerPage&page=$page'; + credentials.url! + '/clients?per_page=$kMaxRecordsPerPage&page=$page'; final dynamic response = await webClient.get(url, credentials.token); //debugPrint('## CLIENTS: $response'); - final ClientListResponse clientResponse = await compute( - SerializationUtils.deserializeWith, - [ClientListResponse.serializer, response]); + final ClientListResponse clientResponse = await (compute( + SerializationUtils.deserializeWith, + [ClientListResponse.serializer, response]) + as FutureOr); return clientResponse.data; } @@ -60,24 +63,24 @@ class ClientRepository { ids = ids.sublist(0, kMaxEntitiesPerBulkAction); } - final url = credentials.url + + final url = credentials.url! + '/clients/bulk?per_page=$kMaxEntitiesPerBulkAction&include=gateway_tokens,activities,ledger,system_logs,documents'; final dynamic response = await webClient.post(url, credentials.token, data: json.encode({'ids': ids, 'action': action.toApiParam()})); final ClientListResponse clientResponse = - serializers.deserializeWith(ClientListResponse.serializer, response); + serializers.deserializeWith(ClientListResponse.serializer, response)!; return clientResponse.data.toList(); } Future purge({ - @required Credentials credentials, - @required String clientId, - @required String password, - @required String idToken, + required Credentials credentials, + required String clientId, + required String? password, + required String? idToken, }) async { - final url = credentials.url + '/clients/$clientId/purge'; + final url = credentials.url! + '/clients/$clientId/purge'; await webClient.post(url, credentials.token, password: password, idToken: idToken); @@ -86,19 +89,20 @@ class ClientRepository { } Future merge({ - @required Credentials credentials, - @required String clientId, - @required String mergeIntoClientId, - @required String password, - @required String idToken, + required Credentials credentials, + required String? clientId, + required String? mergeIntoClientId, + required String? password, + required String? idToken, }) async { - final url = credentials.url + '/clients/$mergeIntoClientId/$clientId/merge'; + final url = + credentials.url! + '/clients/$mergeIntoClientId/$clientId/merge'; final dynamic response = await webClient.post(url, credentials.token, password: password, idToken: idToken); final ClientItemResponse clientResponse = - serializers.deserializeWith(ClientItemResponse.serializer, response); + serializers.deserializeWith(ClientItemResponse.serializer, response)!; return clientResponse.data; } @@ -111,19 +115,19 @@ class ClientRepository { if (client.isNew) { response = await webClient.post( - credentials.url + + credentials.url! + '/clients?include=gateway_tokens,activities,ledger,system_logs,documents', credentials.token, data: json.encode(data)); } else { - final url = credentials.url + + final url = credentials.url! + '/clients/${client.id}?include=gateway_tokens,activities,ledger,system_logs,documents'; response = await webClient.put(url, credentials.token, data: json.encode(data)); } final ClientItemResponse clientResponse = - serializers.deserializeWith(ClientItemResponse.serializer, response); + serializers.deserializeWith(ClientItemResponse.serializer, response)!; return clientResponse.data; } @@ -145,7 +149,7 @@ class ClientRepository { multipartFiles: multipartFile); final ClientItemResponse clientResponse = - serializers.deserializeWith(ClientItemResponse.serializer, response); + serializers.deserializeWith(ClientItemResponse.serializer, response)!; return clientResponse.data; } diff --git a/lib/data/repositories/company_gateway_repository.dart b/lib/data/repositories/company_gateway_repository.dart index 8a178b329..2267ea758 100644 --- a/lib/data/repositories/company_gateway_repository.dart +++ b/lib/data/repositories/company_gateway_repository.dart @@ -22,25 +22,25 @@ class CompanyGatewayRepository { // TODO remove includes in this file Future loadItem( - Credentials credentials, String entityId) async { + Credentials credentials, String? entityId) async { final dynamic response = await webClient.get( '${credentials.url}/company_gateways/$entityId?include=system_logs', credentials.token); final CompanyGatewayItemResponse companyGatewayResponse = serializers - .deserializeWith(CompanyGatewayItemResponse.serializer, response); + .deserializeWith(CompanyGatewayItemResponse.serializer, response)!; return companyGatewayResponse.data; } Future> loadList( Credentials credentials) async { - final url = credentials.url + '/company_gateways'; + final url = credentials.url! + '/company_gateways'; final dynamic response = await webClient.get(url, credentials.token); final CompanyGatewayListResponse companyGatewayResponse = serializers - .deserializeWith(CompanyGatewayListResponse.serializer, response); + .deserializeWith(CompanyGatewayListResponse.serializer, response)!; return companyGatewayResponse.data; } @@ -51,20 +51,20 @@ class CompanyGatewayRepository { ids = ids.sublist(0, kMaxEntitiesPerBulkAction); } - final url = credentials.url + + final url = credentials.url! + '/company_gateways/bulk?per_page=$kMaxEntitiesPerBulkAction'; final dynamic response = await webClient.post(url, credentials.token, data: json.encode({'ids': ids, 'action': action.toApiParam()})); final CompanyGatewayListResponse companyGatewayResponse = serializers - .deserializeWith(CompanyGatewayListResponse.serializer, response); + .deserializeWith(CompanyGatewayListResponse.serializer, response)!; return companyGatewayResponse.data.toList(); } - Future disconnect(Credentials credentials, String id, String password, - String idToken) async { - final url = credentials.url + '/stripe/disconnect/$id'; + Future disconnect(Credentials credentials, String id, String? password, + String? idToken) async { + final url = credentials.url! + '/stripe/disconnect/$id'; await webClient.post( url, credentials.token, @@ -81,16 +81,16 @@ class CompanyGatewayRepository { if (companyGateway.isNew) { response = await webClient.post( - credentials.url + '/company_gateways', credentials.token, + credentials.url! + '/company_gateways', credentials.token, data: json.encode(data)); } else { - final url = credentials.url + '/company_gateways/${companyGateway.id}'; + final url = credentials.url! + '/company_gateways/${companyGateway.id}'; response = await webClient.put(url, credentials.token, data: json.encode(data)); } final CompanyGatewayItemResponse companyGatewayResponse = serializers - .deserializeWith(CompanyGatewayItemResponse.serializer, response); + .deserializeWith(CompanyGatewayItemResponse.serializer, response)!; return companyGatewayResponse.data; } diff --git a/lib/data/repositories/credit_repository.dart b/lib/data/repositories/credit_repository.dart index c7e8909fe..9974dc11e 100644 --- a/lib/data/repositories/credit_repository.dart +++ b/lib/data/repositories/credit_repository.dart @@ -1,4 +1,5 @@ // Dart imports: +import 'dart:async'; import 'dart:convert'; import 'dart:core'; @@ -25,21 +26,22 @@ class CreditRepository { final WebClient webClient; Future loadItem( - Credentials credentials, String entityId) async { + Credentials credentials, String? entityId) async { final dynamic response = await webClient.get( '${credentials.url}/credits/$entityId?include=activities.history', credentials.token); - final InvoiceItemResponse creditResponse = await compute( - SerializationUtils.deserializeWith, - [InvoiceItemResponse.serializer, response]); + final InvoiceItemResponse creditResponse = await (compute( + SerializationUtils.deserializeWith, + [InvoiceItemResponse.serializer, response]) + as FutureOr); return creditResponse.data; } Future> loadList( Credentials credentials, int createdAt, bool filterDeleted) async { - String url = credentials.url + '/credits?created_at=$createdAt'; + String url = credentials.url! + '/credits?created_at=$createdAt'; if (filterDeleted) { url += '&filter_deleted_clients=true'; @@ -47,22 +49,23 @@ class CreditRepository { final dynamic response = await webClient.get(url, credentials.token); - final InvoiceListResponse creditResponse = await compute( - SerializationUtils.deserializeWith, - [InvoiceListResponse.serializer, response]); + final InvoiceListResponse creditResponse = await (compute( + SerializationUtils.deserializeWith, + [InvoiceListResponse.serializer, response]) + as FutureOr); return creditResponse.data; } Future> bulkAction( Credentials credentials, List ids, EntityAction action, - {EmailTemplate template}) async { + {EmailTemplate? template}) async { if (ids.length > kMaxEntitiesPerBulkAction && action.applyMaxLimit) { ids = ids.sublist(0, kMaxEntitiesPerBulkAction); } final url = - credentials.url + '/credits/bulk?per_page=$kMaxEntitiesPerBulkAction'; + credentials.url! + '/credits/bulk?per_page=$kMaxEntitiesPerBulkAction'; final dynamic response = await webClient.post(url, credentials.token, data: json.encode({ 'ids': ids, @@ -71,7 +74,7 @@ class CreditRepository { })); final InvoiceListResponse invoiceResponse = - serializers.deserializeWith(InvoiceListResponse.serializer, response); + serializers.deserializeWith(InvoiceListResponse.serializer, response)!; return invoiceResponse.data.toList(); } @@ -79,7 +82,7 @@ class CreditRepository { Future saveData( Credentials credentials, InvoiceEntity credit, - EntityAction action, + EntityAction? action, ) async { credit = credit.rebuild((b) => b..documents.clear()); final data = serializers.serializeWith(InvoiceEntity.serializer, credit); @@ -87,7 +90,7 @@ class CreditRepository { dynamic response; if (credit.isNew) { - url = credentials.url + '/credits?include=activities.history'; + url = credentials.url! + '/credits?include=activities.history'; } else { url = '${credentials.url}/credits/${credit.id}?include=activities.history'; @@ -108,7 +111,7 @@ class CreditRepository { } final InvoiceItemResponse creditResponse = - serializers.deserializeWith(InvoiceItemResponse.serializer, response); + serializers.deserializeWith(InvoiceItemResponse.serializer, response)!; return creditResponse.data; } @@ -131,11 +134,11 @@ class CreditRepository { }; final dynamic response = await webClient.post( - credentials.url + '/emails', credentials.token, + credentials.url! + '/emails', credentials.token, data: json.encode(data)); final InvoiceItemResponse invoiceResponse = - serializers.deserializeWith(InvoiceItemResponse.serializer, response); + serializers.deserializeWith(InvoiceItemResponse.serializer, response)!; return invoiceResponse.data; } @@ -155,7 +158,7 @@ class CreditRepository { data: fields, multipartFiles: multipartFiles); final InvoiceItemResponse invoiceResponse = - serializers.deserializeWith(InvoiceItemResponse.serializer, response); + serializers.deserializeWith(InvoiceItemResponse.serializer, response)!; return invoiceResponse.data; } diff --git a/lib/data/repositories/design_repository.dart b/lib/data/repositories/design_repository.dart index 6fa7d4662..5d39b0bf0 100644 --- a/lib/data/repositories/design_repository.dart +++ b/lib/data/repositories/design_repository.dart @@ -20,23 +20,23 @@ class DesignRepository { final WebClient webClient; Future loadItem( - Credentials credentials, String entityId) async { + Credentials credentials, String? entityId) async { final dynamic response = await webClient.get( '${credentials.url}/designs/$entityId', credentials.token); final DesignItemResponse designResponse = - serializers.deserializeWith(DesignItemResponse.serializer, response); + serializers.deserializeWith(DesignItemResponse.serializer, response)!; return designResponse.data; } Future> loadList(Credentials credentials) async { - final url = credentials.url + '/designs?'; + final url = credentials.url! + '/designs?'; final dynamic response = await webClient.get(url, credentials.token); final DesignListResponse designResponse = - serializers.deserializeWith(DesignListResponse.serializer, response); + serializers.deserializeWith(DesignListResponse.serializer, response)!; return designResponse.data; } @@ -48,12 +48,12 @@ class DesignRepository { } final url = - credentials.url + '/designs/bulk?per_page=$kMaxEntitiesPerBulkAction'; + credentials.url! + '/designs/bulk?per_page=$kMaxEntitiesPerBulkAction'; final dynamic response = await webClient.post(url, credentials.token, data: json.encode({'ids': ids, 'action': action.toApiParam()})); final DesignListResponse designResponse = - serializers.deserializeWith(DesignListResponse.serializer, response); + serializers.deserializeWith(DesignListResponse.serializer, response)!; return designResponse.data.toList(); } @@ -65,16 +65,16 @@ class DesignRepository { if (design.isNew) { response = await webClient.post( - credentials.url + '/designs', credentials.token, + credentials.url! + '/designs', credentials.token, data: json.encode(data)); } else { - final url = credentials.url + '/designs/${design.id}'; + final url = credentials.url! + '/designs/${design.id}'; response = await webClient.put(url, credentials.token, data: json.encode(data)); } final DesignItemResponse designResponse = - serializers.deserializeWith(DesignItemResponse.serializer, response); + serializers.deserializeWith(DesignItemResponse.serializer, response)!; return designResponse.data; } diff --git a/lib/data/repositories/document_repository.dart b/lib/data/repositories/document_repository.dart index d3bdb1f3a..e01bcf393 100644 --- a/lib/data/repositories/document_repository.dart +++ b/lib/data/repositories/document_repository.dart @@ -22,17 +22,17 @@ class DocumentRepository { final WebClient webClient; Future loadItem( - Credentials credentials, String entityId) async { + Credentials credentials, String? entityId) async { final dynamic response = await webClient.get( '${credentials.url}/documents/$entityId', credentials.token); final DocumentItemResponse documentResponse = - serializers.deserializeWith(DocumentItemResponse.serializer, response); + serializers.deserializeWith(DocumentItemResponse.serializer, response)!; return documentResponse.data; } - Future loadData( + Future loadData( Credentials credentials, DocumentEntity document) async { final url = '${cleanApiUrl(credentials.url)}/documents/${document.hash}'; final dynamic response = @@ -42,12 +42,12 @@ class DocumentRepository { } Future> loadList(Credentials credentials) async { - final url = credentials.url + '/documents?'; + final url = credentials.url! + '/documents?'; final dynamic response = await webClient.get(url, credentials.token); final DocumentListResponse documentResponse = - serializers.deserializeWith(DocumentListResponse.serializer, response); + serializers.deserializeWith(DocumentListResponse.serializer, response)!; return documentResponse.data; } @@ -57,13 +57,13 @@ class DocumentRepository { final data = serializers.serializeWith(DocumentEntity.serializer, document); dynamic response; - final url = credentials.url + '/documents/${document.id}'; + final url = credentials.url! + '/documents/${document.id}'; response = await webClient.put(url, credentials.token, data: json.encode(data)); final DocumentItemResponse documentResponse = - serializers.deserializeWith(DocumentItemResponse.serializer, response); + serializers.deserializeWith(DocumentItemResponse.serializer, response)!; return documentResponse.data; } @@ -74,19 +74,19 @@ class DocumentRepository { ids = ids.sublist(0, kMaxEntitiesPerBulkAction); } - final url = - credentials.url + '/documents/bulk?per_page=$kMaxEntitiesPerBulkAction'; + final url = credentials.url! + + '/documents/bulk?per_page=$kMaxEntitiesPerBulkAction'; final dynamic response = await webClient.post(url, credentials.token, data: json.encode({'ids': ids, 'action': action.toApiParam()})); final DocumentListResponse documentResponse = - serializers.deserializeWith(DocumentListResponse.serializer, response); + serializers.deserializeWith(DocumentListResponse.serializer, response)!; return documentResponse.data.toList(); } Future delete(Credentials credentials, String documentId, - String password, String idToken) async { + String? password, String? idToken) async { await webClient.delete( '${credentials.url}/documents/$documentId', credentials.token, diff --git a/lib/data/repositories/expense_category_repository.dart b/lib/data/repositories/expense_category_repository.dart index 82676cde5..299cac735 100644 --- a/lib/data/repositories/expense_category_repository.dart +++ b/lib/data/repositories/expense_category_repository.dart @@ -20,23 +20,23 @@ class ExpenseCategoryRepository { final WebClient webClient; Future loadItem( - Credentials credentials, String entityId) async { + Credentials credentials, String? entityId) async { final dynamic response = await webClient.get( '${credentials.url}/expense_categories/$entityId', credentials.token); final ExpenseCategoryItemResponse expenseCategoryResponse = serializers - .deserializeWith(ExpenseCategoryItemResponse.serializer, response); + .deserializeWith(ExpenseCategoryItemResponse.serializer, response)!; return expenseCategoryResponse.data; } Future> loadList( Credentials credentials) async { - final String url = credentials.url + '/expense_categories?'; + final String url = credentials.url! + '/expense_categories?'; final dynamic response = await webClient.get(url, credentials.token); final ExpenseCategoryListResponse expenseCategoryResponse = serializers - .deserializeWith(ExpenseCategoryListResponse.serializer, response); + .deserializeWith(ExpenseCategoryListResponse.serializer, response)!; return expenseCategoryResponse.data; } @@ -47,13 +47,13 @@ class ExpenseCategoryRepository { ids = ids.sublist(0, kMaxEntitiesPerBulkAction); } - final url = credentials.url + + final url = credentials.url! + '/expense_categories/bulk?per_page=$kMaxEntitiesPerBulkAction'; final dynamic response = await webClient.post(url, credentials.token, data: json.encode({'ids': ids, 'action': action.toApiParam()})); final ExpenseCategoryListResponse expenseCategoryResponse = serializers - .deserializeWith(ExpenseCategoryListResponse.serializer, response); + .deserializeWith(ExpenseCategoryListResponse.serializer, response)!; return expenseCategoryResponse.data.toList(); } @@ -66,7 +66,7 @@ class ExpenseCategoryRepository { if (expenseCategory.isNew) { response = await webClient.post( - credentials.url + '/expense_categories', credentials.token, + credentials.url! + '/expense_categories', credentials.token, data: json.encode(data)); } else { final url = '${credentials.url}/expense_categories/${expenseCategory.id}'; @@ -75,7 +75,7 @@ class ExpenseCategoryRepository { } final ExpenseCategoryItemResponse expenseCategoryResponse = serializers - .deserializeWith(ExpenseCategoryItemResponse.serializer, response); + .deserializeWith(ExpenseCategoryItemResponse.serializer, response)!; return expenseCategoryResponse.data; } diff --git a/lib/data/repositories/expense_repository.dart b/lib/data/repositories/expense_repository.dart index a5b9da315..bc22da168 100644 --- a/lib/data/repositories/expense_repository.dart +++ b/lib/data/repositories/expense_repository.dart @@ -1,4 +1,5 @@ // Dart imports: +import 'dart:async'; import 'dart:convert'; import 'dart:core'; @@ -25,20 +26,21 @@ class ExpenseRepository { final WebClient webClient; Future loadItem( - Credentials credentials, String entityId) async { + Credentials credentials, String? entityId) async { final dynamic response = await webClient.get( '${credentials.url}/expenses/$entityId', credentials.token); - final ExpenseItemResponse expenseResponse = await compute( - SerializationUtils.deserializeWith, - [ExpenseItemResponse.serializer, response]); + final ExpenseItemResponse expenseResponse = + await (compute(SerializationUtils.deserializeWith, + [ExpenseItemResponse.serializer, response]) + as FutureOr); return expenseResponse.data; } Future> loadList(Credentials credentials, int page, int createdAt, bool filterDeleted) async { - final url = credentials.url + + final url = credentials.url! + '/expenses?per_page=$kMaxRecordsPerPage&page=$page&created_at=$createdAt'; /* Server is incorrect if client isn't set @@ -49,9 +51,10 @@ class ExpenseRepository { final dynamic response = await webClient.get(url, credentials.token); - final ExpenseListResponse expenseResponse = await compute( - SerializationUtils.deserializeWith, - [ExpenseListResponse.serializer, response]); + final ExpenseListResponse expenseResponse = + await (compute(SerializationUtils.deserializeWith, + [ExpenseListResponse.serializer, response]) + as FutureOr); return expenseResponse.data; } @@ -63,12 +66,12 @@ class ExpenseRepository { } final url = - credentials.url + '/expenses/bulk?per_page=$kMaxEntitiesPerBulkAction'; + credentials.url! + '/expenses/bulk?per_page=$kMaxEntitiesPerBulkAction'; final dynamic response = await webClient.post(url, credentials.token, data: json.encode({'ids': ids, 'action': action.toApiParam()})); final ExpenseListResponse expenseResponse = - serializers.deserializeWith(ExpenseListResponse.serializer, response); + serializers.deserializeWith(ExpenseListResponse.serializer, response)!; return expenseResponse.data.toList(); } @@ -80,16 +83,16 @@ class ExpenseRepository { if (expense.isNew) { response = await webClient.post( - credentials.url + '/expenses', credentials.token, + credentials.url! + '/expenses', credentials.token, data: json.encode(data)); } else { - final url = credentials.url + '/expenses/${expense.id}'; + final url = credentials.url! + '/expenses/${expense.id}'; response = await webClient.put(url, credentials.token, data: json.encode(data)); } final ExpenseItemResponse expenseResponse = - serializers.deserializeWith(ExpenseItemResponse.serializer, response); + serializers.deserializeWith(ExpenseItemResponse.serializer, response)!; return expenseResponse.data; } @@ -109,7 +112,7 @@ class ExpenseRepository { data: fields, multipartFiles: multipartFiles); final ExpenseItemResponse expenseResponse = - serializers.deserializeWith(ExpenseItemResponse.serializer, response); + serializers.deserializeWith(ExpenseItemResponse.serializer, response)!; return expenseResponse.data; } diff --git a/lib/data/repositories/group_repository.dart b/lib/data/repositories/group_repository.dart index a2292cfaa..aa1e1831b 100644 --- a/lib/data/repositories/group_repository.dart +++ b/lib/data/repositories/group_repository.dart @@ -21,23 +21,23 @@ class GroupRepository { final WebClient webClient; - Future loadItem(Credentials credentials, String entityId) async { + Future loadItem(Credentials credentials, String? entityId) async { final dynamic response = await webClient.get( '${credentials.url}/group_settings/$entityId', credentials.token); final GroupItemResponse groupResponse = - serializers.deserializeWith(GroupItemResponse.serializer, response); + serializers.deserializeWith(GroupItemResponse.serializer, response)!; return groupResponse.data; } Future> loadList(Credentials credentials) async { - final url = credentials.url + '/group_settings?'; + final url = credentials.url! + '/group_settings?'; final dynamic response = await webClient.get(url, credentials.token); final GroupListResponse groupResponse = - serializers.deserializeWith(GroupListResponse.serializer, response); + serializers.deserializeWith(GroupListResponse.serializer, response)!; return groupResponse.data; } @@ -48,13 +48,13 @@ class GroupRepository { ids = ids.sublist(0, kMaxEntitiesPerBulkAction); } - final url = credentials.url + + final url = credentials.url! + '/group_settings/bulk?per_page=$kMaxEntitiesPerBulkAction'; final dynamic response = await webClient.post(url, credentials.token, data: json.encode({'ids': ids, 'action': action.toApiParam()})); final GroupListResponse groupResponse = - serializers.deserializeWith(GroupListResponse.serializer, response); + serializers.deserializeWith(GroupListResponse.serializer, response)!; return groupResponse.data.toList(); } @@ -66,16 +66,16 @@ class GroupRepository { if (group.isNew) { response = await webClient.post( - credentials.url + '/group_settings', credentials.token, + credentials.url! + '/group_settings', credentials.token, data: json.encode(data)); } else { - final url = credentials.url + '/group_settings/${group.id}'; + final url = credentials.url! + '/group_settings/${group.id}'; response = await webClient.put(url, credentials.token, data: json.encode(data)); } final GroupItemResponse groupResponse = - serializers.deserializeWith(GroupItemResponse.serializer, response); + serializers.deserializeWith(GroupItemResponse.serializer, response)!; return groupResponse.data; } @@ -97,7 +97,7 @@ class GroupRepository { multipartFiles: multipartFiles); final GroupItemResponse groupResponse = - serializers.deserializeWith(GroupItemResponse.serializer, response); + serializers.deserializeWith(GroupItemResponse.serializer, response)!; return groupResponse.data; } diff --git a/lib/data/repositories/invoice_repository.dart b/lib/data/repositories/invoice_repository.dart index e83cbd3eb..4a4888742 100644 --- a/lib/data/repositories/invoice_repository.dart +++ b/lib/data/repositories/invoice_repository.dart @@ -1,4 +1,5 @@ // Dart imports: +import 'dart:async'; import 'dart:convert'; import 'dart:core'; @@ -25,21 +26,22 @@ class InvoiceRepository { final WebClient webClient; Future loadItem( - Credentials credentials, String entityId) async { + Credentials credentials, String? entityId) async { final dynamic response = await webClient.get( '${credentials.url}/invoices/$entityId?include=activities.history', credentials.token); - final InvoiceItemResponse invoiceResponse = await compute( - SerializationUtils.deserializeWith, - [InvoiceItemResponse.serializer, response]); + final InvoiceItemResponse invoiceResponse = + await (compute(SerializationUtils.deserializeWith, + [InvoiceItemResponse.serializer, response]) + as FutureOr); return invoiceResponse.data; } Future> loadList(Credentials credentials, int page, int createdAt, bool filterDeleted) async { - String url = credentials.url + + String url = credentials.url! + '/invoices?per_page=$kMaxRecordsPerPage&page=$page&created_at=$createdAt'; if (filterDeleted) { @@ -48,22 +50,23 @@ class InvoiceRepository { final dynamic response = await webClient.get(url, credentials.token); - final InvoiceListResponse invoiceResponse = await compute( - SerializationUtils.deserializeWith, - [InvoiceListResponse.serializer, response]); + final InvoiceListResponse invoiceResponse = + await (compute(SerializationUtils.deserializeWith, + [InvoiceListResponse.serializer, response]) + as FutureOr); return invoiceResponse.data; } Future> bulkAction( Credentials credentials, List ids, EntityAction action, - {EmailTemplate template}) async { + {EmailTemplate? template}) async { if (ids.length > kMaxEntitiesPerBulkAction && action.applyMaxLimit) { ids = ids.sublist(0, kMaxEntitiesPerBulkAction); } final url = - credentials.url + '/invoices/bulk?per_page=$kMaxEntitiesPerBulkAction'; + credentials.url! + '/invoices/bulk?per_page=$kMaxEntitiesPerBulkAction'; final dynamic response = await webClient.post(url, credentials.token, data: json.encode({ 'ids': ids, @@ -72,7 +75,7 @@ class InvoiceRepository { })); final InvoiceListResponse invoiceResponse = - serializers.deserializeWith(InvoiceListResponse.serializer, response); + serializers.deserializeWith(InvoiceListResponse.serializer, response)!; return invoiceResponse.data.toList(); } @@ -80,7 +83,7 @@ class InvoiceRepository { Future saveData( Credentials credentials, InvoiceEntity invoice, { - EntityAction action, + EntityAction? action, }) async { invoice = invoice.rebuild((b) => b..documents.clear()); final data = serializers.serializeWith(InvoiceEntity.serializer, invoice); @@ -88,7 +91,7 @@ class InvoiceRepository { String url; if (invoice.isNew) { - url = credentials.url + '/invoices?include=activities.history'; + url = credentials.url! + '/invoices?include=activities.history'; } else { url = '${credentials.url}/invoices/${invoice.id}?include=activities.history'; @@ -120,7 +123,7 @@ class InvoiceRepository { } final InvoiceItemResponse invoiceResponse = - serializers.deserializeWith(InvoiceItemResponse.serializer, response); + serializers.deserializeWith(InvoiceItemResponse.serializer, response)!; return invoiceResponse.data; } @@ -143,11 +146,11 @@ class InvoiceRepository { }; final dynamic response = await webClient.post( - credentials.url + '/emails', credentials.token, + credentials.url! + '/emails', credentials.token, data: json.encode(data)); final InvoiceItemResponse invoiceResponse = - serializers.deserializeWith(InvoiceItemResponse.serializer, response); + serializers.deserializeWith(InvoiceItemResponse.serializer, response)!; return invoiceResponse.data; } @@ -167,7 +170,7 @@ class InvoiceRepository { data: fields, multipartFiles: multipartFiles); final InvoiceItemResponse invoiceResponse = - serializers.deserializeWith(InvoiceItemResponse.serializer, response); + serializers.deserializeWith(InvoiceItemResponse.serializer, response)!; return invoiceResponse.data; } diff --git a/lib/data/repositories/payment_repository.dart b/lib/data/repositories/payment_repository.dart index 3122f97a3..001f8a1a8 100644 --- a/lib/data/repositories/payment_repository.dart +++ b/lib/data/repositories/payment_repository.dart @@ -1,4 +1,5 @@ // Dart imports: +import 'dart:async'; import 'dart:convert'; import 'dart:core'; @@ -24,21 +25,22 @@ class PaymentRepository { final WebClient webClient; Future loadItem( - Credentials credentials, String entityId) async { + Credentials credentials, String? entityId) async { final String url = '${credentials.url}/payments/$entityId'; final dynamic response = await webClient.get(url, credentials.token); - final PaymentItemResponse paymentResponse = await compute( - SerializationUtils.deserializeWith, - [PaymentItemResponse.serializer, response]); + final PaymentItemResponse paymentResponse = + await (compute(SerializationUtils.deserializeWith, + [PaymentItemResponse.serializer, response]) + as FutureOr); return paymentResponse.data; } Future> loadList(Credentials credentials, int page, int createdAt, bool filterDeleted) async { - String url = credentials.url + + String url = credentials.url! + '/payments?per_page=$kMaxRecordsPerPage&page=$page&created_at=$createdAt'; if (filterDeleted) { @@ -47,9 +49,10 @@ class PaymentRepository { final dynamic response = await webClient.get(url, credentials.token); - final PaymentListResponse paymentResponse = await compute( - SerializationUtils.deserializeWith, - [PaymentListResponse.serializer, response]); + final PaymentListResponse paymentResponse = + await (compute(SerializationUtils.deserializeWith, + [PaymentListResponse.serializer, response]) + as FutureOr); return paymentResponse.data; } @@ -61,18 +64,18 @@ class PaymentRepository { } final url = - credentials.url + '/payments/bulk?per_page=$kMaxEntitiesPerBulkAction'; + credentials.url! + '/payments/bulk?per_page=$kMaxEntitiesPerBulkAction'; final dynamic response = await webClient.post(url, credentials.token, data: json.encode({'ids': ids, 'action': action.toApiParam()})); final PaymentListResponse paymentResponse = - serializers.deserializeWith(PaymentListResponse.serializer, response); + serializers.deserializeWith(PaymentListResponse.serializer, response)!; return paymentResponse.data.toList(); } Future saveData(Credentials credentials, PaymentEntity payment, - {bool sendEmail = false}) async { + {bool? sendEmail = false}) async { final data = serializers.serializeWith(PaymentEntity.serializer, payment); dynamic response; @@ -82,7 +85,7 @@ class PaymentRepository { await webClient.post(url, credentials.token, data: json.encode(data)); } else { var url = '${credentials.url}/payments/${payment.id}?'; - if (sendEmail) { + if (sendEmail!) { url += '&email_receipt=true'; } response = @@ -90,7 +93,7 @@ class PaymentRepository { } final PaymentItemResponse paymentResponse = - serializers.deserializeWith(PaymentItemResponse.serializer, response); + serializers.deserializeWith(PaymentItemResponse.serializer, response)!; return paymentResponse.data; } @@ -100,7 +103,7 @@ class PaymentRepository { final data = serializers.serializeWith(PaymentEntity.serializer, payment); dynamic response; - var url = credentials.url + '/payments/refund?'; + var url = credentials.url! + '/payments/refund?'; if (payment.sendEmail == true) { url += '&email_receipt=true'; } @@ -111,7 +114,7 @@ class PaymentRepository { await webClient.post(url, credentials.token, data: json.encode(data)); final PaymentItemResponse paymentResponse = - serializers.deserializeWith(PaymentItemResponse.serializer, response); + serializers.deserializeWith(PaymentItemResponse.serializer, response)!; return paymentResponse.data; } diff --git a/lib/data/repositories/payment_term_repository.dart b/lib/data/repositories/payment_term_repository.dart index 32732311e..c4f155ca0 100644 --- a/lib/data/repositories/payment_term_repository.dart +++ b/lib/data/repositories/payment_term_repository.dart @@ -21,23 +21,23 @@ class PaymentTermRepository { final WebClient webClient; Future loadItem( - Credentials credentials, String entityId) async { + Credentials credentials, String? entityId) async { final dynamic response = await webClient.get( '${credentials.url}/payment_terms/$entityId', credentials.token); final PaymentTermItemResponse paymentTermResponse = serializers - .deserializeWith(PaymentTermItemResponse.serializer, response); + .deserializeWith(PaymentTermItemResponse.serializer, response)!; return paymentTermResponse.data; } Future> loadList(Credentials credentials) async { - final url = credentials.url + '/payment_terms?'; + final url = credentials.url! + '/payment_terms?'; final dynamic response = await webClient.get(url, credentials.token); final PaymentTermListResponse paymentTermResponse = serializers - .deserializeWith(PaymentTermListResponse.serializer, response); + .deserializeWith(PaymentTermListResponse.serializer, response)!; return paymentTermResponse.data; } @@ -48,13 +48,13 @@ class PaymentTermRepository { ids = ids.sublist(0, kMaxEntitiesPerBulkAction); } - final url = credentials.url + + final url = credentials.url! + '/payment_terms/bulk?per_page=$kMaxEntitiesPerBulkAction'; final dynamic response = await webClient.post(url, credentials.token, data: json.encode({'ids': ids, 'action': action.toApiParam()})); final PaymentTermListResponse paymentTermResponse = serializers - .deserializeWith(PaymentTermListResponse.serializer, response); + .deserializeWith(PaymentTermListResponse.serializer, response)!; return paymentTermResponse.data.toList(); } @@ -67,7 +67,7 @@ class PaymentTermRepository { if (paymentTerm.isNew) { response = await webClient.post( - credentials.url + '/payment_terms', credentials.token, + credentials.url! + '/payment_terms', credentials.token, data: json.encode(data)); } else { final url = '${credentials.url}/payment_terms/${paymentTerm.id}'; @@ -76,7 +76,7 @@ class PaymentTermRepository { } final PaymentTermItemResponse paymentTermResponse = serializers - .deserializeWith(PaymentTermItemResponse.serializer, response); + .deserializeWith(PaymentTermItemResponse.serializer, response)!; return paymentTermResponse.data; } diff --git a/lib/data/repositories/persistence_repository.dart b/lib/data/repositories/persistence_repository.dart index d5f8a2bcf..f53a8e455 100644 --- a/lib/data/repositories/persistence_repository.dart +++ b/lib/data/repositories/persistence_repository.dart @@ -1,14 +1,9 @@ // Dart imports: +import 'dart:async'; import 'dart:convert'; import 'dart:core'; import 'dart:io'; -// Flutter imports: -import 'package:flutter/foundation.dart'; - -// Package imports: -import 'package:meta/meta.dart'; - // Project imports: import 'package:invoiceninja_flutter/data/file_storage.dart'; import 'package:invoiceninja_flutter/data/models/serializers.dart'; @@ -23,7 +18,7 @@ import 'package:invoiceninja_flutter/utils/web_stub.dart' class PersistenceRepository { const PersistenceRepository({ - @required this.fileStorage, + required this.fileStorage, }); final FileStorage fileStorage; @@ -48,14 +43,14 @@ class PersistenceRepository { } */ - Future saveCompanyState(UserCompanyState state) async { + Future saveCompanyState(UserCompanyState state) async { final data = serializers.serializeWith(UserCompanyState.serializer, state); return await fileStorage.save(json.encode(data)); } - Future loadCompanyState(int index) async { - final String data = await fileStorage.load(); + Future loadCompanyState(int index) async { + final String data = await (fileStorage.load() as FutureOr); final companyState = serializers.deserializeWith( UserCompanyState.serializer, json.decode(data)); @@ -64,14 +59,14 @@ class PersistenceRepository { //return compute(_deserialize, data); } - Future saveAuthState(AuthState state) async { + Future saveAuthState(AuthState state) async { final data = serializers.serializeWith(AuthState.serializer, state); return await fileStorage.save(json.encode(data)); } - Future loadAuthState() async { + Future loadAuthState() async { if (await fileStorage.exists()) { - final String data = await fileStorage.load(); + final String data = await (fileStorage.load() as FutureOr); return serializers.deserializeWith( AuthState.serializer, json.decode(data)); } else { @@ -79,24 +74,24 @@ class PersistenceRepository { } } - Future saveStaticState(StaticState state) async { + Future saveStaticState(StaticState state) async { final data = serializers.serializeWith(StaticState.serializer, state); return await fileStorage.save(json.encode(data)); } - Future loadStaticState() async { - final String data = await fileStorage.load(); + Future loadStaticState() async { + final String data = await (fileStorage.load() as FutureOr); return serializers.deserializeWith( StaticState.serializer, json.decode(data)); } - Future saveUIState(UIState state) async { + Future saveUIState(UIState state) async { final data = serializers.serializeWith(UIState.serializer, state); return await fileStorage.save(json.encode(data)); } - Future loadUIState() async { - final String data = await fileStorage.load(); + Future loadUIState() async { + final String data = await (fileStorage.load() as FutureOr); return serializers.deserializeWith(UIState.serializer, json.decode(data)); } diff --git a/lib/data/repositories/product_repository.dart b/lib/data/repositories/product_repository.dart index ca6b50abd..a02794c24 100644 --- a/lib/data/repositories/product_repository.dart +++ b/lib/data/repositories/product_repository.dart @@ -1,4 +1,5 @@ // Dart imports: +import 'dart:async'; import 'dart:convert'; import 'dart:core'; @@ -25,14 +26,15 @@ class ProductRepository { final WebClient webClient; Future loadItem( - Credentials credentials, String entityId) async { + Credentials credentials, String? entityId) async { final String url = '${credentials.url}/products/$entityId'; final dynamic response = await webClient.get(url, credentials.token); - final ProductItemResponse productResponse = await compute( - SerializationUtils.deserializeWith, - [ProductItemResponse.serializer, response]); + final ProductItemResponse productResponse = + await (compute(SerializationUtils.deserializeWith, + [ProductItemResponse.serializer, response]) + as FutureOr); return productResponse.data; } @@ -40,13 +42,14 @@ class ProductRepository { Future> loadList( Credentials credentials, int page) async { final url = - credentials.url + '/products?per_page=$kMaxRecordsPerPage&page=$page'; + credentials.url! + '/products?per_page=$kMaxRecordsPerPage&page=$page'; final dynamic response = await webClient.get(url, credentials.token); - final ProductListResponse productResponse = await compute( - SerializationUtils.deserializeWith, - [ProductListResponse.serializer, response]); + final ProductListResponse productResponse = + await (compute(SerializationUtils.deserializeWith, + [ProductListResponse.serializer, response]) + as FutureOr); return productResponse.data; } @@ -62,7 +65,7 @@ class ProductRepository { } final url = - credentials.url + '/products/bulk?per_page=$kMaxEntitiesPerBulkAction'; + credentials.url! + '/products/bulk?per_page=$kMaxEntitiesPerBulkAction'; final dynamic response = await webClient.post( url, credentials.token, @@ -76,7 +79,7 @@ class ProductRepository { ); final ProductListResponse productResponse = - serializers.deserializeWith(ProductListResponse.serializer, response); + serializers.deserializeWith(ProductListResponse.serializer, response)!; return productResponse.data.toList(); } @@ -89,10 +92,10 @@ class ProductRepository { if (product.isNew) { response = await webClient.post( - credentials.url + '/products', credentials.token, + credentials.url! + '/products', credentials.token, data: json.encode(data)); } else { - var url = credentials.url + '/products/${product.id}'; + var url = credentials.url! + '/products/${product.id}'; if (changedStock) { url += '?update_in_stock_quantity=true'; } @@ -101,7 +104,7 @@ class ProductRepository { } final ProductItemResponse productResponse = - serializers.deserializeWith(ProductItemResponse.serializer, response); + serializers.deserializeWith(ProductItemResponse.serializer, response)!; return productResponse.data; } @@ -121,7 +124,7 @@ class ProductRepository { data: fields, multipartFiles: multipartFiles); final ProductItemResponse productResponse = - serializers.deserializeWith(ProductItemResponse.serializer, response); + serializers.deserializeWith(ProductItemResponse.serializer, response)!; return productResponse.data; } diff --git a/lib/data/repositories/project_repository.dart b/lib/data/repositories/project_repository.dart index ff764f230..5ef0be353 100644 --- a/lib/data/repositories/project_repository.dart +++ b/lib/data/repositories/project_repository.dart @@ -1,4 +1,5 @@ // Dart imports: +import 'dart:async'; import 'dart:convert'; import 'dart:core'; @@ -25,20 +26,21 @@ class ProjectRepository { final WebClient webClient; Future loadItem( - Credentials credentials, String entityId) async { + Credentials credentials, String? entityId) async { final dynamic response = await webClient.get( '${credentials.url}/projects/$entityId', credentials.token); - final ProjectItemResponse projectResponse = await compute( - SerializationUtils.deserializeWith, - [ProjectItemResponse.serializer, response]); + final ProjectItemResponse projectResponse = + await (compute(SerializationUtils.deserializeWith, + [ProjectItemResponse.serializer, response]) + as FutureOr); return projectResponse.data; } Future> loadList( Credentials credentials, int createdAt, bool filterDeleted) async { - String url = credentials.url + '/projects?created_at=$createdAt'; + String url = credentials.url! + '/projects?created_at=$createdAt'; if (filterDeleted) { url += '&filter_deleted_clients=true'; @@ -46,9 +48,10 @@ class ProjectRepository { final dynamic response = await webClient.get(url, credentials.token); - final ProjectListResponse projectResponse = await compute( - SerializationUtils.deserializeWith, - [ProjectListResponse.serializer, response]); + final ProjectListResponse projectResponse = + await (compute(SerializationUtils.deserializeWith, + [ProjectListResponse.serializer, response]) + as FutureOr); return projectResponse.data; } @@ -60,12 +63,12 @@ class ProjectRepository { } final url = - credentials.url + '/projects/bulk?per_page=$kMaxEntitiesPerBulkAction'; + credentials.url! + '/projects/bulk?per_page=$kMaxEntitiesPerBulkAction'; final dynamic response = await webClient.post(url, credentials.token, data: json.encode({'ids': ids, 'action': action.toApiParam()})); final ProjectListResponse projectResponse = - serializers.deserializeWith(ProjectListResponse.serializer, response); + serializers.deserializeWith(ProjectListResponse.serializer, response)!; return projectResponse.data.toList(); } @@ -77,16 +80,16 @@ class ProjectRepository { if (project.isNew) { response = await webClient.post( - credentials.url + '/projects', credentials.token, + credentials.url! + '/projects', credentials.token, data: json.encode(data)); } else { - final url = credentials.url + '/projects/${project.id}'; + final url = credentials.url! + '/projects/${project.id}'; response = await webClient.put(url, credentials.token, data: json.encode(data)); } final ProjectItemResponse projectResponse = - serializers.deserializeWith(ProjectItemResponse.serializer, response); + serializers.deserializeWith(ProjectItemResponse.serializer, response)!; return projectResponse.data; } @@ -106,7 +109,7 @@ class ProjectRepository { data: fields, multipartFiles: multipartFiles); final ProjectItemResponse projectResponse = - serializers.deserializeWith(ProjectItemResponse.serializer, response); + serializers.deserializeWith(ProjectItemResponse.serializer, response)!; return projectResponse.data; } diff --git a/lib/data/repositories/purchase_order_repository.dart b/lib/data/repositories/purchase_order_repository.dart index 9b35dac65..82e1d2ea3 100644 --- a/lib/data/repositories/purchase_order_repository.dart +++ b/lib/data/repositories/purchase_order_repository.dart @@ -16,13 +16,13 @@ class PurchaseOrderRepository { final WebClient webClient; Future loadItem( - Credentials credentials, String entityId) async { + Credentials credentials, String? entityId) async { final dynamic response = await webClient.get( '${credentials.url}/purchase_orders/$entityId?include=activities.history', credentials.token); final InvoiceItemResponse purchaseOrderResponse = - serializers.deserializeWith(InvoiceItemResponse.serializer, response); + serializers.deserializeWith(InvoiceItemResponse.serializer, response)!; return purchaseOrderResponse.data; } @@ -33,7 +33,7 @@ class PurchaseOrderRepository { int createdAt, //bool filterDeleted, ) async { - final url = credentials.url + + final url = credentials.url! + '/purchase_orders?per_page=$kMaxRecordsPerPage&page=$page&created_at=$createdAt'; /* @@ -45,19 +45,19 @@ class PurchaseOrderRepository { final dynamic response = await webClient.get(url, credentials.token); final InvoiceListResponse purchaseOrderResponse = - serializers.deserializeWith(InvoiceListResponse.serializer, response); + serializers.deserializeWith(InvoiceListResponse.serializer, response)!; return purchaseOrderResponse.data; } Future> bulkAction( Credentials credentials, List ids, EntityAction action, - {EmailTemplate template}) async { + {EmailTemplate? template}) async { if (ids.length > kMaxEntitiesPerBulkAction && action.applyMaxLimit) { ids = ids.sublist(0, kMaxEntitiesPerBulkAction); } - final url = credentials.url + + final url = credentials.url! + '/purchase_orders/bulk?per_page=$kMaxEntitiesPerBulkAction'; final dynamic response = await webClient.post(url, credentials.token, data: json.encode({ @@ -70,7 +70,7 @@ class PurchaseOrderRepository { '## DATA: ${json.encode({'ids': ids, 'action': action.toApiParam()})}'); final InvoiceListResponse purchaseOrderResponse = - serializers.deserializeWith(InvoiceListResponse.serializer, response); + serializers.deserializeWith(InvoiceListResponse.serializer, response)!; return purchaseOrderResponse.data.toList(); } @@ -78,7 +78,7 @@ class PurchaseOrderRepository { Future saveData( Credentials credentials, InvoiceEntity purchaseOrder, - EntityAction action, + EntityAction? action, ) async { purchaseOrder = purchaseOrder.rebuild((b) => b..documents.clear()); final data = @@ -87,7 +87,7 @@ class PurchaseOrderRepository { dynamic response; if (purchaseOrder.isNew) { - url = credentials.url + '/purchase_orders?include=activities.history'; + url = credentials.url! + '/purchase_orders?include=activities.history'; } else { url = '${credentials.url}/purchase_orders/${purchaseOrder.id}?include=activities.history'; @@ -115,7 +115,7 @@ class PurchaseOrderRepository { } final InvoiceItemResponse purchaseOrderResponse = - serializers.deserializeWith(InvoiceItemResponse.serializer, response); + serializers.deserializeWith(InvoiceItemResponse.serializer, response)!; return purchaseOrderResponse.data; } @@ -138,11 +138,11 @@ class PurchaseOrderRepository { }; final dynamic response = await webClient.post( - credentials.url + '/emails', credentials.token, + credentials.url! + '/emails', credentials.token, data: json.encode(data)); final InvoiceItemResponse invoiceResponse = - serializers.deserializeWith(InvoiceItemResponse.serializer, response); + serializers.deserializeWith(InvoiceItemResponse.serializer, response)!; return invoiceResponse.data; } @@ -164,7 +164,7 @@ class PurchaseOrderRepository { multipartFiles: multipartFiles); final InvoiceItemResponse invoiceResponse = - serializers.deserializeWith(InvoiceItemResponse.serializer, response); + serializers.deserializeWith(InvoiceItemResponse.serializer, response)!; return invoiceResponse.data; } diff --git a/lib/data/repositories/quote_repository.dart b/lib/data/repositories/quote_repository.dart index 7002c20ba..4fa91cf7e 100644 --- a/lib/data/repositories/quote_repository.dart +++ b/lib/data/repositories/quote_repository.dart @@ -25,21 +25,21 @@ class QuoteRepository { final WebClient webClient; Future loadItem( - Credentials credentials, String entityId) async { + Credentials credentials, String? entityId) async { final dynamic response = await webClient.get( '${credentials.url}/quotes/$entityId?include=activities.history', credentials.token); - final InvoiceItemResponse quoteResponse = await compute( + final InvoiceItemResponse quoteResponse = await (compute( SerializationUtils.deserializeWith, - [InvoiceItemResponse.serializer, response]); + [InvoiceItemResponse.serializer, response]) as FutureOr); return quoteResponse.data; } Future> loadList(Credentials credentials, int page, int createdAt, bool filterDeleted) async { - String url = credentials.url + + String url = credentials.url! + '/quotes?per_page=$kMaxRecordsPerPage&page=$page&created_at=$createdAt'; if (filterDeleted) { @@ -48,22 +48,22 @@ class QuoteRepository { final dynamic response = await webClient.get(url, credentials.token); - final InvoiceListResponse quoteResponse = await compute( + final InvoiceListResponse quoteResponse = await (compute( SerializationUtils.deserializeWith, - [InvoiceListResponse.serializer, response]); + [InvoiceListResponse.serializer, response]) as FutureOr); return quoteResponse.data; } Future> bulkAction( Credentials credentials, List ids, EntityAction action, - {EmailTemplate template}) async { + {EmailTemplate? template}) async { if (ids.length > kMaxEntitiesPerBulkAction && action.applyMaxLimit) { ids = ids.sublist(0, kMaxEntitiesPerBulkAction); } final url = - credentials.url + '/quotes/bulk?per_page=$kMaxEntitiesPerBulkAction'; + credentials.url! + '/quotes/bulk?per_page=$kMaxEntitiesPerBulkAction'; final dynamic response = await webClient.post(url, credentials.token, data: json.encode({ 'ids': ids, @@ -72,7 +72,7 @@ class QuoteRepository { })); final InvoiceListResponse invoiceResponse = - serializers.deserializeWith(InvoiceListResponse.serializer, response); + serializers.deserializeWith(InvoiceListResponse.serializer, response)!; return invoiceResponse.data.toList(); } @@ -80,7 +80,7 @@ class QuoteRepository { Future saveData( Credentials credentials, InvoiceEntity quote, - EntityAction action, + EntityAction? action, ) async { quote = quote.rebuild((b) => b..documents.clear()); final data = serializers.serializeWith(InvoiceEntity.serializer, quote); @@ -88,7 +88,7 @@ class QuoteRepository { dynamic response; if (quote.isNew) { - url = credentials.url + '/quotes?include=activities.history'; + url = credentials.url! + '/quotes?include=activities.history'; } else { url = '${credentials.url}/quotes/${quote.id}?include=activities.history'; } @@ -117,7 +117,7 @@ class QuoteRepository { } final InvoiceItemResponse quoteResponse = - serializers.deserializeWith(InvoiceItemResponse.serializer, response); + serializers.deserializeWith(InvoiceItemResponse.serializer, response)!; return quoteResponse.data; } @@ -140,11 +140,11 @@ class QuoteRepository { }; final dynamic response = await webClient.post( - credentials.url + '/emails', credentials.token, + credentials.url! + '/emails', credentials.token, data: json.encode(data)); final InvoiceItemResponse invoiceResponse = - serializers.deserializeWith(InvoiceItemResponse.serializer, response); + serializers.deserializeWith(InvoiceItemResponse.serializer, response)!; return invoiceResponse.data; } @@ -164,7 +164,7 @@ class QuoteRepository { data: fields, multipartFiles: multipartFiles); final InvoiceItemResponse invoiceResponse = - serializers.deserializeWith(InvoiceItemResponse.serializer, response); + serializers.deserializeWith(InvoiceItemResponse.serializer, response)!; return invoiceResponse.data; } diff --git a/lib/data/repositories/recurring_expense_repository.dart b/lib/data/repositories/recurring_expense_repository.dart index 03dc98884..774915cd0 100644 --- a/lib/data/repositories/recurring_expense_repository.dart +++ b/lib/data/repositories/recurring_expense_repository.dart @@ -21,23 +21,23 @@ class RecurringExpenseRepository { final WebClient webClient; Future loadItem( - Credentials credentials, String entityId) async { + Credentials credentials, String? entityId) async { final dynamic response = await webClient.get( '${credentials.url}/recurring_expenses/$entityId?show_dates=true', credentials.token); final ExpenseItemResponse recurringExpenseResponse = - serializers.deserializeWith(ExpenseItemResponse.serializer, response); + serializers.deserializeWith(ExpenseItemResponse.serializer, response)!; return recurringExpenseResponse.data; } Future> loadList(Credentials credentials) async { - final String url = credentials.url + '/recurring_expenses?'; + final String url = credentials.url! + '/recurring_expenses?'; final dynamic response = await webClient.get(url, credentials.token); final ExpenseListResponse recurringExpenseResponse = - serializers.deserializeWith(ExpenseListResponse.serializer, response); + serializers.deserializeWith(ExpenseListResponse.serializer, response)!; return recurringExpenseResponse.data; } @@ -48,27 +48,27 @@ class RecurringExpenseRepository { ids = ids.sublist(0, kMaxEntitiesPerBulkAction); } - final url = credentials.url + + final url = credentials.url! + '/recurring_expenses/bulk?per_page=$kMaxEntitiesPerBulkAction'; final dynamic response = await webClient.post(url, credentials.token, data: json.encode({'ids': ids, 'action': action.toApiParam()})); final ExpenseListResponse recurringExpenseResponse = - serializers.deserializeWith(ExpenseListResponse.serializer, response); + serializers.deserializeWith(ExpenseListResponse.serializer, response)!; return recurringExpenseResponse.data.toList(); } Future saveData( Credentials credentials, ExpenseEntity recurringExpense, - {EntityAction action}) async { + {EntityAction? action}) async { final data = serializers.serializeWith(ExpenseEntity.serializer, recurringExpense); dynamic response; String url; if (recurringExpense.isNew) { - url = credentials.url + '/recurring_expenses?show_dates=true'; + url = credentials.url! + '/recurring_expenses?show_dates=true'; } else { url = '${credentials.url}/recurring_expenses/${recurringExpense.id}?show_dates=true'; @@ -89,7 +89,7 @@ class RecurringExpenseRepository { } final ExpenseItemResponse recurringExpenseResponse = - serializers.deserializeWith(ExpenseItemResponse.serializer, response); + serializers.deserializeWith(ExpenseItemResponse.serializer, response)!; return recurringExpenseResponse.data; } @@ -111,7 +111,7 @@ class RecurringExpenseRepository { multipartFiles: multipartFiles); final ExpenseItemResponse expenseResponse = - serializers.deserializeWith(ExpenseItemResponse.serializer, response); + serializers.deserializeWith(ExpenseItemResponse.serializer, response)!; return expenseResponse.data; } diff --git a/lib/data/repositories/recurring_invoice_repository.dart b/lib/data/repositories/recurring_invoice_repository.dart index 7f1ae5ac7..e03ec69a1 100644 --- a/lib/data/repositories/recurring_invoice_repository.dart +++ b/lib/data/repositories/recurring_invoice_repository.dart @@ -21,20 +21,20 @@ class RecurringInvoiceRepository { final WebClient webClient; Future loadItem( - Credentials credentials, String entityId) async { + Credentials credentials, String? entityId) async { final dynamic response = await webClient.get( '${credentials.url}/recurring_invoices/$entityId?include=activities,history&show_dates=true', credentials.token); final InvoiceItemResponse recurringInvoiceResponse = - serializers.deserializeWith(InvoiceItemResponse.serializer, response); + serializers.deserializeWith(InvoiceItemResponse.serializer, response)!; return recurringInvoiceResponse.data; } Future> loadList( Credentials credentials, int page, bool filterDeleted) async { - String url = credentials.url + + String url = credentials.url! + '/recurring_invoices?per_page=$kMaxRecordsPerPage&page=$page'; if (filterDeleted) { @@ -44,19 +44,19 @@ class RecurringInvoiceRepository { final dynamic response = await webClient.get(url, credentials.token); final InvoiceListResponse recurringInvoiceResponse = - serializers.deserializeWith(InvoiceListResponse.serializer, response); + serializers.deserializeWith(InvoiceListResponse.serializer, response)!; return recurringInvoiceResponse.data; } Future> bulkAction( Credentials credentials, List ids, EntityAction action, - {Map data}) async { + {Map? data}) async { if (ids.length > kMaxEntitiesPerBulkAction && action.applyMaxLimit) { ids = ids.sublist(0, kMaxEntitiesPerBulkAction); } - final url = credentials.url + + final url = credentials.url! + '/recurring_invoices/bulk?per_page=$kMaxEntitiesPerBulkAction'; final params = {'ids': ids, 'action': action.toApiParam()}; if (data != null) { @@ -67,7 +67,7 @@ class RecurringInvoiceRepository { await webClient.post(url, credentials.token, data: json.encode(params)); final InvoiceListResponse recurringInvoiceResponse = - serializers.deserializeWith(InvoiceListResponse.serializer, response); + serializers.deserializeWith(InvoiceListResponse.serializer, response)!; return recurringInvoiceResponse.data.toList(); } @@ -75,7 +75,7 @@ class RecurringInvoiceRepository { Future saveData( Credentials credentials, InvoiceEntity recurringInvoice, { - EntityAction action, + EntityAction? action, }) async { final data = serializers.serializeWith(InvoiceEntity.serializer, recurringInvoice); @@ -83,7 +83,7 @@ class RecurringInvoiceRepository { String url; if (recurringInvoice.isNew) { - url = credentials.url + + url = credentials.url! + '/recurring_invoices?include=activities,history&show_dates=true'; } else { url = @@ -107,7 +107,7 @@ class RecurringInvoiceRepository { } final InvoiceItemResponse recurringInvoiceResponse = - serializers.deserializeWith(InvoiceItemResponse.serializer, response); + serializers.deserializeWith(InvoiceItemResponse.serializer, response)!; return recurringInvoiceResponse.data; } @@ -129,7 +129,7 @@ class RecurringInvoiceRepository { multipartFiles: multipartFiles); final InvoiceItemResponse invoiceResponse = - serializers.deserializeWith(InvoiceItemResponse.serializer, response); + serializers.deserializeWith(InvoiceItemResponse.serializer, response)!; return invoiceResponse.data; } diff --git a/lib/data/repositories/schedule_repository.dart b/lib/data/repositories/schedule_repository.dart index 5dfa99855..2a5265ef3 100644 --- a/lib/data/repositories/schedule_repository.dart +++ b/lib/data/repositories/schedule_repository.dart @@ -15,22 +15,22 @@ class ScheduleRepository { final WebClient webClient; Future loadItem( - Credentials credentials, String entityId) async { + Credentials credentials, String? entityId) async { final dynamic response = await webClient.get( '${credentials.url}/task_schedulers/$entityId', credentials.token); final ScheduleItemResponse scheduleResponse = - serializers.deserializeWith(ScheduleItemResponse.serializer, response); + serializers.deserializeWith(ScheduleItemResponse.serializer, response)!; return scheduleResponse.data; } Future> loadList(Credentials credentials) async { - final String url = credentials.url + '/task_schedulers?'; + final String url = credentials.url! + '/task_schedulers?'; final dynamic response = await webClient.get(url, credentials.token); final ScheduleListResponse scheduleResponse = - serializers.deserializeWith(ScheduleListResponse.serializer, response); + serializers.deserializeWith(ScheduleListResponse.serializer, response)!; return scheduleResponse.data; } @@ -41,13 +41,13 @@ class ScheduleRepository { ids = ids.sublist(0, kMaxEntitiesPerBulkAction); } - final url = credentials.url + + final url = credentials.url! + '/task_schedulers/bulk?per_page=$kMaxEntitiesPerBulkAction'; final dynamic response = await webClient.post(url, credentials.token, data: json.encode({'ids': ids, 'action': action.toApiParam()})); final ScheduleListResponse scheduleResponse = - serializers.deserializeWith(ScheduleListResponse.serializer, response); + serializers.deserializeWith(ScheduleListResponse.serializer, response)!; return scheduleResponse.data.toList(); } @@ -59,7 +59,7 @@ class ScheduleRepository { if (schedule.isNew) { response = await webClient.post( - credentials.url + '/task_schedulers', credentials.token, + credentials.url! + '/task_schedulers', credentials.token, data: json.encode(data)); } else { final url = '${credentials.url}/task_schedulers/${schedule.id}'; @@ -68,7 +68,7 @@ class ScheduleRepository { } final ScheduleItemResponse scheduleResponse = - serializers.deserializeWith(ScheduleItemResponse.serializer, response); + serializers.deserializeWith(ScheduleItemResponse.serializer, response)!; return scheduleResponse.data; } diff --git a/lib/data/repositories/settings_repository.dart b/lib/data/repositories/settings_repository.dart index 1290de989..b4a8706a0 100644 --- a/lib/data/repositories/settings_repository.dart +++ b/lib/data/repositories/settings_repository.dart @@ -24,7 +24,7 @@ class SettingsRepository { final data = serializers.serializeWith(CompanyEntity.serializer, company); dynamic response; - final url = credentials.url + '/companies/${company.id}'; + final url = credentials.url! + '/companies/${company.id}'; response = await webClient.put( url, credentials.token, @@ -32,16 +32,16 @@ class SettingsRepository { ); final CompanyItemResponse companyResponse = - serializers.deserializeWith(CompanyItemResponse.serializer, response); + serializers.deserializeWith(CompanyItemResponse.serializer, response)!; return companyResponse.data; } Future saveEInvoiceCertificate(Credentials credentials, - CompanyEntity company, MultipartFile eInvoiceCertificate) async { + CompanyEntity company, MultipartFile? eInvoiceCertificate) async { dynamic response; - final url = credentials.url + '/companies/${company.id}'; + final url = credentials.url! + '/companies/${company.id}'; final fields = { '_method': 'put', }; @@ -54,7 +54,7 @@ class SettingsRepository { ); final CompanyItemResponse companyResponse = - serializers.deserializeWith(CompanyItemResponse.serializer, response); + serializers.deserializeWith(CompanyItemResponse.serializer, response)!; return companyResponse.data; } @@ -62,13 +62,13 @@ class SettingsRepository { Future saveAuthUser( Credentials credentials, UserEntity user, - String password, - String idToken, + String? password, + String? idToken, ) async { final data = serializers.serializeWith(UserEntity.serializer, user); dynamic response; - final url = credentials.url + '/users/${user.id}?include=company_user'; + final url = credentials.url! + '/users/${user.id}?include=company_user'; response = await webClient.put( url, credentials.token, @@ -78,7 +78,7 @@ class SettingsRepository { ); final UserItemResponse userResponse = - serializers.deserializeWith(UserItemResponse.serializer, response); + serializers.deserializeWith(UserItemResponse.serializer, response)!; return userResponse.data; } @@ -86,13 +86,13 @@ class SettingsRepository { Future connectOAuthUser( Credentials credentials, String provider, - String password, + String? password, String idToken, String accessToken, ) async { dynamic response; - final url = credentials.url + '/connected_account?include=company_user'; + final url = credentials.url! + '/connected_account?include=company_user'; response = await webClient.post( url, credentials.token, @@ -107,7 +107,7 @@ class SettingsRepository { ); final UserItemResponse userResponse = - serializers.deserializeWith(UserItemResponse.serializer, response); + serializers.deserializeWith(UserItemResponse.serializer, response)!; return userResponse.data; } @@ -115,12 +115,12 @@ class SettingsRepository { Future disconnectOAuthUser( Credentials credentials, UserEntity user, - String password, - String idToken, + String? password, + String? idToken, ) async { dynamic response; - final url = credentials.url + + final url = credentials.url! + '/users/${user.id}/disconnect_oauth?include=company_user'; response = await webClient.post( url, @@ -130,20 +130,20 @@ class SettingsRepository { ); final UserItemResponse userResponse = - serializers.deserializeWith(UserItemResponse.serializer, response); + serializers.deserializeWith(UserItemResponse.serializer, response)!; return userResponse.data; } Future disconnectOAuthMailer( Credentials credentials, - String password, - String idToken, + String? password, + String? idToken, String userId, ) async { dynamic response; - final url = credentials.url + + final url = credentials.url! + '/users/$userId/disconnect_mailer?include=company_user'; response = await webClient.post( url, @@ -152,21 +152,21 @@ class SettingsRepository { ); final UserItemResponse userResponse = - serializers.deserializeWith(UserItemResponse.serializer, response); + serializers.deserializeWith(UserItemResponse.serializer, response)!; return userResponse.data; } Future connectGmailUser( Credentials credentials, - String password, + String? password, String idToken, String serverAuthCode, ) async { dynamic response; final url = - credentials.url + '/connected_account/gmail?include=company_user'; + credentials.url! + '/connected_account/gmail?include=company_user'; response = await webClient.post( url, credentials.token, @@ -181,7 +181,7 @@ class SettingsRepository { ); final UserItemResponse userResponse = - serializers.deserializeWith(UserItemResponse.serializer, response); + serializers.deserializeWith(UserItemResponse.serializer, response)!; return userResponse.data; } @@ -191,7 +191,7 @@ class SettingsRepository { final data = serializers.serializeWith(UserEntity.serializer, user); dynamic response; - final url = credentials.url + '/company_users/${user.id}'; + final url = credentials.url! + '/company_users/${user.id}'; response = await webClient.put( url, credentials.token, @@ -199,13 +199,13 @@ class SettingsRepository { ); final UserCompanyItemResponse userResponse = serializers.deserializeWith( - UserCompanyItemResponse.serializer, response); + UserCompanyItemResponse.serializer, response)!; return userResponse.data; } Future uploadLogo(Credentials credentials, String entityId, - MultipartFile multipartFile, EntityType type) async { + MultipartFile? multipartFile, EntityType? type) async { final route = type == EntityType.company ? 'companies' : type == EntityType.group @@ -218,15 +218,15 @@ class SettingsRepository { if (type == EntityType.client) { return serializers - .deserializeWith(ClientItemResponse.serializer, response) + .deserializeWith(ClientItemResponse.serializer, response)! .data; } else if (type == EntityType.group) { return serializers - .deserializeWith(GroupItemResponse.serializer, response) + .deserializeWith(GroupItemResponse.serializer, response)! .data; } else { return serializers - .deserializeWith(CompanyItemResponse.serializer, response) + .deserializeWith(CompanyItemResponse.serializer, response)! .data; } } @@ -246,15 +246,15 @@ class SettingsRepository { data: fields, multipartFiles: multipartFiles); final CompanyItemResponse companyResponse = - serializers.deserializeWith(CompanyItemResponse.serializer, response); + serializers.deserializeWith(CompanyItemResponse.serializer, response)!; return companyResponse.data; } Future disableTwoFactor( Credentials credentials, - String password, - String idToken, + String? password, + String? idToken, ) async { await webClient.post( '${credentials.url}/settings/disable_two_factor', diff --git a/lib/data/repositories/static/static_repository.dart b/lib/data/repositories/static/static_repository.dart index 6d645bef4..3fca32403 100644 --- a/lib/data/repositories/static/static_repository.dart +++ b/lib/data/repositories/static/static_repository.dart @@ -18,10 +18,10 @@ class StaticRepository { Future loadList(Credentials credentials) async { final dynamic response = - await webClient.get(credentials.url + '/static', credentials.token); + await webClient.get(credentials.url! + '/static', credentials.token); final StaticDataItemResponse staticDataResponse = serializers - .deserializeWith(StaticDataItemResponse.serializer, response); + .deserializeWith(StaticDataItemResponse.serializer, response)!; return staticDataResponse.data; } diff --git a/lib/data/repositories/subscription_repository.dart b/lib/data/repositories/subscription_repository.dart index ff98fb54c..afddf076b 100644 --- a/lib/data/repositories/subscription_repository.dart +++ b/lib/data/repositories/subscription_repository.dart @@ -20,23 +20,23 @@ class SubscriptionRepository { final WebClient webClient; Future loadItem( - Credentials credentials, String entityId) async { + Credentials credentials, String? entityId) async { final dynamic response = await webClient.get( '${credentials.url}/subscriptions/$entityId', credentials.token); final SubscriptionItemResponse subscriptionResponse = serializers - .deserializeWith(SubscriptionItemResponse.serializer, response); + .deserializeWith(SubscriptionItemResponse.serializer, response)!; return subscriptionResponse.data; } Future> loadList( Credentials credentials) async { - final String url = credentials.url + '/subscriptions?'; + final String url = credentials.url! + '/subscriptions?'; final dynamic response = await webClient.get(url, credentials.token); final SubscriptionListResponse subscriptionResponse = serializers - .deserializeWith(SubscriptionListResponse.serializer, response); + .deserializeWith(SubscriptionListResponse.serializer, response)!; return subscriptionResponse.data; } @@ -47,13 +47,13 @@ class SubscriptionRepository { ids = ids.sublist(0, kMaxEntitiesPerBulkAction); } - final url = credentials.url + + final url = credentials.url! + '/subscriptions/bulk?per_page=$kMaxEntitiesPerBulkAction'; final dynamic response = await webClient.post(url, credentials.token, data: json.encode({'ids': ids, 'action': action.toApiParam()})); final SubscriptionListResponse subscriptionResponse = serializers - .deserializeWith(SubscriptionListResponse.serializer, response); + .deserializeWith(SubscriptionListResponse.serializer, response)!; return subscriptionResponse.data.toList(); } @@ -66,7 +66,7 @@ class SubscriptionRepository { if (subscription.isNew) { response = await webClient.post( - credentials.url + '/subscriptions', credentials.token, + credentials.url! + '/subscriptions', credentials.token, data: json.encode(data)); } else { final url = '${credentials.url}/subscriptions/${subscription.id}'; @@ -75,7 +75,7 @@ class SubscriptionRepository { } final SubscriptionItemResponse subscriptionResponse = serializers - .deserializeWith(SubscriptionItemResponse.serializer, response); + .deserializeWith(SubscriptionItemResponse.serializer, response)!; return subscriptionResponse.data; } diff --git a/lib/data/repositories/task_repository.dart b/lib/data/repositories/task_repository.dart index a82c32efd..10d25f060 100644 --- a/lib/data/repositories/task_repository.dart +++ b/lib/data/repositories/task_repository.dart @@ -24,20 +24,20 @@ class TaskRepository { final WebClient webClient; - Future loadItem(Credentials credentials, String entityId) async { + Future loadItem(Credentials credentials, String? entityId) async { final dynamic response = await webClient.get( '${credentials.url}/tasks/$entityId', credentials.token); - final TaskItemResponse taskResponse = await compute( + final TaskItemResponse taskResponse = await (compute( SerializationUtils.deserializeWith, - [TaskItemResponse.serializer, response]); + [TaskItemResponse.serializer, response]) as FutureOr); return taskResponse.data; } Future> loadList(Credentials credentials, int page, int createdAt, bool filterDeleted) async { - final url = credentials.url + + final url = credentials.url! + '/tasks?per_page=$kMaxRecordsPerPage&page=$page&created_at=$createdAt'; /* Server is incorrect if client isn't set @@ -48,9 +48,9 @@ class TaskRepository { final dynamic response = await webClient.get(url, credentials.token); - final TaskListResponse taskResponse = await compute( + final TaskListResponse taskResponse = await (compute( SerializationUtils.deserializeWith, - [TaskListResponse.serializer, response]); + [TaskListResponse.serializer, response]) as FutureOr); return taskResponse.data; } @@ -62,19 +62,19 @@ class TaskRepository { } final url = - credentials.url + '/tasks/bulk?per_page=$kMaxEntitiesPerBulkAction'; + credentials.url! + '/tasks/bulk?per_page=$kMaxEntitiesPerBulkAction'; final dynamic response = await webClient.post(url, credentials.token, data: json.encode({'ids': ids, 'action': action.toApiParam()})); final TaskListResponse taskResponse = - serializers.deserializeWith(TaskListResponse.serializer, response); + serializers.deserializeWith(TaskListResponse.serializer, response)!; return taskResponse.data.toList(); } - Future sortTasks(Credentials credentials, List statusIds, - Map> taskIds) async { - final url = credentials.url + '/tasks/sort'; + Future sortTasks(Credentials credentials, List? statusIds, + Map>? taskIds) async { + final url = credentials.url! + '/tasks/sort'; await webClient.post(url, credentials.token, data: json.encode({'status_ids': statusIds, 'task_ids': taskIds})); @@ -83,16 +83,16 @@ class TaskRepository { } Future saveData(Credentials credentials, TaskEntity task, - {EntityAction action}) async { + {EntityAction? action}) async { final data = serializers.serializeWith(TaskEntity.serializer, task); dynamic response; String url; if (task.isNew) { - url = credentials.url + '/tasks?'; + url = credentials.url! + '/tasks?'; } else { - url = credentials.url + '/tasks/${task.id}?'; + url = credentials.url! + '/tasks/${task.id}?'; } if ([ @@ -113,7 +113,7 @@ class TaskRepository { } final TaskItemResponse taskResponse = - serializers.deserializeWith(TaskItemResponse.serializer, response); + serializers.deserializeWith(TaskItemResponse.serializer, response)!; return taskResponse.data; } @@ -130,7 +130,7 @@ class TaskRepository { data: fields, multipartFiles: multipartFiles); final TaskItemResponse taskResponse = - serializers.deserializeWith(TaskItemResponse.serializer, response); + serializers.deserializeWith(TaskItemResponse.serializer, response)!; return taskResponse.data; } diff --git a/lib/data/repositories/task_status_repository.dart b/lib/data/repositories/task_status_repository.dart index c865130af..8ef8f08dd 100644 --- a/lib/data/repositories/task_status_repository.dart +++ b/lib/data/repositories/task_status_repository.dart @@ -20,22 +20,22 @@ class TaskStatusRepository { final WebClient webClient; Future loadItem( - Credentials credentials, String entityId) async { + Credentials credentials, String? entityId) async { final dynamic response = await webClient.get( '${credentials.url}/task_statuses/$entityId', credentials.token); final TaskStatusItemResponse taskStatusResponse = serializers - .deserializeWith(TaskStatusItemResponse.serializer, response); + .deserializeWith(TaskStatusItemResponse.serializer, response)!; return taskStatusResponse.data; } Future> loadList(Credentials credentials) async { - final String url = credentials.url + '/task_statuses?'; + final String url = credentials.url! + '/task_statuses?'; final dynamic response = await webClient.get(url, credentials.token); final TaskStatusListResponse taskStatusResponse = serializers - .deserializeWith(TaskStatusListResponse.serializer, response); + .deserializeWith(TaskStatusListResponse.serializer, response)!; return taskStatusResponse.data; } @@ -46,13 +46,13 @@ class TaskStatusRepository { ids = ids.sublist(0, kMaxEntitiesPerBulkAction); } - final url = credentials.url + + final url = credentials.url! + '/task_statuses/bulk?per_page=$kMaxEntitiesPerBulkAction'; final dynamic response = await webClient.post(url, credentials.token, data: json.encode({'ids': ids, 'action': action.toApiParam()})); final TaskStatusListResponse taskStatusResponse = serializers - .deserializeWith(TaskStatusListResponse.serializer, response); + .deserializeWith(TaskStatusListResponse.serializer, response)!; return taskStatusResponse.data.toList(); } @@ -65,7 +65,7 @@ class TaskStatusRepository { if (taskStatus.isNew) { response = await webClient.post( - credentials.url + '/task_statuses', credentials.token, + credentials.url! + '/task_statuses', credentials.token, data: json.encode(data)); } else { final url = '${credentials.url}/task_statuses/${taskStatus.id}'; @@ -74,7 +74,7 @@ class TaskStatusRepository { } final TaskStatusItemResponse taskStatusResponse = serializers - .deserializeWith(TaskStatusItemResponse.serializer, response); + .deserializeWith(TaskStatusItemResponse.serializer, response)!; return taskStatusResponse.data; } diff --git a/lib/data/repositories/tax_rate_repository.dart b/lib/data/repositories/tax_rate_repository.dart index 80b6b5f0b..eecca8e9b 100644 --- a/lib/data/repositories/tax_rate_repository.dart +++ b/lib/data/repositories/tax_rate_repository.dart @@ -20,23 +20,23 @@ class TaxRateRepository { final WebClient webClient; Future loadItem( - Credentials credentials, String entityId) async { + Credentials credentials, String? entityId) async { final dynamic response = await webClient.get( '${credentials.url}/tax_rates/$entityId', credentials.token); final TaxRateItemResponse taxRateResponse = - serializers.deserializeWith(TaxRateItemResponse.serializer, response); + serializers.deserializeWith(TaxRateItemResponse.serializer, response)!; return taxRateResponse.data; } Future> loadList(Credentials credentials) async { - final url = credentials.url + '/tax_rates?'; + final url = credentials.url! + '/tax_rates?'; final dynamic response = await webClient.get(url, credentials.token); final TaxRateListResponse taxRateResponse = - serializers.deserializeWith(TaxRateListResponse.serializer, response); + serializers.deserializeWith(TaxRateListResponse.serializer, response)!; return taxRateResponse.data; } @@ -48,12 +48,12 @@ class TaxRateRepository { } final url = - credentials.url + '/tax_rates/bulk?per_page=$kMaxEntitiesPerBulkAction'; + credentials.url! + '/tax_rates/bulk?per_page=$kMaxEntitiesPerBulkAction'; final dynamic response = await webClient.post(url, credentials.token, data: json.encode({'ids': ids, 'action': action.toApiParam()})); final TaxRateListResponse taxRateResponse = - serializers.deserializeWith(TaxRateListResponse.serializer, response); + serializers.deserializeWith(TaxRateListResponse.serializer, response)!; return taxRateResponse.data.toList(); } @@ -65,16 +65,16 @@ class TaxRateRepository { if (taxRate.isNew) { response = await webClient.post( - credentials.url + '/tax_rates', credentials.token, + credentials.url! + '/tax_rates', credentials.token, data: json.encode(data)); } else { - final url = credentials.url + '/tax_rates/${taxRate.id}'; + final url = credentials.url! + '/tax_rates/${taxRate.id}'; response = await webClient.put(url, credentials.token, data: json.encode(data)); } final TaxRateItemResponse taxRateResponse = - serializers.deserializeWith(TaxRateItemResponse.serializer, response); + serializers.deserializeWith(TaxRateItemResponse.serializer, response)!; return taxRateResponse.data; } diff --git a/lib/data/repositories/token_repository.dart b/lib/data/repositories/token_repository.dart index 9a33d3484..7280b368e 100644 --- a/lib/data/repositories/token_repository.dart +++ b/lib/data/repositories/token_repository.dart @@ -19,23 +19,23 @@ class TokenRepository { final WebClient webClient; - Future loadItem(Credentials credentials, String entityId) async { + Future loadItem(Credentials credentials, String? entityId) async { final dynamic response = await webClient.get( '${credentials.url}/tokens/$entityId', credentials.token); final TokenItemResponse tokenResponse = - serializers.deserializeWith(TokenItemResponse.serializer, response); + serializers.deserializeWith(TokenItemResponse.serializer, response)!; return tokenResponse.data; } Future> loadList(Credentials credentials) async { - final url = credentials.url + '/tokens?'; + final url = credentials.url! + '/tokens?'; final dynamic response = await webClient.get(url, credentials.token); final TokenListResponse tokenResponse = - serializers.deserializeWith(TokenListResponse.serializer, response); + serializers.deserializeWith(TokenListResponse.serializer, response)!; return tokenResponse.data; } @@ -47,12 +47,12 @@ class TokenRepository { } final url = - credentials.url + '/tokens/bulk?per_page=$kMaxEntitiesPerBulkAction'; + credentials.url! + '/tokens/bulk?per_page=$kMaxEntitiesPerBulkAction'; final dynamic response = await webClient.post(url, credentials.token, data: json.encode({'ids': ids, 'action': action.toApiParam()})); final TokenListResponse tokenResponse = - serializers.deserializeWith(TokenListResponse.serializer, response); + serializers.deserializeWith(TokenListResponse.serializer, response)!; return tokenResponse.data.toList(); } @@ -60,15 +60,15 @@ class TokenRepository { Future saveData( Credentials credentials, TokenEntity token, - String password, - String idToken, + String? password, + String? idToken, ) async { final data = serializers.serializeWith(TokenEntity.serializer, token); dynamic response; if (token.isNew) { response = await webClient.post( - credentials.url + '/tokens', + credentials.url! + '/tokens', credentials.token, data: json.encode(data), password: password, @@ -86,7 +86,7 @@ class TokenRepository { } final TokenItemResponse tokenResponse = - serializers.deserializeWith(TokenItemResponse.serializer, response); + serializers.deserializeWith(TokenItemResponse.serializer, response)!; return tokenResponse.data; } diff --git a/lib/data/repositories/transaction_repository.dart b/lib/data/repositories/transaction_repository.dart index b36fa24c3..3af24bba4 100644 --- a/lib/data/repositories/transaction_repository.dart +++ b/lib/data/repositories/transaction_repository.dart @@ -15,24 +15,24 @@ class TransactionRepository { final WebClient webClient; Future loadItem( - Credentials credentials, String entityId) async { + Credentials credentials, String? entityId) async { final dynamic response = await webClient.get( '${credentials.url}/bank_transactions/$entityId', credentials.token); final TransactionItemResponse transactionResponse = serializers - .deserializeWith(TransactionItemResponse.serializer, response); + .deserializeWith(TransactionItemResponse.serializer, response)!; return transactionResponse.data; } Future> loadList( Credentials credentials, int page, int createdAt) async { - final String url = credentials.url + + final String url = credentials.url! + '/bank_transactions?per_page=$kMaxRecordsPerPage&page=$page&created_at=$createdAt'; final dynamic response = await webClient.get(url, credentials.token); final TransactionListResponse transactionResponse = serializers - .deserializeWith(TransactionListResponse.serializer, response); + .deserializeWith(TransactionListResponse.serializer, response)!; return transactionResponse.data; } @@ -43,20 +43,20 @@ class TransactionRepository { ids = ids.sublist(0, kMaxEntitiesPerBulkAction); } - final url = credentials.url + + final url = credentials.url! + '/bank_transactions/bulk?per_page=$kMaxEntitiesPerBulkAction'; final dynamic response = await webClient.post(url, credentials.token, data: json.encode({'ids': ids, 'action': action.toApiParam()})); final TransactionListResponse transactionResponse = serializers - .deserializeWith(TransactionListResponse.serializer, response); + .deserializeWith(TransactionListResponse.serializer, response)!; return transactionResponse.data.toList(); } Future convertToPayment(Credentials credentials, - String transactionId, List invoiceIds) async { - final url = credentials.url + '/bank_transactions/match'; + String? transactionId, List invoiceIds) async { + final url = credentials.url! + '/bank_transactions/match'; final dynamic response = await webClient.post( url, credentials.token, @@ -73,18 +73,18 @@ class TransactionRepository { ); final TransactionListResponse transactionResponse = serializers - .deserializeWith(TransactionListResponse.serializer, response); + .deserializeWith(TransactionListResponse.serializer, response)!; return transactionResponse.data.first; } Future> convertToExpense( Credentials credentials, - List transactionIds, + List transactionIds, String vendorId, String categoryId, ) async { - final url = credentials.url + '/bank_transactions/match'; + final url = credentials.url! + '/bank_transactions/match'; final dynamic response = await webClient.post( url, credentials.token, @@ -103,14 +103,14 @@ class TransactionRepository { ); final TransactionListResponse transactionResponse = serializers - .deserializeWith(TransactionListResponse.serializer, response); + .deserializeWith(TransactionListResponse.serializer, response)!; return transactionResponse.data; } Future linkToPayment( - Credentials credentials, String transactionId, String paymentId) async { - final url = credentials.url + '/bank_transactions/match'; + Credentials credentials, String? transactionId, String paymentId) async { + final url = credentials.url! + '/bank_transactions/match'; final dynamic response = await webClient.post( url, credentials.token, @@ -127,14 +127,14 @@ class TransactionRepository { ); final TransactionListResponse transactionResponse = serializers - .deserializeWith(TransactionListResponse.serializer, response); + .deserializeWith(TransactionListResponse.serializer, response)!; return transactionResponse.data.first; } Future linkToExpense( - Credentials credentials, String transactionId, String expenseId) async { - final url = credentials.url + '/bank_transactions/match'; + Credentials credentials, String? transactionId, String expenseId) async { + final url = credentials.url! + '/bank_transactions/match'; final dynamic response = await webClient.post( url, credentials.token, @@ -151,7 +151,7 @@ class TransactionRepository { ); final TransactionListResponse transactionResponse = serializers - .deserializeWith(TransactionListResponse.serializer, response); + .deserializeWith(TransactionListResponse.serializer, response)!; return transactionResponse.data.first; } @@ -164,7 +164,7 @@ class TransactionRepository { if (transaction.isNew) { response = await webClient.post( - credentials.url + '/bank_transactions', credentials.token, + credentials.url! + '/bank_transactions', credentials.token, data: json.encode(data)); } else { final url = '${credentials.url}/bank_transactions/${transaction.id}'; @@ -173,7 +173,7 @@ class TransactionRepository { } final TransactionItemResponse transactionResponse = serializers - .deserializeWith(TransactionItemResponse.serializer, response); + .deserializeWith(TransactionItemResponse.serializer, response)!; return transactionResponse.data; } diff --git a/lib/data/repositories/transaction_rule_repository.dart b/lib/data/repositories/transaction_rule_repository.dart index d941f19a9..fa9736b79 100644 --- a/lib/data/repositories/transaction_rule_repository.dart +++ b/lib/data/repositories/transaction_rule_repository.dart @@ -15,24 +15,24 @@ class TransactionRuleRepository { final WebClient webClient; Future loadItem( - Credentials credentials, String entityId) async { + Credentials credentials, String? entityId) async { final dynamic response = await webClient.get( '${credentials.url}/bank_transaction_rules/$entityId', credentials.token); final TransactionRuleItemResponse transactionRuleResponse = serializers - .deserializeWith(TransactionRuleItemResponse.serializer, response); + .deserializeWith(TransactionRuleItemResponse.serializer, response)!; return transactionRuleResponse.data; } Future> loadList( Credentials credentials) async { - final String url = credentials.url + '/bnak_transaction_rules?'; + final String url = credentials.url! + '/bnak_transaction_rules?'; final dynamic response = await webClient.get(url, credentials.token); final TransactionRuleListResponse transactionRuleResponse = serializers - .deserializeWith(TransactionRuleListResponse.serializer, response); + .deserializeWith(TransactionRuleListResponse.serializer, response)!; return transactionRuleResponse.data; } @@ -43,13 +43,13 @@ class TransactionRuleRepository { ids = ids.sublist(0, kMaxEntitiesPerBulkAction); } - final url = credentials.url + + final url = credentials.url! + '/bank_transaction_rules/bulk?per_page=$kMaxEntitiesPerBulkAction'; final dynamic response = await webClient.post(url, credentials.token, data: json.encode({'ids': ids, 'action': action.toApiParam()})); final TransactionRuleListResponse transactionRuleResponse = serializers - .deserializeWith(TransactionRuleListResponse.serializer, response); + .deserializeWith(TransactionRuleListResponse.serializer, response)!; return transactionRuleResponse.data.toList(); } @@ -62,7 +62,7 @@ class TransactionRuleRepository { if (transactionRule.isNew) { response = await webClient.post( - credentials.url + '/bank_transaction_rules', credentials.token, + credentials.url! + '/bank_transaction_rules', credentials.token, data: json.encode(data)); } else { final url = @@ -72,7 +72,7 @@ class TransactionRuleRepository { } final TransactionRuleItemResponse transactionRuleResponse = serializers - .deserializeWith(TransactionRuleItemResponse.serializer, response); + .deserializeWith(TransactionRuleItemResponse.serializer, response)!; return transactionRuleResponse.data; } diff --git a/lib/data/repositories/user_repository.dart b/lib/data/repositories/user_repository.dart index c5fc070a2..c10ea0622 100644 --- a/lib/data/repositories/user_repository.dart +++ b/lib/data/repositories/user_repository.dart @@ -19,24 +19,24 @@ class UserRepository { final WebClient webClient; - Future loadItem(Credentials credentials, String entityId) async { + Future loadItem(Credentials credentials, String? entityId) async { final dynamic response = await webClient.get( '${credentials.url}/users/$entityId?include=company_user', credentials.token); final UserItemResponse userResponse = - serializers.deserializeWith(UserItemResponse.serializer, response); + serializers.deserializeWith(UserItemResponse.serializer, response)!; return userResponse.data; } Future> loadList(Credentials credentials) async { - final url = credentials.url + '/users?include=company_user'; + final url = credentials.url! + '/users?include=company_user'; final dynamic response = await webClient.get(url, credentials.token); final UserListResponse userResponse = - serializers.deserializeWith(UserListResponse.serializer, response); + serializers.deserializeWith(UserListResponse.serializer, response)!; return userResponse.data; } @@ -45,14 +45,14 @@ class UserRepository { Credentials credentials, List ids, EntityAction action, - String password, - String idToken, + String? password, + String? idToken, ) async { if (ids.length > kMaxEntitiesPerBulkAction && action.applyMaxLimit) { ids = ids.sublist(0, kMaxEntitiesPerBulkAction); } - final url = credentials.url + + final url = credentials.url! + '/users/bulk?per_page=$kMaxEntitiesPerBulkAction&include=company_user'; final dynamic response = await webClient.post( url, @@ -63,18 +63,18 @@ class UserRepository { ); final UserListResponse userResponse = - serializers.deserializeWith(UserListResponse.serializer, response); + serializers.deserializeWith(UserListResponse.serializer, response)!; return userResponse.data.toList(); } Future> detachFromCompany( Credentials credentials, - String userId, - String password, - String idToken, + String? userId, + String? password, + String? idToken, ) async { - final url = credentials.url + '/users/$userId/detach_from_company'; + final url = credentials.url! + '/users/$userId/detach_from_company'; final dynamic response = await webClient.delete( url, credentials.token, @@ -83,18 +83,18 @@ class UserRepository { ); final UserListResponse userResponse = - serializers.deserializeWith(UserListResponse.serializer, response); + serializers.deserializeWith(UserListResponse.serializer, response)!; return userResponse.data.toList(); } - Future> resendInvite( + Future?> resendInvite( Credentials credentials, - String userId, - String password, - String idToken, + String? userId, + String? password, + String? idToken, ) async { - final url = credentials.url + '/users/$userId/invite'; + final url = credentials.url! + '/users/$userId/invite'; final dynamic response = await webClient.post( url, credentials.token, @@ -116,22 +116,22 @@ class UserRepository { Future saveData( Credentials credentials, UserEntity user, - String password, - String idToken, + String? password, + String? idToken, ) async { final data = serializers.serializeWith(UserEntity.serializer, user); dynamic response; if (user.isNew) { response = await webClient.post( - credentials.url + '/users?include=company_user', + credentials.url! + '/users?include=company_user', credentials.token, data: json.encode(data), password: password, idToken: idToken, ); } else { - final url = credentials.url + '/users/${user.id}?include=company_user'; + final url = credentials.url! + '/users/${user.id}?include=company_user'; response = await webClient.put( url, credentials.token, @@ -142,7 +142,7 @@ class UserRepository { } final UserItemResponse userResponse = - serializers.deserializeWith(UserItemResponse.serializer, response); + serializers.deserializeWith(UserItemResponse.serializer, response)!; return userResponse.data; } diff --git a/lib/data/repositories/vendor_repository.dart b/lib/data/repositories/vendor_repository.dart index 4c478526e..4667168a4 100644 --- a/lib/data/repositories/vendor_repository.dart +++ b/lib/data/repositories/vendor_repository.dart @@ -25,14 +25,14 @@ class VendorRepository { final WebClient webClient; Future loadItem( - Credentials credentials, String entityId) async { + Credentials credentials, String? entityId) async { final dynamic response = await webClient.get( '${credentials.url}/vendors/$entityId?include=activities', credentials.token); - final VendorItemResponse vendorResponse = await compute( + final VendorItemResponse vendorResponse = await (compute( SerializationUtils.deserializeWith, - [VendorItemResponse.serializer, response]); + [VendorItemResponse.serializer, response]) as FutureOr); return vendorResponse.data; } @@ -40,13 +40,13 @@ class VendorRepository { Future> loadList( Credentials credentials, int page) async { final String url = - credentials.url + '/vendors?per_page=$kMaxRecordsPerPage&page=$page'; + credentials.url! + '/vendors?per_page=$kMaxRecordsPerPage&page=$page'; final dynamic response = await webClient.get(url, credentials.token); - final VendorListResponse vendorResponse = await compute( + final VendorListResponse vendorResponse = await (compute( SerializationUtils.deserializeWith, - [VendorListResponse.serializer, response]); + [VendorListResponse.serializer, response]) as FutureOr); return vendorResponse.data; } @@ -57,13 +57,13 @@ class VendorRepository { ids = ids.sublist(0, kMaxEntitiesPerBulkAction); } - final url = credentials.url + + final url = credentials.url! + '/vendors/bulk?per_page=$kMaxEntitiesPerBulkAction&include=activities'; final dynamic response = await webClient.post(url, credentials.token, data: json.encode({'ids': ids, 'action': action.toApiParam()})); final VendorListResponse vendorResponse = - serializers.deserializeWith(VendorListResponse.serializer, response); + serializers.deserializeWith(VendorListResponse.serializer, response)!; return vendorResponse.data.toList(); } @@ -75,16 +75,16 @@ class VendorRepository { if (vendor.isNew) { response = await webClient.post( - credentials.url + '/vendors?include=activities', credentials.token, + credentials.url! + '/vendors?include=activities', credentials.token, data: json.encode(data)); } else { - final url = credentials.url + '/vendors/${vendor.id}?include=activities'; + final url = credentials.url! + '/vendors/${vendor.id}?include=activities'; response = await webClient.put(url, credentials.token, data: json.encode(data)); } final VendorItemResponse vendorResponse = - serializers.deserializeWith(VendorItemResponse.serializer, response); + serializers.deserializeWith(VendorItemResponse.serializer, response)!; return vendorResponse.data; } @@ -104,7 +104,7 @@ class VendorRepository { data: fields, multipartFiles: multipartFiles); final VendorItemResponse vendorResponse = - serializers.deserializeWith(VendorItemResponse.serializer, response); + serializers.deserializeWith(VendorItemResponse.serializer, response)!; return vendorResponse.data; } diff --git a/lib/data/repositories/webhook_repository.dart b/lib/data/repositories/webhook_repository.dart index 5d155af3d..2167754f0 100644 --- a/lib/data/repositories/webhook_repository.dart +++ b/lib/data/repositories/webhook_repository.dart @@ -20,23 +20,23 @@ class WebhookRepository { final WebClient webClient; Future loadItem( - Credentials credentials, String entityId) async { + Credentials credentials, String? entityId) async { final dynamic response = await webClient.get( '${credentials.url}/webhooks/$entityId', credentials.token); final WebhookItemResponse webhookResponse = - serializers.deserializeWith(WebhookItemResponse.serializer, response); + serializers.deserializeWith(WebhookItemResponse.serializer, response)!; return webhookResponse.data; } Future> loadList(Credentials credentials) async { - final url = credentials.url + '/webhooks?'; + final url = credentials.url! + '/webhooks?'; final dynamic response = await webClient.get(url, credentials.token); final WebhookListResponse webhookResponse = - serializers.deserializeWith(WebhookListResponse.serializer, response); + serializers.deserializeWith(WebhookListResponse.serializer, response)!; return webhookResponse.data; } @@ -48,12 +48,12 @@ class WebhookRepository { } final url = - credentials.url + '/webhooks/bulk?per_page=$kMaxEntitiesPerBulkAction'; + credentials.url! + '/webhooks/bulk?per_page=$kMaxEntitiesPerBulkAction'; final dynamic response = await webClient.post(url, credentials.token, data: json.encode({'ids': ids, 'action': action.toApiParam()})); final WebhookListResponse webhookResponse = - serializers.deserializeWith(WebhookListResponse.serializer, response); + serializers.deserializeWith(WebhookListResponse.serializer, response)!; return webhookResponse.data.toList(); } @@ -65,7 +65,7 @@ class WebhookRepository { if (webhook.isNew) { response = await webClient.post( - credentials.url + '/webhooks', credentials.token, + credentials.url! + '/webhooks', credentials.token, data: json.encode(data)); } else { final url = '${credentials.url}/webhooks/${webhook.id}'; @@ -74,7 +74,7 @@ class WebhookRepository { } final WebhookItemResponse webhookResponse = - serializers.deserializeWith(WebhookItemResponse.serializer, response); + serializers.deserializeWith(WebhookItemResponse.serializer, response)!; return webhookResponse.data; } diff --git a/lib/data/web_client.dart b/lib/data/web_client.dart index bbedfa605..28a8dd38a 100644 --- a/lib/data/web_client.dart +++ b/lib/data/web_client.dart @@ -25,7 +25,7 @@ class WebClient { Future get( String url, - String token, { + String? token, { bool rawResponse = false, }) async { if (Config.DEMO_MODE) { @@ -47,7 +47,7 @@ class WebClient { final client = http.Client(); final http.Response response = await client.get( Uri.parse(url), - headers: _getHeaders(url, token), + headers: _getHeaders(url, token) as Map?, ); client.close(); @@ -66,12 +66,12 @@ class WebClient { Future post( String url, - String token, { + String? token, { dynamic data, - List multipartFiles, - String secret, - String password, - String idToken, + List? multipartFiles, + String? secret, + String? password, + String? idToken, bool rawResponse = false, }) async { _preCheck(); @@ -103,7 +103,7 @@ class WebClient { .post( Uri.parse(url), body: data, - headers: headers, + headers: headers as Map?, ) .timeout( Duration( @@ -124,11 +124,11 @@ class WebClient { Future put( String url, - String token, { + String? token, { dynamic data, - MultipartFile multipartFile, - String password, - String idToken, + MultipartFile? multipartFile, + String? password, + String? idToken, }) async { _preCheck(); @@ -155,7 +155,7 @@ class WebClient { token, password: password, idToken: idToken, - ), + ) as Map?, ); client.close(); } @@ -167,9 +167,9 @@ class WebClient { Future delete( String url, - String token, { - String password, - String idToken, + String? token, { + String? password, + String? idToken, dynamic data, }) async { _preCheck(); @@ -188,7 +188,7 @@ class WebClient { token, password: password, idToken: idToken, - ), + ) as Map?, body: data, ); client.close(); @@ -199,12 +199,12 @@ class WebClient { } } -Map _getHeaders( +Map _getHeaders( String url, - String token, { - String secret, - String password, - String idToken, + String? token, { + String? secret, + String? password, + String? idToken, }) { if (url.startsWith(Constants.hostedApiUrl)) { secret = Config.API_SECRET; @@ -226,7 +226,7 @@ Map _getHeaders( } if ((password ?? '').isNotEmpty) { - headers['X-API-PASSWORD-BASE64'] = base64Encode(utf8.encode(password)); + headers['X-API-PASSWORD-BASE64'] = base64Encode(utf8.encode(password!)); } return headers; @@ -255,7 +255,7 @@ void _checkResponse(String url, http.Response response) { throw _parseError(response.statusCode, response.body); } else if (serverVersion == null) { throw 'Error: please check that Invoice Ninja v5 is installed on the server\n\nURL: $url\n\nResponse: ${response.body.length > 200 ? response.body.substring(0, 200) : response.body}\n\nHeaders: ${response.headers}}'; - } else if (Version.parse(kClientVersion) < Version.parse(minClientVersion)) { + } else if (Version.parse(kClientVersion) < Version.parse(minClientVersion!)) { throw 'Error: client not supported, please update to the latest version [Current v$kClientVersion < Minimum v$minClientVersion]'; } else if (Version.parse(serverVersion) < Version.parse(kMinServerVersion)) { throw 'Error: server not supported, please update to the latest version [Current v$serverVersion < Minimum v$kMinServerVersion]'; @@ -309,12 +309,12 @@ String _parseError(int code, String response) { } Future _uploadFiles( - String url, String token, List multipartFiles, + String url, String? token, List multipartFiles, {String method = 'POST', dynamic data}) async { final request = http.MultipartRequest(method, Uri.parse(url)) ..fields.addAll(data ?? {}) - ..headers.addAll(_getHeaders(url, token)) - ..files.addAll(multipartFiles); + ..headers.addAll(_getHeaders(url, token) as Map) + ..files.addAll(multipartFiles as Iterable); return await http.Response.fromStream(await request.send()) .timeout(const Duration(minutes: 10)); diff --git a/lib/main.dart b/lib/main.dart index adc4d26bb..c70b54903 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -228,7 +228,7 @@ Future _initialState(bool isTesting) async { //url = kAppDemoUrl; } - var prefState = PrefState(); + PrefState? prefState = PrefState(); if (prefString != null) { try { prefState = serializers.deserializeWith( @@ -237,14 +237,14 @@ Future _initialState(bool isTesting) async { print('## Error: Failed to load prefs: $e'); } } - prefState = prefState.rebuild((b) => b + prefState = prefState!.rebuild((b) => b ..enableDarkModeSystem = WidgetsBinding.instance.window.platformBrightness == Brightness.dark); - String browserRoute; + String? browserRoute; if (kIsWeb && prefState.isDesktop) { browserRoute = WebUtils.browserRoute; - if (browserRoute.isNotEmpty && browserRoute.length > 4) { + if (browserRoute!.isNotEmpty && browserRoute.length > 4) { if (browserRoute == '/kanban') { browserRoute = '/task'; prefState = prefState.rebuild((b) => b @@ -258,7 +258,7 @@ Future _initialState(bool isTesting) async { bool reportErrors = false; bool whiteLabeled = false; - String referralCode = ''; + String? referralCode = ''; if (kIsWeb) { reportErrors = WebUtils.getHtmlValue('report-errors') == '1'; diff --git a/lib/main_app.dart b/lib/main_app.dart index 2b426112d..cb1171664 100644 --- a/lib/main_app.dart +++ b/lib/main_app.dart @@ -127,18 +127,18 @@ import 'package:invoiceninja_flutter/utils/web_stub.dart' final navigatorKey = GlobalKey(); extension NavigatorKeyUtils on GlobalKey { - AppLocalization get localization { - return AppLocalization.of(currentContext); + AppLocalization? get localization { + return AppLocalization.of(currentContext!); } Store get store { - return StoreProvider.of(currentContext); + return StoreProvider.of(currentContext!); } } class InvoiceNinjaApp extends StatefulWidget { - const InvoiceNinjaApp({Key key, this.store}) : super(key: key); - final Store store; + const InvoiceNinjaApp({Key? key, this.store}) : super(key: key); + final Store? store; @override InvoiceNinjaAppState createState() => InvoiceNinjaAppState(); @@ -175,7 +175,7 @@ class InvoiceNinjaAppState extends State { final window = WidgetsBinding.instance.window; window.onPlatformBrightnessChanged = () { WidgetsBinding.instance.handlePlatformBrightnessChanged(); - widget.store.dispatch(UpdateUserPreferences( + widget.store!.dispatch(UpdateUserPreferences( enableDarkModeSystem: window.platformBrightness == Brightness.dark)); setState(() {}); }; @@ -186,7 +186,7 @@ class InvoiceNinjaAppState extends State { Timer.periodic(Duration(milliseconds: kMillisecondsToTimerRefreshData), (_) { - final store = widget.store; + final store = widget.store!; final state = store.state; if (!state.authState.isAuthenticated) { @@ -231,7 +231,7 @@ class InvoiceNinjaAppState extends State { @override void didChangeDependencies() { - final state = widget.store.state; + final state = widget.store!.state; if (state.prefState.requireAuthentication && !_authenticated) { _authenticate(); } @@ -254,7 +254,7 @@ class InvoiceNinjaAppState extends State { } void _initTimeago() { - final locale = localeSelector(widget.store.state, twoLetter: true); + final locale = localeSelector(widget.store!.state, twoLetter: true); if (locale == 'ar') { timeago.setLocaleMessages('ar', timeago.ArMessages()); timeago.setLocaleMessages('ar_short', timeago.ArMessages()); @@ -320,10 +320,10 @@ class InvoiceNinjaAppState extends State { @override Widget build(BuildContext context) { return StoreProvider( - store: widget.store, + store: widget.store!, child: WebSessionTimeout( child: AppBuilder(builder: (context) { - final store = widget.store; + final store = widget.store!; final state = store.state; final hasAccentColor = state.hasAccentColor; final accentColor = state.accentColor; @@ -362,7 +362,7 @@ class InvoiceNinjaAppState extends State { companyId: state.company?.id, child: WindowManager( child: MaterialApp( - builder: (BuildContext context, Widget child) { + builder: (BuildContext context, Widget? child) { final MediaQueryData data = MediaQuery.of(context); return MediaQuery( data: data.copyWith( @@ -371,7 +371,7 @@ class InvoiceNinjaAppState extends State { state.company?.settings?.enableMilitaryTime ?? false, ), - child: child, + child: child!, ); }, scrollBehavior: state.prefState.enableTouchEvents && diff --git a/lib/redux/app/app_actions.dart b/lib/redux/app/app_actions.dart index 2390fe03b..fb3a9d7b6 100644 --- a/lib/redux/app/app_actions.dart +++ b/lib/redux/app/app_actions.dart @@ -135,25 +135,25 @@ class StopSaving {} class ServerVersionUpdated { ServerVersionUpdated({this.version}); - final String version; + final String? version; } class LoadStaticSuccess implements PersistStatic { LoadStaticSuccess({this.data}); - final StaticDataEntity data; + final StaticDataEntity? data; } class ToggleEditorLayout implements PersistPrefs { ToggleEditorLayout(this.entityType); - final EntityType entityType; + final EntityType? entityType; } class ToggleViewerLayout implements PersistPrefs { ToggleViewerLayout(this.entityType); - final EntityType entityType; + final EntityType? entityType; } class TogglePreviewSidebar {} @@ -191,41 +191,41 @@ class UpdateUserPreferences implements PersistPrefs { this.statementIncludes, }); - final AppLayout appLayout; - final ModuleLayout moduleLayout; - final AppSidebar sidebar; - final AppSidebarMode menuMode; - final AppSidebarMode historyMode; - final String darkModeType; - final bool enableDarkModeSystem; - final bool longPressSelectionIsDefault; - final bool requireAuthentication; - final bool isPreviewVisible; - final bool isFilterVisible; - final bool showKanban; - final String accentColor; - final int rowsPerPage; - final String colorTheme; - final String darkColorTheme; - final bool persistData; - final bool tapSelectedToEdit; - final double textScaleFactor; - final bool showPdfPreview; - final bool showPdfPreviewSideBySide; - final BuiltMap customColors; - final BuiltMap darkCustomColors; - final bool editAfterSaving; - final bool enableTouchEvents; - final bool enableTooltips; - final bool flexibleSearch; - final bool enableNativeBrowser; - final BuiltList statementIncludes; + final AppLayout? appLayout; + final ModuleLayout? moduleLayout; + final AppSidebar? sidebar; + final AppSidebarMode? menuMode; + final AppSidebarMode? historyMode; + final String? darkModeType; + final bool? enableDarkModeSystem; + final bool? longPressSelectionIsDefault; + final bool? requireAuthentication; + final bool? isPreviewVisible; + final bool? isFilterVisible; + final bool? showKanban; + final String? accentColor; + final int? rowsPerPage; + final String? colorTheme; + final String? darkColorTheme; + final bool? persistData; + final bool? tapSelectedToEdit; + final double? textScaleFactor; + final bool? showPdfPreview; + final bool? showPdfPreviewSideBySide; + final BuiltMap? customColors; + final BuiltMap? darkCustomColors; + final bool? editAfterSaving; + final bool? enableTouchEvents; + final bool? enableTooltips; + final bool? flexibleSearch; + final bool? enableNativeBrowser; + final BuiltList? statementIncludes; } class LoadAccountSuccess implements StopLoading { LoadAccountSuccess({ - @required this.completer, - @required this.loginResponse, + required this.completer, + required this.loginResponse, }); final Completer completer; @@ -250,7 +250,7 @@ class RefreshData implements StartLoading { this.allCompanies = false, }); - final Completer completer; + final Completer? completer; final bool clearData; final bool includeStatic; final bool allCompanies; @@ -259,8 +259,8 @@ class RefreshData implements StartLoading { class RefreshDataSuccess implements StopLoading { const RefreshDataSuccess({this.completer, this.data}); - final Completer completer; - final LoginResponse data; + final Completer? completer; + final LoginResponse? data; } class RefreshDataFailure implements StopLoading { @@ -275,8 +275,8 @@ class PreviewEntity { this.entityId, }); - final String entityId; - final EntityType entityType; + final String? entityId; + final EntityType? entityType; } class ClearPreviewStack {} @@ -296,21 +296,21 @@ class ClearEntityFilter {} class ClearEntitySelection { ClearEntitySelection({this.entityType}); - final EntityType entityType; + final EntityType? entityType; } class FilterByEntity implements PersistUI { FilterByEntity({ - @required this.entity, + required this.entity, this.clearSelection = false, }); - final BaseEntity entity; + final BaseEntity? entity; final bool clearSelection; - String get entityId => entity.id; + String get entityId => entity!.id; - EntityType get entityType => entity.entityType; + EntityType? get entityType => entity!.entityType; } class FilterCompany implements PersistUI { @@ -320,23 +320,23 @@ class FilterCompany implements PersistUI { } void filterByEntity({ - @required BaseEntity entity, + required BaseEntity entity, }) { if (entity.isNew) { return; } - final context = navigatorKey.currentContext; + final context = navigatorKey.currentContext!; final store = StoreProvider.of(context); store.dispatch(FilterByEntity(entity: entity)); } void viewEntitiesByType({ - @required EntityType entityType, - BaseEntity filterEntity, - int page = 0, + required EntityType? entityType, + BaseEntity? filterEntity, + int? page = 0, }) { - final store = StoreProvider.of(navigatorKey.currentContext); + final store = StoreProvider.of(navigatorKey.currentContext!); final uiState = store.state.uiState; dynamic action; @@ -481,10 +481,10 @@ void viewEntitiesByType({ } void viewEntity({ - @required BaseEntity entity, + required BaseEntity entity, bool force = false, bool addToStack = false, - BaseEntity filterEntity, + BaseEntity? filterEntity, }) => viewEntityById( entityId: entity.id, @@ -495,14 +495,14 @@ void viewEntity({ ); void viewEntityById({ - @required String entityId, - @required EntityType entityType, + required String? entityId, + required EntityType? entityType, bool force = false, bool showError = true, bool addToStack = false, - BaseEntity filterEntity, + BaseEntity? filterEntity, }) { - final store = StoreProvider.of(navigatorKey.currentContext); + final store = StoreProvider.of(navigatorKey.currentContext!); final state = store.state; final uiState = store.state.uiState; @@ -541,23 +541,23 @@ void viewEntityById({ } if (entityId != null && - !store.state.getEntityMap(entityType).containsKey(entityId)) { + !store.state.getEntityMap(entityType)!.containsKey(entityId)) { if (showError) { final localization = - AppLocalization.of(navigatorKey.currentContext); + AppLocalization.of(navigatorKey.currentContext!)!; showErrorDialog(message: localization.failedToFindRecord); } return; } - if (isDesktop(navigatorKey.currentContext) && - entityType.hasFullWidthViewer) { + if (isDesktop(navigatorKey.currentContext!) && + entityType!.hasFullWidthViewer) { if (!state.prefState.isViewerFullScreen(entityType)) store.dispatch(ToggleViewerLayout(entityType)); final filterEntity = - store.state.getEntityMap(entityType)[entityId] as BaseEntity; - final entityTypes = filterEntity.entityType.relatedTypes - .where((entityType) => state.company.isModuleEnabled(entityType)); + store.state.getEntityMap(entityType)![entityId] as BaseEntity; + final entityTypes = filterEntity.entityType!.relatedTypes + .where((entityType) => state.company!.isModuleEnabled(entityType)); if (entityTypes.isNotEmpty) { viewEntitiesByType( entityType: entityTypes.first, filterEntity: filterEntity); @@ -760,15 +760,15 @@ void viewEntityById({ } void createEntityByType({ - BuildContext context, - EntityType entityType, + required BuildContext context, + EntityType? entityType, bool force = false, bool applyFilter = true, }) { final store = StoreProvider.of(context); final state = store.state; - if (!state.userCompany.canCreate(entityType)) { + if (!state.userCompany!.canCreate(entityType)) { return; } @@ -787,29 +787,29 @@ void createEntityByType({ final filterEntityId = state.uiState.filterEntityId; final filterEntityType = state.uiState.filterEntityType; - ClientEntity client; - ProjectEntity project; - VendorEntity vendor; - UserEntity user; - GroupEntity group; + ClientEntity? client; + ProjectEntity? project; + VendorEntity? vendor; + UserEntity? user; + GroupEntity? group; if (applyFilter && filterEntityType != null) { switch (filterEntityType) { case EntityType.client: - client = state.clientState.get(filterEntityId); + client = state.clientState.get(filterEntityId!); break; case EntityType.project: - project = state.projectState.get(filterEntityId); - client = state.clientState.get(project.clientId); + project = state.projectState.get(filterEntityId!); + client = state.clientState.get(project!.clientId); break; case EntityType.vendor: - vendor = state.vendorState.get(filterEntityId); + vendor = state.vendorState.get(filterEntityId!); break; case EntityType.user: - user = state.userState.get(filterEntityId); + user = state.userState.get(filterEntityId!); break; case EntityType.group: - group = state.groupState.get(filterEntityId); + group = state.groupState.get(filterEntityId!); break; } } @@ -1040,18 +1040,18 @@ void createEntityByType({ } void createEntity({ - BuildContext context, - BaseEntity entity, + required BuildContext context, + required BaseEntity entity, bool force = false, - Completer completer, - Completer cancelCompleter, - BaseEntity filterEntity, + Completer? completer, + Completer? cancelCompleter, + BaseEntity? filterEntity, }) { final store = StoreProvider.of(context); final state = store.state; final uiState = state.uiState; - if (!state.userCompany.canCreate(entity.entityType)) { + if (!state.userCompany!.canCreate(entity.entityType)) { return; } @@ -1079,7 +1079,7 @@ void createEntity({ switch (entity.entityType) { case EntityType.client: store.dispatch(EditClient( - client: entity, + client: entity as ClientEntity, force: force, completer: completer, cancelCompleter: cancelCompleter, @@ -1087,14 +1087,14 @@ void createEntity({ break; case EntityType.user: store.dispatch(EditUser( - user: entity, + user: entity as UserEntity, force: force, completer: completer, )); break; case EntityType.project: store.dispatch(EditProject( - project: entity, + project: entity as ProjectEntity, force: force, completer: completer, cancelCompleter: cancelCompleter, @@ -1102,35 +1102,35 @@ void createEntity({ break; case EntityType.taxRate: store.dispatch(EditTaxRate( - taxRate: entity, + taxRate: entity as TaxRateEntity, force: force, completer: completer, )); break; case EntityType.companyGateway: store.dispatch(EditCompanyGateway( - companyGateway: entity, + companyGateway: entity as CompanyGatewayEntity, force: force, completer: completer, )); break; case EntityType.invoice: store.dispatch(EditInvoice( - invoice: entity, + invoice: entity as InvoiceEntity?, force: force, completer: completer, )); break; case EntityType.quote: store.dispatch(EditQuote( - quote: entity, + quote: entity as InvoiceEntity?, force: force, completer: completer, )); break; case EntityType.vendor: store.dispatch(EditVendor( - vendor: entity, + vendor: entity as VendorEntity, force: force, completer: completer, cancelCompleter: cancelCompleter, @@ -1138,35 +1138,35 @@ void createEntity({ break; case EntityType.product: store.dispatch(EditProduct( - product: entity, + product: entity as ProductEntity, force: force, completer: completer, )); break; case EntityType.task: store.dispatch(EditTask( - task: entity, + task: entity as TaskEntity?, force: force, completer: completer, )); break; case EntityType.expense: store.dispatch(EditExpense( - expense: entity, + expense: entity as ExpenseEntity, force: force, completer: completer, )); break; case EntityType.payment: store.dispatch(EditPayment( - payment: entity, + payment: entity as PaymentEntity, force: force, completer: completer, )); break; case EntityType.group: store.dispatch(EditGroup( - group: entity, + group: entity as GroupEntity, force: force, completer: completer, )); @@ -1174,7 +1174,7 @@ void createEntity({ // STARTER: create - do not remove comment case EntityType.schedule: store.dispatch(EditSchedule( - schedule: entity, + schedule: entity as ScheduleEntity, force: force, completer: completer, )); @@ -1182,7 +1182,7 @@ void createEntity({ case EntityType.transactionRule: store.dispatch(EditTransactionRule( - transactionRule: entity, + transactionRule: entity as TransactionRuleEntity, force: force, completer: completer, )); @@ -1190,7 +1190,7 @@ void createEntity({ case EntityType.transaction: store.dispatch(EditTransaction( - transaction: entity, + transaction: entity as TransactionEntity, force: force, completer: completer, )); @@ -1198,35 +1198,35 @@ void createEntity({ case EntityType.purchaseOrder: store.dispatch(EditPurchaseOrder( - purchaseOrder: entity, + purchaseOrder: entity as InvoiceEntity, force: force, completer: completer, )); break; case EntityType.recurringExpense: store.dispatch(EditRecurringExpense( - recurringExpense: entity, + recurringExpense: entity as ExpenseEntity, force: force, completer: completer, )); break; case EntityType.subscription: store.dispatch(EditSubscription( - subscription: entity, + subscription: entity as SubscriptionEntity, force: force, completer: completer, )); break; case EntityType.taskStatus: store.dispatch(EditTaskStatus( - taskStatus: entity, + taskStatus: entity as TaskStatusEntity, force: force, completer: completer, )); break; case EntityType.expenseCategory: store.dispatch(EditExpenseCategory( - expenseCategory: entity, + expenseCategory: entity as ExpenseCategoryEntity, force: force, completer: completer, cancelCompleter: cancelCompleter, @@ -1234,49 +1234,49 @@ void createEntity({ break; case EntityType.recurringInvoice: store.dispatch(EditRecurringInvoice( - recurringInvoice: entity, + recurringInvoice: entity as InvoiceEntity, force: force, completer: completer, )); break; case EntityType.webhook: store.dispatch(EditWebhook( - webhook: entity, + webhook: entity as WebhookEntity, force: force, completer: completer, )); break; case EntityType.token: store.dispatch(EditToken( - token: entity, + token: entity as TokenEntity, force: force, completer: completer, )); break; case EntityType.paymentTerm: store.dispatch(EditPaymentTerm( - paymentTerm: entity, + paymentTerm: entity as PaymentTermEntity, force: force, completer: completer, )); break; case EntityType.design: store.dispatch(EditDesign( - design: entity, + design: entity as DesignEntity, force: force, completer: completer, )); break; case EntityType.credit: store.dispatch(EditCredit( - credit: entity, + credit: entity as InvoiceEntity?, force: force, completer: completer, )); break; case EntityType.bankAccount: store.dispatch(EditBankAccount( - bankAccount: entity, + bankAccount: entity as BankAccountEntity, force: force, completer: completer, )); @@ -1288,13 +1288,13 @@ void createEntity({ } void editEntity({ - @required BaseEntity entity, - int subIndex, + required BaseEntity entity, + int? subIndex, bool force = false, bool fullScreen = true, - Completer completer, + Completer? completer, }) { - final context = navigatorKey.currentContext; + final context = navigatorKey.currentContext!; final store = StoreProvider.of(context); final state = store.state; final localization = AppLocalization.of(context); @@ -1314,25 +1314,25 @@ void editEntity({ switch (entityType) { case EntityType.client: store.dispatch(EditClient( - client: entity, + client: entity as ClientEntity, completer: completer, )); break; case EntityType.user: store.dispatch(EditUser( - user: entity, + user: entity as UserEntity, completer: completer, )); break; case EntityType.project: - store.dispatch(EditProject(project: entity, completer: completer)); + store.dispatch(EditProject(project: entity as ProjectEntity, completer: completer)); break; case EntityType.taxRate: - store.dispatch(EditTaxRate(taxRate: entity, completer: completer)); + store.dispatch(EditTaxRate(taxRate: entity as TaxRateEntity, completer: completer)); break; case EntityType.companyGateway: store.dispatch(EditCompanyGateway( - companyGateway: entity, completer: completer)); + companyGateway: entity as CompanyGatewayEntity, completer: completer)); break; case EntityType.invoice: final invoice = entity as InvoiceEntity; @@ -1343,13 +1343,13 @@ void editEntity({ invoice.isPaid) { showMessageDialog( context: context, - message: localization.paidInvoicesArelocked); + message: localization!.paidInvoicesArelocked); } else if (settings.lockInvoices == SettingsEntity.LOCK_INVOICES_SENT && invoice.isSent) { showMessageDialog( context: context, - message: localization.sentInvoicesArelocked); + message: localization!.sentInvoicesArelocked); } else { store.dispatch(EditInvoice( invoice: entity, @@ -1360,132 +1360,132 @@ void editEntity({ break; case EntityType.quote: store.dispatch(EditQuote( - quote: entity, + quote: entity as InvoiceEntity?, completer: completer, quoteItemIndex: subIndex, )); break; case EntityType.vendor: store.dispatch(EditVendor( - vendor: entity, + vendor: entity as VendorEntity, completer: completer, )); break; case EntityType.product: - store.dispatch(EditProduct(product: entity, completer: completer)); + store.dispatch(EditProduct(product: entity as ProductEntity, completer: completer)); break; case EntityType.task: - if (!state.company.invoiceTaskLock || + if (!state.company!.invoiceTaskLock || !(entity as TaskEntity).isInvoiced) store.dispatch(EditTask( - task: entity, + task: entity as TaskEntity?, taskTimeIndex: subIndex, completer: completer, )); break; case EntityType.expense: store.dispatch( - EditExpense(expense: entity, completer: completer), + EditExpense(expense: entity as ExpenseEntity, completer: completer), ); break; case EntityType.payment: store.dispatch(EditPayment( - payment: entity, + payment: entity as PaymentEntity, completer: completer, )); break; case EntityType.group: store.dispatch(EditGroup( - group: entity, + group: entity as GroupEntity, completer: completer, )); break; // STARTER: edit - do not remove comment case EntityType.schedule: store - .dispatch(EditSchedule(schedule: entity, completer: completer)); + .dispatch(EditSchedule(schedule: entity as ScheduleEntity, completer: completer)); break; case EntityType.transactionRule: store.dispatch(EditTransactionRule( - transactionRule: entity, completer: completer)); + transactionRule: entity as TransactionRuleEntity, completer: completer)); break; case EntityType.transaction: store.dispatch( - EditTransaction(transaction: entity, completer: completer)); + EditTransaction(transaction: entity as TransactionEntity, completer: completer)); break; case EntityType.purchaseOrder: store.dispatch( - EditPurchaseOrder(purchaseOrder: entity, completer: completer)); + EditPurchaseOrder(purchaseOrder: entity as InvoiceEntity, completer: completer)); break; case EntityType.recurringExpense: store.dispatch(EditRecurringExpense( - recurringExpense: entity, completer: completer)); + recurringExpense: entity as ExpenseEntity, completer: completer)); break; case EntityType.subscription: store.dispatch( - EditSubscription(subscription: entity, completer: completer)); + EditSubscription(subscription: entity as SubscriptionEntity, completer: completer)); break; case EntityType.taskStatus: store.dispatch(EditTaskStatus( - taskStatus: entity, + taskStatus: entity as TaskStatusEntity, completer: completer, )); break; case EntityType.expenseCategory: store.dispatch(EditExpenseCategory( - expenseCategory: entity, + expenseCategory: entity as ExpenseCategoryEntity, completer: completer, )); break; case EntityType.recurringInvoice: store.dispatch(EditRecurringInvoice( - recurringInvoice: entity, + recurringInvoice: entity as InvoiceEntity, completer: completer, )); break; case EntityType.webhook: store.dispatch(EditWebhook( - webhook: entity, + webhook: entity as WebhookEntity, completer: completer, )); break; case EntityType.token: store.dispatch(EditToken( - token: entity, + token: entity as TokenEntity, completer: completer, )); break; case EntityType.paymentTerm: store.dispatch(EditPaymentTerm( - paymentTerm: entity, + paymentTerm: entity as PaymentTermEntity, completer: completer, )); break; case EntityType.design: store.dispatch(EditDesign( - design: entity, + design: entity as DesignEntity, completer: completer, )); break; case EntityType.credit: store.dispatch(EditCredit( - credit: entity, + credit: entity as InvoiceEntity?, completer: completer, )); break; case EntityType.bankAccount: store.dispatch(EditBankAccount( - bankAccount: entity, + bankAccount: entity as BankAccountEntity, completer: completer, )); break; case EntityType.document: store.dispatch(EditDocument( - document: entity, + document: entity as DocumentEntity?, completer: completer, )); break; @@ -1495,12 +1495,12 @@ void editEntity({ }); } -void handleEntityAction(BaseEntity entity, EntityAction action, +void handleEntityAction(BaseEntity? entity, EntityAction? action, {bool autoPop = false}) { handleEntitiesActions([entity], action, autoPop: autoPop); } -void handleEntitiesActions(List entities, EntityAction action, +void handleEntitiesActions(List entities, EntityAction? action, {bool autoPop = false}) { if (entities.isEmpty) { return; @@ -1512,11 +1512,11 @@ void handleEntitiesActions(List entities, EntityAction action, EntityAction.remove, ].contains(action) && autoPop) { - if (isMobile(navigatorKey.currentContext)) { - navigatorKey.currentState.pop(); - } else if (entities.first.entityType.isSetting) { - final store = StoreProvider.of(navigatorKey.currentContext); - switch (entities.first.entityType) { + if (isMobile(navigatorKey.currentContext!)) { + navigatorKey.currentState!.pop(); + } else if (entities.first!.entityType!.isSetting) { + final store = StoreProvider.of(navigatorKey.currentContext!); + switch (entities.first!.entityType) { case EntityType.paymentTerm: store.dispatch(UpdateCurrentRoute(PaymentTermScreen.route)); break; @@ -1561,13 +1561,13 @@ void handleEntitiesActions(List entities, EntityAction action, break; default: print( - '## ERROR: ${entities.first.entityType} entity type not supported'); + '## ERROR: ${entities.first!.entityType} entity type not supported'); } } } final context = navigatorKey.currentContext; - switch (entities.first.entityType) { + switch (entities.first!.entityType) { case EntityType.client: handleClientAction(context, entities, action); break; @@ -1581,7 +1581,7 @@ void handleEntitiesActions(List entities, EntityAction action, handlePaymentAction(context, entities, action); break; case EntityType.quote: - handleQuoteAction(context, entities, action); + handleQuoteAction(context!, entities, action); break; case EntityType.task: handleTaskAction(context, entities, action); @@ -1590,7 +1590,7 @@ void handleEntitiesActions(List entities, EntityAction action, handleProjectAction(context, entities, action); break; case EntityType.expense: - handleExpenseAction(context, entities, action); + handleExpenseAction(context!, entities, action); break; case EntityType.vendor: handleVendorAction(context, entities, action); @@ -1659,22 +1659,22 @@ void handleEntitiesActions(List entities, EntityAction action, handleDesignAction(context, entities, action); break; case EntityType.credit: - handleCreditAction(context, entities, action); + handleCreditAction(context!, entities, action); break; default: print( - 'Error: unhandled type ${entities.first.entityType} in handleEntitiesActions'); + 'Error: unhandled type ${entities.first!.entityType} in handleEntitiesActions'); } } void selectEntity({ - @required BaseEntity entity, + required BaseEntity entity, bool longPress = false, bool forceView = false, - BaseEntity filterEntity, + BaseEntity? filterEntity, }) { final context = navigatorKey.currentContext; - final store = StoreProvider.of(navigatorKey.currentContext); + final store = StoreProvider.of(navigatorKey.currentContext!); final state = store.state; final uiState = state.uiState; final entityUIState = state.getUIState(entity.entityType); @@ -1693,11 +1693,11 @@ void selectEntity({ } } else if (isInMultiselect && forceView != true) { handleEntityAction(entity, EntityAction.toggleMultiselect); - } else if (isDesktop(context) && !state.prefState.isPreviewVisible) { - if (uiState.isEditing && entityUIState.editingId == entity.id) { + } else if (isDesktop(context!) && !state.prefState.isPreviewVisible) { + if (uiState.isEditing && entityUIState!.editingId == entity.id) { viewEntitiesByType(entityType: entity.entityType); } else { - if (!entity.entityType.hasFullWidthViewer && + if (!entity.entityType!.hasFullWidthViewer && !state.prefState.isPreviewVisible) { store.dispatch(TogglePreviewSidebar()); } @@ -1709,8 +1709,8 @@ void selectEntity({ } else if (isDesktop(context) && !forceView && uiState.isViewing && - !entity.entityType.isSetting && - entityUIState.selectedId == entity.id) { + !entity.entityType!.isSetting && + entityUIState!.selectedId == entity.id) { if (entityUIState.tabIndex > 0) { store.dispatch(PreviewEntity()); } else if (state.prefState.tapSelectedToEdit) { @@ -1724,22 +1724,22 @@ void selectEntity({ } void inspectEntity({ - BaseEntity entity, + BaseEntity? entity, bool longPress = false, }) { - final store = StoreProvider.of(navigatorKey.currentContext); + final store = StoreProvider.of(navigatorKey.currentContext!); final state = store.state; final previewStack = state.uiState.previewStack; - if (isDesktop(navigatorKey.currentContext)) { + if (isDesktop(navigatorKey.currentContext!)) { if (longPress) { - viewEntity(entity: entity); + viewEntity(entity: entity!); } else if (previewStack.isNotEmpty) { final entityType = previewStack.last; viewEntityById( filterEntity: entity, entityType: entityType, - entityId: state.getUIState(entityType).selectedId, + entityId: state.getUIState(entityType)!.selectedId, ); } else { store.dispatch(FilterByEntity(entity: entity)); @@ -1748,25 +1748,25 @@ void inspectEntity({ if (longPress) { showEntityActionsDialog(entities: [entity]); } else { - viewEntity(entity: entity); + viewEntity(entity: entity!); } } } void checkForChanges({ - @required Store store, - @required Function callback, + required Store store, + required Function callback, bool force = false, }) { final context = navigatorKey.currentContext; if (force) { callback(); - } else if (store.state.hasChanges() && !isMobile(context)) { + } else if (store.state.hasChanges() && !isMobile(context!)) { showDialog( context: context, builder: (BuildContext dialogContext) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; return MessageDialog(localization.errorUnsavedChanges, dismissLabel: localization.continueEditing, onDiscard: () { store.dispatch(DiscardChanges()); diff --git a/lib/redux/app/app_middleware.dart b/lib/redux/app/app_middleware.dart index 7779acc7c..f574c7c27 100644 --- a/lib/redux/app/app_middleware.dart +++ b/lib/redux/app/app_middleware.dart @@ -187,14 +187,14 @@ Middleware _createLoadState( PersistenceRepository staticRepository, List companyRepositories, ) { - AuthState authState; - UIState uiState; - StaticState staticState; - final List companyStates = []; + AuthState? authState; + UIState? uiState; + StaticState? staticState; + final List companyStates = []; return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as LoadStateRequest; + final action = dynamicAction as LoadStateRequest?; try { final state = store.state; @@ -205,7 +205,7 @@ Middleware _createLoadState( staticState = await staticRepository.loadStaticState(); for (var i = 0; i < companyRepositories.length; i++) { - var companyState = UserCompanyState(state.reportErrors); + UserCompanyState? companyState = UserCompanyState(state.reportErrors); try { companyState = await companyRepositories[i].loadCompanyState(i); } catch (e) { @@ -216,40 +216,40 @@ Middleware _createLoadState( // Carry over a deeplink URL on the web if (state.uiState.currentRoute != LoginScreen.route) { - uiState = uiState + uiState = uiState! .rebuild((b) => b..currentRoute = state.uiState.currentRoute); } final AppState appState = AppState( prefState: prefState, isWhiteLabeled: store.state.isWhiteLabeled, - reportErrors: store.state.account.reportErrors) + reportErrors: store.state.account!.reportErrors) .rebuild((b) => b - ..authState.replace(authState) - ..uiState.replace(uiState) - ..staticState.replace(staticState) + ..authState.replace(authState!) + ..uiState.replace(uiState!) + ..staticState.replace(staticState!) ..userCompanyStates.replace(companyStates)); - AppBuilder.of(navigatorKey.currentContext).rebuild(); + AppBuilder.of(navigatorKey.currentContext!)!.rebuild(); store.dispatch(LoadStateSuccess(appState)); store.dispatch(RefreshData( completer: Completer() ..future.then((value) { - AppBuilder.of(navigatorKey.currentContext).rebuild(); + AppBuilder.of(navigatorKey.currentContext!)!.rebuild(); store.dispatch(UpdatedSetting()); - }))); + } as FutureOr<_> Function(Null)))); - if (uiState.currentRoute != LoginScreen.route && - uiState.currentRoute.isNotEmpty) { - final NavigatorState navigator = navigatorKey.currentState; + if (uiState!.currentRoute != LoginScreen.route && + uiState!.currentRoute.isNotEmpty) { + final NavigatorState? navigator = navigatorKey.currentState; final routes = _getRoutes(appState); if (appState.prefState.appLayout == AppLayout.mobile) { bool isFirst = true; routes.forEach((route) { if (isFirst) { - navigator.pushReplacementNamed(route); + navigator!.pushReplacementNamed(route); } else { - navigator.pushNamed(route); + navigator!.pushNamed(route); } isFirst = false; }); @@ -263,12 +263,12 @@ Middleware _createLoadState( store.dispatch(ViewMainScreen()); } } else { - throw 'Unknown page: ${uiState.currentRoute}'; + throw 'Unknown page: ${uiState!.currentRoute}'; } } catch (error) { print('## ERROR (app_middleware - load state): $error'); - String token; + String? token; if (Config.DEMO_MODE || cleanApiUrl(store.state.authState.url) == kAppDemoUrl) { @@ -282,8 +282,8 @@ Middleware _createLoadState( } } - if (token.isNotEmpty) { - if (calculateLayout(navigatorKey.currentContext) == AppLayout.mobile) { + if (token!.isNotEmpty) { + if (calculateLayout(navigatorKey.currentContext!) == AppLayout.mobile) { store.dispatch(UpdateUserPreferences(appLayout: AppLayout.mobile)); } else { store.dispatch(ViewMainScreen()); @@ -291,7 +291,7 @@ Middleware _createLoadState( WidgetsBinding.instance.addPostFrameCallback((duration) { store.dispatch(ViewDashboard()); }); - AppBuilder.of(navigatorKey.currentContext).rebuild(); + AppBuilder.of(navigatorKey.currentContext!)!.rebuild(); } else { store.dispatch(UserLogout()); } @@ -304,7 +304,7 @@ Middleware _createLoadState( List _getRoutes(AppState state) { final List routes = []; var route = ''; - EntityType entityType; + EntityType? entityType; state.uiState.currentRoute .split('/') @@ -346,7 +346,7 @@ Middleware _createUserLoggedIn( List companyRepositories, ) { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as UserLoginSuccess; + final action = dynamicAction as UserLoginSuccess?; next(action); @@ -367,7 +367,7 @@ Middleware _createPersistData( List companyRepositories, ) { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as PersistData; + final action = dynamicAction as PersistData?; next(action); @@ -384,7 +384,7 @@ Middleware _createPersistData( final _persistUIDebouncer = PersistDebouncer(); Middleware _createPersistUI(PersistenceRepository uiRepository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as PersistUI; + final action = dynamicAction as PersistUI?; next(action); @@ -396,7 +396,7 @@ Middleware _createPersistUI(PersistenceRepository uiRepository) { Middleware _createPersistPrefs() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as PersistPrefs; + final action = dynamicAction as PersistPrefs?; next(action); @@ -430,14 +430,14 @@ Middleware _createAccountLoaded() { if (i == 0) { final SharedPreferences prefs = await SharedPreferences.getInstance(); - prefs.setString(kSharedPrefToken, userCompany.token.obscuredToken); + prefs.setString(kSharedPrefToken, userCompany.token!.obscuredToken); } store.dispatch( SelectCompany(companyIndex: i, clearSelection: loadedStaticData)); store.dispatch(LoadCompanySuccess(userCompany)); - if (store.state.account.defaultCompanyId == userCompany.company.id) { + if (store.state.account!.defaultCompanyId == userCompany.company!.id) { selectedCompanyIndex = i; } } @@ -453,7 +453,7 @@ Middleware _createAccountLoaded() { if (!store.state.userCompanyState.isLoaded && response.userCompanies.isNotEmpty && // TODO remove this check response.userCompanies.length > selectedCompanyIndex && - response.userCompanies[selectedCompanyIndex].company.isLarge) { + response.userCompanies[selectedCompanyIndex].company!.isLarge) { store.dispatch(LoadClients()); } @@ -471,7 +471,7 @@ Middleware _createDataRefreshed() { return (Store store, dynamic dynamicAction, NextDispatcher next) async { final action = dynamicAction as RefreshDataSuccess; - final response = action.data; + final response = action.data!; final loadedStaticData = response.static.currencies.isNotEmpty; final state = store.state; final selectedCompanyIndex = state.uiState.selectedCompanyIndex; @@ -493,7 +493,7 @@ Middleware _createDataRefreshed() { if (i == 0) { final SharedPreferences prefs = await SharedPreferences.getInstance(); - prefs.setString(kSharedPrefToken, userCompany.token.obscuredToken); + prefs.setString(kSharedPrefToken, userCompany.token!.obscuredToken); } store.dispatch( @@ -513,14 +513,14 @@ Middleware _createDataRefreshed() { store.dispatch(PersistData()); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } next(action); WidgetUtils.updateData(); - if (store.state.company.isLarge && !store.state.isLoaded) { + if (store.state.company!.isLarge && !store.state.isLoaded) { store.dispatch(LoadClients()); } }; @@ -529,7 +529,7 @@ Middleware _createDataRefreshed() { Middleware _createPersistStatic( PersistenceRepository staticRepository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as PersistStatic; + final action = dynamicAction as PersistStatic?; // first process the action so the data is in the state next(action); @@ -560,21 +560,21 @@ Middleware _createDeleteState( Middleware _createViewMainScreen() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as ViewMainScreen; + final action = dynamicAction as ViewMainScreen?; if (store.state.uiState.currentRoute == LoginScreen.route) { store.dispatch(UpdateCurrentRoute( - store.state.userCompany.canViewDashboard || store.state.isDemo + store.state.userCompany!.canViewDashboard || store.state.isDemo ? DashboardScreenBuilder.route : ClientScreen.route)); } - while (navigatorKey.currentState.canPop()) { - navigatorKey.currentState.pop(); + while (navigatorKey.currentState!.canPop()) { + navigatorKey.currentState!.pop(); } WidgetsBinding.instance.addPostFrameCallback((duration) { - navigatorKey.currentState.pushNamed(MainScreen.route); + navigatorKey.currentState!.pushNamed(MainScreen.route); }); next(action); diff --git a/lib/redux/app/app_reducer.dart b/lib/redux/app/app_reducer.dart index d14c026d8..de2a5b05e 100644 --- a/lib/redux/app/app_reducer.dart +++ b/lib/redux/app/app_reducer.dart @@ -48,7 +48,7 @@ AppState appReducer(AppState state, dynamic action) { return AppState( prefState: state.prefState, isWhiteLabeled: state.isWhiteLabeled, - reportErrors: state.account.reportErrors) + reportErrors: state.account!.reportErrors) .rebuild((b) => b ..authState.replace(state.authState.rebuild((b) => b ..isAuthenticated = false @@ -61,7 +61,7 @@ AppState appReducer(AppState state, dynamic action) { } else if (action is ClearData) { return state.rebuild((b) => b ..userCompanyStates[state.uiState.selectedCompanyIndex] = - UserCompanyState(state.account.reportErrors)); + UserCompanyState(state.account!.reportErrors)); } return state.rebuild((b) => b @@ -76,7 +76,7 @@ AppState appReducer(AppState state, dynamic action) { state.userCompanyStates[state.uiState.selectedCompanyIndex], action) ..uiState.replace(uiReducer(state.uiState, action)) ..prefState - .replace(prefReducer(state.prefState, action, state.company.id))); + .replace(prefReducer(state.prefState, action, state.company!.id))); } final lastErrorReducer = combineReducers([ diff --git a/lib/redux/app/app_state.dart b/lib/redux/app/app_state.dart index 032114dd2..772bf965a 100644 --- a/lib/redux/app/app_state.dart +++ b/lib/redux/app/app_state.dart @@ -82,12 +82,12 @@ part 'app_state.g.dart'; abstract class AppState implements Built { factory AppState({ - @required PrefState prefState, - @required bool reportErrors, - @required bool isWhiteLabeled, - String url, - String referralCode, - String currentRoute, + required PrefState? prefState, + required bool reportErrors, + required bool isWhiteLabeled, + String? url, + String? referralCode, + String? currentRoute, }) { return _$AppState._( isLoading: false, @@ -149,12 +149,12 @@ abstract class AppState implements Built { bool get isStale => userCompanyState.isStale || staticState.isStale; - AccountEntity get account => userCompany.account; + AccountEntity? get account => userCompany!.account; - CompanyEntity get company => userCompanyState.company; + CompanyEntity? get company => userCompanyState.company; - List get companies { - final List list = []; + List get companies { + final List list = []; for (var companyState in userCompanyStates) { if (companyState.company != null) { @@ -163,7 +163,7 @@ abstract class AppState implements Built { } final companies = list - .where((CompanyEntity company) => (company.id ?? '').isNotEmpty) + .where((CompanyEntity? company) => (company!.id ?? '').isNotEmpty) .toList(); return companies; @@ -171,12 +171,12 @@ abstract class AppState implements Built { DashboardUIState get dashboardUIState => uiState.dashboardUIState; - UserEntity get user => userCompanyState.user; + UserEntity? get user => userCompanyState.user; - UserCompanyEntity get userCompany => userCompanyState.userCompany; + UserCompanyEntity? get userCompany => userCompanyState.userCompany; Credentials get credentials => - Credentials(token: userCompanyState.token.token, url: authState.url); + Credentials(token: userCompanyState.token!.token, url: authState.url); bool get hasAccentColor { if (isDemo) { @@ -192,23 +192,23 @@ abstract class AppState implements Built { return color.isNotEmpty; } - bool get showReviewApp => !prefState.hideReviewApp && company.daysActive > 60; + bool get showReviewApp => !prefState.hideReviewApp && company!.daysActive > 60; bool get showOneYearReviewApp => - !prefState.hideOneYearReviewApp && company.daysActive > 365; + !prefState.hideOneYearReviewApp && company!.daysActive > 365; bool get showTwoYearReviewApp => - !prefState.hideTwoYearReviewApp && company.daysActive > 730; + !prefState.hideTwoYearReviewApp && company!.daysActive > 730; - Color get linkColor => prefState.enableDarkMode + Color? get linkColor => prefState.enableDarkMode ? convertHexStringToColor('#FFFFFF') : accentColor; - Color get headerTextColor => prefState.enableDarkMode || hasAccentColor + Color? get headerTextColor => prefState.enableDarkMode || hasAccentColor ? convertHexStringToColor('#FFFFFF') : convertHexStringToColor('#000000'); - Color get accentColor { + Color? get accentColor { var color = userCompany?.settings?.accentColor ?? kDefaultAccentColor; if (color == '#ffffff' && !prefState.enableDarkMode) { @@ -237,10 +237,10 @@ abstract class AppState implements Built { } List get historyList => - prefState.companyPrefs[company.id].historyList.where((history) { + prefState.companyPrefs[company!.id]!.historyList.where((history) { final entityMap = getEntityMap(history.entityType); if (entityMap != null) { - final entity = entityMap[history.id] as BaseEntity; + final entity = entityMap[history.id] as BaseEntity?; if (entity?.isDeleted == true) { return false; } @@ -249,21 +249,21 @@ abstract class AppState implements Built { }).toList(); List get unfilteredHistoryList => - prefState.companyPrefs[company.id].historyList.toList(); + prefState.companyPrefs[company!.id]!.historyList.toList(); - bool shouldSelectEntity({EntityType entityType, List entityList}) { + bool? shouldSelectEntity({EntityType? entityType, List? entityList}) { final entityUIState = getUIState(entityType); if (prefState.isMobile || !prefState.isPreviewVisible || uiState.isEditing || - (prefState.isModuleList && entityType.hasFullWidthViewer) || - entityType.isSetting || - (entityList.isEmpty && (entityUIState.selectedId ?? '').isEmpty)) { + (prefState.isModuleList && entityType!.hasFullWidthViewer) || + entityType!.isSetting || + (entityList!.isEmpty && (entityUIState!.selectedId ?? '').isEmpty)) { return false; } - if ((entityUIState.selectedId ?? '').isEmpty || + if ((entityUIState!.selectedId ?? '').isEmpty || !entityList.contains(entityUIState.selectedId)) { return true; } else if (unfilteredHistoryList.isNotEmpty && @@ -276,13 +276,13 @@ abstract class AppState implements Built { return false; } - BaseEntity getEntity(EntityType type, String id) { + BaseEntity? getEntity(EntityType? type, String? id) { final map = getEntityMap(type); - return map != null ? map[id] : null; + return map != null ? map[id] as BaseEntity? : null; } - BuiltMap getEntityMap(EntityType type) { + BuiltMap? getEntityMap(EntityType? type) { switch (type) { case EntityType.product: return productState.map; @@ -362,7 +362,7 @@ abstract class AppState implements Built { case EntityType.timezone: return staticState.timezoneMap; case EntityType.company: - return BuiltMap(Map.fromIterable( + return BuiltMap(Map.fromIterable( companies, key: (dynamic item) => item.id, value: (dynamic item) => item, @@ -377,7 +377,7 @@ abstract class AppState implements Built { } } - BuiltList getEntityList(EntityType type) { + BuiltList? getEntityList(EntityType type) { switch (type) { case EntityType.product: return productState.list; @@ -451,7 +451,7 @@ abstract class AppState implements Built { } SelectionState getUISelection(EntityType type) { - final entityUIState = getUIState(type); + final entityUIState = getUIState(type)!; return SelectionState( selectedId: @@ -461,7 +461,7 @@ abstract class AppState implements Built { ); } - EntityUIState getUIState(EntityType type) { + EntityUIState? getUIState(EntityType? type) { switch (type) { case EntityType.product: return productUIState; @@ -532,8 +532,8 @@ abstract class AppState implements Built { } } - ListUIState getListState(EntityType type) { - return getUIState(type).listUIState; + ListUIState getListState(EntityType? type) { + return getUIState(type)!.listUIState; } ProductState get productState => userCompanyState.productState; @@ -725,60 +725,60 @@ abstract class AppState implements Built { bool hasChanges() { switch (uiState.currentRoute) { case ClientEditScreen.route: - return clientUIState.editing.isChanged == true; + return clientUIState.editing!.isChanged == true; case ProductEditScreen.route: - return productUIState.editing.isChanged == true; + return productUIState.editing!.isChanged == true; case InvoiceEditScreen.route: - return invoiceUIState.editing.isChanged == true; + return invoiceUIState.editing!.isChanged == true; case PaymentEditScreen.route: - return paymentUIState.editing.isChanged == true; + return paymentUIState.editing!.isChanged == true; case QuoteEditScreen.route: - return quoteUIState.editing.isChanged == true; + return quoteUIState.editing!.isChanged == true; case ProjectEditScreen.route: - return projectUIState.editing.isChanged == true; + return projectUIState.editing!.isChanged == true; case TaskEditScreen.route: - return taskUIState.editing.isChanged == true; + return taskUIState.editing!.isChanged == true; case VendorEditScreen.route: - return vendorUIState.editing.isChanged == true; + return vendorUIState.editing!.isChanged == true; case ExpenseEditScreen.route: - return expenseUIState.editing.isChanged == true; + return expenseUIState.editing!.isChanged == true; case GroupEditScreen.route: - return groupUIState.editing.isChanged == true; + return groupUIState.editing!.isChanged == true; case TaxRateEditScreen.route: - return taxRateUIState.editing.isChanged == true; + return taxRateUIState.editing!.isChanged == true; case CompanyGatewayEditScreen.route: - return companyGatewayUIState.editing.isChanged == true; + return companyGatewayUIState.editing!.isChanged == true; case CreditEditScreen.route: - return creditUIState.editing.isChanged == true; + return creditUIState.editing!.isChanged == true; // STARTER: has changes - do not remove comment case ScheduleEditScreen.route: - return scheduleUIState.editing.isChanged == true; + return scheduleUIState.editing!.isChanged == true; case TransactionRuleEditScreen.route: - return transactionRuleUIState.editing.isChanged == true; + return transactionRuleUIState.editing!.isChanged == true; case TransactionEditScreen.route: - return transactionUIState.editing.isChanged == true; + return transactionUIState.editing!.isChanged == true; case PurchaseOrderEditScreen.route: - return purchaseOrderUIState.editing.isChanged == true; + return purchaseOrderUIState.editing!.isChanged == true; case RecurringExpenseEditScreen.route: - return recurringExpenseUIState.editing.isChanged == true; + return recurringExpenseUIState.editing!.isChanged == true; case SubscriptionEditScreen.route: - return subscriptionUIState.editing.isChanged == true; + return subscriptionUIState.editing!.isChanged == true; case TaskStatusEditScreen.route: - return taskStatusUIState.editing.isChanged == true; + return taskStatusUIState.editing!.isChanged == true; case ExpenseCategoryEditScreen.route: - return expenseCategoryUIState.editing.isChanged == true; + return expenseCategoryUIState.editing!.isChanged == true; case RecurringInvoiceEditScreen.route: - return recurringInvoiceUIState.editing.isChanged == true; + return recurringInvoiceUIState.editing!.isChanged == true; case WebhookEditScreen.route: - return webhookUIState.editing.isChanged == true; + return webhookUIState.editing!.isChanged == true; case TokenEditScreen.route: - return tokenUIState.editing.isChanged == true; + return tokenUIState.editing!.isChanged == true; case PaymentTermEditScreen.route: - return paymentTermUIState.editing.isChanged == true; + return paymentTermUIState.editing!.isChanged == true; case DesignEditScreen.route: - return designUIState.editing.isChanged == true; + return designUIState.editing!.isChanged == true; case DocumentEditScreen.route: - return documentUIState.editing.isChanged == true; + return documentUIState.editing!.isChanged == true; } if (uiState.isInSettings) { @@ -799,7 +799,7 @@ abstract class AppState implements Built { final int patch = int.parse(parts[2]); try { - final serverParts = account.currentVersion.split('.'); + final serverParts = account!.currentVersion.split('.'); final int serverMajor = int.parse(serverParts[0]); final int serverMinor = int.parse(serverParts[1]); final int serverPatch = int.parse(serverParts[2]); @@ -828,7 +828,7 @@ abstract class AppState implements Built { bool get reportErrors => account?.reportErrors ?? false; - bool get isHosted => account == null ? authState.isHosted : account.isHosted; + bool get isHosted => account == null ? authState.isHosted : account!.isHosted; bool get isSelfHosted => !isHosted; @@ -836,31 +836,31 @@ abstract class AppState implements Built { bool get isStaging => cleanApiUrl(authState.url) == kAppStagingUrl; - bool get isProPlan => isEnterprisePlan || account.plan == kPlanPro; + bool get isProPlan => isEnterprisePlan || account!.plan == kPlanPro; - bool get isTrial => isHosted && account.isTrial; + bool get isTrial => isHosted && account!.isTrial; - bool get isEnterprisePlan => isSelfHosted || account.plan == kPlanEnterprise; + bool get isEnterprisePlan => isSelfHosted || account!.plan == kPlanEnterprise; bool get isPaidAccount => isSelfHosted - ? (isWhiteLabeled || account.plan == kPlanWhiteLabel) + ? (isWhiteLabeled || account!.plan == kPlanWhiteLabel) : ((isProPlan || isEnterprisePlan) && !isTrial); bool get isUpdateAvailable => - isSelfHosted && account.isUpdateAvailable && userCompany.isAdmin; + isSelfHosted && account!.isUpdateAvailable && userCompany!.isAdmin; bool get isUserConfirmed { if (isSelfHosted) { return true; } - return (user.emailVerifiedAt ?? 0) > 0; + return (user!.emailVerifiedAt ?? 0) > 0; } int get createdAtLimit { - final numberYearsActive = userCompany.settings?.numberYearsActive ?? 0; + final numberYearsActive = userCompany!.settings?.numberYearsActive ?? 0; - if (!company.isLarge || numberYearsActive == 0) { + if (!company!.isLarge || numberYearsActive == 0) { return 0; } @@ -870,15 +870,15 @@ abstract class AppState implements Built { } bool get filterDeletedClients { - if (!company.isLarge) { + if (!company!.isLarge) { return false; } - return !userCompany.settings.includeDeletedClients; + return !userCompany!.settings!.includeDeletedClients; } bool get canAddCompany => - userCompany.isOwner && companies.length < 10 && !isDemo; + userCompany!.isOwner && companies.length < 10 && !isDemo; bool get isMenuCollapsed { if (prefState.isMobile) { @@ -951,7 +951,7 @@ abstract class AppState implements Built { final millisecondsSinceEnteredPassword = DateTime.now().millisecondsSinceEpoch - authState.lastEnteredPasswordAt; - return millisecondsSinceEnteredPassword < company.passwordTimeout; + return millisecondsSinceEnteredPassword < company!.passwordTimeout; } @override @@ -966,7 +966,7 @@ abstract class AppState implements Built { staticState.updatedAt == null || staticState.updatedAt == 0 ? 'Blank' : timeago.format( - convertTimestampToDate((staticState.updatedAt / 1000).round())); + convertTimestampToDate((staticState.updatedAt! / 1000).round())); final passwordUpdated = authState.lastEnteredPasswordAt == null || authState.lastEnteredPasswordAt == 0 @@ -1026,8 +1026,8 @@ abstract class AppState implements Built { class Credentials { const Credentials({this.url, this.token}); - final String url; - final String token; + final String? url; + final String? token; } class SelectionState { @@ -1037,9 +1037,9 @@ class SelectionState { this.filterEntityType, }); - final String selectedId; - final String filterEntityId; - final EntityType filterEntityType; + final String? selectedId; + final String? filterEntityId; + final EntityType? filterEntityType; @override bool operator ==(Object other) { diff --git a/lib/redux/app/app_state.g.dart b/lib/redux/app/app_state.g.dart index 2eb0116de..842c832fb 100644 --- a/lib/redux/app/app_state.g.dart +++ b/lib/redux/app/app_state.g.dart @@ -15,9 +15,9 @@ class _$AppStateSerializer implements StructuredSerializer { final String wireName = 'AppState'; @override - Iterable serialize(Serializers serializers, AppState object, + Iterable serialize(Serializers serializers, AppState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'isLoading', serializers.serialize(object.isLoading, specifiedType: const FullType(bool)), @@ -58,61 +58,61 @@ class _$AppStateSerializer implements StructuredSerializer { } @override - AppState deserialize(Serializers serializers, Iterable serialized, + AppState deserialize(Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new AppStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'isLoading': result.isLoading = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'isSaving': result.isSaving = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'isTesting': result.isTesting = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'isWhiteLabeled': result.isWhiteLabeled = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'dismissedNativeWarning': result.dismissedNativeWarning = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'lastError': result.lastError = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'authState': result.authState.replace(serializers.deserialize(value, - specifiedType: const FullType(AuthState)) as AuthState); + specifiedType: const FullType(AuthState))! as AuthState); break; case 'staticState': result.staticState.replace(serializers.deserialize(value, - specifiedType: const FullType(StaticState)) as StaticState); + specifiedType: const FullType(StaticState))! as StaticState); break; case 'prefState': result.prefState.replace(serializers.deserialize(value, - specifiedType: const FullType(PrefState)) as PrefState); + specifiedType: const FullType(PrefState))! as PrefState); break; case 'uiState': result.uiState.replace(serializers.deserialize(value, - specifiedType: const FullType(UIState)) as UIState); + specifiedType: const FullType(UIState))! as UIState); break; case 'userCompanyStates': result.userCompanyStates.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(UserCompanyState)])) - as BuiltList); + BuiltList, const [const FullType(UserCompanyState)]))! + as BuiltList); break; } } @@ -145,21 +145,21 @@ class _$AppState extends AppState { @override final BuiltList userCompanyStates; - factory _$AppState([void Function(AppStateBuilder) updates]) => + factory _$AppState([void Function(AppStateBuilder)? updates]) => (new AppStateBuilder()..update(updates))._build(); _$AppState._( - {this.isLoading, - this.isSaving, - this.isTesting, - this.isWhiteLabeled, - this.dismissedNativeWarning, - this.lastError, - this.authState, - this.staticState, - this.prefState, - this.uiState, - this.userCompanyStates}) + {required this.isLoading, + required this.isSaving, + required this.isTesting, + required this.isWhiteLabeled, + required this.dismissedNativeWarning, + required this.lastError, + required this.authState, + required this.staticState, + required this.prefState, + required this.uiState, + required this.userCompanyStates}) : super._() { BuiltValueNullFieldError.checkNotNull(isLoading, r'AppState', 'isLoading'); BuiltValueNullFieldError.checkNotNull(isSaving, r'AppState', 'isSaving'); @@ -202,10 +202,10 @@ class _$AppState extends AppState { userCompanyStates == other.userCompanyStates; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, isLoading.hashCode); _$hash = $jc(_$hash, isSaving.hashCode); @@ -224,58 +224,58 @@ class _$AppState extends AppState { } class AppStateBuilder implements Builder { - _$AppState _$v; + _$AppState? _$v; - bool _isLoading; - bool get isLoading => _$this._isLoading; - set isLoading(bool isLoading) => _$this._isLoading = isLoading; + bool? _isLoading; + bool? get isLoading => _$this._isLoading; + set isLoading(bool? isLoading) => _$this._isLoading = isLoading; - bool _isSaving; - bool get isSaving => _$this._isSaving; - set isSaving(bool isSaving) => _$this._isSaving = isSaving; + bool? _isSaving; + bool? get isSaving => _$this._isSaving; + set isSaving(bool? isSaving) => _$this._isSaving = isSaving; - bool _isTesting; - bool get isTesting => _$this._isTesting; - set isTesting(bool isTesting) => _$this._isTesting = isTesting; + bool? _isTesting; + bool? get isTesting => _$this._isTesting; + set isTesting(bool? isTesting) => _$this._isTesting = isTesting; - bool _isWhiteLabeled; - bool get isWhiteLabeled => _$this._isWhiteLabeled; - set isWhiteLabeled(bool isWhiteLabeled) => + bool? _isWhiteLabeled; + bool? get isWhiteLabeled => _$this._isWhiteLabeled; + set isWhiteLabeled(bool? isWhiteLabeled) => _$this._isWhiteLabeled = isWhiteLabeled; - bool _dismissedNativeWarning; - bool get dismissedNativeWarning => _$this._dismissedNativeWarning; - set dismissedNativeWarning(bool dismissedNativeWarning) => + bool? _dismissedNativeWarning; + bool? get dismissedNativeWarning => _$this._dismissedNativeWarning; + set dismissedNativeWarning(bool? dismissedNativeWarning) => _$this._dismissedNativeWarning = dismissedNativeWarning; - String _lastError; - String get lastError => _$this._lastError; - set lastError(String lastError) => _$this._lastError = lastError; + String? _lastError; + String? get lastError => _$this._lastError; + set lastError(String? lastError) => _$this._lastError = lastError; - AuthStateBuilder _authState; + AuthStateBuilder? _authState; AuthStateBuilder get authState => _$this._authState ??= new AuthStateBuilder(); - set authState(AuthStateBuilder authState) => _$this._authState = authState; + set authState(AuthStateBuilder? authState) => _$this._authState = authState; - StaticStateBuilder _staticState; + StaticStateBuilder? _staticState; StaticStateBuilder get staticState => _$this._staticState ??= new StaticStateBuilder(); - set staticState(StaticStateBuilder staticState) => + set staticState(StaticStateBuilder? staticState) => _$this._staticState = staticState; - PrefStateBuilder _prefState; + PrefStateBuilder? _prefState; PrefStateBuilder get prefState => _$this._prefState ??= new PrefStateBuilder(); - set prefState(PrefStateBuilder prefState) => _$this._prefState = prefState; + set prefState(PrefStateBuilder? prefState) => _$this._prefState = prefState; - UIStateBuilder _uiState; + UIStateBuilder? _uiState; UIStateBuilder get uiState => _$this._uiState ??= new UIStateBuilder(); - set uiState(UIStateBuilder uiState) => _$this._uiState = uiState; + set uiState(UIStateBuilder? uiState) => _$this._uiState = uiState; - ListBuilder _userCompanyStates; + ListBuilder? _userCompanyStates; ListBuilder get userCompanyStates => _$this._userCompanyStates ??= new ListBuilder(); - set userCompanyStates(ListBuilder userCompanyStates) => + set userCompanyStates(ListBuilder? userCompanyStates) => _$this._userCompanyStates = userCompanyStates; AppStateBuilder(); @@ -306,7 +306,7 @@ class AppStateBuilder implements Builder { } @override - void update(void Function(AppStateBuilder) updates) { + void update(void Function(AppStateBuilder)? updates) { if (updates != null) updates(this); } @@ -338,7 +338,7 @@ class AppStateBuilder implements Builder { uiState: uiState.build(), userCompanyStates: userCompanyStates.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'authState'; authState.build(); diff --git a/lib/redux/auth/auth_actions.dart b/lib/redux/auth/auth_actions.dart index dabe7a974..c17fd8df6 100644 --- a/lib/redux/auth/auth_actions.dart +++ b/lib/redux/auth/auth_actions.dart @@ -22,12 +22,12 @@ class LoadStateSuccess { class OAuthLoginRequest implements StartLoading { OAuthLoginRequest({ - @required this.completer, - @required this.url, - @required this.secret, - @required this.platform, - @required this.provider, - @required this.oneTimePassword, + required this.completer, + required this.url, + required this.secret, + required this.platform, + required this.provider, + required this.oneTimePassword, this.idToken, this.accessToken, this.authCode, @@ -35,32 +35,32 @@ class OAuthLoginRequest implements StartLoading { }); final Completer completer; - final String email; // TODO remove this property, break up _saveAuthLocal - final String idToken; - final String accessToken; + final String? email; // TODO remove this property, break up _saveAuthLocal + final String? idToken; + final String? accessToken; final String url; final String secret; final String platform; final String provider; final String oneTimePassword; - final String authCode; + final String? authCode; } class UserLoadUrl { UserLoadUrl({this.url}); - final String url; + final String? url; } class UserLoginRequest implements StartLoading { UserLoginRequest( - {@required this.completer, - @required this.email, - @required this.password, - @required this.url, - @required this.secret, - @required this.platform, - @required this.oneTimePassword}); + {required this.completer, + required this.email, + required this.password, + required this.url, + required this.secret, + required this.platform, + required this.oneTimePassword}); final Completer completer; final String email; @@ -81,10 +81,10 @@ class UserLoginFailure implements StopLoading { class RecoverPasswordRequest implements StartLoading { RecoverPasswordRequest({ - @required this.completer, - @required this.email, - @required this.url, - @required this.secret, + required this.completer, + required this.email, + required this.url, + required this.secret, }); final Completer completer; @@ -106,7 +106,7 @@ class UserLogout implements PersistData, PersistUI {} class UserLogoutAll implements StartLoading { const UserLogoutAll({this.completer}); - final Completer completer; + final Completer? completer; } class UserLogoutAllSuccess implements StopLoading {} @@ -119,9 +119,9 @@ class UserLogoutAllFailure implements StopLoading { class UserSignUpRequest implements StartLoading { UserSignUpRequest({ - @required this.completer, - @required this.email, - @required this.password, + required this.completer, + required this.email, + required this.password, }); final Completer completer; @@ -131,22 +131,22 @@ class UserSignUpRequest implements StartLoading { class OAuthSignUpRequest implements StartLoading { OAuthSignUpRequest({ - @required this.url, - @required this.completer, - @required this.provider, - @required this.idToken, + required this.url, + required this.completer, + required this.provider, + required this.idToken, this.accessToken, this.firstName, this.lastName, }); final Completer completer; - final String idToken; + final String? idToken; final String url; - final String accessToken; + final String? accessToken; final String provider; - final String firstName; - final String lastName; + final String? firstName; + final String? lastName; } class UserVerifiedPassword {} diff --git a/lib/redux/auth/auth_middleware.dart b/lib/redux/auth/auth_middleware.dart index f64f8036f..dfdc4ad97 100644 --- a/lib/redux/auth/auth_middleware.dart +++ b/lib/redux/auth/auth_middleware.dart @@ -67,11 +67,11 @@ void _saveAuthLocal(String url) async { Middleware _createUserLogout() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as UserLogout; + final action = dynamicAction as UserLogout?; next(action); - navigatorKey.currentState.pushNamedAndRemoveUntil( + navigatorKey.currentState!.pushNamedAndRemoveUntil( LoginScreen.route, (Route route) => false); store.dispatch(UpdateCurrentRoute(LoginScreen.route)); @@ -82,7 +82,7 @@ Middleware _createUserLogout() { Middleware _createUserLogoutAll(AuthRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as UserLogoutAll; + final action = dynamicAction as UserLogoutAll?; repository .logout(credentials: store.state.credentials) @@ -90,8 +90,8 @@ Middleware _createUserLogoutAll(AuthRepository repository) { store.dispatch(UserLogoutAllSuccess()); store.dispatch(UserLogout()); }).catchError((Object error) { - if (action.completer != null) { - action.completer.completeError(error); + if (action!.completer != null) { + action.completer!.completeError(error); } store.dispatch(UserLogoutAllFailure(error)); }); @@ -256,7 +256,7 @@ Middleware _createRefreshRequest(AuthRepository repository) { print('## Skipping refresh request - pending load'); next(action); return; - } else if (state.company.isLarge && !state.isLoaded) { + } else if (state.company!.isLarge && !state.isLoaded) { print('## Skipping refresh request - not loaded'); next(action); store.dispatch(LoadClients()); @@ -271,7 +271,7 @@ Middleware _createRefreshRequest(AuthRepository repository) { String token; bool hasToken = false; if ((state?.userCompany?.token?.token ?? '').isNotEmpty) { - token = state.userCompany.token.token; + token = state.userCompany!.token!.token; hasToken = true; } else { token = TokenEntity.unobscureToken(prefs.getString(kSharedPrefToken)) ?? @@ -298,10 +298,10 @@ Middleware _createRefreshRequest(AuthRepository repository) { bool permissionsWereChanged = false; data.userCompanies.forEach((userCompany) { state.userCompanyStates.forEach((userCompanyState) { - if (userCompany.company.id == userCompanyState.company.id) { - if (userCompanyState.userCompany.permissionsUpdatedAt > 0 && + if (userCompany.company!.id == userCompanyState.company!.id) { + if (userCompanyState.userCompany!.permissionsUpdatedAt > 0 && userCompany.permissionsUpdatedAt != - userCompanyState.userCompany.permissionsUpdatedAt) { + userCompanyState.userCompany!.permissionsUpdatedAt) { permissionsWereChanged = true; } } @@ -322,14 +322,14 @@ Middleware _createRefreshRequest(AuthRepository repository) { )); } - AppBuilder.of(navigatorKey.currentContext).rebuild(); + AppBuilder.of(navigatorKey.currentContext!)!.rebuild(); }).catchError((Object error) { if ('$error'.startsWith('403') || '$error'.startsWith('429')) { store.dispatch(UserLogout()); } else { final message = _parseError('$error'); if (action.completer != null) { - action.completer.completeError(message); + action.completer!.completeError(message); } store.dispatch(RefreshDataFailure(message)); @@ -371,7 +371,7 @@ Middleware _createRecoverRequest(AuthRepository repository) { Middleware _createCompany(AuthRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as AddCompany; + final action = dynamicAction as AddCompany?; final state = store.state; repository.addCompany(credentials: state.credentials).then((dynamic value) { @@ -383,8 +383,8 @@ Middleware _createCompany(AuthRepository repository) { store.dispatch(SelectCompany(companyIndex: state.companies.length)); store.dispatch(ViewDashboard(force: true)); - action.completer.complete(); - }), + action!.completer!.complete(); + } as FutureOr Function(Null)), )); }); @@ -395,19 +395,19 @@ Middleware _createCompany(AuthRepository repository) { Middleware _setDefaultCompany(AuthRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as SetDefaultCompanyRequest; + final action = dynamicAction as SetDefaultCompanyRequest?; final state = store.state; - final companyId = state.company.id; + final companyId = state.company!.id; repository .setDefaultCompany(credentials: state.credentials, companyId: companyId) .then((_) { store.dispatch(SetDefaultCompanySuccess()); store.dispatch(RefreshData(allCompanies: true)); - action.completer.complete(); + action!.completer.complete(); }).catchError((Object error) { store.dispatch(SetDefaultCompanyFailure(error)); - if (action.completer != null) { + if (action!.completer != null) { action.completer.completeError(error); } }); @@ -426,7 +426,7 @@ Middleware _deleteCompany(AuthRepository repository) { .deleteCompany( credentials: state.credentials, password: action.password, - companyId: state.company.id, + companyId: state.company!.id, reason: action.reason, ) .then((dynamic value) { @@ -446,7 +446,7 @@ Middleware _purgeData(AuthRepository repository) { NextDispatcher next) async { final action = dynamicAction as PurgeDataRequest; final state = store.state; - final company = state.company; + final company = state.company!; repository .purgeData( @@ -461,7 +461,7 @@ Middleware _purgeData(AuthRepository repository) { completer: Completer() ..future.then((value) { action.completer.complete(null); - }))); + } as FutureOr<_> Function(Null)))); }).catchError((Object error) { store.dispatch(PurgeDataFailure(error)); action.completer.completeError(error); @@ -474,12 +474,12 @@ Middleware _purgeData(AuthRepository repository) { Middleware _resendConfirmation(AuthRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as ResendConfirmation; + final action = dynamicAction as ResendConfirmation?; final state = store.state; repository .resendConfirmation( - credentials: state.credentials, userId: state.user.id) + credentials: state.credentials, userId: state.user!.id) .then((dynamic value) { store.dispatch(ResendConfirmationSuccess()); }).catchError((Object error) { diff --git a/lib/redux/auth/auth_state.dart b/lib/redux/auth/auth_state.dart index 831898742..51dc3e63a 100644 --- a/lib/redux/auth/auth_state.dart +++ b/lib/redux/auth/auth_state.dart @@ -9,7 +9,7 @@ import 'package:invoiceninja_flutter/utils/formatting.dart'; part 'auth_state.g.dart'; abstract class AuthState implements Built { - factory AuthState({String url, String referralCode}) { + factory AuthState({String? url, String? referralCode}) { return _$AuthState._( email: '', url: url ?? '', diff --git a/lib/redux/auth/auth_state.g.dart b/lib/redux/auth/auth_state.g.dart index 98b7a0e4a..683991036 100644 --- a/lib/redux/auth/auth_state.g.dart +++ b/lib/redux/auth/auth_state.g.dart @@ -15,9 +15,9 @@ class _$AuthStateSerializer implements StructuredSerializer { final String wireName = 'AuthState'; @override - Iterable serialize(Serializers serializers, AuthState object, + Iterable serialize(Serializers serializers, AuthState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'email', serializers.serialize(object.email, specifiedType: const FullType(String)), @@ -41,39 +41,39 @@ class _$AuthStateSerializer implements StructuredSerializer { } @override - AuthState deserialize(Serializers serializers, Iterable serialized, + AuthState deserialize(Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new AuthStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'email': result.email = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'url': result.url = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'isInitialized': result.isInitialized = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'isAuthenticated': result.isAuthenticated = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'lastEnteredPasswordAt': result.lastEnteredPasswordAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'referralCode': result.referralCode = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -96,16 +96,16 @@ class _$AuthState extends AuthState { @override final String referralCode; - factory _$AuthState([void Function(AuthStateBuilder) updates]) => + factory _$AuthState([void Function(AuthStateBuilder)? updates]) => (new AuthStateBuilder()..update(updates))._build(); _$AuthState._( - {this.email, - this.url, - this.isInitialized, - this.isAuthenticated, - this.lastEnteredPasswordAt, - this.referralCode}) + {required this.email, + required this.url, + required this.isInitialized, + required this.isAuthenticated, + required this.lastEnteredPasswordAt, + required this.referralCode}) : super._() { BuiltValueNullFieldError.checkNotNull(email, r'AuthState', 'email'); BuiltValueNullFieldError.checkNotNull(url, r'AuthState', 'url'); @@ -138,10 +138,10 @@ class _$AuthState extends AuthState { referralCode == other.referralCode; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, email.hashCode); _$hash = $jc(_$hash, url.hashCode); @@ -167,34 +167,34 @@ class _$AuthState extends AuthState { } class AuthStateBuilder implements Builder { - _$AuthState _$v; + _$AuthState? _$v; - String _email; - String get email => _$this._email; - set email(String email) => _$this._email = email; + String? _email; + String? get email => _$this._email; + set email(String? email) => _$this._email = email; - String _url; - String get url => _$this._url; - set url(String url) => _$this._url = url; + String? _url; + String? get url => _$this._url; + set url(String? url) => _$this._url = url; - bool _isInitialized; - bool get isInitialized => _$this._isInitialized; - set isInitialized(bool isInitialized) => + bool? _isInitialized; + bool? get isInitialized => _$this._isInitialized; + set isInitialized(bool? isInitialized) => _$this._isInitialized = isInitialized; - bool _isAuthenticated; - bool get isAuthenticated => _$this._isAuthenticated; - set isAuthenticated(bool isAuthenticated) => + bool? _isAuthenticated; + bool? get isAuthenticated => _$this._isAuthenticated; + set isAuthenticated(bool? isAuthenticated) => _$this._isAuthenticated = isAuthenticated; - int _lastEnteredPasswordAt; - int get lastEnteredPasswordAt => _$this._lastEnteredPasswordAt; - set lastEnteredPasswordAt(int lastEnteredPasswordAt) => + int? _lastEnteredPasswordAt; + int? get lastEnteredPasswordAt => _$this._lastEnteredPasswordAt; + set lastEnteredPasswordAt(int? lastEnteredPasswordAt) => _$this._lastEnteredPasswordAt = lastEnteredPasswordAt; - String _referralCode; - String get referralCode => _$this._referralCode; - set referralCode(String referralCode) => _$this._referralCode = referralCode; + String? _referralCode; + String? get referralCode => _$this._referralCode; + set referralCode(String? referralCode) => _$this._referralCode = referralCode; AuthStateBuilder() { AuthState._initializeBuilder(this); @@ -221,7 +221,7 @@ class AuthStateBuilder implements Builder { } @override - void update(void Function(AuthStateBuilder) updates) { + void update(void Function(AuthStateBuilder)? updates) { if (updates != null) updates(this); } diff --git a/lib/redux/bank_account/bank_account_actions.dart b/lib/redux/bank_account/bank_account_actions.dart index 68e6cb3fe..0eb25aa23 100644 --- a/lib/redux/bank_account/bank_account_actions.dart +++ b/lib/redux/bank_account/bank_account_actions.dart @@ -17,23 +17,23 @@ class ViewBankAccountList implements PersistUI { class ViewBankAccount implements PersistUI, PersistPrefs { ViewBankAccount({ - @required this.bankAccountId, + required this.bankAccountId, this.force = false, }); - final String bankAccountId; + final String? bankAccountId; final bool force; } class EditBankAccount implements PersistUI, PersistPrefs { EditBankAccount({ - @required this.bankAccount, + required this.bankAccount, this.completer, this.force = false, }); final BankAccountEntity bankAccount; - final Completer completer; + final Completer? completer; final bool force; } @@ -46,21 +46,21 @@ class UpdateBankAccount implements PersistUI { class LoadBankAccount { LoadBankAccount({this.completer, this.bankAccountId}); - final Completer completer; - final String bankAccountId; + final Completer? completer; + final String? bankAccountId; } class LoadBankAccountActivity { LoadBankAccountActivity({this.completer, this.bankAccountId}); - final Completer completer; - final String bankAccountId; + final Completer? completer; + final String? bankAccountId; } class LoadBankAccounts { LoadBankAccounts({this.completer}); - final Completer completer; + final Completer? completer; } class LoadBankAccountRequest implements StartLoading {} @@ -114,8 +114,8 @@ class LoadBankAccountsSuccess implements StopLoading { class SaveBankAccountRequest implements StartSaving { SaveBankAccountRequest({this.completer, this.bankAccount}); - final Completer completer; - final BankAccountEntity bankAccount; + final Completer? completer; + final BankAccountEntity? bankAccount; } class SaveBankAccountSuccess implements StopSaving, PersistData, PersistUI { @@ -152,7 +152,7 @@ class ArchiveBankAccountsSuccess implements StopSaving, PersistData { class ArchiveBankAccountsFailure implements StopSaving { ArchiveBankAccountsFailure(this.bankAccounts); - final List bankAccounts; + final List bankAccounts; } class DeleteBankAccountsRequest implements StartSaving { @@ -171,7 +171,7 @@ class DeleteBankAccountsSuccess implements StopSaving, PersistData { class DeleteBankAccountsFailure implements StopSaving { DeleteBankAccountsFailure(this.bankAccounts); - final List bankAccounts; + final List bankAccounts; } class RestoreBankAccountsRequest implements StartSaving { @@ -190,7 +190,7 @@ class RestoreBankAccountsSuccess implements StopSaving, PersistData { class RestoreBankAccountsFailure implements StopSaving { RestoreBankAccountsFailure(this.bankAccounts); - final List bankAccounts; + final List bankAccounts; } class FilterBankAccounts implements PersistUI { @@ -240,15 +240,15 @@ class StartBankAccountMultiselect { } class AddToBankAccountMultiselect { - AddToBankAccountMultiselect({@required this.entity}); + AddToBankAccountMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class RemoveFromBankAccountMultiselect { - RemoveFromBankAccountMultiselect({@required this.entity}); + RemoveFromBankAccountMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class ClearBankAccountMultiselect { @@ -258,46 +258,46 @@ class ClearBankAccountMultiselect { class UpdateBankAccountTab implements PersistUI { UpdateBankAccountTab({this.tabIndex}); - final int tabIndex; + final int? tabIndex; } void handleBankAccountAction( - BuildContext context, List bankAccounts, EntityAction action) { + BuildContext? context, List bankAccounts, EntityAction? action) { if (bankAccounts.isEmpty) { return; } - final store = StoreProvider.of(context); + final store = StoreProvider.of(context!); final state = store.state; final localization = AppLocalization.of(context); - final bankAccount = bankAccounts.first as BankAccountEntity; + final bankAccount = bankAccounts.first as BankAccountEntity?; final bankAccountIds = - bankAccounts.map((bankAccount) => bankAccount.id).toList(); + bankAccounts.map((bankAccount) => bankAccount!.id).toList(); switch (action) { case EntityAction.edit: - editEntity(entity: bankAccount); + editEntity(entity: bankAccount!); break; case EntityAction.restore: store.dispatch(RestoreBankAccountsRequest( - snackBarCompleter(context, localization.restoredBankAccount), + snackBarCompleter(context, localization!.restoredBankAccount), bankAccountIds)); break; case EntityAction.archive: store.dispatch(ArchiveBankAccountsRequest( - snackBarCompleter(context, localization.archivedBankAccount), + snackBarCompleter(context, localization!.archivedBankAccount), bankAccountIds)); break; case EntityAction.delete: store.dispatch(DeleteBankAccountsRequest( - snackBarCompleter(context, localization.deletedBankAccount), + snackBarCompleter(context, localization!.deletedBankAccount), bankAccountIds)); break; case EntityAction.newTransaction: createEntity( context: context, entity: TransactionEntity(state: state) - .rebuild((b) => b..bankAccountId = bankAccount.id)); + .rebuild((b) => b..bankAccountId = bankAccount!.id)); break; case EntityAction.toggleMultiselect: if (!store.state.bankAccountListState.isInMultiselect()) { @@ -309,7 +309,7 @@ void handleBankAccountAction( } for (final bankAccount in bankAccounts) { - if (!store.state.bankAccountListState.isSelected(bankAccount.id)) { + if (!store.state.bankAccountListState.isSelected(bankAccount!.id)) { store.dispatch(AddToBankAccountMultiselect(entity: bankAccount)); } else { store.dispatch(RemoveFromBankAccountMultiselect(entity: bankAccount)); diff --git a/lib/redux/bank_account/bank_account_middleware.dart b/lib/redux/bank_account/bank_account_middleware.dart index 577ab35f3..d596bed0f 100644 --- a/lib/redux/bank_account/bank_account_middleware.dart +++ b/lib/redux/bank_account/bank_account_middleware.dart @@ -40,14 +40,14 @@ List> createStoreBankAccountsMiddleware([ Middleware _editBankAccount() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as EditBankAccount; + final action = dynamicAction as EditBankAccount?; next(action); store.dispatch(UpdateCurrentRoute(BankAccountEditScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(BankAccountEditScreen.route); + navigatorKey.currentState!.pushNamed(BankAccountEditScreen.route); } }; } @@ -55,21 +55,21 @@ Middleware _editBankAccount() { Middleware _viewBankAccount() { return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as ViewBankAccount; + final action = dynamicAction as ViewBankAccount?; next(action); store.dispatch(UpdateCurrentRoute(BankAccountViewScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(BankAccountViewScreen.route); + navigatorKey.currentState!.pushNamed(BankAccountViewScreen.route); } }; } Middleware _viewBankAccountList() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as ViewBankAccountList; + final action = dynamicAction as ViewBankAccountList?; next(action); @@ -80,7 +80,7 @@ Middleware _viewBankAccountList() { store.dispatch(UpdateCurrentRoute(BankAccountScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamedAndRemoveUntil( + navigatorKey.currentState!.pushNamedAndRemoveUntil( BankAccountScreen.route, (Route route) => false); } }; @@ -168,19 +168,19 @@ Middleware _saveBankAccount(BankAccountRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as SaveBankAccountRequest; repository - .saveData(store.state.credentials, action.bankAccount) + .saveData(store.state.credentials, action.bankAccount!) .then((BankAccountEntity bankAccount) { - if (action.bankAccount.isNew) { + if (action.bankAccount!.isNew) { store.dispatch(AddBankAccountSuccess(bankAccount)); } else { store.dispatch(SaveBankAccountSuccess(bankAccount)); } - action.completer.complete(bankAccount); + action.completer!.complete(bankAccount); }).catchError((Object error) { print(error); store.dispatch(SaveBankAccountFailure(error)); - action.completer.completeError(error); + action.completer!.completeError(error); }); next(action); @@ -199,13 +199,13 @@ Middleware _loadBankAccount(BankAccountRepository repository) { store.dispatch(LoadBankAccountSuccess(bankAccount)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(LoadBankAccountFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -215,15 +215,15 @@ Middleware _loadBankAccount(BankAccountRepository repository) { Middleware _loadBankAccounts(BankAccountRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as LoadBankAccounts; + final action = dynamicAction as LoadBankAccounts?; final AppState state = store.state; store.dispatch(LoadBankAccountsRequest()); repository.loadList(state.credentials).then((data) { store.dispatch(LoadBankAccountsSuccess(data)); - if (action.completer != null) { - action.completer.complete(null); + if (action!.completer != null) { + action.completer!.complete(null); } /* if (state.productState.isStale) { @@ -233,8 +233,8 @@ Middleware _loadBankAccounts(BankAccountRepository repository) { }).catchError((Object error) { print(error); store.dispatch(LoadBankAccountsFailure(error)); - if (action.completer != null) { - action.completer.completeError(error); + if (action!.completer != null) { + action.completer!.completeError(error); } }); diff --git a/lib/redux/bank_account/bank_account_reducer.dart b/lib/redux/bank_account/bank_account_reducer.dart index dd865c3dc..b00bce63f 100644 --- a/lib/redux/bank_account/bank_account_reducer.dart +++ b/lib/redux/bank_account/bank_account_reducer.dart @@ -11,54 +11,54 @@ import 'package:invoiceninja_flutter/redux/bank_account/bank_account_state.dart' EntityUIState bankAccountUIReducer(BankAccountUIState state, dynamic action) { return state.rebuild((b) => b ..listUIState.replace(bankAccountListReducer(state.listUIState, action)) - ..editing.replace(editingReducer(state.editing, action)) + ..editing.replace(editingReducer(state.editing, action)!) ..selectedId = selectedIdReducer(state.selectedId, action) ..forceSelected = forceSelectedReducer(state.forceSelected, action) ..tabIndex = tabIndexReducer(state.tabIndex, action)); } -final forceSelectedReducer = combineReducers([ - TypedReducer((completer, action) => true), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), +final forceSelectedReducer = combineReducers([ + TypedReducer((completer, action) => true), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), ]); -final tabIndexReducer = combineReducers([ - TypedReducer((completer, action) { +final int? Function(int, dynamic) tabIndexReducer = combineReducers([ + TypedReducer((completer, action) { return action.tabIndex; }), - TypedReducer((completer, action) { + TypedReducer((completer, action) { return 0; }), ]); -Reducer selectedIdReducer = combineReducers([ - TypedReducer((completer, action) => ''), - TypedReducer((completer, action) => ''), - TypedReducer((selectedId, action) => +Reducer selectedIdReducer = combineReducers([ + TypedReducer((completer, action) => ''), + TypedReducer((completer, action) => ''), + TypedReducer((selectedId, action) => action.entityType == EntityType.bankAccount ? action.entityId : selectedId), - TypedReducer( - (String selectedId, dynamic action) => action.bankAccountId), - TypedReducer( - (String selectedId, dynamic action) => action.bankAccount.id), - TypedReducer( + TypedReducer( + (String? selectedId, dynamic action) => action.bankAccountId), + TypedReducer( + (String? selectedId, dynamic action) => action.bankAccount.id), + TypedReducer( (selectedId, action) => action.clearSelection ? '' : selectedId), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer( + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer( (selectedId, action) => action.clearSelection ? '' : action.entityType == EntityType.bankAccount @@ -66,34 +66,34 @@ Reducer selectedIdReducer = combineReducers([ : selectedId), ]); -final editingReducer = combineReducers([ - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer((bankAccount, action) { +final editingReducer = combineReducers([ + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer((bankAccount, action) { return action.bankAccount.rebuild((b) => b..isChanged = true); }), - TypedReducer( + TypedReducer( (bankAccounts, action) { return action.bankAccounts[0]; }), - TypedReducer( + TypedReducer( (bankAccounts, action) { return action.bankAccounts[0]; }), - TypedReducer( + TypedReducer( (bankAccounts, action) { return action.bankAccounts[0]; }), - TypedReducer(_clearEditing), + TypedReducer(_clearEditing), ]); -BankAccountEntity _clearEditing(BankAccountEntity bankAccount, dynamic action) { +BankAccountEntity _clearEditing(BankAccountEntity? bankAccount, dynamic action) { return BankAccountEntity(); } -BankAccountEntity _updateEditing( - BankAccountEntity bankAccount, dynamic action) { +BankAccountEntity? _updateEditing( + BankAccountEntity? bankAccount, dynamic action) { return action.bankAccount; } @@ -171,7 +171,7 @@ ListUIState _filterBankAccounts( ListUIState _sortBankAccounts( ListUIState bankAccountListState, SortBankAccounts action) { return bankAccountListState.rebuild((b) => b - ..sortAscending = b.sortField != action.field || !b.sortAscending + ..sortAscending = b.sortField != action.field || !b.sortAscending! ..sortField = action.field); } @@ -182,13 +182,13 @@ ListUIState _startListMultiselect( ListUIState _addToListMultiselect( ListUIState productListState, AddToBankAccountMultiselect action) { - return productListState.rebuild((b) => b..selectedIds.add(action.entity.id)); + return productListState.rebuild((b) => b..selectedIds.add(action.entity!.id)); } ListUIState _removeFromListMultiselect( ListUIState productListState, RemoveFromBankAccountMultiselect action) { return productListState - .rebuild((b) => b..selectedIds.remove(action.entity.id)); + .rebuild((b) => b..selectedIds.remove(action.entity!.id)); } ListUIState _clearListMultiselect( @@ -263,6 +263,6 @@ BankAccountState _setLoadedBankAccounts( BankAccountState _setLoadedCompany( BankAccountState bankAccountState, LoadCompanySuccess action) { - final company = action.userCompany.company; + final company = action.userCompany.company!; return bankAccountState.loadBankAccounts(company.bankAccounts); } diff --git a/lib/redux/bank_account/bank_account_selectors.dart b/lib/redux/bank_account/bank_account_selectors.dart index cf22525c8..d523e8ccd 100644 --- a/lib/redux/bank_account/bank_account_selectors.dart +++ b/lib/redux/bank_account/bank_account_selectors.dart @@ -6,22 +6,22 @@ import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; var memoizedDropdownBankAccountList = memo5( - (BuiltMap bankAccountMap, + (BuiltMap bankAccountMap, BuiltList bankAccountList, StaticState staticState, - BuiltMap userMap, - String bankAccountId) => + BuiltMap userMap, + String? bankAccountId) => dropdownBankAccountsSelector(bankAccountMap, bankAccountList, staticState, userMap, bankAccountId)); List dropdownBankAccountsSelector( - BuiltMap bankAccountMap, + BuiltMap bankAccountMap, BuiltList bankAccountList, StaticState staticState, - BuiltMap userMap, - String bankAccountId) { + BuiltMap userMap, + String? bankAccountId) { final list = bankAccountList.where((bankAccountId) { - final bankAccount = bankAccountMap[bankAccountId]; + final bankAccount = bankAccountMap[bankAccountId]!; /* if (clientId != null && clientId > 0 && bankAccount.clientId != clientId) { return false; @@ -31,7 +31,7 @@ List dropdownBankAccountsSelector( }).toList(); list.sort((bankAccountAId, bankAccountBId) { - final bankAccountA = bankAccountMap[bankAccountAId]; + final bankAccountA = bankAccountMap[bankAccountAId]!; final bankAccountB = bankAccountMap[bankAccountBId]; return bankAccountA.compareTo(bankAccountB, BankAccountFields.name, true); }); @@ -40,7 +40,7 @@ List dropdownBankAccountsSelector( } var memoizedFilteredBankAccountList = memo4((SelectionState selectionState, - BuiltMap bankAccountMap, + BuiltMap bankAccountMap, BuiltList bankAccountList, ListUIState bankAccountListState) => filteredBankAccountsSelector( @@ -48,7 +48,7 @@ var memoizedFilteredBankAccountList = memo4((SelectionState selectionState, List filteredBankAccountsSelector( SelectionState selectionState, - BuiltMap bankAccountMap, + BuiltMap bankAccountMap, BuiltList bankAccountList, ListUIState bankAccountListState) { final filterEntityId = selectionState.filterEntityId; @@ -56,11 +56,11 @@ List filteredBankAccountsSelector( final list = bankAccountList.where((bankAccountId) { final bankAccount = bankAccountMap[bankAccountId]; - if (filterEntityId != null && bankAccount.id != filterEntityId) { + if (filterEntityId != null && bankAccount!.id != filterEntityId) { return false; } else {} - if (!bankAccount.matchesStates(bankAccountListState.stateFilters)) { + if (!bankAccount!.matchesStates(bankAccountListState.stateFilters)) { return false; } @@ -68,7 +68,7 @@ List filteredBankAccountsSelector( }).toList(); list.sort((bankAccountAId, bankAccountBId) { - final bankAccountA = bankAccountMap[bankAccountAId]; + final bankAccountA = bankAccountMap[bankAccountAId]!; final bankAccountB = bankAccountMap[bankAccountBId]; return bankAccountA.compareTo(bankAccountB, bankAccountListState.sortField, bankAccountListState.sortAscending); @@ -77,7 +77,7 @@ List filteredBankAccountsSelector( return list; } -bool hasBankAccountChanges(BankAccountEntity bankAccount, +bool? hasBankAccountChanges(BankAccountEntity bankAccount, BuiltMap bankAccountMap) => bankAccount.isNew ? bankAccount.isChanged diff --git a/lib/redux/bank_account/bank_account_state.dart b/lib/redux/bank_account/bank_account_state.dart index de4f886da..72bde28f9 100644 --- a/lib/redux/bank_account/bank_account_state.dart +++ b/lib/redux/bank_account/bank_account_state.dart @@ -23,10 +23,10 @@ abstract class BankAccountState @memoized int get hashCode; - BuiltMap get map; + BuiltMap get map; BuiltList get list; - BankAccountEntity get(String bankAccountId) { + BankAccountEntity? get(String bankAccountId) { if (map.containsKey(bankAccountId)) { return map[bankAccountId]; } else { @@ -35,7 +35,7 @@ abstract class BankAccountState } BankAccountState loadBankAccounts(BuiltList clients) { - final map = Map.fromIterable( + final map = Map.fromIterable( clients, key: (dynamic item) => item.id, value: (dynamic item) => item, @@ -53,7 +53,7 @@ abstract class BankAccountState abstract class BankAccountUIState extends Object with EntityUIState implements Built { - factory BankAccountUIState(PrefStateSortField sortField) { + factory BankAccountUIState(PrefStateSortField? sortField) { return _$BankAccountUIState._( listUIState: ListUIState(sortField?.field ?? BankAccountFields.name, sortAscending: sortField?.ascending), @@ -68,14 +68,13 @@ abstract class BankAccountUIState extends Object @memoized int get hashCode; - @nullable - BankAccountEntity get editing; + BankAccountEntity? get editing; @override - bool get isCreatingNew => editing.isNew; + bool get isCreatingNew => editing!.isNew; @override - String get editingId => editing.id; + String get editingId => editing!.id; static Serializer get serializer => _$bankAccountUIStateSerializer; diff --git a/lib/redux/bank_account/bank_account_state.g.dart b/lib/redux/bank_account/bank_account_state.g.dart index f978ef050..13f561230 100644 --- a/lib/redux/bank_account/bank_account_state.g.dart +++ b/lib/redux/bank_account/bank_account_state.g.dart @@ -19,14 +19,14 @@ class _$BankAccountStateSerializer final String wireName = 'BankAccountState'; @override - Iterable serialize(Serializers serializers, BankAccountState object, + Iterable serialize(Serializers serializers, BankAccountState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'map', serializers.serialize(object.map, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(BankAccountEntity) + const FullType.nullable(String), + const FullType.nullable(BankAccountEntity) ])), 'list', serializers.serialize(object.list, @@ -39,28 +39,28 @@ class _$BankAccountStateSerializer @override BankAccountState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new BankAccountStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'map': result.map.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(BankAccountEntity) - ]))); + const FullType.nullable(String), + const FullType.nullable(BankAccountEntity) + ]))!); break; case 'list': result.list.replace(serializers.deserialize(value, - specifiedType: - const FullType(BuiltList, const [const FullType(String)])) - as BuiltList); + specifiedType: const FullType( + BuiltList, const [const FullType(String)]))! + as BuiltList); break; } } @@ -77,9 +77,10 @@ class _$BankAccountUIStateSerializer final String wireName = 'BankAccountUIState'; @override - Iterable serialize(Serializers serializers, BankAccountUIState object, + Iterable serialize( + Serializers serializers, BankAccountUIState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'listUIState', serializers.serialize(object.listUIState, specifiedType: const FullType(ListUIState)), @@ -87,7 +88,7 @@ class _$BankAccountUIStateSerializer serializers.serialize(object.tabIndex, specifiedType: const FullType(int)), ]; - Object value; + Object? value; value = object.editing; if (value != null) { result @@ -114,36 +115,36 @@ class _$BankAccountUIStateSerializer @override BankAccountUIState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new BankAccountUIStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'editing': result.editing.replace(serializers.deserialize(value, - specifiedType: const FullType(BankAccountEntity)) + specifiedType: const FullType(BankAccountEntity))! as BankAccountEntity); break; case 'listUIState': result.listUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(ListUIState)) as ListUIState); + specifiedType: const FullType(ListUIState))! as ListUIState); break; case 'selectedId': result.selectedId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'forceSelected': result.forceSelected = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'tabIndex': result.tabIndex = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; } } @@ -154,15 +155,15 @@ class _$BankAccountUIStateSerializer class _$BankAccountState extends BankAccountState { @override - final BuiltMap map; + final BuiltMap map; @override final BuiltList list; factory _$BankAccountState( - [void Function(BankAccountStateBuilder) updates]) => + [void Function(BankAccountStateBuilder)? updates]) => (new BankAccountStateBuilder()..update(updates))._build(); - _$BankAccountState._({this.map, this.list}) : super._() { + _$BankAccountState._({required this.map, required this.list}) : super._() { BuiltValueNullFieldError.checkNotNull(map, r'BankAccountState', 'map'); BuiltValueNullFieldError.checkNotNull(list, r'BankAccountState', 'list'); } @@ -181,10 +182,10 @@ class _$BankAccountState extends BankAccountState { return other is BankAccountState && map == other.map && list == other.list; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, map.hashCode); _$hash = $jc(_$hash, list.hashCode); @@ -203,16 +204,16 @@ class _$BankAccountState extends BankAccountState { class BankAccountStateBuilder implements Builder { - _$BankAccountState _$v; + _$BankAccountState? _$v; - MapBuilder _map; - MapBuilder get map => - _$this._map ??= new MapBuilder(); - set map(MapBuilder map) => _$this._map = map; + MapBuilder? _map; + MapBuilder get map => + _$this._map ??= new MapBuilder(); + set map(MapBuilder? map) => _$this._map = map; - ListBuilder _list; + ListBuilder? _list; ListBuilder get list => _$this._list ??= new ListBuilder(); - set list(ListBuilder list) => _$this._list = list; + set list(ListBuilder? list) => _$this._list = list; BankAccountStateBuilder(); @@ -233,7 +234,7 @@ class BankAccountStateBuilder } @override - void update(void Function(BankAccountStateBuilder) updates) { + void update(void Function(BankAccountStateBuilder)? updates) { if (updates != null) updates(this); } @@ -246,7 +247,7 @@ class BankAccountStateBuilder _$result = _$v ?? new _$BankAccountState._(map: map.build(), list: list.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'map'; map.build(); @@ -265,30 +266,30 @@ class BankAccountStateBuilder class _$BankAccountUIState extends BankAccountUIState { @override - final BankAccountEntity editing; + final BankAccountEntity? editing; @override final ListUIState listUIState; @override - final String selectedId; + final String? selectedId; @override - final bool forceSelected; + final bool? forceSelected; @override final int tabIndex; @override - final Completer saveCompleter; + final Completer? saveCompleter; @override - final Completer cancelCompleter; + final Completer? cancelCompleter; factory _$BankAccountUIState( - [void Function(BankAccountUIStateBuilder) updates]) => + [void Function(BankAccountUIStateBuilder)? updates]) => (new BankAccountUIStateBuilder()..update(updates))._build(); _$BankAccountUIState._( {this.editing, - this.listUIState, + required this.listUIState, this.selectedId, this.forceSelected, - this.tabIndex, + required this.tabIndex, this.saveCompleter, this.cancelCompleter}) : super._() { @@ -320,10 +321,10 @@ class _$BankAccountUIState extends BankAccountUIState { cancelCompleter == other.cancelCompleter; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, editing.hashCode); _$hash = $jc(_$hash, listUIState.hashCode); @@ -352,40 +353,40 @@ class _$BankAccountUIState extends BankAccountUIState { class BankAccountUIStateBuilder implements Builder { - _$BankAccountUIState _$v; + _$BankAccountUIState? _$v; - BankAccountEntityBuilder _editing; + BankAccountEntityBuilder? _editing; BankAccountEntityBuilder get editing => _$this._editing ??= new BankAccountEntityBuilder(); - set editing(BankAccountEntityBuilder editing) => _$this._editing = editing; + set editing(BankAccountEntityBuilder? editing) => _$this._editing = editing; - ListUIStateBuilder _listUIState; + ListUIStateBuilder? _listUIState; ListUIStateBuilder get listUIState => _$this._listUIState ??= new ListUIStateBuilder(); - set listUIState(ListUIStateBuilder listUIState) => + set listUIState(ListUIStateBuilder? listUIState) => _$this._listUIState = listUIState; - String _selectedId; - String get selectedId => _$this._selectedId; - set selectedId(String selectedId) => _$this._selectedId = selectedId; + String? _selectedId; + String? get selectedId => _$this._selectedId; + set selectedId(String? selectedId) => _$this._selectedId = selectedId; - bool _forceSelected; - bool get forceSelected => _$this._forceSelected; - set forceSelected(bool forceSelected) => + bool? _forceSelected; + bool? get forceSelected => _$this._forceSelected; + set forceSelected(bool? forceSelected) => _$this._forceSelected = forceSelected; - int _tabIndex; - int get tabIndex => _$this._tabIndex; - set tabIndex(int tabIndex) => _$this._tabIndex = tabIndex; + int? _tabIndex; + int? get tabIndex => _$this._tabIndex; + set tabIndex(int? tabIndex) => _$this._tabIndex = tabIndex; - Completer _saveCompleter; - Completer get saveCompleter => _$this._saveCompleter; - set saveCompleter(Completer saveCompleter) => + Completer? _saveCompleter; + Completer? get saveCompleter => _$this._saveCompleter; + set saveCompleter(Completer? saveCompleter) => _$this._saveCompleter = saveCompleter; - Completer _cancelCompleter; - Completer get cancelCompleter => _$this._cancelCompleter; - set cancelCompleter(Completer cancelCompleter) => + Completer? _cancelCompleter; + Completer? get cancelCompleter => _$this._cancelCompleter; + set cancelCompleter(Completer? cancelCompleter) => _$this._cancelCompleter = cancelCompleter; BankAccountUIStateBuilder(); @@ -412,7 +413,7 @@ class BankAccountUIStateBuilder } @override - void update(void Function(BankAccountUIStateBuilder) updates) { + void update(void Function(BankAccountUIStateBuilder)? updates) { if (updates != null) updates(this); } @@ -433,7 +434,7 @@ class BankAccountUIStateBuilder saveCompleter: saveCompleter, cancelCompleter: cancelCompleter); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'editing'; _editing?.build(); diff --git a/lib/redux/client/client_actions.dart b/lib/redux/client/client_actions.dart index 25e7d3447..c78eb4a6c 100644 --- a/lib/redux/client/client_actions.dart +++ b/lib/redux/client/client_actions.dart @@ -30,45 +30,45 @@ class ViewClientList implements PersistUI { }); final bool force; - final int page; + final int? page; } class ViewClient implements PersistUI, PersistPrefs { ViewClient({ - @required this.clientId, + required this.clientId, this.force = false, }); - final String clientId; + final String? clientId; final bool force; } class EditClient implements PersistUI, PersistPrefs { EditClient( - {@required this.client, + {required this.client, this.contact, this.completer, this.cancelCompleter, this.force = false}); final ClientEntity client; - final ClientContactEntity contact; - final Completer completer; - final Completer cancelCompleter; + final ClientContactEntity? contact; + final Completer? completer; + final Completer? cancelCompleter; final bool force; } class EditContact implements PersistUI { EditContact([this.contact]); - final ClientContactEntity contact; + final ClientContactEntity? contact; } class ShowPdfClient { ShowPdfClient({this.client, this.context}); - final ClientEntity client; - final BuildContext context; + final ClientEntity? client; + final BuildContext? context; } class UpdateClient implements PersistUI { @@ -80,21 +80,21 @@ class UpdateClient implements PersistUI { class LoadClient { LoadClient({this.completer, this.clientId}); - final Completer completer; - final String clientId; + final Completer? completer; + final String? clientId; } class LoadClientActivity { LoadClientActivity({this.completer, this.clientId}); - final Completer completer; - final String clientId; + final Completer? completer; + final String? clientId; } class LoadClients { LoadClients({this.completer, this.page = 1}); - final Completer completer; + final Completer? completer; final int page; } @@ -149,14 +149,14 @@ class LoadClientsSuccess implements StopLoading { class AddContact implements PersistUI { AddContact([this.contact]); - final ClientContactEntity contact; + final ClientContactEntity? contact; } class UpdateContact implements PersistUI { UpdateContact({this.index, this.contact}); - final int index; - final ClientContactEntity contact; + final int? index; + final ClientContactEntity? contact; } class DeleteContact implements PersistUI { @@ -168,8 +168,8 @@ class DeleteContact implements PersistUI { class SaveClientRequest implements StartSaving { SaveClientRequest({this.completer, this.client}); - final Completer completer; - final ClientEntity client; + final Completer? completer; + final ClientEntity? client; } class SaveClientSuccess implements StopSaving, PersistData, PersistUI { @@ -206,7 +206,7 @@ class ArchiveClientsSuccess implements StopSaving, PersistData { class ArchiveClientsFailure implements StopSaving { ArchiveClientsFailure(this.clients); - final List clients; + final List clients; } class MergeClientsRequest implements StartSaving { @@ -218,17 +218,17 @@ class MergeClientsRequest implements StartSaving { this.idToken, }); - final Completer completer; - final String clientId; - final String mergeIntoClientId; - final String password; - final String idToken; + final Completer? completer; + final String? clientId; + final String? mergeIntoClientId; + final String? password; + final String? idToken; } class MergeClientsSuccess implements StopSaving, PersistData { MergeClientsSuccess(this.clientId); - final String clientId; + final String? clientId; } class MergeClientsFailure implements StopSaving { @@ -253,21 +253,21 @@ class DeleteClientsSuccess implements StopSaving, PersistData { class DeleteClientsFailure implements StopSaving { DeleteClientsFailure(this.clients); - final List clients; + final List clients; } class PurgeClientRequest implements StartSaving { PurgeClientRequest({ - @required this.completer, - @required this.clientId, - @required this.password, - @required this.idToken, + required this.completer, + required this.clientId, + required this.password, + required this.idToken, }); final Completer completer; final String clientId; - final String password; - final String idToken; + final String? password; + final String? idToken; } class PurgeClientSuccess implements StopSaving, PersistData { @@ -298,7 +298,7 @@ class RestoreClientSuccess implements StopSaving, PersistData { class RestoreClientFailure implements StopSaving { RestoreClientFailure(this.clients); - final List clients; + final List clients; } class FilterClients implements PersistUI { @@ -344,26 +344,26 @@ class FilterClientsByCustom4 implements PersistUI { } void handleClientAction( - BuildContext context, List clients, EntityAction action) async { + BuildContext? context, List clients, EntityAction? action) async { if (clients.isEmpty) { return; } - final store = StoreProvider.of(context); + final store = StoreProvider.of(context!); final state = store.state; final localization = AppLocalization.of(context); - final clientIds = clients.map((client) => client.id).toList(); - final client = clients[0] as ClientEntity; + final clientIds = clients.map((client) => client!.id).toList(); + final client = clients[0] as ClientEntity?; switch (action) { case EntityAction.edit: - editEntity(entity: client); + editEntity(entity: client!); break; case EntityAction.viewStatement: store.dispatch(ShowPdfClient(client: client, context: context)); break; case EntityAction.clientPortal: - final contact = client.primaryContact; + final contact = client!.primaryContact!; var link = contact.silentLink; if (link.isNotEmpty) { if (!link.contains('?')) { @@ -386,7 +386,7 @@ void handleClientAction( createEntity( context: context, entity: - TaskEntity(state: state).rebuild((b) => b..clientId = client.id)); + TaskEntity(state: state).rebuild((b) => b..clientId = client!.id)); break; case EntityAction.newInvoice: createEntity( @@ -438,47 +438,47 @@ void handleClientAction( createEntity( context: context, entity: PaymentEntity(state: state, client: client) - .rebuild((b) => b.clientId = client.id), + .rebuild((b) => b.clientId = client!.id), ); break; case EntityAction.newProject: createEntity( context: context, entity: - ProjectEntity(state: state).rebuild((b) => b.clientId = client.id), + ProjectEntity(state: state).rebuild((b) => b.clientId = client!.id), ); break; case EntityAction.restore: final message = clientIds.length > 1 - ? localization.restoredClients + ? localization!.restoredClients .replaceFirst(':value', ':count') .replaceFirst(':count', clientIds.length.toString()) - : localization.restoredClient; + : localization!.restoredClient; store.dispatch(RestoreClientsRequest( snackBarCompleter(context, message), clientIds)); break; case EntityAction.archive: final message = clientIds.length > 1 - ? localization.archivedClients + ? localization!.archivedClients .replaceFirst(':value', ':count') .replaceFirst(':count', clientIds.length.toString()) - : localization.archivedClient; + : localization!.archivedClient; store.dispatch(ArchiveClientsRequest( snackBarCompleter(context, message), clientIds)); break; case EntityAction.delete: final message = clientIds.length > 1 - ? localization.deletedClients + ? localization!.deletedClients .replaceFirst(':value', ':count') .replaceFirst(':count', clientIds.length.toString()) - : localization.deletedClient; + : localization!.deletedClient; store.dispatch(DeleteClientsRequest( snackBarCompleter(context, message), clientIds)); break; case EntityAction.purge: confirmCallback( context: context, - message: '${localization.purge} - ${client.displayName}', + message: '${localization!.purge} - ${client!.displayName}', callback: (_) { passwordCallback( alwaysRequire: true, @@ -507,7 +507,7 @@ void handleClientAction( } for (final client in clients) { - if (!state.clientListState.isSelected(client.id)) { + if (!state.clientListState.isSelected(client!.id)) { store.dispatch(AddToClientMultiselect(entity: client)); } else { store.dispatch(RemoveFromClientMultiselect(entity: client)); @@ -528,14 +528,14 @@ void handleClientAction( } if (documentIds.isEmpty) { showMessageDialog( - context: context, message: localization.noDocumentsToDownload); + context: context, message: localization!.noDocumentsToDownload); } else { store.dispatch( DownloadDocumentsRequest( documentIds: documentIds, completer: snackBarCompleter( context, - localization.exportedData, + localization!.exportedData, ), ), ); @@ -557,25 +557,25 @@ void handleClientAction( class StartClientMultiselect {} class AddToClientMultiselect { - AddToClientMultiselect({@required this.entity}); + AddToClientMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class RemoveFromClientMultiselect { - RemoveFromClientMultiselect({@required this.entity}); + RemoveFromClientMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class ClearClientMultiselect {} class SaveClientDocumentRequest implements StartSaving { SaveClientDocumentRequest({ - @required this.isPrivate, - @required this.completer, - @required this.multipartFile, - @required this.client, + required this.isPrivate, + required this.completer, + required this.multipartFile, + required this.client, }); final bool isPrivate; @@ -599,39 +599,39 @@ class SaveClientDocumentFailure implements StopSaving { class UpdateClientTab implements PersistUI { UpdateClientTab({this.tabIndex}); - final int tabIndex; + final int? tabIndex; } class _MergClientPicker extends StatefulWidget { const _MergClientPicker({ - Key key, - @required this.client, + Key? key, + required this.client, }) : super(key: key); - final ClientEntity client; + final ClientEntity? client; @override State<_MergClientPicker> createState() => __MergClientPickerState(); } class __MergClientPickerState extends State<_MergClientPicker> { - String _mergeIntoClientId; + String? _mergeIntoClientId; @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final store = StoreProvider.of(context); final state = store.state; return AlertDialog( - title: Text(localization.mergeInto), + title: Text(localization.mergeInto!), content: Column( mainAxisSize: MainAxisSize.min, children: [ ClientPicker( clientId: _mergeIntoClientId, clientState: state.clientState, - excludeIds: [widget.client.id], + excludeIds: [widget.client!.id], onSelected: (client) => setState(() => _mergeIntoClientId = client?.id), ), @@ -648,7 +648,7 @@ class __MergClientPickerState extends State<_MergClientPicker> { context: context, callback: (password, idToken) { store.dispatch(MergeClientsRequest( - clientId: widget.client.id, + clientId: widget.client!.id, idToken: idToken, password: password, mergeIntoClientId: _mergeIntoClientId, @@ -660,7 +660,7 @@ class __MergClientPickerState extends State<_MergClientPicker> { Navigator.of(context).pop(); }); }, - child: Text(localization.merge), + child: Text(localization.merge!), ), ], ); diff --git a/lib/redux/client/client_middleware.dart b/lib/redux/client/client_middleware.dart index 21a3318b0..6141b72db 100644 --- a/lib/redux/client/client_middleware.dart +++ b/lib/redux/client/client_middleware.dart @@ -57,14 +57,14 @@ List> createStoreClientsMiddleware([ Middleware _editClient() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as EditClient; + final action = dynamicAction as EditClient?; next(action); store.dispatch(UpdateCurrentRoute(ClientEditScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(ClientEditScreen.route); + navigatorKey.currentState!.pushNamed(ClientEditScreen.route); } }; } @@ -72,21 +72,21 @@ Middleware _editClient() { Middleware _viewClient() { return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as ViewClient; + final action = dynamicAction as ViewClient?; next(action); store.dispatch(UpdateCurrentRoute(ClientViewScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(ClientViewScreen.route); + navigatorKey.currentState!.pushNamed(ClientViewScreen.route); } }; } Middleware _viewClientList() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as ViewClientList; + final action = dynamicAction as ViewClientList?; next(action); @@ -97,7 +97,7 @@ Middleware _viewClientList() { store.dispatch(UpdateCurrentRoute(ClientScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamedAndRemoveUntil( + navigatorKey.currentState!.pushNamedAndRemoveUntil( ClientScreen.route, (Route route) => false); } }; @@ -143,12 +143,12 @@ Middleware _mergeClients(ClientRepository repository) { store.dispatch(MergeClientsSuccess(action.clientId)); store.dispatch(RefreshData()); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { - store.dispatch(MergeClientsFailure(error)); + store.dispatch(MergeClientsFailure(error as List)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -237,24 +237,24 @@ Middleware _saveClient(ClientRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as SaveClientRequest; repository - .saveData(store.state.credentials, action.client) + .saveData(store.state.credentials, action.client!) .then((ClientEntity client) { - if (action.client.isNew) { + if (action.client!.isNew) { store.dispatch(AddClientSuccess(client)); } else { store.dispatch(SaveClientSuccess(client)); } - action.completer.complete(client); + action.completer!.complete(client); final clientUIState = store.state.clientUIState; if (clientUIState.saveCompleter != null) { - clientUIState.saveCompleter.complete(client); + clientUIState.saveCompleter!.complete(client); } }).catchError((Object error) { print(error); store.dispatch(SaveClientFailure(error)); - action.completer.completeError(error); + action.completer!.completeError(error); }); next(action); @@ -263,7 +263,7 @@ Middleware _saveClient(ClientRepository repository) { Middleware _loadClient(ClientRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as LoadClient; + final action = dynamicAction as LoadClient?; if (Config.DEMO_MODE) { next(action); @@ -272,18 +272,18 @@ Middleware _loadClient(ClientRepository repository) { store.dispatch(LoadClientRequest()); repository - .loadItem(store.state.credentials, action.clientId) + .loadItem(store.state.credentials, action!.clientId) .then((client) { store.dispatch(LoadClientSuccess(client)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(LoadClientFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -317,7 +317,7 @@ Middleware _loadClients(ClientRepository repository) { )); } else { if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } store.dispatch(LoadProducts()); } @@ -325,7 +325,7 @@ Middleware _loadClients(ClientRepository repository) { print(error); store.dispatch(LoadClientsFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -335,12 +335,12 @@ Middleware _loadClients(ClientRepository repository) { Middleware _saveDocument(ClientRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as SaveClientDocumentRequest; + final action = dynamicAction as SaveClientDocumentRequest?; if (store.state.isEnterprisePlan) { repository .uploadDocument( store.state.credentials, - action.client, + action!.client, action.multipartFile, action.isPrivate, ) @@ -364,7 +364,7 @@ Middleware _saveDocument(ClientRepository repository) { } else { const error = 'Uploading documents requires an enterprise plan'; store.dispatch(SaveClientDocumentFailure(error)); - action.completer.completeError(error); + action!.completer.completeError(error); } next(action); @@ -374,14 +374,14 @@ Middleware _saveDocument(ClientRepository repository) { Middleware _showPdfClient() { return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as ShowPdfClient; + final action = dynamicAction as ShowPdfClient?; next(action); store.dispatch(UpdateCurrentRoute(ClientPdfScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(ClientPdfScreen.route); + navigatorKey.currentState!.pushNamed(ClientPdfScreen.route); } }; } diff --git a/lib/redux/client/client_reducer.dart b/lib/redux/client/client_reducer.dart index 8c72f1d0a..be072df65 100644 --- a/lib/redux/client/client_reducer.dart +++ b/lib/redux/client/client_reducer.dart @@ -17,82 +17,82 @@ import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; EntityUIState clientUIReducer(ClientUIState state, dynamic action) { return state.rebuild((b) => b ..listUIState.replace(clientListReducer(state.listUIState, action)) - ..editing.replace(editingReducer(state.editing, action)) + ..editing.replace(editingReducer(state.editing, action)!) ..editingContact - .replace(editingContactReducer(state.editingContact, action)) + .replace(editingContactReducer(state.editingContact, action)!) ..selectedId = selectedIdReducer(state.selectedId, action) ..forceSelected = forceSelectedReducer(state.forceSelected, action) ..tabIndex = tabIndexReducer(state.tabIndex, action) ..saveCompleter = saveCompleterReducer(state.saveCompleter, action) - ..cancelCompleter = cancelCompleterReducer(state.cancelCompleter, action)); + ..cancelCompleter = cancelCompleterReducer(state.cancelCompleter as Completer?, action) as Completer?); } -final forceSelectedReducer = combineReducers([ - TypedReducer((completer, action) => true), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), +final forceSelectedReducer = combineReducers([ + TypedReducer((completer, action) => true), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), ]); -final tabIndexReducer = combineReducers([ - TypedReducer((completer, action) { +final int? Function(int, dynamic) tabIndexReducer = combineReducers([ + TypedReducer((completer, action) { return action.tabIndex; }), - TypedReducer((completer, action) { + TypedReducer((completer, action) { return 0; }), ]); -final saveCompleterReducer = combineReducers>([ - TypedReducer, EditClient>((completer, action) { - return action.completer; +final saveCompleterReducer = combineReducers?>([ + TypedReducer?, EditClient>((completer, action) { + return action.completer as Completer?; }), ]); -final cancelCompleterReducer = combineReducers>([ - TypedReducer, EditClient>((completer, action) { - return action.cancelCompleter; +final cancelCompleterReducer = combineReducers?>([ + TypedReducer?, EditClient>((completer, action) { + return action.cancelCompleter as Completer?; }), ]); -final editingContactReducer = combineReducers([ - TypedReducer((contact, action) { +final editingContactReducer = combineReducers([ + TypedReducer((contact, action) { return action.contact ?? ClientContactEntity(); }), - TypedReducer((contact, action) { + TypedReducer((contact, action) { return action.contact ?? ClientContactEntity(); }), ]); -final selectedIdReducer = combineReducers([ - TypedReducer((completer, action) => ''), - TypedReducer((completer, action) => ''), - TypedReducer((selectedId, action) => +final selectedIdReducer = combineReducers([ + TypedReducer((completer, action) => ''), + TypedReducer((completer, action) => ''), + TypedReducer((selectedId, action) => action.entityType == EntityType.client ? action.entityId : selectedId), - TypedReducer((selectedId, action) { + TypedReducer((selectedId, action) { return action.clientId; }), - TypedReducer((selectedId, action) { + TypedReducer((selectedId, action) { return action.client.id; }), - TypedReducer((selectedId, action) => action.client.id), - TypedReducer( + TypedReducer((selectedId, action) => action.client!.id), + TypedReducer( (selectedId, action) => action.clearSelection ? '' : selectedId), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => action.entityType == EntityType.client ? '' : selectedId), - TypedReducer( + TypedReducer( (selectedId, action) => action.clearSelection ? '' : action.entityType == EntityType.client @@ -100,53 +100,53 @@ final selectedIdReducer = combineReducers([ : selectedId), ]); -final editingReducer = combineReducers([ - TypedReducer((client, action) { +final editingReducer = combineReducers([ + TypedReducer((client, action) { return action.client; }), - TypedReducer((client, action) { + TypedReducer((client, action) { return action.client; }), - TypedReducer((clients, action) { + TypedReducer((clients, action) { return action.clients[0]; }), - TypedReducer((clients, action) { + TypedReducer((clients, action) { return action.clients[0]; }), - TypedReducer((clients, action) { + TypedReducer((clients, action) { return action.clients[0]; }), - TypedReducer((client, action) { + TypedReducer((client, action) { return action.client; }), - TypedReducer((client, action) { + TypedReducer((client, action) { return action.client.rebuild((b) => b..isChanged = true); }), - TypedReducer((client, action) { - return client.rebuild((b) => b + TypedReducer((client, action) { + return client!.rebuild((b) => b ..contacts.add(action.contact ?? ClientContactEntity()) ..isChanged = true); }), - TypedReducer((client, action) { - return client.rebuild((b) => b + TypedReducer((client, action) { + return client!.rebuild((b) => b ..contacts.removeAt(action.index) ..isChanged = true); }), - TypedReducer((client, action) { - return client.rebuild((b) => b - ..contacts[action.index] = action.contact + TypedReducer((client, action) { + return client!.rebuild((b) => b + ..contacts[action.index!] = action.contact ..isChanged = true); }), - TypedReducer((client, action) { + TypedReducer((client, action) { return ClientEntity(); }), - TypedReducer((client, action) { + TypedReducer((client, action) { return ClientEntity(); }), - TypedReducer((client, action) { + TypedReducer((client, action) { return ClientEntity(); }), - TypedReducer((client, action) { + TypedReducer((client, action) { return ClientEntity(); }), ]); @@ -238,7 +238,7 @@ ListUIState _filterClients(ListUIState clientListState, FilterClients action) { ListUIState _sortClients(ListUIState clientListState, SortClients action) { return clientListState.rebuild((b) => b - ..sortAscending = b.sortField != action.field || !b.sortAscending + ..sortAscending = b.sortField != action.field || !b.sortAscending! ..sortField = action.field); } @@ -249,13 +249,13 @@ ListUIState _startListMultiselect( ListUIState _addToListMultiselect( ListUIState clientListState, AddToClientMultiselect action) { - return clientListState.rebuild((b) => b..selectedIds.add(action.entity.id)); + return clientListState.rebuild((b) => b..selectedIds.add(action.entity!.id)); } ListUIState _removeFromListMultiselect( ListUIState clientListState, RemoveFromClientMultiselect action) { return clientListState - .rebuild((b) => b..selectedIds.remove(action.entity.id)); + .rebuild((b) => b..selectedIds.remove(action.entity!.id)); } ListUIState _clearListMultiselect( @@ -343,6 +343,6 @@ ClientState _setLoadedClients( ClientState _setLoadedCompany( ClientState clientState, LoadCompanySuccess action) { - final company = action.userCompany.company; + final company = action.userCompany.company!; return clientState.loadClients(company.clients); } diff --git a/lib/redux/client/client_selectors.dart b/lib/redux/client/client_selectors.dart index e76178fe3..4c51d6001 100644 --- a/lib/redux/client/client_selectors.dart +++ b/lib/redux/client/client_selectors.dart @@ -10,20 +10,20 @@ import 'package:invoiceninja_flutter/redux/static/static_state.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; var memoizedDropdownClientList = memo4( - (BuiltMap clientMap, BuiltList clientList, - BuiltMap userMap, StaticState staticState) => + (BuiltMap clientMap, BuiltList clientList, + BuiltMap userMap, StaticState staticState) => dropdownClientsSelector(clientMap, clientList, userMap, staticState)); List dropdownClientsSelector( - BuiltMap clientMap, + BuiltMap clientMap, BuiltList clientList, - BuiltMap userMap, + BuiltMap userMap, StaticState staticState) { final list = - clientList.where((clientId) => clientMap[clientId].isActive).toList(); + clientList.where((clientId) => clientMap[clientId]!.isActive).toList(); list.sort((clientAId, clientBId) { - final clientA = clientMap[clientAId]; + final clientA = clientMap[clientAId]!; final clientB = clientMap[clientBId]; return clientA.compareTo( clientB, ClientFields.name, true, userMap, staticState); @@ -33,18 +33,18 @@ List dropdownClientsSelector( } var memoizedClientStatsForUser = memo2( - (String userId, BuiltMap clientMap) => + (String userId, BuiltMap clientMap) => clientStatsForUser(userId, clientMap)); EntityStats clientStatsForUser( - String userId, BuiltMap clientMap) { + String userId, BuiltMap clientMap) { int countActive = 0; int countArchived = 0; clientMap.forEach((clientId, client) { - if (client.assignedUserId == userId) { + if (client!.assignedUserId == userId) { if (client.isActive) { countActive++; - } else if (client.isDeleted) { + } else if (client.isDeleted!) { countArchived++; } } @@ -54,28 +54,28 @@ EntityStats clientStatsForUser( } var memoizedFilteredClientList = memo7((SelectionState selectionState, - BuiltMap clientMap, + BuiltMap clientMap, BuiltList clientList, - BuiltMap groupMap, + BuiltMap groupMap, ListUIState clientListState, - BuiltMap userMap, + BuiltMap userMap, StaticState staticState) => filteredClientsSelector(selectionState, clientMap, clientList, groupMap, clientListState, userMap, staticState)); List filteredClientsSelector( SelectionState selectionState, - BuiltMap clientMap, + BuiltMap clientMap, BuiltList clientList, - BuiltMap groupMap, + BuiltMap groupMap, ListUIState clientListState, - BuiltMap userMap, + BuiltMap userMap, StaticState staticState) { final filterEntityId = selectionState.filterEntityId; final filterEntityType = selectionState.filterEntityType; final list = clientList.where((clientId) { - final client = clientMap[clientId]; + final client = clientMap[clientId]!; final group = groupMap[client.groupId] ?? GroupEntity(id: client.groupId); if (client.id == selectionState.selectedId) { @@ -121,7 +121,7 @@ List filteredClientsSelector( }).toList(); list.sort((clientAId, clientBId) { - final clientA = clientMap[clientAId]; + final clientA = clientMap[clientAId]!; final clientB = clientMap[clientBId]; return clientA.compareTo(clientB, clientListState.sortField, clientListState.sortAscending, userMap, staticState); @@ -130,14 +130,14 @@ List filteredClientsSelector( return list; } -SettingsEntity getClientSettings(AppState state, ClientEntity client) { +SettingsEntity getClientSettings(AppState? state, ClientEntity? client) { if (state == null) { return SettingsEntity(); } client ??= ClientEntity(); - final company = state.company; - final group = state.groupState.get(client.groupId); + final company = state.company!; + final group = state.groupState.get(client.groupId)!; return SettingsEntity( clientSettings: client.settings, @@ -146,13 +146,13 @@ SettingsEntity getClientSettings(AppState state, ClientEntity client) { ); } -SettingsEntity getVendorSettings(AppState state, VendorEntity vendor) { +SettingsEntity getVendorSettings(AppState state, VendorEntity? vendor) { if (state == null) { return SettingsEntity(); } vendor ??= VendorEntity(); - final company = state.company; + final company = state.company!; //final group = state.groupState.get(vendor.groupId); return SettingsEntity( @@ -162,6 +162,6 @@ SettingsEntity getVendorSettings(AppState state, VendorEntity vendor) { ); } -bool hasClientChanges( +bool? hasClientChanges( ClientEntity client, BuiltMap clientMap) => client.isNew ? client.isChanged : client != clientMap[client.id]; diff --git a/lib/redux/client/client_state.dart b/lib/redux/client/client_state.dart index 0e3e47f82..0ce62b7e0 100644 --- a/lib/redux/client/client_state.dart +++ b/lib/redux/client/client_state.dart @@ -28,11 +28,11 @@ abstract class ClientState implements Built { @memoized int get hashCode; - BuiltMap get map; + BuiltMap get map; BuiltList get list; - ClientEntity get(String clientId) { + ClientEntity? get(String clientId) { if (map.containsKey(clientId)) { return map[clientId]; } else { @@ -41,7 +41,7 @@ abstract class ClientState implements Built { } ClientState loadClients(BuiltList clients) { - final map = Map.fromIterable( + final map = Map.fromIterable( clients, key: (dynamic item) => item.id, value: (dynamic item) => item, @@ -58,7 +58,7 @@ abstract class ClientState implements Built { abstract class ClientUIState extends Object with EntityUIState implements Built { - factory ClientUIState(PrefStateSortField sortField) { + factory ClientUIState(PrefStateSortField? sortField) { return _$ClientUIState._( listUIState: ListUIState(sortField?.field ?? ClientFields.name, sortAscending: sortField?.ascending), @@ -75,17 +75,15 @@ abstract class ClientUIState extends Object @memoized int get hashCode; - @nullable - ClientEntity get editing; + ClientEntity? get editing; - @nullable - ClientContactEntity get editingContact; + ClientContactEntity? get editingContact; @override - bool get isCreatingNew => editing.isNew; + bool get isCreatingNew => editing!.isNew; @override - String get editingId => editing.id; + String get editingId => editing!.id; static Serializer get serializer => _$clientUIStateSerializer; } diff --git a/lib/redux/client/client_state.g.dart b/lib/redux/client/client_state.g.dart index 671c21dcc..bbcae2692 100644 --- a/lib/redux/client/client_state.g.dart +++ b/lib/redux/client/client_state.g.dart @@ -17,13 +17,15 @@ class _$ClientStateSerializer implements StructuredSerializer { final String wireName = 'ClientState'; @override - Iterable serialize(Serializers serializers, ClientState object, + Iterable serialize(Serializers serializers, ClientState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'map', serializers.serialize(object.map, - specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(ClientEntity)])), + specifiedType: const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(ClientEntity) + ])), 'list', serializers.serialize(object.list, specifiedType: @@ -34,28 +36,28 @@ class _$ClientStateSerializer implements StructuredSerializer { } @override - ClientState deserialize(Serializers serializers, Iterable serialized, + ClientState deserialize(Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ClientStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'map': result.map.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(ClientEntity) - ]))); + const FullType.nullable(String), + const FullType.nullable(ClientEntity) + ]))!); break; case 'list': result.list.replace(serializers.deserialize(value, - specifiedType: - const FullType(BuiltList, const [const FullType(String)])) - as BuiltList); + specifiedType: const FullType( + BuiltList, const [const FullType(String)]))! + as BuiltList); break; } } @@ -71,9 +73,9 @@ class _$ClientUIStateSerializer implements StructuredSerializer { final String wireName = 'ClientUIState'; @override - Iterable serialize(Serializers serializers, ClientUIState object, + Iterable serialize(Serializers serializers, ClientUIState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'listUIState', serializers.serialize(object.listUIState, specifiedType: const FullType(ListUIState)), @@ -81,7 +83,7 @@ class _$ClientUIStateSerializer implements StructuredSerializer { serializers.serialize(object.tabIndex, specifiedType: const FullType(int)), ]; - Object value; + Object? value; value = object.editing; if (value != null) { result @@ -115,40 +117,40 @@ class _$ClientUIStateSerializer implements StructuredSerializer { @override ClientUIState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ClientUIStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'editing': result.editing.replace(serializers.deserialize(value, - specifiedType: const FullType(ClientEntity)) as ClientEntity); + specifiedType: const FullType(ClientEntity))! as ClientEntity); break; case 'editingContact': result.editingContact.replace(serializers.deserialize(value, - specifiedType: const FullType(ClientContactEntity)) + specifiedType: const FullType(ClientContactEntity))! as ClientContactEntity); break; case 'listUIState': result.listUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(ListUIState)) as ListUIState); + specifiedType: const FullType(ListUIState))! as ListUIState); break; case 'selectedId': result.selectedId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'forceSelected': result.forceSelected = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'tabIndex': result.tabIndex = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; } } @@ -159,14 +161,14 @@ class _$ClientUIStateSerializer implements StructuredSerializer { class _$ClientState extends ClientState { @override - final BuiltMap map; + final BuiltMap map; @override final BuiltList list; - factory _$ClientState([void Function(ClientStateBuilder) updates]) => + factory _$ClientState([void Function(ClientStateBuilder)? updates]) => (new ClientStateBuilder()..update(updates))._build(); - _$ClientState._({this.map, this.list}) : super._() { + _$ClientState._({required this.map, required this.list}) : super._() { BuiltValueNullFieldError.checkNotNull(map, r'ClientState', 'map'); BuiltValueNullFieldError.checkNotNull(list, r'ClientState', 'list'); } @@ -184,10 +186,10 @@ class _$ClientState extends ClientState { return other is ClientState && map == other.map && list == other.list; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, map.hashCode); _$hash = $jc(_$hash, list.hashCode); @@ -205,16 +207,16 @@ class _$ClientState extends ClientState { } class ClientStateBuilder implements Builder { - _$ClientState _$v; + _$ClientState? _$v; - MapBuilder _map; - MapBuilder get map => - _$this._map ??= new MapBuilder(); - set map(MapBuilder map) => _$this._map = map; + MapBuilder? _map; + MapBuilder get map => + _$this._map ??= new MapBuilder(); + set map(MapBuilder? map) => _$this._map = map; - ListBuilder _list; + ListBuilder? _list; ListBuilder get list => _$this._list ??= new ListBuilder(); - set list(ListBuilder list) => _$this._list = list; + set list(ListBuilder? list) => _$this._list = list; ClientStateBuilder(); @@ -235,7 +237,7 @@ class ClientStateBuilder implements Builder { } @override - void update(void Function(ClientStateBuilder) updates) { + void update(void Function(ClientStateBuilder)? updates) { if (updates != null) updates(this); } @@ -248,7 +250,7 @@ class ClientStateBuilder implements Builder { _$result = _$v ?? new _$ClientState._(map: map.build(), list: list.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'map'; map.build(); @@ -267,32 +269,32 @@ class ClientStateBuilder implements Builder { class _$ClientUIState extends ClientUIState { @override - final ClientEntity editing; + final ClientEntity? editing; @override - final ClientContactEntity editingContact; + final ClientContactEntity? editingContact; @override final ListUIState listUIState; @override - final String selectedId; + final String? selectedId; @override - final bool forceSelected; + final bool? forceSelected; @override final int tabIndex; @override - final Completer saveCompleter; + final Completer? saveCompleter; @override - final Completer cancelCompleter; + final Completer? cancelCompleter; - factory _$ClientUIState([void Function(ClientUIStateBuilder) updates]) => + factory _$ClientUIState([void Function(ClientUIStateBuilder)? updates]) => (new ClientUIStateBuilder()..update(updates))._build(); _$ClientUIState._( {this.editing, this.editingContact, - this.listUIState, + required this.listUIState, this.selectedId, this.forceSelected, - this.tabIndex, + required this.tabIndex, this.saveCompleter, this.cancelCompleter}) : super._() { @@ -323,10 +325,10 @@ class _$ClientUIState extends ClientUIState { cancelCompleter == other.cancelCompleter; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, editing.hashCode); _$hash = $jc(_$hash, editingContact.hashCode); @@ -357,46 +359,46 @@ class _$ClientUIState extends ClientUIState { class ClientUIStateBuilder implements Builder { - _$ClientUIState _$v; + _$ClientUIState? _$v; - ClientEntityBuilder _editing; + ClientEntityBuilder? _editing; ClientEntityBuilder get editing => _$this._editing ??= new ClientEntityBuilder(); - set editing(ClientEntityBuilder editing) => _$this._editing = editing; + set editing(ClientEntityBuilder? editing) => _$this._editing = editing; - ClientContactEntityBuilder _editingContact; + ClientContactEntityBuilder? _editingContact; ClientContactEntityBuilder get editingContact => _$this._editingContact ??= new ClientContactEntityBuilder(); - set editingContact(ClientContactEntityBuilder editingContact) => + set editingContact(ClientContactEntityBuilder? editingContact) => _$this._editingContact = editingContact; - ListUIStateBuilder _listUIState; + ListUIStateBuilder? _listUIState; ListUIStateBuilder get listUIState => _$this._listUIState ??= new ListUIStateBuilder(); - set listUIState(ListUIStateBuilder listUIState) => + set listUIState(ListUIStateBuilder? listUIState) => _$this._listUIState = listUIState; - String _selectedId; - String get selectedId => _$this._selectedId; - set selectedId(String selectedId) => _$this._selectedId = selectedId; + String? _selectedId; + String? get selectedId => _$this._selectedId; + set selectedId(String? selectedId) => _$this._selectedId = selectedId; - bool _forceSelected; - bool get forceSelected => _$this._forceSelected; - set forceSelected(bool forceSelected) => + bool? _forceSelected; + bool? get forceSelected => _$this._forceSelected; + set forceSelected(bool? forceSelected) => _$this._forceSelected = forceSelected; - int _tabIndex; - int get tabIndex => _$this._tabIndex; - set tabIndex(int tabIndex) => _$this._tabIndex = tabIndex; + int? _tabIndex; + int? get tabIndex => _$this._tabIndex; + set tabIndex(int? tabIndex) => _$this._tabIndex = tabIndex; - Completer _saveCompleter; - Completer get saveCompleter => _$this._saveCompleter; - set saveCompleter(Completer saveCompleter) => + Completer? _saveCompleter; + Completer? get saveCompleter => _$this._saveCompleter; + set saveCompleter(Completer? saveCompleter) => _$this._saveCompleter = saveCompleter; - Completer _cancelCompleter; - Completer get cancelCompleter => _$this._cancelCompleter; - set cancelCompleter(Completer cancelCompleter) => + Completer? _cancelCompleter; + Completer? get cancelCompleter => _$this._cancelCompleter; + set cancelCompleter(Completer? cancelCompleter) => _$this._cancelCompleter = cancelCompleter; ClientUIStateBuilder(); @@ -424,7 +426,7 @@ class ClientUIStateBuilder } @override - void update(void Function(ClientUIStateBuilder) updates) { + void update(void Function(ClientUIStateBuilder)? updates) { if (updates != null) updates(this); } @@ -446,7 +448,7 @@ class ClientUIStateBuilder saveCompleter: saveCompleter, cancelCompleter: cancelCompleter); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'editing'; _editing?.build(); diff --git a/lib/redux/company/company_actions.dart b/lib/redux/company/company_actions.dart index 6c2456944..6aca27730 100644 --- a/lib/redux/company/company_actions.dart +++ b/lib/redux/company/company_actions.dart @@ -14,7 +14,7 @@ import 'package:invoiceninja_flutter/redux/client/client_actions.dart'; class SelectCompany implements ClearClientMultiselect { SelectCompany({ - @required this.companyIndex, + required this.companyIndex, this.clearSelection = true, }); @@ -29,7 +29,7 @@ class LoadCompanySuccess { } class UpdateCompany implements PersistUI { - UpdateCompany({@required this.company}); + UpdateCompany({required this.company}); final CompanyEntity company; } @@ -40,8 +40,8 @@ class SaveCompanyRequest implements StartSaving { this.company, }); - final Completer completer; - final CompanyEntity company; + final Completer? completer; + final CompanyEntity? company; } class SaveCompanySuccess implements StopSaving, PersistData, PersistUI { @@ -63,9 +63,9 @@ class SaveEInvoiceCertificateRequest implements StartSaving { this.eInvoiceCertificate, }); - final Completer completer; - final CompanyEntity company; - final MultipartFile eInvoiceCertificate; + final Completer? completer; + final CompanyEntity? company; + final MultipartFile? eInvoiceCertificate; } class SaveEInvoiceCertificateSuccess @@ -84,18 +84,18 @@ class SaveEInvoiceCertificateFailure implements StopSaving { class AddCompany implements StartSaving { AddCompany({this.context, this.completer}); - final BuildContext context; - final Completer completer; + final BuildContext? context; + final Completer? completer; } class AddCompanySuccess implements StopSaving {} class DeleteCompanyRequest implements StartSaving { DeleteCompanyRequest({ - @required this.completer, - @required this.password, - @required this.idToken, - @required this.reason, + required this.completer, + required this.password, + required this.idToken, + required this.reason, }); final Completer completer; @@ -114,9 +114,9 @@ class DeleteCompanyFailure implements StopSaving { class PurgeDataRequest implements StartSaving { PurgeDataRequest({ - @required this.completer, - @required this.password, - @required this.idToken, + required this.completer, + required this.password, + required this.idToken, }); final Completer completer; @@ -137,14 +137,14 @@ class PurgeDataFailure implements StopSaving { class UpdateCompanyLanguage { UpdateCompanyLanguage({this.languageId}); - final String languageId; + final String? languageId; } class SaveCompanyDocumentRequest implements StartSaving { SaveCompanyDocumentRequest({ - @required this.isPrivate, - @required this.completer, - @required this.multipartFiles, + required this.isPrivate, + required this.completer, + required this.multipartFiles, }); final bool isPrivate; @@ -166,7 +166,7 @@ class SaveCompanyDocumentFailure implements StopSaving { class SetDefaultCompanyRequest implements StartSaving { SetDefaultCompanyRequest({ - @required this.completer, + required this.completer, }); final Completer completer; diff --git a/lib/redux/company/company_reducer.dart b/lib/redux/company/company_reducer.dart index 2ab149474..e33b70491 100644 --- a/lib/redux/company/company_reducer.dart +++ b/lib/redux/company/company_reducer.dart @@ -53,7 +53,7 @@ UserCompanyState companyReducer(UserCompanyState state, dynamic action) { return state.rebuild((b) => b ..lastUpdated = lastUpdatedReducer(state.lastUpdated, action) - ..userCompany.replace(userCompanyEntityReducer(state.userCompany, action)) + ..userCompany.replace(userCompanyEntityReducer(state.userCompany, action)!) ..documentState.replace(documentsReducer(state.documentState, action)) ..clientState.replace(clientsReducer(state.clientState, action)) ..productState.replace(productsReducer(state.productState, action)) @@ -97,23 +97,23 @@ UserCompanyState companyReducer(UserCompanyState state, dynamic action) { ..groupState.replace(groupsReducer(state.groupState, action))); } -Reducer userCompanyEntityReducer = combineReducers([ - TypedReducer( +Reducer userCompanyEntityReducer = combineReducers([ + TypedReducer( loadCompanySuccessReducer), - TypedReducer( + TypedReducer( saveCompanySuccessReducer), - TypedReducer( + TypedReducer( (userCompany, action) { - return userCompany.rebuild((b) => b + return userCompany!.rebuild((b) => b ..company.hasEInvoiceCertificate = action.company.hasEInvoiceCertificate ..company.hasEInvoiceCertificatePassphrase = action.company.hasEInvoiceCertificatePassphrase); }), - TypedReducer((userCompany, action) { - if (userCompany.settings.reportSettings.containsKey(action.report)) { - final settings = userCompany.settings.reportSettings[action.report]; + TypedReducer((userCompany, action) { + if (userCompany!.settings!.reportSettings.containsKey(action.report)) { + final settings = userCompany.settings!.reportSettings[action.report]; return userCompany.rebuild((b) => b - ..settings.reportSettings[action.report] = settings.rebuild((b) => b + ..settings.reportSettings[action.report] = settings!.rebuild((b) => b ..sortAscending = action.sortColumn == null ? settings.sortAscending : action.sortColumn == settings.sortColumn @@ -137,50 +137,50 @@ Reducer userCompanyEntityReducer = combineReducers([ ); } }), - TypedReducer( - (userCompany, action) => userCompany.rebuild((b) => b + TypedReducer( + (userCompany, action) => userCompany!.rebuild((b) => b ..user.replace(action.user) - ..settings.replace(action.user.userCompany.settings)), + ..settings.replace(action.user.userCompany!.settings!)), ), - TypedReducer( + TypedReducer( (userCompany, action) => - userCompany.rebuild((b) => b..user.replace(action.user)), + userCompany!.rebuild((b) => b..user.replace(action.user)), ), - TypedReducer( + TypedReducer( (userCompany, action) => - userCompany.rebuild((b) => b..user.replace(action.user)), + userCompany!.rebuild((b) => b..user.replace(action.user)), ), - TypedReducer( + TypedReducer( (userCompany, action) => - userCompany.rebuild((b) => b..user.replace(action.user)), + userCompany!.rebuild((b) => b..user.replace(action.user)), ), - TypedReducer( + TypedReducer( (userCompany, action) => - userCompany.rebuild((b) => b..user.replace(action.user)), + userCompany!.rebuild((b) => b..user.replace(action.user)), ), - TypedReducer( + TypedReducer( (userCompany, action) => - userCompany.rebuild((b) => b..user.isTwoFactorEnabled = false), + userCompany!.rebuild((b) => b..user.isTwoFactorEnabled = false), ), - TypedReducer( - (userCompany, action) => userCompany - .rebuild((b) => b..settings.replace(action.userCompany.settings))), - TypedReducer( - (userCompany, action) => userCompany + TypedReducer( + (userCompany, action) => userCompany! + .rebuild((b) => b..settings.replace(action.userCompany.settings!))), + TypedReducer( + (userCompany, action) => userCompany! .rebuild((b) => b..company.settings.languageId = action.languageId), ), - TypedReducer( - (userCompany, action) => userCompany.rebuild( - (b) => b..settings.dashboardFields.replace(action.dashboardFields)), + TypedReducer( + (userCompany, action) => userCompany!.rebuild( + (b) => b..settings.dashboardFields.replace(action.dashboardFields!)), ), - TypedReducer( + TypedReducer( (userCompany, action) { if (action.numberFieldsPerRowDesktop != null) { - return userCompany.rebuild((b) => b + return userCompany!.rebuild((b) => b ..settings.dashboardFieldsPerRowDesktop = action.numberFieldsPerRowDesktop); } else if (action.numberFieldsPerRowMobile != null) { - return userCompany.rebuild((b) => b + return userCompany!.rebuild((b) => b ..settings.dashboardFieldsPerRowMobile = action.numberFieldsPerRowMobile); } @@ -191,7 +191,7 @@ Reducer userCompanyEntityReducer = combineReducers([ ]); UserCompanyEntity loadCompanySuccessReducer( - UserCompanyEntity company, LoadCompanySuccess action) { + UserCompanyEntity? company, LoadCompanySuccess action) { var userCompany = action.userCompany; // Check user has a blank user settings object @@ -236,28 +236,28 @@ UserCompanyEntity loadCompanySuccessReducer( // clear all sub-data userCompany = userCompany - .rebuild((b) => b..company.replace(userCompany.company.coreCompany)); + .rebuild((b) => b..company.replace(userCompany.company!.coreCompany)); return userCompany; } UserCompanyEntity saveCompanySuccessReducer( - UserCompanyEntity userCompany, SaveCompanySuccess action) { + UserCompanyEntity? userCompany, SaveCompanySuccess action) { final company = action.company.rebuild((b) => b - ..taxRates.replace(userCompany.company.taxRates) - ..taskStatuses.replace(userCompany.company.taskStatuses) - ..taskStatusMap.replace(userCompany.company.taskStatusMap) - ..expenseCategories.replace(userCompany.company.expenseCategories) - ..users.replace(userCompany.company.users)); + ..taxRates.replace(userCompany!.company!.taxRates) + ..taskStatuses.replace(userCompany.company!.taskStatuses) + ..taskStatusMap.replace(userCompany.company!.taskStatusMap) + ..expenseCategories.replace(userCompany.company!.expenseCategories) + ..users.replace(userCompany.company!.users)); - userCompany = userCompany.rebuild((b) => b..company.replace(company)); + userCompany = userCompany!.rebuild((b) => b..company.replace(company)); return userCompany; } Reducer lastUpdatedReducer = combineReducers([ TypedReducer((state, action) { - return action.userCompany.company.isLarge && state == 0 + return action.userCompany.company!.isLarge && state == 0 ? 0 : DateTime.now().millisecondsSinceEpoch; }), diff --git a/lib/redux/company/company_selectors.dart b/lib/redux/company/company_selectors.dart index 5427dfbd2..9e9c1bb1c 100644 --- a/lib/redux/company/company_selectors.dart +++ b/lib/redux/company/company_selectors.dart @@ -10,19 +10,19 @@ import 'package:invoiceninja_flutter/redux/app/app_state.dart'; import 'package:invoiceninja_flutter/redux/company/company_state.dart'; var memoizedDropdownExpenseCategoriesList = memo2( - (BuiltMap categoryMap, + (BuiltMap categoryMap, BuiltList categoryList) => dropdownExpenseCategoriesSelector(categoryMap, categoryList)); List dropdownExpenseCategoriesSelector( - BuiltMap categoryMap, + BuiltMap categoryMap, BuiltList categoryList) { final list = categoryList - .where((categoryId) => categoryMap[categoryId].isActive) + .where((categoryId) => categoryMap[categoryId]!.isActive) .toList(); list.sort((categoryAId, categoryBId) { - final categoryA = categoryMap[categoryAId]; + final categoryA = categoryMap[categoryAId]!; final categoryB = categoryMap[categoryBId]; return categoryA.compareTo( expenseCategory: categoryB, @@ -33,31 +33,31 @@ List dropdownExpenseCategoriesSelector( return list; } -var memoizedHasMultipleCurrencies = memo3((CompanyEntity company, - BuiltMap clientMap, - BuiltMap groupMap) => +var memoizedHasMultipleCurrencies = memo3((CompanyEntity? company, + BuiltMap clientMap, + BuiltMap groupMap) => hasMultipleCurrencies(company, clientMap, groupMap)); bool hasMultipleCurrencies( - CompanyEntity company, - BuiltMap clientMap, - BuiltMap groupMap) => + CompanyEntity? company, + BuiltMap clientMap, + BuiltMap groupMap) => memoizedGetCurrencyIds(company, clientMap, groupMap).length > 1; -var memoizedGetCurrencyIds = memo3((CompanyEntity company, - BuiltMap clientMap, - BuiltMap groupMap) => - getCurrencyIds(company, clientMap, groupMap)); +var memoizedGetCurrencyIds = memo3((CompanyEntity? company, + BuiltMap clientMap, + BuiltMap groupMap) => + getCurrencyIds(company!, clientMap, groupMap)); List getCurrencyIds( CompanyEntity company, - BuiltMap clientMap, - BuiltMap groupMap) { + BuiltMap clientMap, + BuiltMap groupMap) { final currencyIds = [company.currencyId]; clientMap.forEach((clientId, client) { - final group = groupMap[client.groupId]; - if (!client.isDeleted) { - String currencyId; + final group = groupMap[client!.groupId]; + if (!client.isDeleted!) { + String? currencyId; if (client.hasCurrency) { currencyId = client.currencyId; } else if (group != null && group.hasCurrency) { @@ -79,48 +79,48 @@ List getCurrencyIds( } var memoizedFilteredSelector = memo2( - (String filter, UserCompanyState state) => filteredSelector(filter, state)); + (String? filter, UserCompanyState state) => filteredSelector(filter, state)); -List filteredSelector(String filter, UserCompanyState state) { - final List list = [] +List filteredSelector(String? filter, UserCompanyState state) { + final List list = [] ..addAll(state.productState.list .map((productId) => state.productState.map[productId]) .where((product) { - return product.matchesFilter(filter); + return product!.matchesFilter(filter); }).toList()) ..addAll(state.clientState.list .map((clientId) => state.clientState.map[clientId]) .where((client) { - return client.matchesFilter(filter); + return client!.matchesFilter(filter); }).toList()) ..addAll(state.quoteState.list .map((quoteId) => state.quoteState.map[quoteId]) .where((quote) { - return quote.matchesFilter(filter); + return quote!.matchesFilter(filter); }).toList()) ..addAll(state.paymentState.list .map((paymentId) => state.paymentState.map[paymentId]) .where((payment) { - return payment.matchesFilter(filter); + return payment!.matchesFilter(filter); }).toList()) ..addAll(state.projectState.list .map((projectId) => state.projectState.map[projectId]) .where((project) { - return project.matchesFilter(filter); + return project!.matchesFilter(filter); }).toList()) ..addAll(state.taskState.list .map((taskId) => state.taskState.map[taskId]) .where((task) { - return task.matchesFilter(filter); + return task!.matchesFilter(filter); }).toList()) ..addAll(state.invoiceState.list .map((invoiceId) => state.invoiceState.map[invoiceId]) .where((invoice) { - return invoice.matchesFilter(filter); + return invoice!.matchesFilter(filter); }).toList()); - list.sort((BaseEntity entityA, BaseEntity entityB) { - return entityA.listDisplayName.compareTo(entityB.listDisplayName); + list.sort((BaseEntity? entityA, BaseEntity? entityB) { + return entityA!.listDisplayName!.compareTo(entityB!.listDisplayName!); }); return list; @@ -145,12 +145,12 @@ String clientPortalUrlSelector(AppState state, {String route = 'login'}) { String url; final account = state.account; - final company = state.company; + final company = state.company!; if (company.portalMode == kClientPortalModeDomain) { url = company.portalDomain; } else { - url = account.defaultUrl; + url = account!.defaultUrl; if (state.isHosted) { url = url.replaceFirst('//', '//${company.subdomain}.'); @@ -161,7 +161,7 @@ String clientPortalUrlSelector(AppState state, {String route = 'login'}) { if (state.isSelfHosted && state.companies.length > 1 && - company.id != account.defaultCompanyId) { + company.id != account!.defaultCompanyId) { url += '/' + company.companyKey; } diff --git a/lib/redux/company/company_state.dart b/lib/redux/company/company_state.dart index 85ebc9aa6..efa42a17a 100644 --- a/lib/redux/company/company_state.dart +++ b/lib/redux/company/company_state.dart @@ -88,8 +88,7 @@ abstract class UserCompanyState int get lastUpdated; - @nullable - UserCompanyEntity get userCompany; + UserCompanyEntity? get userCompany; DocumentState get documentState; @@ -150,11 +149,11 @@ abstract class UserCompanyState GroupState get groupState; - CompanyEntity get company => userCompany.company; + CompanyEntity? get company => userCompany!.company; - UserEntity get user => userCompany.user; + UserEntity? get user => userCompany!.user; - TokenEntity get token => userCompany.token; + TokenEntity? get token => userCompany!.token; bool get isStale { if (!isLoaded) { diff --git a/lib/redux/company/company_state.g.dart b/lib/redux/company/company_state.g.dart index d17c43616..041285e1b 100644 --- a/lib/redux/company/company_state.g.dart +++ b/lib/redux/company/company_state.g.dart @@ -17,9 +17,9 @@ class _$UserCompanyStateSerializer final String wireName = 'UserCompanyState'; @override - Iterable serialize(Serializers serializers, UserCompanyState object, + Iterable serialize(Serializers serializers, UserCompanyState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'lastUpdated', serializers.serialize(object.lastUpdated, specifiedType: const FullType(int)), @@ -111,7 +111,7 @@ class _$UserCompanyStateSerializer serializers.serialize(object.groupState, specifiedType: const FullType(GroupState)), ]; - Object value; + Object? value; value = object.userCompany; if (value != null) { result @@ -124,151 +124,151 @@ class _$UserCompanyStateSerializer @override UserCompanyState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new UserCompanyStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'lastUpdated': result.lastUpdated = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'userCompany': result.userCompany.replace(serializers.deserialize(value, - specifiedType: const FullType(UserCompanyEntity)) + specifiedType: const FullType(UserCompanyEntity))! as UserCompanyEntity); break; case 'documentState': result.documentState.replace(serializers.deserialize(value, - specifiedType: const FullType(DocumentState)) as DocumentState); + specifiedType: const FullType(DocumentState))! as DocumentState); break; case 'productState': result.productState.replace(serializers.deserialize(value, - specifiedType: const FullType(ProductState)) as ProductState); + specifiedType: const FullType(ProductState))! as ProductState); break; case 'clientState': result.clientState.replace(serializers.deserialize(value, - specifiedType: const FullType(ClientState)) as ClientState); + specifiedType: const FullType(ClientState))! as ClientState); break; case 'invoiceState': result.invoiceState.replace(serializers.deserialize(value, - specifiedType: const FullType(InvoiceState)) as InvoiceState); + specifiedType: const FullType(InvoiceState))! as InvoiceState); break; case 'expenseState': result.expenseState.replace(serializers.deserialize(value, - specifiedType: const FullType(ExpenseState)) as ExpenseState); + specifiedType: const FullType(ExpenseState))! as ExpenseState); break; case 'vendorState': result.vendorState.replace(serializers.deserialize(value, - specifiedType: const FullType(VendorState)) as VendorState); + specifiedType: const FullType(VendorState))! as VendorState); break; case 'taskState': result.taskState.replace(serializers.deserialize(value, - specifiedType: const FullType(TaskState)) as TaskState); + specifiedType: const FullType(TaskState))! as TaskState); break; case 'projectState': result.projectState.replace(serializers.deserialize(value, - specifiedType: const FullType(ProjectState)) as ProjectState); + specifiedType: const FullType(ProjectState))! as ProjectState); break; case 'paymentState': result.paymentState.replace(serializers.deserialize(value, - specifiedType: const FullType(PaymentState)) as PaymentState); + specifiedType: const FullType(PaymentState))! as PaymentState); break; case 'quoteState': result.quoteState.replace(serializers.deserialize(value, - specifiedType: const FullType(QuoteState)) as QuoteState); + specifiedType: const FullType(QuoteState))! as QuoteState); break; case 'scheduleState': result.scheduleState.replace(serializers.deserialize(value, - specifiedType: const FullType(ScheduleState)) as ScheduleState); + specifiedType: const FullType(ScheduleState))! as ScheduleState); break; case 'transactionRuleState': result.transactionRuleState.replace(serializers.deserialize(value, - specifiedType: const FullType(TransactionRuleState)) + specifiedType: const FullType(TransactionRuleState))! as TransactionRuleState); break; case 'transactionState': result.transactionState.replace(serializers.deserialize(value, - specifiedType: const FullType(TransactionState)) + specifiedType: const FullType(TransactionState))! as TransactionState); break; case 'bankAccountState': result.bankAccountState.replace(serializers.deserialize(value, - specifiedType: const FullType(BankAccountState)) + specifiedType: const FullType(BankAccountState))! as BankAccountState); break; case 'purchaseOrderState': result.purchaseOrderState.replace(serializers.deserialize(value, - specifiedType: const FullType(PurchaseOrderState)) + specifiedType: const FullType(PurchaseOrderState))! as PurchaseOrderState); break; case 'recurringExpenseState': result.recurringExpenseState.replace(serializers.deserialize(value, - specifiedType: const FullType(RecurringExpenseState)) + specifiedType: const FullType(RecurringExpenseState))! as RecurringExpenseState); break; case 'subscriptionState': result.subscriptionState.replace(serializers.deserialize(value, - specifiedType: const FullType(SubscriptionState)) + specifiedType: const FullType(SubscriptionState))! as SubscriptionState); break; case 'taskStatusState': result.taskStatusState.replace(serializers.deserialize(value, - specifiedType: const FullType(TaskStatusState)) + specifiedType: const FullType(TaskStatusState))! as TaskStatusState); break; case 'expenseCategoryState': result.expenseCategoryState.replace(serializers.deserialize(value, - specifiedType: const FullType(ExpenseCategoryState)) + specifiedType: const FullType(ExpenseCategoryState))! as ExpenseCategoryState); break; case 'recurringInvoiceState': result.recurringInvoiceState.replace(serializers.deserialize(value, - specifiedType: const FullType(RecurringInvoiceState)) + specifiedType: const FullType(RecurringInvoiceState))! as RecurringInvoiceState); break; case 'webhookState': result.webhookState.replace(serializers.deserialize(value, - specifiedType: const FullType(WebhookState)) as WebhookState); + specifiedType: const FullType(WebhookState))! as WebhookState); break; case 'tokenState': result.tokenState.replace(serializers.deserialize(value, - specifiedType: const FullType(TokenState)) as TokenState); + specifiedType: const FullType(TokenState))! as TokenState); break; case 'paymentTermState': result.paymentTermState.replace(serializers.deserialize(value, - specifiedType: const FullType(PaymentTermState)) + specifiedType: const FullType(PaymentTermState))! as PaymentTermState); break; case 'designState': result.designState.replace(serializers.deserialize(value, - specifiedType: const FullType(DesignState)) as DesignState); + specifiedType: const FullType(DesignState))! as DesignState); break; case 'creditState': result.creditState.replace(serializers.deserialize(value, - specifiedType: const FullType(CreditState)) as CreditState); + specifiedType: const FullType(CreditState))! as CreditState); break; case 'userState': result.userState.replace(serializers.deserialize(value, - specifiedType: const FullType(UserState)) as UserState); + specifiedType: const FullType(UserState))! as UserState); break; case 'taxRateState': result.taxRateState.replace(serializers.deserialize(value, - specifiedType: const FullType(TaxRateState)) as TaxRateState); + specifiedType: const FullType(TaxRateState))! as TaxRateState); break; case 'companyGatewayState': result.companyGatewayState.replace(serializers.deserialize(value, - specifiedType: const FullType(CompanyGatewayState)) + specifiedType: const FullType(CompanyGatewayState))! as CompanyGatewayState); break; case 'groupState': result.groupState.replace(serializers.deserialize(value, - specifiedType: const FullType(GroupState)) as GroupState); + specifiedType: const FullType(GroupState))! as GroupState); break; } } @@ -281,7 +281,7 @@ class _$UserCompanyState extends UserCompanyState { @override final int lastUpdated; @override - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; @override final DocumentState documentState; @override @@ -342,41 +342,41 @@ class _$UserCompanyState extends UserCompanyState { final GroupState groupState; factory _$UserCompanyState( - [void Function(UserCompanyStateBuilder) updates]) => + [void Function(UserCompanyStateBuilder)? updates]) => (new UserCompanyStateBuilder()..update(updates))._build(); _$UserCompanyState._( - {this.lastUpdated, + {required this.lastUpdated, this.userCompany, - this.documentState, - this.productState, - this.clientState, - this.invoiceState, - this.expenseState, - this.vendorState, - this.taskState, - this.projectState, - this.paymentState, - this.quoteState, - this.scheduleState, - this.transactionRuleState, - this.transactionState, - this.bankAccountState, - this.purchaseOrderState, - this.recurringExpenseState, - this.subscriptionState, - this.taskStatusState, - this.expenseCategoryState, - this.recurringInvoiceState, - this.webhookState, - this.tokenState, - this.paymentTermState, - this.designState, - this.creditState, - this.userState, - this.taxRateState, - this.companyGatewayState, - this.groupState}) + required this.documentState, + required this.productState, + required this.clientState, + required this.invoiceState, + required this.expenseState, + required this.vendorState, + required this.taskState, + required this.projectState, + required this.paymentState, + required this.quoteState, + required this.scheduleState, + required this.transactionRuleState, + required this.transactionState, + required this.bankAccountState, + required this.purchaseOrderState, + required this.recurringExpenseState, + required this.subscriptionState, + required this.taskStatusState, + required this.expenseCategoryState, + required this.recurringInvoiceState, + required this.webhookState, + required this.tokenState, + required this.paymentTermState, + required this.designState, + required this.creditState, + required this.userState, + required this.taxRateState, + required this.companyGatewayState, + required this.groupState}) : super._() { BuiltValueNullFieldError.checkNotNull( lastUpdated, r'UserCompanyState', 'lastUpdated'); @@ -485,10 +485,10 @@ class _$UserCompanyState extends UserCompanyState { groupState == other.groupState; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, lastUpdated.hashCode); _$hash = $jc(_$hash, userCompany.hashCode); @@ -565,190 +565,190 @@ class _$UserCompanyState extends UserCompanyState { class UserCompanyStateBuilder implements Builder { - _$UserCompanyState _$v; + _$UserCompanyState? _$v; - int _lastUpdated; - int get lastUpdated => _$this._lastUpdated; - set lastUpdated(int lastUpdated) => _$this._lastUpdated = lastUpdated; + int? _lastUpdated; + int? get lastUpdated => _$this._lastUpdated; + set lastUpdated(int? lastUpdated) => _$this._lastUpdated = lastUpdated; - UserCompanyEntityBuilder _userCompany; + UserCompanyEntityBuilder? _userCompany; UserCompanyEntityBuilder get userCompany => _$this._userCompany ??= new UserCompanyEntityBuilder(); - set userCompany(UserCompanyEntityBuilder userCompany) => + set userCompany(UserCompanyEntityBuilder? userCompany) => _$this._userCompany = userCompany; - DocumentStateBuilder _documentState; + DocumentStateBuilder? _documentState; DocumentStateBuilder get documentState => _$this._documentState ??= new DocumentStateBuilder(); - set documentState(DocumentStateBuilder documentState) => + set documentState(DocumentStateBuilder? documentState) => _$this._documentState = documentState; - ProductStateBuilder _productState; + ProductStateBuilder? _productState; ProductStateBuilder get productState => _$this._productState ??= new ProductStateBuilder(); - set productState(ProductStateBuilder productState) => + set productState(ProductStateBuilder? productState) => _$this._productState = productState; - ClientStateBuilder _clientState; + ClientStateBuilder? _clientState; ClientStateBuilder get clientState => _$this._clientState ??= new ClientStateBuilder(); - set clientState(ClientStateBuilder clientState) => + set clientState(ClientStateBuilder? clientState) => _$this._clientState = clientState; - InvoiceStateBuilder _invoiceState; + InvoiceStateBuilder? _invoiceState; InvoiceStateBuilder get invoiceState => _$this._invoiceState ??= new InvoiceStateBuilder(); - set invoiceState(InvoiceStateBuilder invoiceState) => + set invoiceState(InvoiceStateBuilder? invoiceState) => _$this._invoiceState = invoiceState; - ExpenseStateBuilder _expenseState; + ExpenseStateBuilder? _expenseState; ExpenseStateBuilder get expenseState => _$this._expenseState ??= new ExpenseStateBuilder(); - set expenseState(ExpenseStateBuilder expenseState) => + set expenseState(ExpenseStateBuilder? expenseState) => _$this._expenseState = expenseState; - VendorStateBuilder _vendorState; + VendorStateBuilder? _vendorState; VendorStateBuilder get vendorState => _$this._vendorState ??= new VendorStateBuilder(); - set vendorState(VendorStateBuilder vendorState) => + set vendorState(VendorStateBuilder? vendorState) => _$this._vendorState = vendorState; - TaskStateBuilder _taskState; + TaskStateBuilder? _taskState; TaskStateBuilder get taskState => _$this._taskState ??= new TaskStateBuilder(); - set taskState(TaskStateBuilder taskState) => _$this._taskState = taskState; + set taskState(TaskStateBuilder? taskState) => _$this._taskState = taskState; - ProjectStateBuilder _projectState; + ProjectStateBuilder? _projectState; ProjectStateBuilder get projectState => _$this._projectState ??= new ProjectStateBuilder(); - set projectState(ProjectStateBuilder projectState) => + set projectState(ProjectStateBuilder? projectState) => _$this._projectState = projectState; - PaymentStateBuilder _paymentState; + PaymentStateBuilder? _paymentState; PaymentStateBuilder get paymentState => _$this._paymentState ??= new PaymentStateBuilder(); - set paymentState(PaymentStateBuilder paymentState) => + set paymentState(PaymentStateBuilder? paymentState) => _$this._paymentState = paymentState; - QuoteStateBuilder _quoteState; + QuoteStateBuilder? _quoteState; QuoteStateBuilder get quoteState => _$this._quoteState ??= new QuoteStateBuilder(); - set quoteState(QuoteStateBuilder quoteState) => + set quoteState(QuoteStateBuilder? quoteState) => _$this._quoteState = quoteState; - ScheduleStateBuilder _scheduleState; + ScheduleStateBuilder? _scheduleState; ScheduleStateBuilder get scheduleState => _$this._scheduleState ??= new ScheduleStateBuilder(); - set scheduleState(ScheduleStateBuilder scheduleState) => + set scheduleState(ScheduleStateBuilder? scheduleState) => _$this._scheduleState = scheduleState; - TransactionRuleStateBuilder _transactionRuleState; + TransactionRuleStateBuilder? _transactionRuleState; TransactionRuleStateBuilder get transactionRuleState => _$this._transactionRuleState ??= new TransactionRuleStateBuilder(); - set transactionRuleState(TransactionRuleStateBuilder transactionRuleState) => + set transactionRuleState(TransactionRuleStateBuilder? transactionRuleState) => _$this._transactionRuleState = transactionRuleState; - TransactionStateBuilder _transactionState; + TransactionStateBuilder? _transactionState; TransactionStateBuilder get transactionState => _$this._transactionState ??= new TransactionStateBuilder(); - set transactionState(TransactionStateBuilder transactionState) => + set transactionState(TransactionStateBuilder? transactionState) => _$this._transactionState = transactionState; - BankAccountStateBuilder _bankAccountState; + BankAccountStateBuilder? _bankAccountState; BankAccountStateBuilder get bankAccountState => _$this._bankAccountState ??= new BankAccountStateBuilder(); - set bankAccountState(BankAccountStateBuilder bankAccountState) => + set bankAccountState(BankAccountStateBuilder? bankAccountState) => _$this._bankAccountState = bankAccountState; - PurchaseOrderStateBuilder _purchaseOrderState; + PurchaseOrderStateBuilder? _purchaseOrderState; PurchaseOrderStateBuilder get purchaseOrderState => _$this._purchaseOrderState ??= new PurchaseOrderStateBuilder(); - set purchaseOrderState(PurchaseOrderStateBuilder purchaseOrderState) => + set purchaseOrderState(PurchaseOrderStateBuilder? purchaseOrderState) => _$this._purchaseOrderState = purchaseOrderState; - RecurringExpenseStateBuilder _recurringExpenseState; + RecurringExpenseStateBuilder? _recurringExpenseState; RecurringExpenseStateBuilder get recurringExpenseState => _$this._recurringExpenseState ??= new RecurringExpenseStateBuilder(); set recurringExpenseState( - RecurringExpenseStateBuilder recurringExpenseState) => + RecurringExpenseStateBuilder? recurringExpenseState) => _$this._recurringExpenseState = recurringExpenseState; - SubscriptionStateBuilder _subscriptionState; + SubscriptionStateBuilder? _subscriptionState; SubscriptionStateBuilder get subscriptionState => _$this._subscriptionState ??= new SubscriptionStateBuilder(); - set subscriptionState(SubscriptionStateBuilder subscriptionState) => + set subscriptionState(SubscriptionStateBuilder? subscriptionState) => _$this._subscriptionState = subscriptionState; - TaskStatusStateBuilder _taskStatusState; + TaskStatusStateBuilder? _taskStatusState; TaskStatusStateBuilder get taskStatusState => _$this._taskStatusState ??= new TaskStatusStateBuilder(); - set taskStatusState(TaskStatusStateBuilder taskStatusState) => + set taskStatusState(TaskStatusStateBuilder? taskStatusState) => _$this._taskStatusState = taskStatusState; - ExpenseCategoryStateBuilder _expenseCategoryState; + ExpenseCategoryStateBuilder? _expenseCategoryState; ExpenseCategoryStateBuilder get expenseCategoryState => _$this._expenseCategoryState ??= new ExpenseCategoryStateBuilder(); - set expenseCategoryState(ExpenseCategoryStateBuilder expenseCategoryState) => + set expenseCategoryState(ExpenseCategoryStateBuilder? expenseCategoryState) => _$this._expenseCategoryState = expenseCategoryState; - RecurringInvoiceStateBuilder _recurringInvoiceState; + RecurringInvoiceStateBuilder? _recurringInvoiceState; RecurringInvoiceStateBuilder get recurringInvoiceState => _$this._recurringInvoiceState ??= new RecurringInvoiceStateBuilder(); set recurringInvoiceState( - RecurringInvoiceStateBuilder recurringInvoiceState) => + RecurringInvoiceStateBuilder? recurringInvoiceState) => _$this._recurringInvoiceState = recurringInvoiceState; - WebhookStateBuilder _webhookState; + WebhookStateBuilder? _webhookState; WebhookStateBuilder get webhookState => _$this._webhookState ??= new WebhookStateBuilder(); - set webhookState(WebhookStateBuilder webhookState) => + set webhookState(WebhookStateBuilder? webhookState) => _$this._webhookState = webhookState; - TokenStateBuilder _tokenState; + TokenStateBuilder? _tokenState; TokenStateBuilder get tokenState => _$this._tokenState ??= new TokenStateBuilder(); - set tokenState(TokenStateBuilder tokenState) => + set tokenState(TokenStateBuilder? tokenState) => _$this._tokenState = tokenState; - PaymentTermStateBuilder _paymentTermState; + PaymentTermStateBuilder? _paymentTermState; PaymentTermStateBuilder get paymentTermState => _$this._paymentTermState ??= new PaymentTermStateBuilder(); - set paymentTermState(PaymentTermStateBuilder paymentTermState) => + set paymentTermState(PaymentTermStateBuilder? paymentTermState) => _$this._paymentTermState = paymentTermState; - DesignStateBuilder _designState; + DesignStateBuilder? _designState; DesignStateBuilder get designState => _$this._designState ??= new DesignStateBuilder(); - set designState(DesignStateBuilder designState) => + set designState(DesignStateBuilder? designState) => _$this._designState = designState; - CreditStateBuilder _creditState; + CreditStateBuilder? _creditState; CreditStateBuilder get creditState => _$this._creditState ??= new CreditStateBuilder(); - set creditState(CreditStateBuilder creditState) => + set creditState(CreditStateBuilder? creditState) => _$this._creditState = creditState; - UserStateBuilder _userState; + UserStateBuilder? _userState; UserStateBuilder get userState => _$this._userState ??= new UserStateBuilder(); - set userState(UserStateBuilder userState) => _$this._userState = userState; + set userState(UserStateBuilder? userState) => _$this._userState = userState; - TaxRateStateBuilder _taxRateState; + TaxRateStateBuilder? _taxRateState; TaxRateStateBuilder get taxRateState => _$this._taxRateState ??= new TaxRateStateBuilder(); - set taxRateState(TaxRateStateBuilder taxRateState) => + set taxRateState(TaxRateStateBuilder? taxRateState) => _$this._taxRateState = taxRateState; - CompanyGatewayStateBuilder _companyGatewayState; + CompanyGatewayStateBuilder? _companyGatewayState; CompanyGatewayStateBuilder get companyGatewayState => _$this._companyGatewayState ??= new CompanyGatewayStateBuilder(); - set companyGatewayState(CompanyGatewayStateBuilder companyGatewayState) => + set companyGatewayState(CompanyGatewayStateBuilder? companyGatewayState) => _$this._companyGatewayState = companyGatewayState; - GroupStateBuilder _groupState; + GroupStateBuilder? _groupState; GroupStateBuilder get groupState => _$this._groupState ??= new GroupStateBuilder(); - set groupState(GroupStateBuilder groupState) => + set groupState(GroupStateBuilder? groupState) => _$this._groupState = groupState; UserCompanyStateBuilder(); @@ -799,7 +799,7 @@ class UserCompanyStateBuilder } @override - void update(void Function(UserCompanyStateBuilder) updates) { + void update(void Function(UserCompanyStateBuilder)? updates) { if (updates != null) updates(this); } @@ -844,7 +844,7 @@ class UserCompanyStateBuilder companyGatewayState: companyGatewayState.build(), groupState: groupState.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'userCompany'; _userCompany?.build(); diff --git a/lib/redux/company_gateway/company_gateway_actions.dart b/lib/redux/company_gateway/company_gateway_actions.dart index b8e6a50ab..767361db1 100644 --- a/lib/redux/company_gateway/company_gateway_actions.dart +++ b/lib/redux/company_gateway/company_gateway_actions.dart @@ -26,20 +26,20 @@ class ViewCompanyGatewayList implements PersistUI { class ViewCompanyGateway implements PersistUI, PersistPrefs { ViewCompanyGateway({ - @required this.companyGatewayId, + required this.companyGatewayId, this.force = false, }); - final String companyGatewayId; + final String? companyGatewayId; final bool force; } class EditCompanyGateway implements PersistUI, PersistPrefs { EditCompanyGateway( - {@required this.companyGateway, this.completer, this.force = false}); + {required this.companyGateway, this.completer, this.force = false}); final CompanyGatewayEntity companyGateway; - final Completer completer; + final Completer? completer; final bool force; } @@ -52,21 +52,21 @@ class UpdateCompanyGateway implements PersistUI { class LoadCompanyGateway { LoadCompanyGateway({this.completer, this.companyGatewayId}); - final Completer completer; - final String companyGatewayId; + final Completer? completer; + final String? companyGatewayId; } class LoadCompanyGatewayActivity { LoadCompanyGatewayActivity({this.completer, this.companyGatewayId}); - final Completer completer; - final String companyGatewayId; + final Completer? completer; + final String? companyGatewayId; } class LoadCompanyGateways { LoadCompanyGateways({this.completer}); - final Completer completer; + final Completer? completer; } class LoadCompanyGatewayRequest implements StartLoading {} @@ -120,8 +120,8 @@ class LoadCompanyGatewaysSuccess implements StopLoading { class SaveCompanyGatewayRequest implements StartSaving { SaveCompanyGatewayRequest({this.completer, this.companyGateway}); - final Completer completer; - final CompanyGatewayEntity companyGateway; + final Completer? completer; + final CompanyGatewayEntity? companyGateway; } class SaveCompanyGatewaySuccess implements StopSaving, PersistData, PersistUI { @@ -158,7 +158,7 @@ class ArchiveCompanyGatewaySuccess implements StopSaving, PersistData { class ArchiveCompanyGatewayFailure implements StopSaving { ArchiveCompanyGatewayFailure(this.companyGateways); - final List companyGateways; + final List companyGateways; } class DeleteCompanyGatewayRequest implements StartSaving { @@ -177,21 +177,21 @@ class DeleteCompanyGatewaySuccess implements StopSaving, PersistData { class DeleteCompanyGatewayFailure implements StopSaving { DeleteCompanyGatewayFailure(this.companyGateways); - final List companyGateways; + final List companyGateways; } class DisconnectCompanyGatewayRequest implements StartSaving { DisconnectCompanyGatewayRequest({ - @required this.completer, - @required this.companyGatewayId, - @required this.password, - @required this.idToken, + required this.completer, + required this.companyGatewayId, + required this.password, + required this.idToken, }); final Completer completer; final String companyGatewayId; - final String password; - final String idToken; + final String? password; + final String? idToken; } class DisconnectCompanyGatewaySuccess implements StopSaving, PersistData {} @@ -218,7 +218,7 @@ class RestoreCompanyGatewaySuccess implements StopSaving, PersistData { class RestoreCompanyGatewayFailure implements StopSaving { RestoreCompanyGatewayFailure(this.companyGateways); - final List companyGateways; + final List companyGateways; } class FilterCompanyGateways implements PersistUI { @@ -263,55 +263,55 @@ class FilterCompanyGatewaysByCustom4 implements PersistUI { final String value; } -void handleCompanyGatewayAction(BuildContext context, - List companyGateways, EntityAction action) { +void handleCompanyGatewayAction(BuildContext? context, + List companyGateways, EntityAction? action) { if (companyGateways.isEmpty) { return; } - final store = StoreProvider.of(context); + final store = StoreProvider.of(context!); final localization = AppLocalization.of(context); final companyGateway = companyGateways.first; final companyGatewayIds = - companyGateways.map((companyGateway) => companyGateway.id).toList(); + companyGateways.map((companyGateway) => companyGateway!.id).toList(); switch (action) { case EntityAction.edit: - editEntity(entity: companyGateway); + editEntity(entity: companyGateway!); break; case EntityAction.restore: final message = companyGatewayIds.length > 1 - ? localization.restoredCompanyGateways + ? localization!.restoredCompanyGateways .replaceFirst(':value', ':count') .replaceFirst(':count', companyGatewayIds.length.toString()) - : localization.restoredCompanyGateway; + : localization!.restoredCompanyGateway; store.dispatch(RestoreCompanyGatewayRequest( snackBarCompleter(context, message), companyGatewayIds)); break; case EntityAction.archive: final message = companyGatewayIds.length > 1 - ? localization.archivedCompanyGateways + ? localization!.archivedCompanyGateways .replaceFirst(':value', ':count') .replaceFirst(':count', companyGatewayIds.length.toString()) - : localization.archivedCompanyGateway; + : localization!.archivedCompanyGateway; store.dispatch(ArchiveCompanyGatewayRequest( snackBarCompleter(context, message), companyGatewayIds)); break; case EntityAction.delete: final message = companyGatewayIds.length > 1 - ? localization.deletedCompanyGateways + ? localization!.deletedCompanyGateways .replaceFirst(':value', ':count') .replaceFirst(':count', companyGatewayIds.length.toString()) - : localization.deletedCompanyGateway; + : localization!.deletedCompanyGateway; store.dispatch(DeleteCompanyGatewayRequest( snackBarCompleter(context, message), companyGatewayIds)); break; case EntityAction.disconnect: final completer = - snackBarCompleter(context, localization.disconnectedGateway); + snackBarCompleter(context, localization!.disconnectedGateway); completer.future.then((value) { store.dispatch(RefreshData()); - }); + } as FutureOr<_> Function(Null)); confirmCallback( context: context, callback: (_) { @@ -321,7 +321,7 @@ void handleCompanyGatewayAction(BuildContext context, store.dispatch( DisconnectCompanyGatewayRequest( completer: completer, - companyGatewayId: companyGateway.id, + companyGatewayId: companyGateway!.id, password: password, idToken: idToken, ), @@ -341,7 +341,7 @@ void handleCompanyGatewayAction(BuildContext context, for (final companyGateway in companyGateways) { if (!store.state.companyGatewayListState - .isSelected(companyGateway.id)) { + .isSelected(companyGateway!.id)) { store .dispatch(AddToCompanyGatewayMultiselect(entity: companyGateway)); } else { @@ -361,15 +361,15 @@ void handleCompanyGatewayAction(BuildContext context, class StartCompanyGatewayMultiselect {} class AddToCompanyGatewayMultiselect { - AddToCompanyGatewayMultiselect({@required this.entity}); + AddToCompanyGatewayMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class RemoveFromCompanyGatewayMultiselect { - RemoveFromCompanyGatewayMultiselect({@required this.entity}); + RemoveFromCompanyGatewayMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class ClearCompanyGatewayMultiselect {} diff --git a/lib/redux/company_gateway/company_gateway_middleware.dart b/lib/redux/company_gateway/company_gateway_middleware.dart index 1263e715e..1d66a539d 100644 --- a/lib/redux/company_gateway/company_gateway_middleware.dart +++ b/lib/redux/company_gateway/company_gateway_middleware.dart @@ -55,14 +55,14 @@ List> createStoreCompanyGatewaysMiddleware([ Middleware _editCompanyGateway() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as EditCompanyGateway; + final action = dynamicAction as EditCompanyGateway?; next(action); store.dispatch(UpdateCurrentRoute(CompanyGatewayEditScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(CompanyGatewayEditScreen.route); + navigatorKey.currentState!.pushNamed(CompanyGatewayEditScreen.route); } }; } @@ -70,21 +70,21 @@ Middleware _editCompanyGateway() { Middleware _viewCompanyGateway() { return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as ViewCompanyGateway; + final action = dynamicAction as ViewCompanyGateway?; next(action); store.dispatch(UpdateCurrentRoute(CompanyGatewayViewScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(CompanyGatewayViewScreen.route); + navigatorKey.currentState!.pushNamed(CompanyGatewayViewScreen.route); } }; } Middleware _viewCompanyGatewayList() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as ViewCompanyGatewayList; + final action = dynamicAction as ViewCompanyGatewayList?; next(action); @@ -95,7 +95,7 @@ Middleware _viewCompanyGatewayList() { store.dispatch(UpdateCurrentRoute(CompanyGatewayScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamedAndRemoveUntil( + navigatorKey.currentState!.pushNamedAndRemoveUntil( CompanyGatewayScreen.route, (Route route) => false); } }; @@ -212,14 +212,14 @@ Middleware _saveCompanyGateway(CompanyGatewayRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as SaveCompanyGatewayRequest; repository - .saveData(store.state.credentials, action.companyGateway) + .saveData(store.state.credentials, action.companyGateway!) .then((CompanyGatewayEntity companyGateway) { - if (action.companyGateway.isNew) { + if (action.companyGateway!.isNew) { store.dispatch(AddCompanyGatewaySuccess(companyGateway)); } else { store.dispatch(SaveCompanyGatewaySuccess(companyGateway)); } - action.completer.complete(companyGateway); + action.completer!.complete(companyGateway); }).catchError((Object error) { print(error); dev.log( @@ -229,7 +229,7 @@ Middleware _saveCompanyGateway(CompanyGatewayRepository repository) { error: error, ); store.dispatch(SaveCompanyGatewayFailure(error)); - action.completer.completeError(error); + action.completer!.completeError(error); }); next(action); @@ -248,13 +248,13 @@ Middleware _loadCompanyGateway(CompanyGatewayRepository repository) { store.dispatch(LoadCompanyGatewaySuccess(companyGateway)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(LoadCompanyGatewayFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -264,15 +264,15 @@ Middleware _loadCompanyGateway(CompanyGatewayRepository repository) { Middleware _loadCompanyGateways(CompanyGatewayRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as LoadCompanyGateways; + final action = dynamicAction as LoadCompanyGateways?; final AppState state = store.state; store.dispatch(LoadCompanyGatewaysRequest()); repository.loadList(state.credentials).then((data) { store.dispatch(LoadCompanyGatewaysSuccess(data)); - if (action.completer != null) { - action.completer.complete(null); + if (action!.completer != null) { + action.completer!.complete(null); } /* if (state.productState.isStale) { @@ -282,8 +282,8 @@ Middleware _loadCompanyGateways(CompanyGatewayRepository repository) { }).catchError((Object error) { print(error); store.dispatch(LoadCompanyGatewaysFailure(error)); - if (action.completer != null) { - action.completer.completeError(error); + if (action!.completer != null) { + action.completer!.completeError(error); } }); diff --git a/lib/redux/company_gateway/company_gateway_reducer.dart b/lib/redux/company_gateway/company_gateway_reducer.dart index 86c22f95d..223da1231 100644 --- a/lib/redux/company_gateway/company_gateway_reducer.dart +++ b/lib/redux/company_gateway/company_gateway_reducer.dart @@ -16,54 +16,54 @@ EntityUIState companyGatewayUIReducer( CompanyGatewayUIState state, dynamic action) { return state.rebuild((b) => b ..listUIState.replace(companyGatewayListReducer(state.listUIState, action)) - ..editing.replace(editingReducer(state.editing, action)) + ..editing.replace(editingReducer(state.editing, action)!) ..selectedId = selectedIdReducer(state.selectedId, action) ..forceSelected = forceSelectedReducer(state.forceSelected, action)); } -final forceSelectedReducer = combineReducers([ - TypedReducer((completer, action) => true), - TypedReducer((completer, action) => false), - TypedReducer( +final forceSelectedReducer = combineReducers([ + TypedReducer((completer, action) => true), + TypedReducer((completer, action) => false), + TypedReducer( (completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer( + TypedReducer((completer, action) => false), + TypedReducer( (completer, action) => false), - TypedReducer( + TypedReducer( (completer, action) => false), - TypedReducer( + TypedReducer( (completer, action) => false), - TypedReducer( + TypedReducer( (completer, action) => false), ]); -Reducer selectedIdReducer = combineReducers([ - TypedReducer((completer, action) => ''), - TypedReducer((completer, action) => ''), - TypedReducer((selectedId, action) => +Reducer selectedIdReducer = combineReducers([ + TypedReducer((completer, action) => ''), + TypedReducer((completer, action) => ''), + TypedReducer((selectedId, action) => action.entityType == EntityType.companyGateway ? action.entityId : selectedId), - TypedReducer( - (String selectedId, action) => action.companyGatewayId), - TypedReducer( - (String selectedId, action) => action.companyGateway.id), - TypedReducer( + TypedReducer( + (String? selectedId, action) => action.companyGatewayId), + TypedReducer( + (String? selectedId, action) => action.companyGateway.id), + TypedReducer( (selectedId, action) => action.clearSelection ? '' : selectedId), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer( + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer( (selectedId, action) => ''), - TypedReducer( + TypedReducer( (selectedId, action) => ''), - TypedReducer( + TypedReducer( (selectedId, action) => ''), - TypedReducer( + TypedReducer( (selectedId, action) => ''), - TypedReducer( + TypedReducer( (selectedId, action) => ''), - TypedReducer( + TypedReducer( (selectedId, action) => action.clearSelection ? '' : action.entityType == EntityType.companyGateway @@ -71,36 +71,36 @@ Reducer selectedIdReducer = combineReducers([ : selectedId), ]); -final editingReducer = combineReducers([ - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer( +final editingReducer = combineReducers([ + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer( (companyGateways, action) { return action.companyGateways[0]; }), - TypedReducer( + TypedReducer( (companyGateways, action) { return action.companyGateways[0]; }), - TypedReducer( + TypedReducer( (companyGateways, action) { return action.companyGateways[0]; }), - TypedReducer(_updateEditing), - TypedReducer( + TypedReducer(_updateEditing), + TypedReducer( (companyGateway, action) { return action.companyGateway.rebuild((b) => b..isChanged = true); }), - TypedReducer(_clearEditing), + TypedReducer(_clearEditing), ]); CompanyGatewayEntity _clearEditing( - CompanyGatewayEntity companyGateway, dynamic action) { + CompanyGatewayEntity? companyGateway, dynamic action) { return CompanyGatewayEntity(); } -CompanyGatewayEntity _updateEditing( - CompanyGatewayEntity companyGateway, dynamic action) { +CompanyGatewayEntity? _updateEditing( + CompanyGatewayEntity? companyGateway, dynamic action) { return action.companyGateway; } @@ -172,7 +172,7 @@ ListUIState _filterCompanyGateways( ListUIState _sortCompanyGateways( ListUIState companyGatewayListState, SortCompanyGateways action) { return companyGatewayListState.rebuild((b) => b - ..sortAscending = b.sortField != action.field || !b.sortAscending + ..sortAscending = b.sortField != action.field || !b.sortAscending! ..sortField = action.field); } @@ -183,13 +183,13 @@ ListUIState _startListMultiselect( ListUIState _addToListMultiselect( ListUIState productListState, AddToCompanyGatewayMultiselect action) { - return productListState.rebuild((b) => b..selectedIds.add(action.entity.id)); + return productListState.rebuild((b) => b..selectedIds.add(action.entity!.id)); } ListUIState _removeFromListMultiselect( ListUIState productListState, RemoveFromCompanyGatewayMultiselect action) { return productListState - .rebuild((b) => b..selectedIds.remove(action.entity.id)); + .rebuild((b) => b..selectedIds.remove(action.entity!.id)); } ListUIState _clearListMultiselect( @@ -271,7 +271,7 @@ CompanyGatewayState _setLoadedCompany( CompanyGatewayState companyGatewayState, LoadCompanySuccess action) { final state = companyGatewayState.rebuild((b) => b ..map.addAll(Map.fromIterable( - action.userCompany.company.companyGateways, + action.userCompany.company!.companyGateways, key: (dynamic item) => item.id, value: (dynamic item) => item, ))); diff --git a/lib/redux/company_gateway/company_gateway_selectors.dart b/lib/redux/company_gateway/company_gateway_selectors.dart index 0f5119078..21982dfec 100644 --- a/lib/redux/company_gateway/company_gateway_selectors.dart +++ b/lib/redux/company_gateway/company_gateway_selectors.dart @@ -22,7 +22,7 @@ List dropdownCompanyGatewaysSelector( BuiltList companyGatewayList, String clientId) { final list = companyGatewayList.where((companyGatewayId) { - final companyGateway = companyGatewayMap[companyGatewayId]; + final companyGateway = companyGatewayMap[companyGatewayId]!; /* if (clientId != null && clientId > 0 && companyGateway.clientId != clientId) { return false; @@ -32,7 +32,7 @@ List dropdownCompanyGatewaysSelector( }).toList(); list.sort((companyGatewayAId, companyGatewayBId) { - final companyGatewayA = companyGatewayMap[companyGatewayAId]; + final companyGatewayA = companyGatewayMap[companyGatewayAId]!; final companyGatewayB = companyGatewayMap[companyGatewayBId]; return companyGatewayA.compareTo( companyGatewayB, CompanyGatewayFields.name, true); @@ -42,22 +42,22 @@ List dropdownCompanyGatewaysSelector( } var memoizedFilteredCompanyGatewayList = memo5( - (BuiltMap companyGatewayMap, + (BuiltMap companyGatewayMap, BuiltList companyGatewayList, ListUIState companyGatewayListState, - String companyGatewayIds, + String? companyGatewayIds, bool includeAll) => filteredCompanyGatewaysSelector(companyGatewayMap, companyGatewayList, companyGatewayListState, companyGatewayIds, includeAll)); List filteredCompanyGatewaysSelector( - BuiltMap companyGatewayMap, + BuiltMap companyGatewayMap, BuiltList companyGatewayList, ListUIState companyGatewayListState, - String companyGatewayIds, + String? companyGatewayIds, bool includeAll) { final list = companyGatewayList.where((companyGatewayId) { - final companyGateway = companyGatewayMap[companyGatewayId]; + final companyGateway = companyGatewayMap[companyGatewayId]!; if (!companyGateway.matchesStates(companyGatewayListState.stateFilters)) { return false; @@ -71,7 +71,7 @@ List filteredCompanyGatewaysSelector( .where((id) => id.isNotEmpty && companyGatewayMap.containsKey(id) && - companyGatewayMap[id] + companyGatewayMap[id]! .matchesStates(companyGatewayListState.stateFilters)) .toList(); @@ -87,18 +87,18 @@ List filteredCompanyGatewaysSelector( } var memoizedCalculateCompanyGatewayProcessed = memo2( - (String companyGatewayId, BuiltMap paymentMap) => + (String companyGatewayId, BuiltMap paymentMap) => calculateCompanyGatewayProcessed( companyGatewayId: companyGatewayId, paymentMap: paymentMap)); double calculateCompanyGatewayProcessed({ - String companyGatewayId, - BuiltMap paymentMap, + String? companyGatewayId, + required BuiltMap paymentMap, }) { double total = 0; paymentMap.forEach((paymentId, payment) { - if (payment.companyGatewayId == companyGatewayId) { + if (payment!.companyGatewayId == companyGatewayId) { total += payment.completedAmount * payment.exchangeRate; } }); @@ -107,17 +107,17 @@ double calculateCompanyGatewayProcessed({ } var memoizedClientStatsForCompanyGateway = memo2( - (String companyGatewayId, BuiltMap clientMap) => + (String companyGatewayId, BuiltMap clientMap) => clientStatsForCompanyGateway(companyGatewayId, clientMap)); EntityStats clientStatsForCompanyGateway( String companyGatewayId, - BuiltMap clientMap, + BuiltMap clientMap, ) { int countActive = 0; int countArchived = 0; clientMap.forEach((clientId, client) { - if (client.gatewayTokens + if (client!.gatewayTokens .where((token) => token.companyGatewayId == companyGatewayId) .isNotEmpty) { if (client.isActive) { @@ -132,17 +132,17 @@ EntityStats clientStatsForCompanyGateway( } var memoizedPaymentStatsForCompanyGateway = memo2( - (String companyGatewayId, BuiltMap paymentMap) => + (String companyGatewayId, BuiltMap paymentMap) => paymentStatsForCompanyGateway(companyGatewayId, paymentMap)); EntityStats paymentStatsForCompanyGateway( String companyGatewayId, - BuiltMap paymentMap, + BuiltMap paymentMap, ) { int countActive = 0; int countArchived = 0; paymentMap.forEach((paymentId, payment) { - if (payment.companyGatewayId == companyGatewayId) { + if (payment!.companyGatewayId == companyGatewayId) { if (payment.isActive) { countActive++; } else if (payment.isArchived) { @@ -157,12 +157,12 @@ EntityStats paymentStatsForCompanyGateway( bool hasUnconnectedStripeAccount(AppState state) => getUnconnectedStripeAccount(state) != null; -CompanyGatewayEntity getUnconnectedStripeAccount(AppState state) { - CompanyGatewayEntity unconnectedGateway; +CompanyGatewayEntity? getUnconnectedStripeAccount(AppState state) { + CompanyGatewayEntity? unconnectedGateway; state.companyGatewayState.map.forEach((id, gateway) { - if (gateway.gatewayId == kGatewayStripeConnect && gateway.isActive) { - final accountId = (gateway.parsedConfig['account_id'] ?? '').toString(); + if (gateway!.gatewayId == kGatewayStripeConnect && gateway.isActive) { + final accountId = (gateway.parsedConfig!['account_id'] ?? '').toString(); if (accountId.isEmpty) { unconnectedGateway = gateway; } diff --git a/lib/redux/company_gateway/company_gateway_state.dart b/lib/redux/company_gateway/company_gateway_state.dart index 7011c7381..6bbb628c9 100644 --- a/lib/redux/company_gateway/company_gateway_state.dart +++ b/lib/redux/company_gateway/company_gateway_state.dart @@ -30,7 +30,7 @@ abstract class CompanyGatewayState @memoized int get hashCode; - CompanyGatewayEntity get(String companyGatewayId) { + CompanyGatewayEntity? get(String companyGatewayId) { if (map.containsKey(companyGatewayId)) { return map[companyGatewayId]; } else { @@ -38,7 +38,7 @@ abstract class CompanyGatewayState } } - BuiltMap get map; + BuiltMap get map; BuiltList get list; @@ -49,7 +49,7 @@ abstract class CompanyGatewayState abstract class CompanyGatewayUIState extends Object with EntityUIState implements Built { - factory CompanyGatewayUIState(PrefStateSortField sortField) { + factory CompanyGatewayUIState(PrefStateSortField? sortField) { return _$CompanyGatewayUIState._( listUIState: ListUIState(sortField?.field ?? CompanyGatewayFields.name, sortAscending: sortField?.ascending), @@ -65,14 +65,13 @@ abstract class CompanyGatewayUIState extends Object @memoized int get hashCode; - @nullable - CompanyGatewayEntity get editing; + CompanyGatewayEntity? get editing; @override - bool get isCreatingNew => editing.isNew; + bool get isCreatingNew => editing!.isNew; @override - String get editingId => editing.id; + String get editingId => editing!.id; static Serializer get serializer => _$companyGatewayUIStateSerializer; diff --git a/lib/redux/company_gateway/company_gateway_state.g.dart b/lib/redux/company_gateway/company_gateway_state.g.dart index f6de7a943..19ef9d92a 100644 --- a/lib/redux/company_gateway/company_gateway_state.g.dart +++ b/lib/redux/company_gateway/company_gateway_state.g.dart @@ -22,15 +22,15 @@ class _$CompanyGatewayStateSerializer final String wireName = 'CompanyGatewayState'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, CompanyGatewayState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'map', serializers.serialize(object.map, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(CompanyGatewayEntity) + const FullType.nullable(String), + const FullType.nullable(CompanyGatewayEntity) ])), 'list', serializers.serialize(object.list, @@ -43,28 +43,28 @@ class _$CompanyGatewayStateSerializer @override CompanyGatewayState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new CompanyGatewayStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'map': result.map.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(CompanyGatewayEntity) - ]))); + const FullType.nullable(String), + const FullType.nullable(CompanyGatewayEntity) + ]))!); break; case 'list': result.list.replace(serializers.deserialize(value, - specifiedType: - const FullType(BuiltList, const [const FullType(String)])) - as BuiltList); + specifiedType: const FullType( + BuiltList, const [const FullType(String)]))! + as BuiltList); break; } } @@ -84,10 +84,10 @@ class _$CompanyGatewayUIStateSerializer final String wireName = 'CompanyGatewayUIState'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, CompanyGatewayUIState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'listUIState', serializers.serialize(object.listUIState, specifiedType: const FullType(ListUIState)), @@ -95,7 +95,7 @@ class _$CompanyGatewayUIStateSerializer serializers.serialize(object.tabIndex, specifiedType: const FullType(int)), ]; - Object value; + Object? value; value = object.editing; if (value != null) { result @@ -122,36 +122,36 @@ class _$CompanyGatewayUIStateSerializer @override CompanyGatewayUIState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new CompanyGatewayUIStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'editing': result.editing.replace(serializers.deserialize(value, - specifiedType: const FullType(CompanyGatewayEntity)) + specifiedType: const FullType(CompanyGatewayEntity))! as CompanyGatewayEntity); break; case 'listUIState': result.listUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(ListUIState)) as ListUIState); + specifiedType: const FullType(ListUIState))! as ListUIState); break; case 'selectedId': result.selectedId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'forceSelected': result.forceSelected = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'tabIndex': result.tabIndex = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; } } @@ -162,15 +162,15 @@ class _$CompanyGatewayUIStateSerializer class _$CompanyGatewayState extends CompanyGatewayState { @override - final BuiltMap map; + final BuiltMap map; @override final BuiltList list; factory _$CompanyGatewayState( - [void Function(CompanyGatewayStateBuilder) updates]) => + [void Function(CompanyGatewayStateBuilder)? updates]) => (new CompanyGatewayStateBuilder()..update(updates))._build(); - _$CompanyGatewayState._({this.map, this.list}) : super._() { + _$CompanyGatewayState._({required this.map, required this.list}) : super._() { BuiltValueNullFieldError.checkNotNull(map, r'CompanyGatewayState', 'map'); BuiltValueNullFieldError.checkNotNull(list, r'CompanyGatewayState', 'list'); } @@ -192,10 +192,10 @@ class _$CompanyGatewayState extends CompanyGatewayState { list == other.list; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, map.hashCode); _$hash = $jc(_$hash, list.hashCode); @@ -214,16 +214,16 @@ class _$CompanyGatewayState extends CompanyGatewayState { class CompanyGatewayStateBuilder implements Builder { - _$CompanyGatewayState _$v; + _$CompanyGatewayState? _$v; - MapBuilder _map; - MapBuilder get map => - _$this._map ??= new MapBuilder(); - set map(MapBuilder map) => _$this._map = map; + MapBuilder? _map; + MapBuilder get map => + _$this._map ??= new MapBuilder(); + set map(MapBuilder? map) => _$this._map = map; - ListBuilder _list; + ListBuilder? _list; ListBuilder get list => _$this._list ??= new ListBuilder(); - set list(ListBuilder list) => _$this._list = list; + set list(ListBuilder? list) => _$this._list = list; CompanyGatewayStateBuilder(); @@ -244,7 +244,7 @@ class CompanyGatewayStateBuilder } @override - void update(void Function(CompanyGatewayStateBuilder) updates) { + void update(void Function(CompanyGatewayStateBuilder)? updates) { if (updates != null) updates(this); } @@ -257,7 +257,7 @@ class CompanyGatewayStateBuilder _$result = _$v ?? new _$CompanyGatewayState._(map: map.build(), list: list.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'map'; map.build(); @@ -276,30 +276,30 @@ class CompanyGatewayStateBuilder class _$CompanyGatewayUIState extends CompanyGatewayUIState { @override - final CompanyGatewayEntity editing; + final CompanyGatewayEntity? editing; @override final ListUIState listUIState; @override - final String selectedId; + final String? selectedId; @override - final bool forceSelected; + final bool? forceSelected; @override final int tabIndex; @override - final Completer saveCompleter; + final Completer? saveCompleter; @override - final Completer cancelCompleter; + final Completer? cancelCompleter; factory _$CompanyGatewayUIState( - [void Function(CompanyGatewayUIStateBuilder) updates]) => + [void Function(CompanyGatewayUIStateBuilder)? updates]) => (new CompanyGatewayUIStateBuilder()..update(updates))._build(); _$CompanyGatewayUIState._( {this.editing, - this.listUIState, + required this.listUIState, this.selectedId, this.forceSelected, - this.tabIndex, + required this.tabIndex, this.saveCompleter, this.cancelCompleter}) : super._() { @@ -331,10 +331,10 @@ class _$CompanyGatewayUIState extends CompanyGatewayUIState { cancelCompleter == other.cancelCompleter; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, editing.hashCode); _$hash = $jc(_$hash, listUIState.hashCode); @@ -363,40 +363,41 @@ class _$CompanyGatewayUIState extends CompanyGatewayUIState { class CompanyGatewayUIStateBuilder implements Builder { - _$CompanyGatewayUIState _$v; + _$CompanyGatewayUIState? _$v; - CompanyGatewayEntityBuilder _editing; + CompanyGatewayEntityBuilder? _editing; CompanyGatewayEntityBuilder get editing => _$this._editing ??= new CompanyGatewayEntityBuilder(); - set editing(CompanyGatewayEntityBuilder editing) => _$this._editing = editing; + set editing(CompanyGatewayEntityBuilder? editing) => + _$this._editing = editing; - ListUIStateBuilder _listUIState; + ListUIStateBuilder? _listUIState; ListUIStateBuilder get listUIState => _$this._listUIState ??= new ListUIStateBuilder(); - set listUIState(ListUIStateBuilder listUIState) => + set listUIState(ListUIStateBuilder? listUIState) => _$this._listUIState = listUIState; - String _selectedId; - String get selectedId => _$this._selectedId; - set selectedId(String selectedId) => _$this._selectedId = selectedId; + String? _selectedId; + String? get selectedId => _$this._selectedId; + set selectedId(String? selectedId) => _$this._selectedId = selectedId; - bool _forceSelected; - bool get forceSelected => _$this._forceSelected; - set forceSelected(bool forceSelected) => + bool? _forceSelected; + bool? get forceSelected => _$this._forceSelected; + set forceSelected(bool? forceSelected) => _$this._forceSelected = forceSelected; - int _tabIndex; - int get tabIndex => _$this._tabIndex; - set tabIndex(int tabIndex) => _$this._tabIndex = tabIndex; + int? _tabIndex; + int? get tabIndex => _$this._tabIndex; + set tabIndex(int? tabIndex) => _$this._tabIndex = tabIndex; - Completer _saveCompleter; - Completer get saveCompleter => _$this._saveCompleter; - set saveCompleter(Completer saveCompleter) => + Completer? _saveCompleter; + Completer? get saveCompleter => _$this._saveCompleter; + set saveCompleter(Completer? saveCompleter) => _$this._saveCompleter = saveCompleter; - Completer _cancelCompleter; - Completer get cancelCompleter => _$this._cancelCompleter; - set cancelCompleter(Completer cancelCompleter) => + Completer? _cancelCompleter; + Completer? get cancelCompleter => _$this._cancelCompleter; + set cancelCompleter(Completer? cancelCompleter) => _$this._cancelCompleter = cancelCompleter; CompanyGatewayUIStateBuilder(); @@ -423,7 +424,7 @@ class CompanyGatewayUIStateBuilder } @override - void update(void Function(CompanyGatewayUIStateBuilder) updates) { + void update(void Function(CompanyGatewayUIStateBuilder)? updates) { if (updates != null) updates(this); } @@ -444,7 +445,7 @@ class CompanyGatewayUIStateBuilder saveCompleter: saveCompleter, cancelCompleter: cancelCompleter); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'editing'; _editing?.build(); diff --git a/lib/redux/credit/credit_actions.dart b/lib/redux/credit/credit_actions.dart index 6509b4a60..f38b3c72b 100644 --- a/lib/redux/credit/credit_actions.dart +++ b/lib/redux/credit/credit_actions.dart @@ -35,7 +35,7 @@ class ViewCreditList implements PersistUI { }); final bool force; - final int page; + final int? page; } class ViewCredit implements PersistUI, PersistPrefs { @@ -44,7 +44,7 @@ class ViewCredit implements PersistUI, PersistPrefs { this.force = false, }); - final String creditId; + final String? creditId; final bool force; } @@ -52,32 +52,32 @@ class EditCredit implements PersistUI, PersistPrefs { EditCredit( {this.credit, this.creditItemIndex, this.completer, this.force = false}); - final InvoiceEntity credit; - final int creditItemIndex; - final Completer completer; + final InvoiceEntity? credit; + final int? creditItemIndex; + final Completer? completer; final bool force; } class ShowEmailCredit { ShowEmailCredit({this.credit, this.context, this.completer}); - final InvoiceEntity credit; - final BuildContext context; - final Completer completer; + final InvoiceEntity? credit; + final BuildContext? context; + final Completer? completer; } class ShowPdfCredit { ShowPdfCredit({this.credit, this.context, this.activityId}); - final InvoiceEntity credit; - final BuildContext context; - final String activityId; + final InvoiceEntity? credit; + final BuildContext? context; + final String? activityId; } class EditCreditItem implements PersistUI { EditCreditItem([this.creditItemIndex]); - final int creditItemIndex; + final int? creditItemIndex; } class UpdateCredit implements PersistUI { @@ -89,20 +89,20 @@ class UpdateCredit implements PersistUI { class UpdateCreditClient implements PersistUI { UpdateCreditClient({this.client}); - final ClientEntity client; + final ClientEntity? client; } class LoadCredit { LoadCredit({this.completer, this.creditId}); - final Completer completer; - final String creditId; + final Completer? completer; + final String? creditId; } class LoadCredits { LoadCredits({this.completer}); - final Completer completer; + final Completer? completer; } class LoadCreditRequest implements StartLoading {} @@ -156,20 +156,20 @@ class LoadCreditsSuccess implements StopLoading { class AddCreditContact implements PersistUI { AddCreditContact({this.contact, this.invitation}); - final ClientContactEntity contact; - final InvitationEntity invitation; + final ClientContactEntity? contact; + final InvitationEntity? invitation; } class RemoveCreditContact implements PersistUI { RemoveCreditContact({this.invitation}); - final InvitationEntity invitation; + final InvitationEntity? invitation; } class AddCreditItem implements PersistUI { AddCreditItem({this.creditItem}); - final InvoiceItemEntity creditItem; + final InvoiceItemEntity? creditItem; } class MoveCreditItem implements PersistUI { @@ -178,8 +178,8 @@ class MoveCreditItem implements PersistUI { this.newIndex, }); - final int oldIndex; - final int newIndex; + final int? oldIndex; + final int? newIndex; } class AddCreditItems implements PersistUI { @@ -191,8 +191,8 @@ class AddCreditItems implements PersistUI { class UpdateCreditItem implements PersistUI { UpdateCreditItem({this.index, this.creditItem}); - final int index; - final InvoiceItemEntity creditItem; + final int? index; + final InvoiceItemEntity? creditItem; } class DeleteCreditItem implements PersistUI { @@ -203,14 +203,14 @@ class DeleteCreditItem implements PersistUI { class SaveCreditRequest implements StartSaving { SaveCreditRequest({ - @required this.completer, - @required this.credit, - @required this.action, + required this.completer, + required this.credit, + required this.action, }); final Completer completer; final InvoiceEntity credit; - final EntityAction action; + final EntityAction? action; } class SaveCreditSuccess implements StopSaving, PersistData, PersistUI { @@ -233,12 +233,12 @@ class SaveCreditFailure implements StopSaving { class EmailCreditRequest implements StartSaving { EmailCreditRequest({ - @required this.completer, - @required this.creditId, - @required this.template, - @required this.subject, - @required this.body, - @required this.ccEmail, + required this.completer, + required this.creditId, + required this.template, + required this.subject, + required this.body, + required this.ccEmail, }); final Completer completer; @@ -279,9 +279,9 @@ class MarkSentCreditFailure implements StopSaving { class BulkEmailCreditsRequest implements StartSaving { BulkEmailCreditsRequest({this.completer, this.creditIds, this.template}); - final Completer completer; - final List creditIds; - final EmailTemplate template; + final Completer? completer; + final List? creditIds; + final EmailTemplate? template; } class BulkEmailCreditsSuccess implements StopSaving, PersistData { @@ -332,7 +332,7 @@ class ArchiveCreditsSuccess implements StopSaving, PersistData { class ArchiveCreditsFailure implements StopSaving { ArchiveCreditsFailure(this.credits); - final List credits; + final List credits; } class DeleteCreditsRequest implements StartSaving { @@ -352,7 +352,7 @@ class DeleteCreditsSuccess implements StopSaving, PersistData { class DeleteCreditsFailure implements StopSaving { DeleteCreditsFailure(this.credits); - final List credits; + final List credits; } class DownloadCreditsRequest implements StartSaving { @@ -387,7 +387,7 @@ class RestoreCreditsSuccess implements StopSaving, PersistData { class RestoreCreditsFailure implements StopSaving { RestoreCreditsFailure(this.credits); - final List credits; + final List credits; } class FilterCredits implements PersistUI { @@ -446,13 +446,13 @@ class FilterCreditsByCustom4 implements PersistUI { class SaveCreditDocumentRequest implements StartSaving { SaveCreditDocumentRequest({ - @required this.isPrivate, - @required this.completer, - @required this.multipartFiles, - @required this.credit, + required this.isPrivate, + required this.completer, + required this.multipartFiles, + required this.credit, }); - final bool isPrivate; + final bool? isPrivate; final Completer completer; final List multipartFiles; final InvoiceEntity credit; @@ -471,12 +471,12 @@ class SaveCreditDocumentFailure implements StopSaving { } Future handleCreditAction( - BuildContext context, List credits, EntityAction action) async { + BuildContext context, List credits, EntityAction? action) async { final store = StoreProvider.of(context); final state = store.state; final localization = AppLocalization.of(context); final credit = credits.first as InvoiceEntity; - final creditIds = credits.map((credit) => credit.id).toList(); + final creditIds = credits.map((credit) => credit!.id).toList(); final client = state.clientState.get(credit.clientId); switch (action) { @@ -491,7 +491,7 @@ Future handleCreditAction( break; case EntityAction.markSent: store.dispatch(MarkSentCreditRequest( - snackBarCompleter(context, localization.markedCreditAsSent), + snackBarCompleter(context, localization!.markedCreditAsSent), creditIds)); break; case EntityAction.sendEmail: @@ -501,7 +501,7 @@ Future handleCreditAction( credits.forEach((credit) { final client = state.clientState.get( (credit as InvoiceEntity).clientId, - ); + )!; if (!client.hasEmailAddress) { emailValid = false; } @@ -509,12 +509,12 @@ Future handleCreditAction( if (!emailValid) { showMessageDialog( context: context, - message: localization.clientEmailNotSet, + message: localization!.clientEmailNotSet, secondaryActions: [ TextButton( onPressed: () { Navigator.of(context).pop(); - editEntity(entity: client); + editEntity(entity: client!); }, child: Text(localization.editClient.toUpperCase())) ]); @@ -523,14 +523,14 @@ Future handleCreditAction( if (action == EntityAction.sendEmail) { store.dispatch(ShowEmailCredit( completer: - snackBarCompleter(context, localization.emailedCredit), + snackBarCompleter(context, localization!.emailedCredit), credit: credit, context: context)); } else if (action == EntityAction.schedule) { if (!state.isProPlan) { showMessageDialog( context: context, - message: localization.upgradeToPaidPlanToSchedule, + message: localization!.upgradeToPaidPlanToSchedule, secondaryActions: [ TextButton( onPressed: () { @@ -552,7 +552,7 @@ Future handleCreditAction( } else { confirmCallback( context: context, - message: localization.bulkEmailCredits, + message: localization!.bulkEmailCredits, callback: (_) { store.dispatch(BulkEmailCreditsRequest( completer: snackBarCompleter( @@ -621,8 +621,8 @@ Future handleCreditAction( snackBarCompleter( context, credits.length == 1 - ? localization.markedCreditAsPaid - : localization.markedCreditsAsPaid), + ? localization!.markedCreditAsPaid + : localization!.markedCreditsAsPaid), creditIds)); break; case EntityAction.applyCredit: @@ -631,7 +631,7 @@ Future handleCreditAction( entity: PaymentEntity(state: state, client: client).rebuild((b) => b ..typeId = kPaymentTypeCredit ..credits.addAll(credits - .map((credit) => PaymentableEntity.fromCredit(credit)) + .map((credit) => PaymentableEntity.fromCredit(credit as InvoiceEntity)) .toList())), filterEntity: client, ); @@ -641,33 +641,33 @@ Future handleCreditAction( break; case EntityAction.bulkDownload: store.dispatch(DownloadCreditsRequest( - snackBarCompleter(context, localization.exportedData), + snackBarCompleter(context, localization!.exportedData), creditIds)); break; case EntityAction.restore: final message = creditIds.length > 1 - ? localization.restoredCredits + ? localization!.restoredCredits .replaceFirst(':value', ':count') .replaceFirst(':count', creditIds.length.toString()) - : localization.restoredCredit; + : localization!.restoredCredit; store.dispatch(RestoreCreditsRequest( snackBarCompleter(context, message), creditIds)); break; case EntityAction.archive: final message = creditIds.length > 1 - ? localization.archivedCredits + ? localization!.archivedCredits .replaceFirst(':value', ':count') .replaceFirst(':count', creditIds.length.toString()) - : localization.archivedCredit; + : localization!.archivedCredit; store.dispatch(ArchiveCreditsRequest( snackBarCompleter(context, message), creditIds)); break; case EntityAction.delete: final message = creditIds.length > 1 - ? localization.deletedCredits + ? localization!.deletedCredits .replaceFirst(':value', ':count') .replaceFirst(':count', creditIds.length.toString()) - : localization.deletedCredit; + : localization!.deletedCredit; store.dispatch(DeleteCreditsRequest( snackBarCompleter(context, message), creditIds)); break; @@ -676,7 +676,7 @@ Future handleCreditAction( store.dispatch(StartCreditMultiselect()); } for (final credit in credits) { - if (!store.state.creditListState.isSelected(credit.id)) { + if (!store.state.creditListState.isSelected(credit!.id)) { store.dispatch(AddToCreditMultiselect(entity: credit)); } else { store.dispatch(RemoveFromCreditMultiselect(entity: credit)); @@ -687,20 +687,20 @@ Future handleCreditAction( final invitation = credit.invitations.first; final url = invitation.downloadLink; store.dispatch(StartSaving()); - final http.Response response = - await WebClient().get(url, '', rawResponse: true); + final http.Response? response = + await (WebClient().get(url, '', rawResponse: true) as FutureOr); store.dispatch(StopSaving()); - await Printing.layoutPdf(onLayout: (_) => response.bodyBytes); + await Printing.layoutPdf(onLayout: (_) => response!.bodyBytes); break; case EntityAction.bulkPrint: store.dispatch(StartSaving()); - final url = state.credentials.url + '/credits/bulk'; + final url = state.credentials.url! + '/credits/bulk'; final data = json.encode( {'ids': creditIds, 'action': EntityAction.bulkPrint.toApiParam()}); - final http.Response response = await WebClient() - .post(url, state.credentials.token, data: data, rawResponse: true); + final http.Response? response = await (WebClient() + .post(url, state.credentials.token, data: data, rawResponse: true) as FutureOr); store.dispatch(StopSaving()); - await Printing.layoutPdf(onLayout: (_) => response.bodyBytes); + await Printing.layoutPdf(onLayout: (_) => response!.bodyBytes); break; case EntityAction.more: showEntityActionsDialog( @@ -716,14 +716,14 @@ Future handleCreditAction( } if (documentIds.isEmpty) { showMessageDialog( - context: context, message: localization.noDocumentsToDownload); + context: context, message: localization!.noDocumentsToDownload); } else { store.dispatch( DownloadDocumentsRequest( documentIds: documentIds, completer: snackBarCompleter( context, - localization.exportedData, + localization!.exportedData, ), ), ); @@ -738,15 +738,15 @@ Future handleCreditAction( class StartCreditMultiselect {} class AddToCreditMultiselect { - AddToCreditMultiselect({@required this.entity}); + AddToCreditMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class RemoveFromCreditMultiselect { - RemoveFromCreditMultiselect({@required this.entity}); + RemoveFromCreditMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class ClearCreditMultiselect {} @@ -754,5 +754,5 @@ class ClearCreditMultiselect {} class UpdateCreditTab implements PersistUI { UpdateCreditTab({this.tabIndex}); - final int tabIndex; + final int? tabIndex; } diff --git a/lib/redux/credit/credit_middleware.dart b/lib/redux/credit/credit_middleware.dart index 54223d445..0c06bdb07 100644 --- a/lib/redux/credit/credit_middleware.dart +++ b/lib/redux/credit/credit_middleware.dart @@ -65,21 +65,21 @@ List> createStoreCreditsMiddleware([ Middleware _viewCredit() { return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as ViewCredit; + final action = dynamicAction as ViewCredit?; next(action); store.dispatch(UpdateCurrentRoute(CreditViewScreen.route)); if (store.state.prefState.isMobile) { - await navigatorKey.currentState.pushNamed(CreditViewScreen.route); + await navigatorKey.currentState!.pushNamed(CreditViewScreen.route); } }; } Middleware _viewCreditList() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as ViewCreditList; + final action = dynamicAction as ViewCreditList?; next(action); @@ -90,7 +90,7 @@ Middleware _viewCreditList() { store.dispatch(UpdateCurrentRoute(CreditScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamedAndRemoveUntil( + navigatorKey.currentState!.pushNamedAndRemoveUntil( CreditScreen.route, (Route route) => false); } }; @@ -98,14 +98,14 @@ Middleware _viewCreditList() { Middleware _editCredit() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as EditCredit; + final action = dynamicAction as EditCredit?; next(action); store.dispatch(UpdateCurrentRoute(CreditEditScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(CreditEditScreen.route); + navigatorKey.currentState!.pushNamed(CreditEditScreen.route); } }; } @@ -113,7 +113,7 @@ Middleware _editCredit() { Middleware _showEmailCredit() { return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as ShowEmailCredit; + final action = dynamicAction as ShowEmailCredit?; next(action); @@ -121,10 +121,10 @@ Middleware _showEmailCredit() { if (store.state.prefState.isMobile) { final emailWasSent = - await navigatorKey.currentState.pushNamed(CreditEmailScreen.route); + await navigatorKey.currentState!.pushNamed(CreditEmailScreen.route); - if (action.completer != null && emailWasSent != null && emailWasSent) { - action.completer.complete(null); + if (action!.completer != null && emailWasSent != null && emailWasSent as bool) { + action.completer!.complete(null); } } }; @@ -133,14 +133,14 @@ Middleware _showEmailCredit() { Middleware _showPdfCredit() { return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as ShowPdfCredit; + final action = dynamicAction as ShowPdfCredit?; next(action); store.dispatch(UpdateCurrentRoute(CreditPdfScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(CreditPdfScreen.route); + navigatorKey.currentState!.pushNamed(CreditPdfScreen.route); } }; } @@ -272,7 +272,7 @@ Middleware _markPaidCredit(CreditRepository repository) { Middleware _emailCredit(CreditRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as EmailCreditRequest; - final origCredit = store.state.creditState.map[action.creditId]; + final origCredit = store.state.creditState.map[action.creditId]!; repository .emailCredit( store.state.credentials, @@ -306,7 +306,7 @@ Middleware _saveCredit(CreditRepository repository) { // remove any empty line items final updatedCredit = action.credit.rebuild((b) => b ..lineItems - .replace(action.credit.lineItems.where((item) => !item.isEmpty))); + .replace(action.credit.lineItems.where((item) => !item!.isEmpty))); repository .saveData(store.state.credentials, updatedCredit, action.action) @@ -338,13 +338,13 @@ Middleware _loadCredit(CreditRepository repository) { store.dispatch(LoadCreditSuccess(credit)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(LoadCreditFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -354,7 +354,7 @@ Middleware _loadCredit(CreditRepository repository) { Middleware _loadCredits(CreditRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as LoadCredits; + final action = dynamicAction as LoadCredits?; final state = store.state; store.dispatch(LoadCreditsRequest()); @@ -374,15 +374,15 @@ Middleware _loadCredits(CreditRepository repository) { }); store.dispatch(LoadDocumentsSuccess(documents)); - if (action.completer != null) { - action.completer.complete(null); + if (action!.completer != null) { + action.completer!.complete(null); } store.dispatch(LoadProjects()); }).catchError((Object error) { print(error); store.dispatch(LoadCreditsFailure(error)); - if (action.completer != null) { - action.completer.completeError(error); + if (action!.completer != null) { + action.completer!.completeError(error); } }); @@ -419,17 +419,17 @@ Middleware _bulkEmailCredits(CreditRepository repository) { repository .bulkAction( - store.state.credentials, action.creditIds, EntityAction.sendEmail) + store.state.credentials, action.creditIds!, EntityAction.sendEmail) .then((List credits) { store.dispatch(BulkEmailCreditsSuccess(credits)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(BulkEmailCreditsFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -439,14 +439,14 @@ Middleware _bulkEmailCredits(CreditRepository repository) { Middleware _saveDocument(CreditRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as SaveCreditDocumentRequest; + final action = dynamicAction as SaveCreditDocumentRequest?; if (store.state.isEnterprisePlan) { repository .uploadDocuments( store.state.credentials, - action.credit, + action!.credit, action.multipartFiles, - action.isPrivate, + action.isPrivate!, ) .then((credit) { store.dispatch(SaveCreditSuccess(credit)); @@ -468,7 +468,7 @@ Middleware _saveDocument(CreditRepository repository) { } else { const error = 'Uploading documents requires an enterprise plan'; store.dispatch(SaveCreditDocumentFailure(error)); - action.completer.completeError(error); + action!.completer.completeError(error); } next(action); diff --git a/lib/redux/credit/credit_reducer.dart b/lib/redux/credit/credit_reducer.dart index b30c1b52f..bd6042cd7 100644 --- a/lib/redux/credit/credit_reducer.dart +++ b/lib/redux/credit/credit_reducer.dart @@ -15,7 +15,7 @@ import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; EntityUIState creditUIReducer(CreditUIState state, dynamic action) { return state.rebuild((b) => b ..listUIState.replace(creditListReducer(state.listUIState, action)) - ..editing.replace(editingReducer(state.editing, action)) + ..editing.replace(editingReducer(state.editing, action)!) ..editingItemIndex = editingItemReducer(state.editingItemIndex, action) ..selectedId = selectedIdReducer(state.selectedId, action) ..forceSelected = forceSelectedReducer(state.forceSelected, action) @@ -24,34 +24,34 @@ EntityUIState creditUIReducer(CreditUIState state, dynamic action) { historyActivityIdReducer(state.historyActivityId, action)); } -final forceSelectedReducer = combineReducers([ - TypedReducer((completer, action) => true), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), +final forceSelectedReducer = combineReducers([ + TypedReducer((completer, action) => true), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), ]); -final tabIndexReducer = combineReducers([ - TypedReducer((completer, action) { +final int? Function(int, dynamic) tabIndexReducer = combineReducers([ + TypedReducer((completer, action) { return action.tabIndex; }), - TypedReducer((completer, action) { + TypedReducer((completer, action) { return 0; }), ]); -final historyActivityIdReducer = combineReducers([ - TypedReducer((index, action) => action.activityId), +final historyActivityIdReducer = combineReducers([ + TypedReducer((index, action) => action.activityId), ]); -final editingItemReducer = combineReducers([ - TypedReducer((index, action) => action.creditItemIndex), - TypedReducer((index, action) => action.creditItemIndex), +final editingItemReducer = combineReducers([ + TypedReducer((index, action) => action.creditItemIndex), + TypedReducer((index, action) => action.creditItemIndex), ]); Reducer dropdownFilterReducer = combineReducers([ @@ -63,31 +63,31 @@ String filtercreditDropdownReducer( return action.filter; } -Reducer selectedIdReducer = combineReducers([ - TypedReducer((completer, action) => ''), - TypedReducer((completer, action) => ''), - TypedReducer((selectedId, action) => +Reducer selectedIdReducer = combineReducers([ + TypedReducer((completer, action) => ''), + TypedReducer((completer, action) => ''), + TypedReducer((selectedId, action) => action.entityType == EntityType.credit ? action.entityId : selectedId), - TypedReducer((selectedId, action) => action.creditId), - TypedReducer( + TypedReducer((selectedId, action) => action.creditId), + TypedReducer( (selectedId, action) => action.credit.id), - TypedReducer( - (selectedId, action) => action.credit.id), - TypedReducer((selectedId, action) => action.credit.id), - TypedReducer( + TypedReducer( + (selectedId, action) => action.credit!.id), + TypedReducer((selectedId, action) => action.credit!.id), + TypedReducer( (selectedId, action) => action.clearSelection ? '' : selectedId), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => action.entityType == EntityType.credit ? '' : selectedId), - TypedReducer( + TypedReducer( (selectedId, action) => action.clearSelection ? '' : action.entityType == EntityType.credit @@ -95,88 +95,88 @@ Reducer selectedIdReducer = combineReducers([ : selectedId), ]); -final editingReducer = combineReducers([ - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer((credit, action) { +final editingReducer = combineReducers([ + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer((credit, action) { return action.credit.rebuild((b) => b..isChanged = true); }), - TypedReducer((invoice, action) { - return invoice.rebuild((b) => b..isChanged = true); + TypedReducer((invoice, action) { + return invoice!.rebuild((b) => b..isChanged = true); }), - TypedReducer((invoice, action) { - return invoice.moveLineItem(action.oldIndex, action.newIndex); + TypedReducer((invoice, action) { + return invoice!.moveLineItem(action.oldIndex!, action.newIndex); }), - TypedReducer((invoice, action) { - return invoice.rebuild((b) => b..isChanged = true); + TypedReducer((invoice, action) { + return invoice!.rebuild((b) => b..isChanged = true); }), - TypedReducer((invoice, action) { - return invoice.rebuild((b) => b..isChanged = true); + TypedReducer((invoice, action) { + return invoice!.rebuild((b) => b..isChanged = true); }), - TypedReducer((credit, action) { + TypedReducer((credit, action) { final client = action.client; - return credit.rebuild((b) => b + return credit!.rebuild((b) => b ..isChanged = true ..clientId = client?.id ?? '' ..invitations.replace((client?.emailContacts ?? []) - .map((contact) => InvitationEntity(clientContactId: contact.id)) + .map((contact) => InvitationEntity(clientContactId: contact!.id)) .toList())); }), - TypedReducer((credits, action) { + TypedReducer((credits, action) { return action.credits[0]; }), - TypedReducer((credits, action) { + TypedReducer((credits, action) { return action.credits[0]; }), - TypedReducer((credits, action) { + TypedReducer((credits, action) { return action.credits[0]; }), - TypedReducer(_addCreditItem), - TypedReducer(_addCreditItems), - TypedReducer(_removeCreditItem), - TypedReducer(_updateCreditItem), - TypedReducer(_clearEditing), - TypedReducer((invoice, action) { - return invoice.rebuild((b) => b + TypedReducer(_addCreditItem), + TypedReducer(_addCreditItems), + TypedReducer(_removeCreditItem), + TypedReducer(_updateCreditItem), + TypedReducer(_clearEditing), + TypedReducer((invoice, action) { + return invoice!.rebuild((b) => b ..invitations.add(action.invitation ?? - InvitationEntity(clientContactId: action.contact.id))); + InvitationEntity(clientContactId: action.contact!.id))); }), - TypedReducer((invoice, action) { - return invoice.rebuild((b) => b..invitations.remove(action.invitation)); + TypedReducer((invoice, action) { + return invoice!.rebuild((b) => b..invitations.remove(action.invitation)); }), ]); -InvoiceEntity _clearEditing(InvoiceEntity credit, dynamic action) { +InvoiceEntity _clearEditing(InvoiceEntity? credit, dynamic action) { return InvoiceEntity(); } -InvoiceEntity _updateEditing(InvoiceEntity credit, dynamic action) { +InvoiceEntity? _updateEditing(InvoiceEntity? credit, dynamic action) { return action.credit; } -InvoiceEntity _addCreditItem(InvoiceEntity credit, AddCreditItem action) { - return credit.rebuild( +InvoiceEntity _addCreditItem(InvoiceEntity? credit, AddCreditItem action) { + return credit!.rebuild( (b) => b..lineItems.add(action.creditItem ?? InvoiceItemEntity())); } -InvoiceEntity _addCreditItems(InvoiceEntity credit, AddCreditItems action) { - return credit.rebuild((b) => b..lineItems.addAll(action.creditItems)); +InvoiceEntity _addCreditItems(InvoiceEntity? credit, AddCreditItems action) { + return credit!.rebuild((b) => b..lineItems.addAll(action.creditItems)); } -InvoiceEntity _removeCreditItem(InvoiceEntity credit, DeleteCreditItem action) { - if (credit.lineItems.length <= action.index) { +InvoiceEntity? _removeCreditItem(InvoiceEntity? credit, DeleteCreditItem action) { + if (credit!.lineItems.length <= action.index) { return credit; } return credit.rebuild((b) => b..lineItems.removeAt(action.index)); } -InvoiceEntity _updateCreditItem(InvoiceEntity credit, UpdateCreditItem action) { - if (credit.lineItems.length <= action.index) { +InvoiceEntity? _updateCreditItem(InvoiceEntity? credit, UpdateCreditItem action) { + if (credit!.lineItems.length <= action.index!) { return credit; } - return credit.rebuild((b) => b..lineItems[action.index] = action.creditItem); + return credit.rebuild((b) => b..lineItems[action.index!] = action.creditItem); } final creditListReducer = combineReducers([ @@ -277,7 +277,7 @@ ListUIState _filterCredits(ListUIState creditListState, FilterCredits action) { ListUIState _sortCredits(ListUIState creditListState, SortCredits action) { return creditListState.rebuild((b) => b - ..sortAscending = b.sortField != action.field || !b.sortAscending + ..sortAscending = b.sortField != action.field || !b.sortAscending! ..sortField = action.field); } @@ -288,13 +288,13 @@ ListUIState _startListMultiselect( ListUIState _addToListMultiselect( ListUIState creditListState, AddToCreditMultiselect action) { - return creditListState.rebuild((b) => b..selectedIds.add(action.entity.id)); + return creditListState.rebuild((b) => b..selectedIds.add(action.entity!.id)); } ListUIState _removeFromListMultiselect( ListUIState creditListState, RemoveFromCreditMultiselect action) { return creditListState - .rebuild((b) => b..selectedIds.remove(action.entity.id)); + .rebuild((b) => b..selectedIds.remove(action.entity!.id)); } ListUIState _clearListMultiselect( @@ -318,8 +318,8 @@ final creditsReducer = combineReducers([ CreditState _purgeClientSuccess( CreditState creditState, PurgeClientSuccess action) { final ids = creditState.map.values - .where((each) => each.clientId == action.clientId) - .map((each) => each.id) + .where((each) => each!.clientId == action.clientId) + .map((each) => each!.id) .toList(); return creditState.rebuild((b) => b @@ -329,7 +329,7 @@ CreditState _purgeClientSuccess( CreditState _markSentCreditSuccess( CreditState creditState, MarkSentCreditSuccess action) { - final creditMap = Map.fromIterable( + final creditMap = Map.fromIterable( action.credits, key: (dynamic item) => item.id, value: (dynamic item) => item, @@ -372,9 +372,9 @@ CreditState _addCredit(CreditState creditState, AddCreditSuccess action) { } CreditState _updateCredit(CreditState invoiceState, dynamic action) { - final InvoiceEntity credit = action.credit; + final InvoiceEntity? credit = action.credit; return invoiceState.rebuild((b) => b - ..map[credit.id] = credit + ..map[credit!.id] = credit .rebuild((b) => b..loadedAt = DateTime.now().millisecondsSinceEpoch)); } @@ -384,6 +384,6 @@ CreditState _setLoadedCredits( CreditState _setLoadedCompany( CreditState creditState, LoadCompanySuccess action) { - final company = action.userCompany.company; + final company = action.userCompany.company!; return creditState.loadCredits(company.credits); } diff --git a/lib/redux/credit/credit_selectors.dart b/lib/redux/credit/credit_selectors.dart index c8adf5802..427523461 100644 --- a/lib/redux/credit/credit_selectors.dart +++ b/lib/redux/credit/credit_selectors.dart @@ -7,26 +7,26 @@ import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/redux/app/app_state.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; -ClientContactEntity creditContactSelector( +ClientContactEntity? creditContactSelector( InvoiceEntity credit, ClientEntity client) { var contactIds = credit.invitations .map((invitation) => invitation.clientContactId) .toList(); - if (contactIds.contains(client.primaryContact.id)) { - contactIds = [client.primaryContact.id]; + if (contactIds.contains(client.primaryContact!.id)) { + contactIds = [client.primaryContact!.id]; } return client.contacts - .firstWhere((contact) => contactIds.contains(contact.id), orElse: null); + .firstWhere((contact) => contactIds.contains(contact!.id), orElse: null); } var memoizedDropdownCreditList = memo7( - (BuiltMap creditMap, - BuiltMap clientMap, - BuiltMap vendorMap, + (BuiltMap creditMap, + BuiltMap clientMap, + BuiltMap vendorMap, BuiltList creditList, String clientId, - BuiltMap userMap, - List excludedIds) => + BuiltMap userMap, + List excludedIds) => dropdownCreditSelector( creditMap, clientMap, @@ -38,13 +38,13 @@ var memoizedDropdownCreditList = memo7( )); List dropdownCreditSelector( - BuiltMap creditMap, - BuiltMap clientMap, - BuiltMap vendorMap, + BuiltMap creditMap, + BuiltMap clientMap, + BuiltMap vendorMap, BuiltList creditList, String clientId, - BuiltMap userMap, - List excludedIds) { + BuiltMap userMap, + List excludedIds) { final list = creditList.where((creditId) { final credit = creditMap[creditId]; if (excludedIds.contains(creditId)) { @@ -52,11 +52,11 @@ List dropdownCreditSelector( } if (clientId != null && clientId.isNotEmpty && - credit.clientId != clientId) { + credit!.clientId != clientId) { return false; } - if (!clientMap.containsKey(credit.clientId) || - !clientMap[credit.clientId].isActive) { + if (!clientMap.containsKey(credit!.clientId) || + !clientMap[credit.clientId]!.isActive) { return false; } if (credit.balanceOrAmount == 0) { @@ -66,7 +66,7 @@ List dropdownCreditSelector( }).toList(); list.sort((creditAId, creditBId) { - final creditA = creditMap[creditAId]; + final creditA = creditMap[creditAId]!; final creditB = creditMap[creditBId]; return creditA.compareTo( invoice: creditB, @@ -80,38 +80,38 @@ List dropdownCreditSelector( return list; } -ClientEntity creditClientSelector( +ClientEntity? creditClientSelector( InvoiceEntity credit, BuiltMap clientMap) { return clientMap[credit.clientId]; } var memoizedFilteredCreditList = memo8((SelectionState selectionState, - BuiltMap creditMap, + BuiltMap creditMap, BuiltList creditList, - BuiltMap clientMap, - BuiltMap vendorMap, - BuiltMap paymentMap, + BuiltMap clientMap, + BuiltMap vendorMap, + BuiltMap paymentMap, ListUIState creditListState, - BuiltMap userMap) => + BuiltMap userMap) => filteredCreditsSelector(selectionState, creditMap, creditList, clientMap, vendorMap, paymentMap, creditListState, userMap)); List filteredCreditsSelector( SelectionState selectionState, - BuiltMap creditMap, + BuiltMap creditMap, BuiltList creditList, - BuiltMap clientMap, - BuiltMap vendorMap, - BuiltMap paymentMap, + BuiltMap clientMap, + BuiltMap vendorMap, + BuiltMap paymentMap, ListUIState creditListState, - BuiltMap userMap) { + BuiltMap userMap) { final filterEntityId = selectionState.filterEntityId; final filterEntityType = selectionState.filterEntityType; - final Map> creditPaymentMap = {}; + final Map> creditPaymentMap = {}; if (filterEntityType == EntityType.payment) { paymentMap.forEach((paymentId, payment) { - payment.creditPaymentables.forEach((creditPaymentable) { + payment!.creditPaymentables.forEach((creditPaymentable) { final List paymentIds = creditPaymentMap[creditPaymentable.creditId] ?? []; paymentIds.add(payment.id); @@ -121,7 +121,7 @@ List filteredCreditsSelector( } final list = creditList.where((creditId) { - final credit = creditMap[creditId]; + final credit = creditMap[creditId]!; final client = clientMap[credit.clientId] ?? ClientEntity(id: credit.clientId); @@ -190,7 +190,7 @@ List filteredCreditsSelector( }).toList(); list.sort((creditAId, creditBId) { - return creditMap[creditAId].compareTo( + return creditMap[creditAId]!.compareTo( invoice: creditMap[creditBId], sortField: creditListState.sortField, sortAscending: creditListState.sortAscending, @@ -203,15 +203,15 @@ List filteredCreditsSelector( } var memoizedCreditStatsForDesign = memo2( - (String designId, BuiltMap creditMap) => + (String designId, BuiltMap creditMap) => creditStatsForDesign(designId, creditMap)); EntityStats creditStatsForDesign( - String designId, BuiltMap creditMap) { + String designId, BuiltMap creditMap) { int countActive = 0; int countArchived = 0; creditMap.forEach((creditId, credit) { - if (credit.designId == designId) { + if (credit!.designId == designId) { if (credit.isActive) { countActive++; } else if (credit.isArchived) { @@ -224,15 +224,15 @@ EntityStats creditStatsForDesign( } var memoizedCreditStatsForClient = memo2( - (String clientId, BuiltMap creditMap) => + (String clientId, BuiltMap creditMap) => creditStatsForClient(clientId, creditMap)); EntityStats creditStatsForClient( - String clientId, BuiltMap creditMap) { + String clientId, BuiltMap creditMap) { int countActive = 0; int countArchived = 0; creditMap.forEach((creditId, credit) { - if (credit.clientId == clientId) { + if (credit!.clientId == clientId) { if (credit.isActive) { countActive++; } else if (credit.isArchived) { @@ -245,17 +245,17 @@ EntityStats creditStatsForClient( } var memoizedCreditStatsForUser = memo2( - (String userId, BuiltMap creditMap) => + (String userId, BuiltMap creditMap) => creditStatsForUser(userId, creditMap)); EntityStats creditStatsForUser( String userId, - BuiltMap creditMap, + BuiltMap creditMap, ) { int countActive = 0; int countArchived = 0; creditMap.forEach((creditId, credit) { - if (credit.assignedUserId == userId) { + if (credit!.assignedUserId == userId) { if (credit.isActive) { countActive++; } else if (credit.isArchived) { diff --git a/lib/redux/credit/credit_state.dart b/lib/redux/credit/credit_state.dart index d3362f121..2a2fa859e 100644 --- a/lib/redux/credit/credit_state.dart +++ b/lib/redux/credit/credit_state.dart @@ -24,7 +24,7 @@ abstract class CreditState implements Built { CreditState._(); - InvoiceEntity get(String creditId) { + InvoiceEntity? get(String creditId) { if (map.containsKey(creditId)) { return map[creditId]; } else { @@ -36,12 +36,12 @@ abstract class CreditState implements Built { @memoized int get hashCode; - BuiltMap get map; + BuiltMap get map; BuiltList get list; CreditState loadCredits(BuiltList clients) { - final map = Map.fromIterable( + final map = Map.fromIterable( clients, key: (dynamic item) => item.id, value: (dynamic item) => item, @@ -58,7 +58,7 @@ abstract class CreditState implements Built { abstract class CreditUIState extends Object with EntityUIState implements Built { - factory CreditUIState(PrefStateSortField sortField) { + factory CreditUIState(PrefStateSortField? sortField) { return _$CreditUIState._( listUIState: ListUIState(sortField?.field ?? CreditFields.number, sortAscending: sortField?.ascending ?? false), @@ -74,22 +74,19 @@ abstract class CreditUIState extends Object @memoized int get hashCode; - @nullable - InvoiceEntity get editing; + InvoiceEntity? get editing; - @nullable @BuiltValueField(serialize: false) - int get editingItemIndex; + int? get editingItemIndex; - @nullable @BuiltValueField(serialize: false) - String get historyActivityId; + String? get historyActivityId; @override - bool get isCreatingNew => editing.isNew; + bool get isCreatingNew => editing!.isNew; @override - String get editingId => editing.id; + String get editingId => editing!.id; static Serializer get serializer => _$creditUIStateSerializer; } diff --git a/lib/redux/credit/credit_state.g.dart b/lib/redux/credit/credit_state.g.dart index ad7b38503..1194e130c 100644 --- a/lib/redux/credit/credit_state.g.dart +++ b/lib/redux/credit/credit_state.g.dart @@ -17,13 +17,15 @@ class _$CreditStateSerializer implements StructuredSerializer { final String wireName = 'CreditState'; @override - Iterable serialize(Serializers serializers, CreditState object, + Iterable serialize(Serializers serializers, CreditState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'map', serializers.serialize(object.map, - specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(InvoiceEntity)])), + specifiedType: const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(InvoiceEntity) + ])), 'list', serializers.serialize(object.list, specifiedType: @@ -34,28 +36,28 @@ class _$CreditStateSerializer implements StructuredSerializer { } @override - CreditState deserialize(Serializers serializers, Iterable serialized, + CreditState deserialize(Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new CreditStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'map': result.map.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(InvoiceEntity) - ]))); + const FullType.nullable(String), + const FullType.nullable(InvoiceEntity) + ]))!); break; case 'list': result.list.replace(serializers.deserialize(value, - specifiedType: - const FullType(BuiltList, const [const FullType(String)])) - as BuiltList); + specifiedType: const FullType( + BuiltList, const [const FullType(String)]))! + as BuiltList); break; } } @@ -71,9 +73,9 @@ class _$CreditUIStateSerializer implements StructuredSerializer { final String wireName = 'CreditUIState'; @override - Iterable serialize(Serializers serializers, CreditUIState object, + Iterable serialize(Serializers serializers, CreditUIState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'listUIState', serializers.serialize(object.listUIState, specifiedType: const FullType(ListUIState)), @@ -81,7 +83,7 @@ class _$CreditUIStateSerializer implements StructuredSerializer { serializers.serialize(object.tabIndex, specifiedType: const FullType(int)), ]; - Object value; + Object? value; value = object.editing; if (value != null) { result @@ -108,35 +110,35 @@ class _$CreditUIStateSerializer implements StructuredSerializer { @override CreditUIState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new CreditUIStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'editing': result.editing.replace(serializers.deserialize(value, - specifiedType: const FullType(InvoiceEntity)) as InvoiceEntity); + specifiedType: const FullType(InvoiceEntity))! as InvoiceEntity); break; case 'listUIState': result.listUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(ListUIState)) as ListUIState); + specifiedType: const FullType(ListUIState))! as ListUIState); break; case 'selectedId': result.selectedId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'forceSelected': result.forceSelected = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'tabIndex': result.tabIndex = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; } } @@ -147,14 +149,14 @@ class _$CreditUIStateSerializer implements StructuredSerializer { class _$CreditState extends CreditState { @override - final BuiltMap map; + final BuiltMap map; @override final BuiltList list; - factory _$CreditState([void Function(CreditStateBuilder) updates]) => + factory _$CreditState([void Function(CreditStateBuilder)? updates]) => (new CreditStateBuilder()..update(updates))._build(); - _$CreditState._({this.map, this.list}) : super._() { + _$CreditState._({required this.map, required this.list}) : super._() { BuiltValueNullFieldError.checkNotNull(map, r'CreditState', 'map'); BuiltValueNullFieldError.checkNotNull(list, r'CreditState', 'list'); } @@ -172,10 +174,10 @@ class _$CreditState extends CreditState { return other is CreditState && map == other.map && list == other.list; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, map.hashCode); _$hash = $jc(_$hash, list.hashCode); @@ -193,16 +195,16 @@ class _$CreditState extends CreditState { } class CreditStateBuilder implements Builder { - _$CreditState _$v; + _$CreditState? _$v; - MapBuilder _map; - MapBuilder get map => - _$this._map ??= new MapBuilder(); - set map(MapBuilder map) => _$this._map = map; + MapBuilder? _map; + MapBuilder get map => + _$this._map ??= new MapBuilder(); + set map(MapBuilder? map) => _$this._map = map; - ListBuilder _list; + ListBuilder? _list; ListBuilder get list => _$this._list ??= new ListBuilder(); - set list(ListBuilder list) => _$this._list = list; + set list(ListBuilder? list) => _$this._list = list; CreditStateBuilder(); @@ -223,7 +225,7 @@ class CreditStateBuilder implements Builder { } @override - void update(void Function(CreditStateBuilder) updates) { + void update(void Function(CreditStateBuilder)? updates) { if (updates != null) updates(this); } @@ -236,7 +238,7 @@ class CreditStateBuilder implements Builder { _$result = _$v ?? new _$CreditState._(map: map.build(), list: list.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'map'; map.build(); @@ -255,35 +257,35 @@ class CreditStateBuilder implements Builder { class _$CreditUIState extends CreditUIState { @override - final InvoiceEntity editing; + final InvoiceEntity? editing; @override - final int editingItemIndex; + final int? editingItemIndex; @override - final String historyActivityId; + final String? historyActivityId; @override final ListUIState listUIState; @override - final String selectedId; + final String? selectedId; @override - final bool forceSelected; + final bool? forceSelected; @override final int tabIndex; @override - final Completer saveCompleter; + final Completer? saveCompleter; @override - final Completer cancelCompleter; + final Completer? cancelCompleter; - factory _$CreditUIState([void Function(CreditUIStateBuilder) updates]) => + factory _$CreditUIState([void Function(CreditUIStateBuilder)? updates]) => (new CreditUIStateBuilder()..update(updates))._build(); _$CreditUIState._( {this.editing, this.editingItemIndex, this.historyActivityId, - this.listUIState, + required this.listUIState, this.selectedId, this.forceSelected, - this.tabIndex, + required this.tabIndex, this.saveCompleter, this.cancelCompleter}) : super._() { @@ -315,10 +317,10 @@ class _$CreditUIState extends CreditUIState { cancelCompleter == other.cancelCompleter; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, editing.hashCode); _$hash = $jc(_$hash, editingItemIndex.hashCode); @@ -351,50 +353,50 @@ class _$CreditUIState extends CreditUIState { class CreditUIStateBuilder implements Builder { - _$CreditUIState _$v; + _$CreditUIState? _$v; - InvoiceEntityBuilder _editing; + InvoiceEntityBuilder? _editing; InvoiceEntityBuilder get editing => _$this._editing ??= new InvoiceEntityBuilder(); - set editing(InvoiceEntityBuilder editing) => _$this._editing = editing; + set editing(InvoiceEntityBuilder? editing) => _$this._editing = editing; - int _editingItemIndex; - int get editingItemIndex => _$this._editingItemIndex; - set editingItemIndex(int editingItemIndex) => + int? _editingItemIndex; + int? get editingItemIndex => _$this._editingItemIndex; + set editingItemIndex(int? editingItemIndex) => _$this._editingItemIndex = editingItemIndex; - String _historyActivityId; - String get historyActivityId => _$this._historyActivityId; - set historyActivityId(String historyActivityId) => + String? _historyActivityId; + String? get historyActivityId => _$this._historyActivityId; + set historyActivityId(String? historyActivityId) => _$this._historyActivityId = historyActivityId; - ListUIStateBuilder _listUIState; + ListUIStateBuilder? _listUIState; ListUIStateBuilder get listUIState => _$this._listUIState ??= new ListUIStateBuilder(); - set listUIState(ListUIStateBuilder listUIState) => + set listUIState(ListUIStateBuilder? listUIState) => _$this._listUIState = listUIState; - String _selectedId; - String get selectedId => _$this._selectedId; - set selectedId(String selectedId) => _$this._selectedId = selectedId; + String? _selectedId; + String? get selectedId => _$this._selectedId; + set selectedId(String? selectedId) => _$this._selectedId = selectedId; - bool _forceSelected; - bool get forceSelected => _$this._forceSelected; - set forceSelected(bool forceSelected) => + bool? _forceSelected; + bool? get forceSelected => _$this._forceSelected; + set forceSelected(bool? forceSelected) => _$this._forceSelected = forceSelected; - int _tabIndex; - int get tabIndex => _$this._tabIndex; - set tabIndex(int tabIndex) => _$this._tabIndex = tabIndex; + int? _tabIndex; + int? get tabIndex => _$this._tabIndex; + set tabIndex(int? tabIndex) => _$this._tabIndex = tabIndex; - Completer _saveCompleter; - Completer get saveCompleter => _$this._saveCompleter; - set saveCompleter(Completer saveCompleter) => + Completer? _saveCompleter; + Completer? get saveCompleter => _$this._saveCompleter; + set saveCompleter(Completer? saveCompleter) => _$this._saveCompleter = saveCompleter; - Completer _cancelCompleter; - Completer get cancelCompleter => _$this._cancelCompleter; - set cancelCompleter(Completer cancelCompleter) => + Completer? _cancelCompleter; + Completer? get cancelCompleter => _$this._cancelCompleter; + set cancelCompleter(Completer? cancelCompleter) => _$this._cancelCompleter = cancelCompleter; CreditUIStateBuilder(); @@ -423,7 +425,7 @@ class CreditUIStateBuilder } @override - void update(void Function(CreditUIStateBuilder) updates) { + void update(void Function(CreditUIStateBuilder)? updates) { if (updates != null) updates(this); } @@ -446,7 +448,7 @@ class CreditUIStateBuilder saveCompleter: saveCompleter, cancelCompleter: cancelCompleter); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'editing'; _editing?.build(); diff --git a/lib/redux/dashboard/dashboard_actions.dart b/lib/redux/dashboard/dashboard_actions.dart index b78a6d022..9c9e8b389 100644 --- a/lib/redux/dashboard/dashboard_actions.dart +++ b/lib/redux/dashboard/dashboard_actions.dart @@ -12,7 +12,7 @@ class ViewDashboard implements PersistUI { }); final bool force; - final String filter; + final String? filter; } class UpdateDashboardSettings implements PersistUI { @@ -24,11 +24,11 @@ class UpdateDashboardSettings implements PersistUI { this.groupBy, }); - DashboardSettings settings; - int offset; - String currencyId; - bool includeTaxes; - String groupBy; + DashboardSettings? settings; + int? offset; + String? currencyId; + bool? includeTaxes; + String? groupBy; } class UpdateDashboardFields implements PersistUI { @@ -36,7 +36,7 @@ class UpdateDashboardFields implements PersistUI { this.dashboardFields, }); - BuiltList dashboardFields; + BuiltList? dashboardFields; } class UpdateDashboardFieldSettingss implements PersistUI { @@ -45,8 +45,8 @@ class UpdateDashboardFieldSettingss implements PersistUI { this.numberFieldsPerRowDesktop, }); - final int numberFieldsPerRowMobile; - final int numberFieldsPerRowDesktop; + final int? numberFieldsPerRowMobile; + final int? numberFieldsPerRowDesktop; } class UpdateDashboardSelection implements PersistUI { @@ -55,18 +55,18 @@ class UpdateDashboardSelection implements PersistUI { this.entityIds, }); - EntityType entityType; - List entityIds; + EntityType? entityType; + List? entityIds; } class UpdateDashboardEntityType implements PersistUI { UpdateDashboardEntityType({this.entityType}); - EntityType entityType; + EntityType? entityType; } class UpdateDashboardSidebar implements PersistUI { UpdateDashboardSidebar({this.showSidebar}); - bool showSidebar; + bool? showSidebar; } diff --git a/lib/redux/dashboard/dashboard_middleware.dart b/lib/redux/dashboard/dashboard_middleware.dart index c9d97c52b..b44fd14c9 100644 --- a/lib/redux/dashboard/dashboard_middleware.dart +++ b/lib/redux/dashboard/dashboard_middleware.dart @@ -29,7 +29,7 @@ Middleware _createViewDashboard() { store: store, force: action.force, callback: () { - if (!store.state.userCompany.canViewDashboard) { + if (!store.state.userCompany!.canViewDashboard) { store.dispatch(ViewClientList()); } else { if (store.state.isStale) { @@ -42,8 +42,8 @@ Middleware _createViewDashboard() { next(action); if (store.state.prefState.isMobile && - store.state.userCompany.canViewDashboard) { - navigatorKey.currentState.pushNamedAndRemoveUntil( + store.state.userCompany!.canViewDashboard) { + navigatorKey.currentState!.pushNamedAndRemoveUntil( DashboardScreenBuilder.route, (Route route) => false); } }); diff --git a/lib/redux/dashboard/dashboard_reducer.dart b/lib/redux/dashboard/dashboard_reducer.dart index 91097a1f3..86abaf482 100644 --- a/lib/redux/dashboard/dashboard_reducer.dart +++ b/lib/redux/dashboard/dashboard_reducer.dart @@ -18,27 +18,27 @@ DashboardUIState dashboardUIReducer(DashboardUIState state, dynamic action) { ..showSidebar = showSidebarReducer(state.showSidebar, action)); } -Reducer>> selectedEntitiesReducer = +Reducer>> selectedEntitiesReducer = combineReducers([ - TypedReducer>, + TypedReducer>, UpdateDashboardSelection>((state, action) { return state.rebuild((b) => b..[action.entityType] = BuiltList(action.entityIds ?? [])); }), - TypedReducer>, SelectCompany>( + TypedReducer>, SelectCompany>( (state, action) { return state.rebuild((b) => b..clear()); }), ]); -Reducer selectedEntityTypeReducer = combineReducers([ - TypedReducer((state, action) { +Reducer selectedEntityTypeReducer = combineReducers([ + TypedReducer((state, action) { return action.entityType; }), ]); -Reducer showSidebarReducer = combineReducers([ - TypedReducer((state, action) { +Reducer showSidebarReducer = combineReducers([ + TypedReducer((state, action) { return action.showSidebar; }), ]); @@ -60,7 +60,7 @@ DashboardUISettings dashboardSettingsReducer( } else if (action.includeTaxes != null) { return state.rebuild((b) => b..includeTaxes = action.includeTaxes); } else if (action.offset != null) { - return state.rebuild((b) => b..offset += action.offset); + return state.rebuild((b) => b..offset += action.offset!); } else if (action.currencyId != null) { return state.rebuild((b) => b..currencyId = action.currencyId); } else if (action.groupBy != null) { diff --git a/lib/redux/dashboard/dashboard_selectors.dart b/lib/redux/dashboard/dashboard_selectors.dart index bc22c189d..96dbcdb72 100644 --- a/lib/redux/dashboard/dashboard_selectors.dart +++ b/lib/redux/dashboard/dashboard_selectors.dart @@ -18,7 +18,7 @@ class ChartDataGroup { final String name; final List rawSeries = []; Map> entityMap = {}; - List> chartSeries; + late List> chartSeries; double periodTotal = 0.0; double previousTotal = 0.0; double total = 0.0; @@ -29,57 +29,57 @@ class ChartMoneyData { ChartMoneyData(this.date, this.amount); final DateTime date; - final double amount; + final double? amount; } var memoizedChartInvoices = memo5(( - BuiltMap currencyMap, - CompanyEntity company, + BuiltMap currencyMap, + CompanyEntity? company, DashboardUISettings settings, - BuiltMap invoiceMap, - BuiltMap clientMap, + BuiltMap invoiceMap, + BuiltMap clientMap, ) => _chartInvoices( currencyMap: currencyMap, - company: company, + company: company!, settings: settings, invoiceMap: invoiceMap, clientMap: clientMap)); var memoizedChartOverviewInvoices = memo5(( - BuiltMap currencyMap, - CompanyEntity company, + BuiltMap currencyMap, + CompanyEntity? company, DashboardUISettings settings, - BuiltMap invoiceMap, - BuiltMap clientMap, + BuiltMap invoiceMap, + BuiltMap clientMap, ) => _chartInvoices( currencyMap: currencyMap, - company: company, + company: company!, settings: settings, invoiceMap: invoiceMap, clientMap: clientMap)); var memoizedPreviousChartInvoices = memo5(( - BuiltMap currencyMap, - CompanyEntity company, + BuiltMap currencyMap, + CompanyEntity? company, DashboardUISettings settings, - BuiltMap invoiceMap, - BuiltMap clientMap, + BuiltMap invoiceMap, + BuiltMap clientMap, ) => _chartInvoices( currencyMap: currencyMap, - company: company, + company: company!, settings: settings, invoiceMap: invoiceMap, clientMap: clientMap)); List _chartInvoices({ - BuiltMap currencyMap, - CompanyEntity company, - DashboardUISettings settings, - BuiltMap invoiceMap, - BuiltMap clientMap, + BuiltMap? currencyMap, + required CompanyEntity company, + required DashboardUISettings settings, + required BuiltMap invoiceMap, + BuiltMap? clientMap, }) { const STATUS_ACTIVE = 'active'; const STATUS_OUTSTANDING = 'outstanding'; @@ -99,7 +99,7 @@ List _chartInvoices({ invoiceMap.forEach((int, invoice) { final client = - clientMap[invoice.clientId] ?? ClientEntity(id: invoice.clientId); + clientMap![invoice!.clientId] ?? ClientEntity(id: invoice.clientId); // Fix for mock data var date = invoice.date.split('T')[0]; @@ -112,9 +112,9 @@ List _chartInvoices({ } if (!invoice.isSent || - invoice.isDeleted || + invoice.isDeleted! || invoice.isCancelledOrReversed || - client.isDeleted || + client.isDeleted! || date.isEmpty) { // skip it } else if (!settings.matchesCurrency(client.currencyId)) { @@ -141,27 +141,27 @@ List _chartInvoices({ outstandingData.total += balance; if (invoice.isBetween( - settings.startDate(company), settings.endDate(company))) { - if (totals[STATUS_ACTIVE][date] == null) { - totals[STATUS_ACTIVE][date] = 0.0; - totals[STATUS_OUTSTANDING][date] = 0.0; + settings.startDate(company)!, settings.endDate(company))) { + if (totals[STATUS_ACTIVE]![date] == null) { + totals[STATUS_ACTIVE]![date] = 0.0; + totals[STATUS_OUTSTANDING]![date] = 0.0; activeData.entityMap[date] = []; outstandingData.entityMap[date] = []; } - totals[STATUS_ACTIVE][date] += amount; - totals[STATUS_OUTSTANDING][date] += balance; + totals[STATUS_ACTIVE]![date] += amount; + totals[STATUS_OUTSTANDING]![date] += balance; activeData.periodTotal += amount; outstandingData.periodTotal += balance; counts[STATUS_ACTIVE]++; - activeData.entityMap[date].add(invoice.id); + activeData.entityMap[date]!.add(invoice.id); if (invoice.balance > 0) { counts[STATUS_OUTSTANDING]++; - outstandingData.entityMap[date].add(invoice.id); + outstandingData.entityMap[date]!.add(invoice.id); } } } @@ -172,11 +172,11 @@ List _chartInvoices({ while (!date.isAfter(endDate)) { final key = convertDateTimeToSqlDate(date); - if (totals[STATUS_ACTIVE].containsKey(key)) { + if (totals[STATUS_ACTIVE]!.containsKey(key)) { activeData.rawSeries - .add(ChartMoneyData(date, totals[STATUS_ACTIVE][key])); + .add(ChartMoneyData(date, totals[STATUS_ACTIVE]![key])); outstandingData.rawSeries - .add(ChartMoneyData(date, totals[STATUS_OUTSTANDING][key])); + .add(ChartMoneyData(date, totals[STATUS_OUTSTANDING]![key])); } else { activeData.rawSeries.add(ChartMoneyData(date, 0.0)); outstandingData.rawSeries.add(ChartMoneyData(date, 0.0)); @@ -192,10 +192,10 @@ List _chartInvoices({ } activeData.average = (counts[STATUS_ACTIVE] ?? 0) > 0 - ? round(activeData.periodTotal / counts[STATUS_ACTIVE], 2) + ? round(activeData.periodTotal / counts[STATUS_ACTIVE]!, 2) : 0; outstandingData.average = (counts[STATUS_OUTSTANDING] ?? 0) > 0 - ? round(outstandingData.periodTotal / counts[STATUS_OUTSTANDING], 2) + ? round(outstandingData.periodTotal / counts[STATUS_OUTSTANDING]!, 2) : 0; final List data = [ @@ -207,41 +207,41 @@ List _chartInvoices({ } var memoizedChartQuotes = memo5(( - BuiltMap currencyMap, - CompanyEntity company, + BuiltMap currencyMap, + CompanyEntity? company, DashboardUISettings settings, - BuiltMap quoteMap, - BuiltMap clientMap, + BuiltMap quoteMap, + BuiltMap clientMap, ) => chartQuotes( currencyMap: currencyMap, - company: company, + company: company!, settings: settings, quoteMap: quoteMap, clientMap: clientMap, )); var memoizedPreviousChartQuotes = memo5(( - BuiltMap currencyMap, - CompanyEntity company, + BuiltMap currencyMap, + CompanyEntity? company, DashboardUISettings settings, - BuiltMap quoteMap, - BuiltMap clientMap, + BuiltMap quoteMap, + BuiltMap clientMap, ) => chartQuotes( currencyMap: currencyMap, - company: company, + company: company!, settings: settings, quoteMap: quoteMap, clientMap: clientMap, )); List chartQuotes({ - BuiltMap currencyMap, - CompanyEntity company, - DashboardUISettings settings, - BuiltMap quoteMap, - BuiltMap clientMap, + BuiltMap? currencyMap, + required CompanyEntity company, + required DashboardUISettings settings, + required BuiltMap quoteMap, + BuiltMap? clientMap, }) { const STATUS_ACTIVE = 'active'; const STATUS_APPROVED = 'approved'; @@ -265,7 +265,7 @@ List chartQuotes({ quoteMap.forEach((int, quote) { final client = - clientMap[quote.clientId] ?? ClientEntity(id: quote.clientId); + clientMap![quote!.clientId] ?? ClientEntity(id: quote.clientId); var date = quote.date; if (date.isNotEmpty) { if (settings.groupBy == kReportGroupYear) { @@ -275,7 +275,7 @@ List chartQuotes({ } } - if (!quote.isSent || quote.isDeleted || client.isDeleted || date.isEmpty) { + if (!quote.isSent || quote.isDeleted! || client.isDeleted! || date.isEmpty) { // skip it } else if (!settings.matchesCurrency(client.currencyId)) { // skip it @@ -301,30 +301,30 @@ List chartQuotes({ } if (quote.isBetween( - settings.startDate(company), settings.endDate(company))) { - if (totals[STATUS_ACTIVE][date] == null) { - totals[STATUS_ACTIVE][date] = 0.0; - totals[STATUS_APPROVED][date] = 0.0; - totals[STATUS_UNAPPROVED][date] = 0.0; + settings.startDate(company)!, settings.endDate(company))) { + if (totals[STATUS_ACTIVE]![date] == null) { + totals[STATUS_ACTIVE]![date] = 0.0; + totals[STATUS_APPROVED]![date] = 0.0; + totals[STATUS_UNAPPROVED]![date] = 0.0; activeData.entityMap[date] = []; approvedData.entityMap[date] = []; unapprovedData.entityMap[date] = []; } - totals[STATUS_ACTIVE][date] += amount; + totals[STATUS_ACTIVE]![date] += amount; counts[STATUS_ACTIVE]++; - activeData.entityMap[date].add(quote.id); + activeData.entityMap[date]!.add(quote.id); if (quote.isApproved) { - totals[STATUS_APPROVED][date] += amount; + totals[STATUS_APPROVED]![date] += amount; counts[STATUS_APPROVED]++; - approvedData.entityMap[date].add(quote.id); + approvedData.entityMap[date]!.add(quote.id); approvedData.periodTotal += amount; } else { - totals[STATUS_UNAPPROVED][date] += amount; + totals[STATUS_UNAPPROVED]![date] += amount; counts[STATUS_UNAPPROVED]++; - unapprovedData.entityMap[date].add(quote.id); + unapprovedData.entityMap[date]!.add(quote.id); unapprovedData.periodTotal += amount; } } @@ -336,13 +336,13 @@ List chartQuotes({ while (!date.isAfter(endDate)) { final key = convertDateTimeToSqlDate(date); - if (totals[STATUS_ACTIVE].containsKey(key)) { + if (totals[STATUS_ACTIVE]!.containsKey(key)) { activeData.rawSeries - .add(ChartMoneyData(date, totals[STATUS_ACTIVE][key])); + .add(ChartMoneyData(date, totals[STATUS_ACTIVE]![key])); approvedData.rawSeries - .add(ChartMoneyData(date, totals[STATUS_APPROVED][key])); + .add(ChartMoneyData(date, totals[STATUS_APPROVED]![key])); unapprovedData.rawSeries - .add(ChartMoneyData(date, totals[STATUS_UNAPPROVED][key])); + .add(ChartMoneyData(date, totals[STATUS_UNAPPROVED]![key])); } else { activeData.rawSeries.add(ChartMoneyData(date, 0.0)); approvedData.rawSeries.add(ChartMoneyData(date, 0.0)); @@ -359,13 +359,13 @@ List chartQuotes({ } activeData.average = (counts[STATUS_ACTIVE] ?? 0) > 0 - ? round(activeData.periodTotal / counts[STATUS_ACTIVE], 2) + ? round(activeData.periodTotal / counts[STATUS_ACTIVE]!, 2) : 0; approvedData.average = (counts[STATUS_APPROVED] ?? 0) > 0 - ? round(approvedData.periodTotal / counts[STATUS_APPROVED], 2) + ? round(approvedData.periodTotal / counts[STATUS_APPROVED]!, 2) : 0; unapprovedData.average = (counts[STATUS_UNAPPROVED] ?? 0) > 0 - ? round(unapprovedData.periodTotal / counts[STATUS_UNAPPROVED], 2) + ? round(unapprovedData.periodTotal / counts[STATUS_UNAPPROVED]!, 2) : 0; final List data = [ @@ -378,16 +378,16 @@ List chartQuotes({ } var memoizedChartPayments = memo6(( - BuiltMap currencyMap, - CompanyEntity company, + BuiltMap currencyMap, + CompanyEntity? company, DashboardUISettings settings, - BuiltMap invoiceMap, - BuiltMap clientMap, - BuiltMap paymentMap, + BuiltMap invoiceMap, + BuiltMap clientMap, + BuiltMap paymentMap, ) => chartPayments( currencyMap, - company, + company!, settings, invoiceMap, clientMap, @@ -395,16 +395,16 @@ var memoizedChartPayments = memo6(( )); var memoizedPreviousChartPayments = memo6(( - BuiltMap currencyMap, - CompanyEntity company, + BuiltMap currencyMap, + CompanyEntity? company, DashboardUISettings settings, - BuiltMap invoiceMap, - BuiltMap clientMap, - BuiltMap paymentMap, + BuiltMap invoiceMap, + BuiltMap clientMap, + BuiltMap paymentMap, ) => chartPayments( currencyMap, - company, + company!, settings, invoiceMap, clientMap, @@ -412,12 +412,12 @@ var memoizedPreviousChartPayments = memo6(( )); List chartPayments( - BuiltMap currencyMap, + BuiltMap currencyMap, CompanyEntity company, DashboardUISettings settings, - BuiltMap invoiceMap, - BuiltMap clientMap, - BuiltMap paymentMap, + BuiltMap invoiceMap, + BuiltMap clientMap, + BuiltMap paymentMap, ) { const STATUS_COMPLETED = 'completed'; const STATUS_REFUNDED = 'refunded'; @@ -437,7 +437,7 @@ List chartPayments( paymentMap.forEach((int, payment) { final client = - clientMap[payment.clientId] ?? ClientEntity(id: payment.clientId); + clientMap[payment!.clientId] ?? ClientEntity(id: payment.clientId); var date = payment.date; if (date.isNotEmpty) { if (settings.groupBy == kReportGroupYear) { @@ -447,9 +447,9 @@ List chartPayments( } } - if (payment.isDeleted || + if (payment.isDeleted! || !payment.isCompletedOrPartiallyRefunded || - client.isDeleted || + client.isDeleted! || date.isEmpty) { // skip it } else if (!settings.matchesCurrency(client.currencyId)) { @@ -484,25 +484,25 @@ List chartPayments( } if (payment.isBetween( - settings.startDate(company), settings.endDate(company))) { - if (totals[STATUS_COMPLETED][date] == null) { - totals[STATUS_COMPLETED][date] = 0.0; - totals[STATUS_REFUNDED][date] = 0.0; + settings.startDate(company)!, settings.endDate(company))) { + if (totals[STATUS_COMPLETED]![date] == null) { + totals[STATUS_COMPLETED]![date] = 0.0; + totals[STATUS_REFUNDED]![date] = 0.0; activeData.entityMap[date] = []; refundedData.entityMap[date] = []; } - totals[STATUS_COMPLETED][date] += completedAmount; - totals[STATUS_REFUNDED][date] += refunded ?? 0; + totals[STATUS_COMPLETED]![date] += completedAmount; + totals[STATUS_REFUNDED]![date] += refunded ?? 0; counts[STATUS_COMPLETED]++; - activeData.entityMap[date].add(payment.id); + activeData.entityMap[date]!.add(payment.id); activeData.periodTotal += completedAmount; if ((payment.refunded ?? 0) > 0) { counts[STATUS_REFUNDED]++; - refundedData.entityMap[date].add(payment.id); + refundedData.entityMap[date]!.add(payment.id); refundedData.periodTotal += refunded ?? 0; } } @@ -514,11 +514,11 @@ List chartPayments( while (!date.isAfter(endDate)) { final key = convertDateTimeToSqlDate(date); - if (totals[STATUS_COMPLETED].containsKey(key)) { + if (totals[STATUS_COMPLETED]!.containsKey(key)) { activeData.rawSeries - .add(ChartMoneyData(date, totals[STATUS_COMPLETED][key])); + .add(ChartMoneyData(date, totals[STATUS_COMPLETED]![key])); refundedData.rawSeries - .add(ChartMoneyData(date, totals[STATUS_REFUNDED][key])); + .add(ChartMoneyData(date, totals[STATUS_REFUNDED]![key])); } else { activeData.rawSeries.add(ChartMoneyData(date, 0.0)); refundedData.rawSeries.add(ChartMoneyData(date, 0.0)); @@ -534,10 +534,10 @@ List chartPayments( } activeData.average = (counts[STATUS_COMPLETED] ?? 0) > 0 - ? round(activeData.periodTotal / counts[STATUS_COMPLETED], 2) + ? round(activeData.periodTotal / counts[STATUS_COMPLETED]!, 2) : 0; refundedData.average = (counts[STATUS_REFUNDED] ?? 0) > 0 - ? round(refundedData.periodTotal / counts[STATUS_REFUNDED], 2) + ? round(refundedData.periodTotal / counts[STATUS_REFUNDED]!, 2) : 0; final List data = [ @@ -549,18 +549,18 @@ List chartPayments( } var memoizedChartTasks = memo8(( - BuiltMap currencyMap, - CompanyEntity company, + BuiltMap currencyMap, + CompanyEntity? company, DashboardUISettings settings, - BuiltMap taskMap, - BuiltMap invoiceMap, - BuiltMap projectMap, - BuiltMap clientMap, - BuiltMap groupMap, + BuiltMap taskMap, + BuiltMap invoiceMap, + BuiltMap projectMap, + BuiltMap clientMap, + BuiltMap groupMap, ) => chartTasks( currencyMap, - company, + company!, settings, taskMap, invoiceMap, @@ -570,18 +570,18 @@ var memoizedChartTasks = memo8(( )); var memoizedPreviousChartTasks = memo8(( - BuiltMap currencyMap, - CompanyEntity company, + BuiltMap currencyMap, + CompanyEntity? company, DashboardUISettings settings, - BuiltMap taskMap, - BuiltMap invoiceMap, - BuiltMap projectMap, - BuiltMap clientMap, - BuiltMap groupMap, + BuiltMap taskMap, + BuiltMap invoiceMap, + BuiltMap projectMap, + BuiltMap clientMap, + BuiltMap groupMap, ) => chartTasks( currencyMap, - company, + company!, settings, taskMap, invoiceMap, @@ -591,14 +591,14 @@ var memoizedPreviousChartTasks = memo8(( )); List chartTasks( - BuiltMap currencyMap, + BuiltMap currencyMap, CompanyEntity company, DashboardUISettings settings, - BuiltMap taskMap, - BuiltMap invoiceMap, - BuiltMap projectMap, - BuiltMap clientMap, - BuiltMap groupMap, + BuiltMap taskMap, + BuiltMap invoiceMap, + BuiltMap projectMap, + BuiltMap clientMap, + BuiltMap groupMap, ) { const STATUS_LOGGED = 'logged'; const STATUS_INVOICED = 'invoiced'; @@ -621,20 +621,20 @@ List chartTasks( final ChartDataGroup paidData = ChartDataGroup(STATUS_PAID); taskMap.forEach((int, task) { - final client = clientMap[task.clientId] ?? ClientEntity(id: task.clientId); + final client = clientMap[task!.clientId] ?? ClientEntity(id: task.clientId); final invoice = invoiceMap[task.invoiceId] ?? InvoiceEntity(id: task.clientId); final project = projectMap[task.projectId] ?? ProjectEntity(id: task.projectId); final group = groupMap[client.groupId] ?? GroupEntity(id: client.groupId); - if (task.isDeleted || client.isDeleted || project.isDeleted) { + if (task.isDeleted! || client.isDeleted! || project.isDeleted!) { // skip it } else if (!settings.matchesCurrency(client.currencyId)) { // skip it } else { task.getTaskTimes().forEach((taskTime) { - taskTime.getParts().forEach((date, duration) { + taskTime!.getParts().forEach((date, duration) { if (settings.groupBy == kReportGroupYear) { date = date.substring(0, 4) + '-01-01'; } else if (settings.groupBy == kReportGroupMonth) { @@ -647,7 +647,7 @@ List chartTasks( client: client, task: task, group: group, - ); + )!; double amount = taskRate * round(duration.inSeconds / 3600, 3); // Handle "All" @@ -663,7 +663,7 @@ List chartTasks( if (task.isInvoiced) { if (invoiceMap.containsKey(task.invoiceId) && - invoiceMap[task.invoiceId].isPaid) { + invoiceMap[task.invoiceId]!.isPaid) { paidData.total += amount; } else { invoicedData.total += amount; @@ -674,10 +674,10 @@ List chartTasks( if (task.isBetween( settings.startDate(company), settings.endDate(company))) { - if (totals[STATUS_LOGGED][date] == null) { - totals[STATUS_LOGGED][date] = 0.0; - totals[STATUS_INVOICED][date] = 0.0; - totals[STATUS_PAID][date] = 0.0; + if (totals[STATUS_LOGGED]![date] == null) { + totals[STATUS_LOGGED]![date] = 0.0; + totals[STATUS_INVOICED]![date] = 0.0; + totals[STATUS_PAID]![date] = 0.0; loggedData.entityMap[date] = []; invoicedData.entityMap[date] = []; @@ -686,18 +686,18 @@ List chartTasks( if (task.isInvoiced) { if (invoiceMap.containsKey(task.invoiceId) && - invoiceMap[task.invoiceId].isPaid) { - totals[STATUS_PAID][date] += amount; - paidData.entityMap[date].add(task.id); + invoiceMap[task.invoiceId]!.isPaid) { + totals[STATUS_PAID]![date] += amount; + paidData.entityMap[date]!.add(task.id); paidData.periodTotal += amount; } else { - totals[STATUS_INVOICED][date] += amount; - invoicedData.entityMap[date].add(task.id); + totals[STATUS_INVOICED]![date] += amount; + invoicedData.entityMap[date]!.add(task.id); invoicedData.periodTotal += amount; } } else { - totals[STATUS_LOGGED][date] += amount; - loggedData.entityMap[date].add(task.id); + totals[STATUS_LOGGED]![date] += amount; + loggedData.entityMap[date]!.add(task.id); loggedData.periodTotal += amount; } } @@ -706,7 +706,7 @@ List chartTasks( if (task.isInvoiced) { if (invoiceMap.containsKey(task.invoiceId) && - invoiceMap[task.invoiceId].isPaid) { + invoiceMap[task.invoiceId]!.isPaid) { counts[STATUS_PAID]++; } else { counts[STATUS_INVOICED]++; @@ -722,12 +722,12 @@ List chartTasks( while (!date.isAfter(endDate)) { final key = convertDateTimeToSqlDate(date); - if (totals[STATUS_LOGGED].containsKey(key)) { + if (totals[STATUS_LOGGED]!.containsKey(key)) { loggedData.rawSeries - .add(ChartMoneyData(date, totals[STATUS_LOGGED][key])); + .add(ChartMoneyData(date, totals[STATUS_LOGGED]![key])); invoicedData.rawSeries - .add(ChartMoneyData(date, totals[STATUS_INVOICED][key])); - paidData.rawSeries.add(ChartMoneyData(date, totals[STATUS_PAID][key])); + .add(ChartMoneyData(date, totals[STATUS_INVOICED]![key])); + paidData.rawSeries.add(ChartMoneyData(date, totals[STATUS_PAID]![key])); } else { loggedData.rawSeries.add(ChartMoneyData(date, 0.0)); invoicedData.rawSeries.add(ChartMoneyData(date, 0.0)); @@ -744,13 +744,13 @@ List chartTasks( } loggedData.average = (counts[STATUS_LOGGED] ?? 0) > 0 - ? round(loggedData.periodTotal / counts[STATUS_LOGGED], 2) + ? round(loggedData.periodTotal / counts[STATUS_LOGGED]!, 2) : 0; invoicedData.average = (counts[STATUS_INVOICED] ?? 0) > 0 - ? round(invoicedData.periodTotal / counts[STATUS_INVOICED], 2) + ? round(invoicedData.periodTotal / counts[STATUS_INVOICED]!, 2) : 0; paidData.average = (counts[STATUS_PAID] ?? 0) > 0 - ? round(paidData.periodTotal / counts[STATUS_PAID], 2) + ? round(paidData.periodTotal / counts[STATUS_PAID]!, 2) : 0; final List data = [ @@ -763,11 +763,11 @@ List chartTasks( } List chartExpenses( - BuiltMap currencyMap, + BuiltMap currencyMap, CompanyEntity company, DashboardUISettings settings, - BuiltMap invoiceMap, - BuiltMap expenseMap) { + BuiltMap invoiceMap, + BuiltMap expenseMap) { const STATUS_LOGGED = 'logged'; const STATUS_PENDING = 'pending'; const STATUS_INVOICED = 'invoiced'; @@ -793,8 +793,8 @@ List chartExpenses( final ChartDataGroup paidData = ChartDataGroup(STATUS_PAID); expenseMap.forEach((int, expense) { - final currencyId = expense.currencyId; - var date = expense.date; + final currencyId = expense!.currencyId; + var date = expense.date!; if (date.isNotEmpty) { if (settings.groupBy == kReportGroupYear) { date = date.substring(0, 4) + '-01-01'; @@ -806,7 +806,7 @@ List chartExpenses( double amount = settings.includeTaxes ? expense.grossAmount : expense.netAmount; - if (expense.isDeleted || date.isEmpty) { + if (expense.isDeleted! || date.isEmpty) { // skip it } else if (!settings.matchesCurrency(currencyId)) { // skip it @@ -836,11 +836,11 @@ List chartExpenses( if (expense.isBetween( settings.startDate(company), settings.endDate(company))) { - if (totals[STATUS_LOGGED][date] == null) { - totals[STATUS_LOGGED][date] = 0.0; - totals[STATUS_PENDING][date] = 0.0; - totals[STATUS_INVOICED][date] = 0.0; - totals[STATUS_PAID][date] = 0.0; + if (totals[STATUS_LOGGED]![date] == null) { + totals[STATUS_LOGGED]![date] = 0.0; + totals[STATUS_PENDING]![date] = 0.0; + totals[STATUS_INVOICED]![date] = 0.0; + totals[STATUS_PAID]![date] = 0.0; loggedData.entityMap[date] = []; pendingData.entityMap[date] = []; @@ -851,25 +851,25 @@ List chartExpenses( if (expense.isInvoiced) { final invoice = invoiceMap[expense.invoiceId] ?? InvoiceEntity(); if (invoice.isPaid) { - totals[STATUS_PAID][date] += amount; + totals[STATUS_PAID]![date] += amount; counts[STATUS_PAID]++; - paidData.entityMap[date].add(expense.id); + paidData.entityMap[date]!.add(expense.id); paidData.periodTotal += amount; } else { - totals[STATUS_INVOICED][date] += amount; + totals[STATUS_INVOICED]![date] += amount; counts[STATUS_INVOICED]++; - invoicedData.entityMap[date].add(expense.id); + invoicedData.entityMap[date]!.add(expense.id); invoicedData.periodTotal += amount; } } else if (expense.isPending) { - totals[STATUS_PENDING][date] += amount; + totals[STATUS_PENDING]![date] += amount; counts[STATUS_PENDING]++; - pendingData.entityMap[date].add(expense.id); + pendingData.entityMap[date]!.add(expense.id); pendingData.periodTotal += amount; } else { - totals[STATUS_LOGGED][date] += amount; + totals[STATUS_LOGGED]![date] += amount; counts[STATUS_LOGGED]++; - loggedData.entityMap[date].add(expense.id); + loggedData.entityMap[date]!.add(expense.id); loggedData.periodTotal += amount; } } @@ -881,14 +881,14 @@ List chartExpenses( while (!date.isAfter(endDate)) { final key = convertDateTimeToSqlDate(date); - if (totals[STATUS_LOGGED].containsKey(key)) { + if (totals[STATUS_LOGGED]!.containsKey(key)) { loggedData.rawSeries - .add(ChartMoneyData(date, totals[STATUS_LOGGED][key])); + .add(ChartMoneyData(date, totals[STATUS_LOGGED]![key])); pendingData.rawSeries - .add(ChartMoneyData(date, totals[STATUS_PENDING][key])); + .add(ChartMoneyData(date, totals[STATUS_PENDING]![key])); invoicedData.rawSeries - .add(ChartMoneyData(date, totals[STATUS_INVOICED][key])); - paidData.rawSeries.add(ChartMoneyData(date, totals[STATUS_PAID][key])); + .add(ChartMoneyData(date, totals[STATUS_INVOICED]![key])); + paidData.rawSeries.add(ChartMoneyData(date, totals[STATUS_PAID]![key])); } else { loggedData.rawSeries.add(ChartMoneyData(date, 0.0)); pendingData.rawSeries.add(ChartMoneyData(date, 0.0)); @@ -906,16 +906,16 @@ List chartExpenses( } loggedData.average = (counts[STATUS_LOGGED] ?? 0) > 0 - ? round(loggedData.periodTotal / counts[STATUS_LOGGED], 2) + ? round(loggedData.periodTotal / counts[STATUS_LOGGED]!, 2) : 0; pendingData.average = (counts[STATUS_PENDING] ?? 0) > 0 - ? round(pendingData.periodTotal / counts[STATUS_PENDING], 2) + ? round(pendingData.periodTotal / counts[STATUS_PENDING]!, 2) : 0; invoicedData.average = (counts[STATUS_INVOICED] ?? 0) > 0 - ? round(invoicedData.periodTotal / counts[STATUS_INVOICED], 2) + ? round(invoicedData.periodTotal / counts[STATUS_INVOICED]!, 2) : 0; paidData.average = (counts[STATUS_PAID] ?? 0) > 0 - ? round(paidData.periodTotal / counts[STATUS_PAID], 2) + ? round(paidData.periodTotal / counts[STATUS_PAID]!, 2) : 0; final List data = [ @@ -928,32 +928,32 @@ List chartExpenses( return data; } -var memoizedChartExpenses = memo5((BuiltMap currencyMap, - CompanyEntity company, +var memoizedChartExpenses = memo5((BuiltMap currencyMap, + CompanyEntity? company, DashboardUISettings settings, - BuiltMap invoiceMap, - BuiltMap expenseMap) => - chartExpenses(currencyMap, company, settings, invoiceMap, expenseMap)); + BuiltMap invoiceMap, + BuiltMap expenseMap) => + chartExpenses(currencyMap, company!, settings, invoiceMap, expenseMap)); var memoizedPreviousChartExpenses = memo5( - (BuiltMap currencyMap, - CompanyEntity company, + (BuiltMap currencyMap, + CompanyEntity? company, DashboardUISettings settings, - BuiltMap invoiceMap, - BuiltMap expenseMap) => - chartExpenses(currencyMap, company, settings, invoiceMap, expenseMap)); + BuiltMap invoiceMap, + BuiltMap expenseMap) => + chartExpenses(currencyMap, company!, settings, invoiceMap, expenseMap)); var memoizedRunningTasks = memo2( - (BuiltMap taskMap, String userId) => + (BuiltMap taskMap, String userId) => runningTasks(taskMap, userId)); -List runningTasks( - BuiltMap taskMap, String userId) { - final tasks = []; +List runningTasks( + BuiltMap taskMap, String userId) { + final tasks = []; taskMap.forEach((taskId, task) { - if (task.isRunning && - !task.isDeleted && + if (task!.isRunning && + !task.isDeleted! && (task.createdUserId == userId || task.assignedUserId == userId)) { tasks.add(task); } diff --git a/lib/redux/dashboard/dashboard_sidebar_selectors.dart b/lib/redux/dashboard/dashboard_sidebar_selectors.dart index abfd92df6..56e0510e6 100644 --- a/lib/redux/dashboard/dashboard_sidebar_selectors.dart +++ b/lib/redux/dashboard/dashboard_sidebar_selectors.dart @@ -6,22 +6,22 @@ import 'package:memoize/memoize.dart'; import 'package:invoiceninja_flutter/data/models/models.dart'; var memoizedUpcomingInvoices = memo2(( - BuiltMap invoiceMap, - BuiltMap clientMap, + BuiltMap invoiceMap, + BuiltMap clientMap, ) => _upcomingInvoices( invoiceMap: invoiceMap, clientMap: clientMap, )); -List _upcomingInvoices({ - BuiltMap invoiceMap, - BuiltMap clientMap, +List _upcomingInvoices({ + required BuiltMap invoiceMap, + BuiltMap? clientMap, }) { - final invoices = []; + final invoices = []; invoiceMap.forEach((index, invoice) { final client = - clientMap[invoice.clientId] ?? ClientEntity(id: invoice.clientId); + clientMap![invoice!.clientId] ?? ClientEntity(id: invoice.clientId); if (invoice.isNotActive || invoice.isCancelledOrReversed || client.isNotActive) { @@ -32,28 +32,28 @@ List _upcomingInvoices({ }); invoices.sort((invoiceA, invoiceB) => - invoiceA.primaryDate.compareTo(invoiceB.primaryDate)); + invoiceA!.primaryDate.compareTo(invoiceB!.primaryDate)); return invoices; } var memoizedPastDueInvoices = memo2(( - BuiltMap invoiceMap, - BuiltMap clientMap, + BuiltMap invoiceMap, + BuiltMap clientMap, ) => _pastDueInvoices( invoiceMap: invoiceMap, clientMap: clientMap, )); -List _pastDueInvoices({ - BuiltMap invoiceMap, - BuiltMap clientMap, +List _pastDueInvoices({ + required BuiltMap invoiceMap, + BuiltMap? clientMap, }) { - final invoices = []; + final invoices = []; invoiceMap.forEach((index, invoice) { final client = - clientMap[invoice.clientId] ?? ClientEntity(id: invoice.clientId); + clientMap![invoice!.clientId] ?? ClientEntity(id: invoice.clientId); if (invoice.isNotActive || invoice.isCancelledOrReversed || client.isNotActive) { @@ -64,32 +64,32 @@ List _pastDueInvoices({ }); invoices.sort((invoiceA, invoiceB) => - invoiceA.primaryDate.compareTo(invoiceB.primaryDate)); + invoiceA!.primaryDate.compareTo(invoiceB!.primaryDate)); return invoices; } var memoizedRecentPayments = memo2(( - BuiltMap paymentMap, - BuiltMap clientMap, + BuiltMap paymentMap, + BuiltMap clientMap, ) => _recentPayments( paymentMap: paymentMap, clientMap: clientMap, )); -List _recentPayments({ - BuiltMap paymentMap, - BuiltMap clientMap, +List _recentPayments({ + required BuiltMap paymentMap, + BuiltMap? clientMap, }) { - final payments = []; + final payments = []; final threeMonthsAgo = (DateTime.now().subtract(Duration(days: 60)).millisecondsSinceEpoch / 1000) .round(); paymentMap.forEach((index, payment) { final client = - clientMap[payment.clientId] ?? ClientEntity(id: payment.clientId); + clientMap![payment!.clientId] ?? ClientEntity(id: payment.clientId); if (payment.isNotActive || client.isNotActive) { // do noting } else if (payment.isActive && payment.createdAt > threeMonthsAgo) { @@ -98,7 +98,7 @@ List _recentPayments({ }); payments.sort((paymentA, paymentB) { - if (paymentA.date == paymentB.date) { + if (paymentA!.date == paymentB!.date) { return paymentB.createdAt.compareTo(paymentA.createdAt); } else { return paymentB.date.compareTo(paymentA.date); @@ -109,22 +109,22 @@ List _recentPayments({ } var memoizedUpcomingQuotes = memo2(( - BuiltMap quoteMap, - BuiltMap clientMap, + BuiltMap quoteMap, + BuiltMap clientMap, ) => _upcomingQuotes( quoteMap: quoteMap, clientMap: clientMap, )); -List _upcomingQuotes({ - BuiltMap quoteMap, - BuiltMap clientMap, +List _upcomingQuotes({ + required BuiltMap quoteMap, + BuiltMap? clientMap, }) { - final quotes = []; + final quotes = []; quoteMap.forEach((index, quote) { final client = - clientMap[quote.clientId] ?? ClientEntity(id: quote.clientId); + clientMap![quote!.clientId] ?? ClientEntity(id: quote.clientId); if (quote.isNotActive || client.isNotActive) { // do noting } else if (quote.isUpcoming) { @@ -133,28 +133,28 @@ List _upcomingQuotes({ }); quotes.sort( - (quoteA, quoteB) => quoteA.primaryDate.compareTo(quoteB.primaryDate)); + (quoteA, quoteB) => quoteA!.primaryDate.compareTo(quoteB!.primaryDate)); return quotes; } var memoizedExpiredQuotes = memo2(( - BuiltMap quoteMap, - BuiltMap clientMap, + BuiltMap quoteMap, + BuiltMap clientMap, ) => _expiredQuotes( quoteMap: quoteMap, clientMap: clientMap, )); -List _expiredQuotes({ - BuiltMap quoteMap, - BuiltMap clientMap, +List _expiredQuotes({ + required BuiltMap quoteMap, + BuiltMap? clientMap, }) { - final quotes = []; + final quotes = []; quoteMap.forEach((index, quote) { final client = - clientMap[quote.clientId] ?? ClientEntity(id: quote.clientId); + clientMap![quote!.clientId] ?? ClientEntity(id: quote.clientId); if (quote.isNotActive || client.isNotActive) { // do noting } else if (quote.isPastDue) { @@ -163,27 +163,27 @@ List _expiredQuotes({ }); quotes.sort( - (quoteA, quoteB) => quoteA.primaryDate.compareTo(quoteB.primaryDate)); + (quoteA, quoteB) => quoteA!.primaryDate.compareTo(quoteB!.primaryDate)); return quotes; } var memoizedRunningTasks = memo2(( - BuiltMap taskMap, - BuiltMap clientMap, + BuiltMap taskMap, + BuiltMap clientMap, ) => _runningTasks( taskMap: taskMap, clientMap: clientMap, )); -List _runningTasks({ - BuiltMap taskMap, - BuiltMap clientMap, +List _runningTasks({ + required BuiltMap taskMap, + BuiltMap? clientMap, }) { - final tasks = []; + final tasks = []; taskMap.forEach((index, task) { - final client = clientMap[task.clientId] ?? ClientEntity(id: task.clientId); + final client = clientMap![task!.clientId] ?? ClientEntity(id: task.clientId); if (task.isNotActive || client.isNotActive) { // do noting } else if (task.isRunning) { @@ -192,27 +192,27 @@ List _runningTasks({ }); tasks.sort( - (taskA, taskB) => (taskB.updatedAt ?? 0).compareTo(taskA.updatedAt ?? 0)); + (taskA, taskB) => (taskB!.updatedAt ?? 0).compareTo(taskA!.updatedAt ?? 0)); return tasks; } var memoizedRecentTasks = memo2(( - BuiltMap taskMap, - BuiltMap clientMap, + BuiltMap taskMap, + BuiltMap clientMap, ) => _recentTasks( taskMap: taskMap, clientMap: clientMap, )); -List _recentTasks({ - BuiltMap taskMap, - BuiltMap clientMap, +List _recentTasks({ + required BuiltMap taskMap, + BuiltMap? clientMap, }) { - final tasks = []; + final tasks = []; taskMap.forEach((index, task) { - final client = clientMap[task.clientId] ?? ClientEntity(id: task.clientId); + final client = clientMap![task!.clientId] ?? ClientEntity(id: task.clientId); if (task.isNotActive || client.isNotActive) { // do noting } else if (!task.isRunning) { @@ -221,7 +221,7 @@ List _recentTasks({ }); tasks.sort( - (taskA, taskB) => (taskB.updatedAt ?? 0).compareTo(taskA.updatedAt ?? 0)); + (taskA, taskB) => (taskB!.updatedAt ?? 0).compareTo(taskA!.updatedAt ?? 0)); return tasks; } @@ -259,22 +259,22 @@ List _upcomingExpenses({ */ var memoizedRecentExpenses = memo2(( - BuiltMap expenseMap, - BuiltMap clientMap, + BuiltMap expenseMap, + BuiltMap clientMap, ) => _recentExpenses( expenseMap: expenseMap, clientMap: clientMap, )); -List _recentExpenses({ - BuiltMap expenseMap, - BuiltMap clientMap, +List _recentExpenses({ + required BuiltMap expenseMap, + BuiltMap? clientMap, }) { - final expenses = []; + final expenses = []; expenseMap.forEach((index, expense) { final client = - clientMap[expense.clientId] ?? ClientEntity(id: expense.clientId); + clientMap![expense!.clientId] ?? ClientEntity(id: expense.clientId); if (client.isNotActive || expense.isNotActive || expense.isInvoiced) { // do noting } else { @@ -283,8 +283,8 @@ List _recentExpenses({ }); expenses.sort((expenseA, expenseB) { - final expenseAdate = expenseA.date ?? ''; - final expenseBdate = expenseB.date ?? ''; + final expenseAdate = expenseA!.date ?? ''; + final expenseBdate = expenseB!.date ?? ''; if (expenseAdate == expenseBdate) { return expenseB.number.compareTo(expenseA.number); diff --git a/lib/redux/dashboard/dashboard_state.dart b/lib/redux/dashboard/dashboard_state.dart index 6a9d3eb06..7b8bc6afa 100644 --- a/lib/redux/dashboard/dashboard_state.dart +++ b/lib/redux/dashboard/dashboard_state.dart @@ -33,7 +33,7 @@ abstract class DashboardUIState EntityType get selectedEntityType; - BuiltMap> get selectedEntities; + BuiltMap> get selectedEntities; bool get showSidebar; @@ -107,7 +107,7 @@ abstract class DashboardUISettings String get groupBy; - bool matchesCurrency(String match) { + bool matchesCurrency(String? match) { if (currencyId == null || currencyId.isEmpty || currencyId == kCurrencyAll) { @@ -117,7 +117,7 @@ abstract class DashboardUISettings return currencyId == match; } - String startDate(CompanyEntity company) { + String? startDate(CompanyEntity company) { return calculateStartDate( company: company, offset: offset, @@ -127,7 +127,7 @@ abstract class DashboardUISettings ); } - String endDate(CompanyEntity company) { + String? endDate(CompanyEntity company) { return calculateEndDate( company: company, offset: offset, diff --git a/lib/redux/dashboard/dashboard_state.g.dart b/lib/redux/dashboard/dashboard_state.g.dart index 136a554ed..5dd95d486 100644 --- a/lib/redux/dashboard/dashboard_state.g.dart +++ b/lib/redux/dashboard/dashboard_state.g.dart @@ -19,9 +19,9 @@ class _$DashboardUIStateSerializer final String wireName = 'DashboardUIState'; @override - Iterable serialize(Serializers serializers, DashboardUIState object, + Iterable serialize(Serializers serializers, DashboardUIState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'settings', serializers.serialize(object.settings, specifiedType: const FullType(DashboardUISettings)), @@ -31,7 +31,7 @@ class _$DashboardUIStateSerializer 'selectedEntities', serializers.serialize(object.selectedEntities, specifiedType: const FullType(BuiltMap, const [ - const FullType(EntityType), + const FullType.nullable(EntityType), const FullType(BuiltList, const [const FullType(String)]) ])), 'showSidebar', @@ -44,35 +44,35 @@ class _$DashboardUIStateSerializer @override DashboardUIState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new DashboardUIStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'settings': result.settings.replace(serializers.deserialize(value, - specifiedType: const FullType(DashboardUISettings)) + specifiedType: const FullType(DashboardUISettings))! as DashboardUISettings); break; case 'selectedEntityType': result.selectedEntityType = serializers.deserialize(value, - specifiedType: const FullType(EntityType)) as EntityType; + specifiedType: const FullType(EntityType))! as EntityType; break; case 'selectedEntities': result.selectedEntities.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ - const FullType(EntityType), + const FullType.nullable(EntityType), const FullType(BuiltList, const [const FullType(String)]) - ]))); + ]))!); break; case 'showSidebar': result.showSidebar = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; } } @@ -92,10 +92,10 @@ class _$DashboardUISettingsSerializer final String wireName = 'DashboardUISettings'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, DashboardUISettings object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'dateRange', serializers.serialize(object.dateRange, specifiedType: const FullType(DateRange)), @@ -135,60 +135,60 @@ class _$DashboardUISettingsSerializer @override DashboardUISettings deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new DashboardUISettingsBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'dateRange': result.dateRange = serializers.deserialize(value, - specifiedType: const FullType(DateRange)) as DateRange; + specifiedType: const FullType(DateRange))! as DateRange; break; case 'customStartDate': result.customStartDate = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'customEndDate': result.customEndDate = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'enableComparison': result.enableComparison = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'compareDateRange': result.compareDateRange = serializers.deserialize(value, - specifiedType: const FullType(DateRangeComparison)) + specifiedType: const FullType(DateRangeComparison))! as DateRangeComparison; break; case 'compareCustomStartDate': result.compareCustomStartDate = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'compareCustomEndDate': result.compareCustomEndDate = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'offset': result.offset = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'currencyId': result.currencyId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'includeTaxes': result.includeTaxes = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'groupBy': result.groupBy = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; } } @@ -203,19 +203,19 @@ class _$DashboardUIState extends DashboardUIState { @override final EntityType selectedEntityType; @override - final BuiltMap> selectedEntities; + final BuiltMap> selectedEntities; @override final bool showSidebar; factory _$DashboardUIState( - [void Function(DashboardUIStateBuilder) updates]) => + [void Function(DashboardUIStateBuilder)? updates]) => (new DashboardUIStateBuilder()..update(updates))._build(); _$DashboardUIState._( - {this.settings, - this.selectedEntityType, - this.selectedEntities, - this.showSidebar}) + {required this.settings, + required this.selectedEntityType, + required this.selectedEntities, + required this.showSidebar}) : super._() { BuiltValueNullFieldError.checkNotNull( settings, r'DashboardUIState', 'settings'); @@ -245,10 +245,10 @@ class _$DashboardUIState extends DashboardUIState { showSidebar == other.showSidebar; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, settings.hashCode); _$hash = $jc(_$hash, selectedEntityType.hashCode); @@ -271,30 +271,30 @@ class _$DashboardUIState extends DashboardUIState { class DashboardUIStateBuilder implements Builder { - _$DashboardUIState _$v; + _$DashboardUIState? _$v; - DashboardUISettingsBuilder _settings; + DashboardUISettingsBuilder? _settings; DashboardUISettingsBuilder get settings => _$this._settings ??= new DashboardUISettingsBuilder(); - set settings(DashboardUISettingsBuilder settings) => + set settings(DashboardUISettingsBuilder? settings) => _$this._settings = settings; - EntityType _selectedEntityType; - EntityType get selectedEntityType => _$this._selectedEntityType; - set selectedEntityType(EntityType selectedEntityType) => + EntityType? _selectedEntityType; + EntityType? get selectedEntityType => _$this._selectedEntityType; + set selectedEntityType(EntityType? selectedEntityType) => _$this._selectedEntityType = selectedEntityType; - MapBuilder> _selectedEntities; - MapBuilder> get selectedEntities => + MapBuilder>? _selectedEntities; + MapBuilder> get selectedEntities => _$this._selectedEntities ??= - new MapBuilder>(); + new MapBuilder>(); set selectedEntities( - MapBuilder> selectedEntities) => + MapBuilder>? selectedEntities) => _$this._selectedEntities = selectedEntities; - bool _showSidebar; - bool get showSidebar => _$this._showSidebar; - set showSidebar(bool showSidebar) => _$this._showSidebar = showSidebar; + bool? _showSidebar; + bool? get showSidebar => _$this._showSidebar; + set showSidebar(bool? showSidebar) => _$this._showSidebar = showSidebar; DashboardUIStateBuilder(); @@ -317,7 +317,7 @@ class DashboardUIStateBuilder } @override - void update(void Function(DashboardUIStateBuilder) updates) { + void update(void Function(DashboardUIStateBuilder)? updates) { if (updates != null) updates(this); } @@ -338,7 +338,7 @@ class DashboardUIStateBuilder showSidebar: BuiltValueNullFieldError.checkNotNull( showSidebar, r'DashboardUIState', 'showSidebar')); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'settings'; settings.build(); @@ -381,21 +381,21 @@ class _$DashboardUISettings extends DashboardUISettings { final String groupBy; factory _$DashboardUISettings( - [void Function(DashboardUISettingsBuilder) updates]) => + [void Function(DashboardUISettingsBuilder)? updates]) => (new DashboardUISettingsBuilder()..update(updates))._build(); _$DashboardUISettings._( - {this.dateRange, - this.customStartDate, - this.customEndDate, - this.enableComparison, - this.compareDateRange, - this.compareCustomStartDate, - this.compareCustomEndDate, - this.offset, - this.currencyId, - this.includeTaxes, - this.groupBy}) + {required this.dateRange, + required this.customStartDate, + required this.customEndDate, + required this.enableComparison, + required this.compareDateRange, + required this.compareCustomStartDate, + required this.compareCustomEndDate, + required this.offset, + required this.currencyId, + required this.includeTaxes, + required this.groupBy}) : super._() { BuiltValueNullFieldError.checkNotNull( dateRange, r'DashboardUISettings', 'dateRange'); @@ -447,10 +447,10 @@ class _$DashboardUISettings extends DashboardUISettings { groupBy == other.groupBy; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, dateRange.hashCode); _$hash = $jc(_$hash, customStartDate.hashCode); @@ -487,57 +487,57 @@ class _$DashboardUISettings extends DashboardUISettings { class DashboardUISettingsBuilder implements Builder { - _$DashboardUISettings _$v; + _$DashboardUISettings? _$v; - DateRange _dateRange; - DateRange get dateRange => _$this._dateRange; - set dateRange(DateRange dateRange) => _$this._dateRange = dateRange; + DateRange? _dateRange; + DateRange? get dateRange => _$this._dateRange; + set dateRange(DateRange? dateRange) => _$this._dateRange = dateRange; - String _customStartDate; - String get customStartDate => _$this._customStartDate; - set customStartDate(String customStartDate) => + String? _customStartDate; + String? get customStartDate => _$this._customStartDate; + set customStartDate(String? customStartDate) => _$this._customStartDate = customStartDate; - String _customEndDate; - String get customEndDate => _$this._customEndDate; - set customEndDate(String customEndDate) => + String? _customEndDate; + String? get customEndDate => _$this._customEndDate; + set customEndDate(String? customEndDate) => _$this._customEndDate = customEndDate; - bool _enableComparison; - bool get enableComparison => _$this._enableComparison; - set enableComparison(bool enableComparison) => + bool? _enableComparison; + bool? get enableComparison => _$this._enableComparison; + set enableComparison(bool? enableComparison) => _$this._enableComparison = enableComparison; - DateRangeComparison _compareDateRange; - DateRangeComparison get compareDateRange => _$this._compareDateRange; - set compareDateRange(DateRangeComparison compareDateRange) => + DateRangeComparison? _compareDateRange; + DateRangeComparison? get compareDateRange => _$this._compareDateRange; + set compareDateRange(DateRangeComparison? compareDateRange) => _$this._compareDateRange = compareDateRange; - String _compareCustomStartDate; - String get compareCustomStartDate => _$this._compareCustomStartDate; - set compareCustomStartDate(String compareCustomStartDate) => + String? _compareCustomStartDate; + String? get compareCustomStartDate => _$this._compareCustomStartDate; + set compareCustomStartDate(String? compareCustomStartDate) => _$this._compareCustomStartDate = compareCustomStartDate; - String _compareCustomEndDate; - String get compareCustomEndDate => _$this._compareCustomEndDate; - set compareCustomEndDate(String compareCustomEndDate) => + String? _compareCustomEndDate; + String? get compareCustomEndDate => _$this._compareCustomEndDate; + set compareCustomEndDate(String? compareCustomEndDate) => _$this._compareCustomEndDate = compareCustomEndDate; - int _offset; - int get offset => _$this._offset; - set offset(int offset) => _$this._offset = offset; + int? _offset; + int? get offset => _$this._offset; + set offset(int? offset) => _$this._offset = offset; - String _currencyId; - String get currencyId => _$this._currencyId; - set currencyId(String currencyId) => _$this._currencyId = currencyId; + String? _currencyId; + String? get currencyId => _$this._currencyId; + set currencyId(String? currencyId) => _$this._currencyId = currencyId; - bool _includeTaxes; - bool get includeTaxes => _$this._includeTaxes; - set includeTaxes(bool includeTaxes) => _$this._includeTaxes = includeTaxes; + bool? _includeTaxes; + bool? get includeTaxes => _$this._includeTaxes; + set includeTaxes(bool? includeTaxes) => _$this._includeTaxes = includeTaxes; - String _groupBy; - String get groupBy => _$this._groupBy; - set groupBy(String groupBy) => _$this._groupBy = groupBy; + String? _groupBy; + String? get groupBy => _$this._groupBy; + set groupBy(String? groupBy) => _$this._groupBy = groupBy; DashboardUISettingsBuilder() { DashboardUISettings._initializeBuilder(this); @@ -569,7 +569,7 @@ class DashboardUISettingsBuilder } @override - void update(void Function(DashboardUISettingsBuilder) updates) { + void update(void Function(DashboardUISettingsBuilder)? updates) { if (updates != null) updates(this); } diff --git a/lib/redux/design/design_actions.dart b/lib/redux/design/design_actions.dart index f873aedec..a230429a1 100644 --- a/lib/redux/design/design_actions.dart +++ b/lib/redux/design/design_actions.dart @@ -26,24 +26,24 @@ class ViewDesignList implements PersistUI { class ViewDesign implements PersistUI, PersistPrefs { ViewDesign({ - @required this.designId, + required this.designId, this.force = false, }); - final String designId; + final String? designId; final bool force; } class EditDesign implements PersistUI, PersistPrefs { EditDesign( - {@required this.design, + {required this.design, this.completer, this.cancelCompleter, this.force = false}); final DesignEntity design; - final Completer completer; - final Completer cancelCompleter; + final Completer? completer; + final Completer? cancelCompleter; final bool force; } @@ -56,21 +56,21 @@ class UpdateDesign implements PersistUI { class LoadDesign { LoadDesign({this.completer, this.designId}); - final Completer completer; - final String designId; + final Completer? completer; + final String? designId; } class LoadDesignActivity { LoadDesignActivity({this.completer, this.designId}); - final Completer completer; - final String designId; + final Completer? completer; + final String? designId; } class LoadDesigns { LoadDesigns({this.completer}); - final Completer completer; + final Completer? completer; } class LoadDesignRequest implements StartLoading {} @@ -124,8 +124,8 @@ class LoadDesignsSuccess implements StopLoading { class SaveDesignRequest implements StartSaving { SaveDesignRequest({this.completer, this.design}); - final Completer completer; - final DesignEntity design; + final Completer? completer; + final DesignEntity? design; } class SaveDesignSuccess implements StopSaving, PersistData, PersistUI { @@ -162,7 +162,7 @@ class ArchiveDesignsSuccess implements StopSaving, PersistData { class ArchiveDesignsFailure implements StopSaving { ArchiveDesignsFailure(this.designs); - final List designs; + final List designs; } class DeleteDesignsRequest implements StartSaving { @@ -181,7 +181,7 @@ class DeleteDesignsSuccess implements StopSaving, PersistData { class DeleteDesignsFailure implements StopSaving { DeleteDesignsFailure(this.designs); - final List designs; + final List designs; } class RestoreDesignsRequest implements StartSaving { @@ -200,7 +200,7 @@ class RestoreDesignsSuccess implements StopSaving, PersistData { class RestoreDesignsFailure implements StopSaving { RestoreDesignsFailure(this.designs); - final List designs; + final List designs; } class FilterDesigns implements PersistUI { @@ -246,36 +246,36 @@ class FilterDesignsByCustom4 implements PersistUI { } void handleDesignAction( - BuildContext context, List designs, EntityAction action) { + BuildContext? context, List designs, EntityAction? action) { if (designs.isEmpty) { return; } - final store = StoreProvider.of(context); + final store = StoreProvider.of(context!); final state = store.state; final localization = AppLocalization.of(context); - final design = designs.first as DesignEntity; - final designIds = designs.map((design) => design.id).toList(); + final design = designs.first as DesignEntity?; + final designIds = designs.map((design) => design!.id).toList(); switch (action) { case EntityAction.edit: - editEntity(entity: design); + editEntity(entity: design!); break; case EntityAction.clone: - createEntity(context: context, entity: design.clone); + createEntity(context: context, entity: design!.clone); break; case EntityAction.newInvoice: createEntity( context: context, entity: InvoiceEntity(state: state) - .rebuild((b) => b.designId = design.id)); + .rebuild((b) => b.designId = design!.id)); break; case EntityAction.newRecurringInvoice: createEntity( context: context, entity: InvoiceEntity( state: state, entityType: EntityType.recurringInvoice) - .rebuild((b) => b.designId = design.id)); + .rebuild((b) => b.designId = design!.id)); break; case EntityAction.newQuote: createEntity( @@ -283,7 +283,7 @@ void handleDesignAction( entity: InvoiceEntity( state: state, entityType: EntityType.quote, - ).rebuild((b) => b.designId = design.id)); + ).rebuild((b) => b.designId = design!.id)); break; case EntityAction.newCredit: createEntity( @@ -291,32 +291,32 @@ void handleDesignAction( entity: InvoiceEntity( state: state, entityType: EntityType.credit, - ).rebuild((b) => b.designId = design.id)); + ).rebuild((b) => b.designId = design!.id)); break; case EntityAction.restore: final message = designIds.length > 1 - ? localization.restoredDesigns + ? localization!.restoredDesigns .replaceFirst(':value', ':count') .replaceFirst(':count', designIds.length.toString()) - : localization.restoredDesign; + : localization!.restoredDesign; store.dispatch(RestoreDesignsRequest( snackBarCompleter(context, message), designIds)); break; case EntityAction.archive: final message = designIds.length > 1 - ? localization.archivedDesigns + ? localization!.archivedDesigns .replaceFirst(':value', ':count') .replaceFirst(':count', designIds.length.toString()) - : localization.archivedDesign; + : localization!.archivedDesign; store.dispatch(ArchiveDesignsRequest( snackBarCompleter(context, message), designIds)); break; case EntityAction.delete: final message = designIds.length > 1 - ? localization.deletedDesigns + ? localization!.deletedDesigns .replaceFirst(':value', ':count') .replaceFirst(':count', designIds.length.toString()) - : localization.deletedDesign; + : localization!.deletedDesign; store.dispatch(DeleteDesignsRequest( snackBarCompleter(context, message), designIds)); break; @@ -330,7 +330,7 @@ void handleDesignAction( } for (final design in designs) { - if (!store.state.designListState.isSelected(design.id)) { + if (!store.state.designListState.isSelected(design!.id)) { store.dispatch(AddToDesignMultiselect(entity: design)); } else { store.dispatch(RemoveFromDesignMultiselect(entity: design)); @@ -350,15 +350,15 @@ class StartDesignMultiselect { } class AddToDesignMultiselect { - AddToDesignMultiselect({@required this.entity}); + AddToDesignMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class RemoveFromDesignMultiselect { - RemoveFromDesignMultiselect({@required this.entity}); + RemoveFromDesignMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class ClearDesignMultiselect { diff --git a/lib/redux/design/design_middleware.dart b/lib/redux/design/design_middleware.dart index 5b128db27..213448d9a 100644 --- a/lib/redux/design/design_middleware.dart +++ b/lib/redux/design/design_middleware.dart @@ -45,14 +45,14 @@ List> createStoreDesignsMiddleware([ Middleware _editDesign() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as EditDesign; + final action = dynamicAction as EditDesign?; next(action); store.dispatch(UpdateCurrentRoute(DesignEditScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(DesignEditScreen.route); + navigatorKey.currentState!.pushNamed(DesignEditScreen.route); } }; } @@ -60,21 +60,21 @@ Middleware _editDesign() { Middleware _viewDesign() { return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as ViewDesign; + final action = dynamicAction as ViewDesign?; next(action); store.dispatch(UpdateCurrentRoute(DesignViewScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(DesignViewScreen.route); + navigatorKey.currentState!.pushNamed(DesignViewScreen.route); } }; } Middleware _viewDesignList() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as ViewDesignList; + final action = dynamicAction as ViewDesignList?; next(action); @@ -85,7 +85,7 @@ Middleware _viewDesignList() { store.dispatch(UpdateCurrentRoute(DesignScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamedAndRemoveUntil( + navigatorKey.currentState!.pushNamedAndRemoveUntil( DesignScreen.route, (Route route) => false); } }; @@ -170,19 +170,19 @@ Middleware _saveDesign(DesignRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as SaveDesignRequest; repository - .saveData(store.state.credentials, action.design) + .saveData(store.state.credentials, action.design!) .then((DesignEntity design) { - if (action.design.isNew) { + if (action.design!.isNew) { store.dispatch(AddDesignSuccess(design)); } else { store.dispatch(SaveDesignSuccess(design)); } - action.completer.complete(design); + action.completer!.complete(design); }).catchError((Object error) { print(error); store.dispatch(SaveDesignFailure(error)); - action.completer.completeError(error); + action.completer!.completeError(error); }); next(action); @@ -199,13 +199,13 @@ Middleware _loadDesign(DesignRepository repository) { store.dispatch(LoadDesignSuccess(design)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(LoadDesignFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -215,15 +215,15 @@ Middleware _loadDesign(DesignRepository repository) { Middleware _loadDesigns(DesignRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as LoadDesigns; + final action = dynamicAction as LoadDesigns?; final AppState state = store.state; store.dispatch(LoadDesignsRequest()); repository.loadList(state.credentials).then((data) { store.dispatch(LoadDesignsSuccess(data)); - if (action.completer != null) { - action.completer.complete(null); + if (action!.completer != null) { + action.completer!.complete(null); } /* if (state.productState.isStale) { @@ -233,8 +233,8 @@ Middleware _loadDesigns(DesignRepository repository) { }).catchError((Object error) { print(error); store.dispatch(LoadDesignsFailure(error)); - if (action.completer != null) { - action.completer.completeError(error); + if (action!.completer != null) { + action.completer!.completeError(error); } }); diff --git a/lib/redux/design/design_reducer.dart b/lib/redux/design/design_reducer.dart index bfa276114..4fa77d954 100644 --- a/lib/redux/design/design_reducer.dart +++ b/lib/redux/design/design_reducer.dart @@ -14,67 +14,67 @@ import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; EntityUIState designUIReducer(DesignUIState state, dynamic action) { return state.rebuild((b) => b ..listUIState.replace(designListReducer(state.listUIState, action)) - ..editing.replace(editingReducer(state.editing, action)) + ..editing.replace(editingReducer(state.editing, action)!) ..selectedId = selectedIdReducer(state.selectedId, action) ..forceSelected = forceSelectedReducer(state.forceSelected, action)); } -final forceSelectedReducer = combineReducers([ - TypedReducer((completer, action) => true), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), +final forceSelectedReducer = combineReducers([ + TypedReducer((completer, action) => true), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), ]); -Reducer selectedIdReducer = combineReducers([ - TypedReducer((completer, action) => ''), - TypedReducer((completer, action) => ''), - TypedReducer((selectedId, action) => +Reducer selectedIdReducer = combineReducers([ + TypedReducer((completer, action) => ''), + TypedReducer((completer, action) => ''), + TypedReducer((selectedId, action) => action.entityType == EntityType.design ? action.entityId : selectedId), - TypedReducer( - (String selectedId, dynamic action) => action.designId), - TypedReducer( - (String selectedId, dynamic action) => action.design.id), - TypedReducer( + TypedReducer( + (String? selectedId, dynamic action) => action.designId), + TypedReducer( + (String? selectedId, dynamic action) => action.design.id), + TypedReducer( (selectedId, action) => action.clearSelection ? '' : selectedId), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), ]); -final editingReducer = combineReducers([ - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer((designs, action) { +final editingReducer = combineReducers([ + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer((designs, action) { return action.designs[0]; }), - TypedReducer((designs, action) { + TypedReducer((designs, action) { return action.designs[0]; }), - TypedReducer((designs, action) { + TypedReducer((designs, action) { return action.designs[0]; }), - TypedReducer(_updateEditing), - TypedReducer((design, action) { + TypedReducer(_updateEditing), + TypedReducer((design, action) { return action.design.rebuild((b) => b..isChanged = true); }), - TypedReducer(_clearEditing), + TypedReducer(_clearEditing), ]); -DesignEntity _clearEditing(DesignEntity design, dynamic action) { +DesignEntity _clearEditing(DesignEntity? design, dynamic action) { return DesignEntity(); } -DesignEntity _updateEditing(DesignEntity design, dynamic action) { +DesignEntity? _updateEditing(DesignEntity? design, dynamic action) { return action.design; } @@ -143,7 +143,7 @@ ListUIState _filterDesigns(ListUIState designListState, FilterDesigns action) { ListUIState _sortDesigns(ListUIState designListState, SortDesigns action) { return designListState.rebuild((b) => b - ..sortAscending = b.sortField != action.field || !b.sortAscending + ..sortAscending = b.sortField != action.field || !b.sortAscending! ..sortField = action.field); } @@ -154,13 +154,13 @@ ListUIState _startListMultiselect( ListUIState _addToListMultiselect( ListUIState productListState, AddToDesignMultiselect action) { - return productListState.rebuild((b) => b..selectedIds.add(action.entity.id)); + return productListState.rebuild((b) => b..selectedIds.add(action.entity!.id)); } ListUIState _removeFromListMultiselect( ListUIState productListState, RemoveFromDesignMultiselect action) { return productListState - .rebuild((b) => b..selectedIds.remove(action.entity.id)); + .rebuild((b) => b..selectedIds.remove(action.entity!.id)); } ListUIState _clearListMultiselect( @@ -227,7 +227,7 @@ DesignState _setLoadedDesigns( DesignState _setLoadedCompany( DesignState designState, LoadCompanySuccess action) { - final company = action.userCompany.company; + final company = action.userCompany.company!; return designState.loadDesigns(company.designs); } diff --git a/lib/redux/design/design_selectors.dart b/lib/redux/design/design_selectors.dart index b87f6c632..ec8b80d4b 100644 --- a/lib/redux/design/design_selectors.dart +++ b/lib/redux/design/design_selectors.dart @@ -16,7 +16,7 @@ var memoizedDropdownDesignList = memo3( List dropdownDesignsSelector(BuiltMap designMap, BuiltList designList, String clientId) { final list = designList.where((designId) { - final design = designMap[designId]; + final design = designMap[designId]!; /* if (clientId != null && clientId > 0 && design.clientId != clientId) { return false; @@ -26,7 +26,7 @@ List dropdownDesignsSelector(BuiltMap designMap, }).toList(); list.sort((designAId, designBId) { - final designA = designMap[designAId]; + final designA = designMap[designAId]!; final designB = designMap[designBId]; return designA.compareTo(designB, DesignFields.name, true); }); @@ -35,14 +35,14 @@ List dropdownDesignsSelector(BuiltMap designMap, } var memoizedFilteredDesignList = memo3( - (BuiltMap designMap, BuiltList designList, + (BuiltMap designMap, BuiltList designList, ListUIState designListState) => filteredDesignsSelector(designMap, designList, designListState)); -List filteredDesignsSelector(BuiltMap designMap, +List filteredDesignsSelector(BuiltMap designMap, BuiltList designList, ListUIState designListState) { final list = designList.where((designId) { - final design = designMap[designId]; + final design = designMap[designId]!; if (!design.isCustom) { return false; @@ -55,7 +55,7 @@ List filteredDesignsSelector(BuiltMap designMap, }).toList(); list.sort((designAId, designBId) { - final designA = designMap[designAId]; + final designA = designMap[designAId]!; final designB = designMap[designBId]; return designA.compareTo( designB, designListState.sortField, designListState.sortAscending); @@ -64,8 +64,8 @@ List filteredDesignsSelector(BuiltMap designMap, return list; } -String getDesignIdForClientByEntity( - {AppState state, String clientId, EntityType entityType}) { +String? getDesignIdForClientByEntity( + {required AppState state, required String clientId, EntityType? entityType}) { final client = state.clientState.get(clientId); final settings = getClientSettings(state, client); switch (entityType) { @@ -81,8 +81,8 @@ String getDesignIdForClientByEntity( } } -String getDesignIdForVendorByEntity( - {AppState state, String vendorId, EntityType entityType}) { +String? getDesignIdForVendorByEntity( + {required AppState state, required String vendorId, EntityType? entityType}) { final vendor = state.vendorState.get(vendorId); final settings = getVendorSettings(state, vendor); diff --git a/lib/redux/design/design_state.dart b/lib/redux/design/design_state.dart index 0ea1d3081..e5ee44077 100644 --- a/lib/redux/design/design_state.dart +++ b/lib/redux/design/design_state.dart @@ -7,6 +7,7 @@ import 'package:built_value/built_value.dart'; import 'package:built_value/serializer.dart'; // Project imports: +import 'package:collection/collection.dart' show IterableExtension; import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/redux/ui/entity_ui_state.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; @@ -28,22 +29,21 @@ abstract class DesignState implements Built { @memoized int get hashCode; - BuiltMap get map; + BuiltMap get map; BuiltList get list; DesignEntity get cleanDesign => - map[list.firstWhere((id) => !map[id].isCustom && map[id].name == 'Clean', - orElse: () => null)] ?? + map[list.firstWhereOrNull((id) => !map[id]!.isCustom && map[id]!.name == 'Clean')] ?? DesignEntity(); - List get customDesigns => list - .where((designId) => map[designId].isCustom) + List get customDesigns => list + .where((designId) => map[designId]!.isCustom) .map((designId) => map[designId]) .toList(); DesignState loadDesigns(BuiltList clients) { - final map = Map.fromIterable( + final map = Map.fromIterable( clients, key: (dynamic item) => item.id, value: (dynamic item) => item, @@ -60,7 +60,7 @@ abstract class DesignState implements Built { abstract class DesignUIState extends Object with EntityUIState implements Built { - factory DesignUIState(PrefStateSortField sortField) { + factory DesignUIState(PrefStateSortField? sortField) { return _$DesignUIState._( listUIState: ListUIState(sortField?.field ?? DesignFields.name, sortAscending: sortField?.ascending), @@ -76,14 +76,13 @@ abstract class DesignUIState extends Object @memoized int get hashCode; - @nullable - DesignEntity get editing; + DesignEntity? get editing; @override - bool get isCreatingNew => editing.isNew; + bool get isCreatingNew => editing!.isNew; @override - String get editingId => editing.id; + String get editingId => editing!.id; static Serializer get serializer => _$designUIStateSerializer; } diff --git a/lib/redux/design/design_state.g.dart b/lib/redux/design/design_state.g.dart index 323968b59..406759341 100644 --- a/lib/redux/design/design_state.g.dart +++ b/lib/redux/design/design_state.g.dart @@ -17,13 +17,15 @@ class _$DesignStateSerializer implements StructuredSerializer { final String wireName = 'DesignState'; @override - Iterable serialize(Serializers serializers, DesignState object, + Iterable serialize(Serializers serializers, DesignState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'map', serializers.serialize(object.map, - specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(DesignEntity)])), + specifiedType: const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(DesignEntity) + ])), 'list', serializers.serialize(object.list, specifiedType: @@ -34,28 +36,28 @@ class _$DesignStateSerializer implements StructuredSerializer { } @override - DesignState deserialize(Serializers serializers, Iterable serialized, + DesignState deserialize(Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new DesignStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'map': result.map.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(DesignEntity) - ]))); + const FullType.nullable(String), + const FullType.nullable(DesignEntity) + ]))!); break; case 'list': result.list.replace(serializers.deserialize(value, - specifiedType: - const FullType(BuiltList, const [const FullType(String)])) - as BuiltList); + specifiedType: const FullType( + BuiltList, const [const FullType(String)]))! + as BuiltList); break; } } @@ -71,9 +73,9 @@ class _$DesignUIStateSerializer implements StructuredSerializer { final String wireName = 'DesignUIState'; @override - Iterable serialize(Serializers serializers, DesignUIState object, + Iterable serialize(Serializers serializers, DesignUIState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'listUIState', serializers.serialize(object.listUIState, specifiedType: const FullType(ListUIState)), @@ -81,7 +83,7 @@ class _$DesignUIStateSerializer implements StructuredSerializer { serializers.serialize(object.tabIndex, specifiedType: const FullType(int)), ]; - Object value; + Object? value; value = object.editing; if (value != null) { result @@ -108,35 +110,35 @@ class _$DesignUIStateSerializer implements StructuredSerializer { @override DesignUIState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new DesignUIStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'editing': result.editing.replace(serializers.deserialize(value, - specifiedType: const FullType(DesignEntity)) as DesignEntity); + specifiedType: const FullType(DesignEntity))! as DesignEntity); break; case 'listUIState': result.listUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(ListUIState)) as ListUIState); + specifiedType: const FullType(ListUIState))! as ListUIState); break; case 'selectedId': result.selectedId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'forceSelected': result.forceSelected = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'tabIndex': result.tabIndex = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; } } @@ -147,14 +149,14 @@ class _$DesignUIStateSerializer implements StructuredSerializer { class _$DesignState extends DesignState { @override - final BuiltMap map; + final BuiltMap map; @override final BuiltList list; - factory _$DesignState([void Function(DesignStateBuilder) updates]) => + factory _$DesignState([void Function(DesignStateBuilder)? updates]) => (new DesignStateBuilder()..update(updates))._build(); - _$DesignState._({this.map, this.list}) : super._() { + _$DesignState._({required this.map, required this.list}) : super._() { BuiltValueNullFieldError.checkNotNull(map, r'DesignState', 'map'); BuiltValueNullFieldError.checkNotNull(list, r'DesignState', 'list'); } @@ -172,10 +174,10 @@ class _$DesignState extends DesignState { return other is DesignState && map == other.map && list == other.list; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, map.hashCode); _$hash = $jc(_$hash, list.hashCode); @@ -193,16 +195,16 @@ class _$DesignState extends DesignState { } class DesignStateBuilder implements Builder { - _$DesignState _$v; + _$DesignState? _$v; - MapBuilder _map; - MapBuilder get map => - _$this._map ??= new MapBuilder(); - set map(MapBuilder map) => _$this._map = map; + MapBuilder? _map; + MapBuilder get map => + _$this._map ??= new MapBuilder(); + set map(MapBuilder? map) => _$this._map = map; - ListBuilder _list; + ListBuilder? _list; ListBuilder get list => _$this._list ??= new ListBuilder(); - set list(ListBuilder list) => _$this._list = list; + set list(ListBuilder? list) => _$this._list = list; DesignStateBuilder(); @@ -223,7 +225,7 @@ class DesignStateBuilder implements Builder { } @override - void update(void Function(DesignStateBuilder) updates) { + void update(void Function(DesignStateBuilder)? updates) { if (updates != null) updates(this); } @@ -236,7 +238,7 @@ class DesignStateBuilder implements Builder { _$result = _$v ?? new _$DesignState._(map: map.build(), list: list.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'map'; map.build(); @@ -255,29 +257,29 @@ class DesignStateBuilder implements Builder { class _$DesignUIState extends DesignUIState { @override - final DesignEntity editing; + final DesignEntity? editing; @override final ListUIState listUIState; @override - final String selectedId; + final String? selectedId; @override - final bool forceSelected; + final bool? forceSelected; @override final int tabIndex; @override - final Completer saveCompleter; + final Completer? saveCompleter; @override - final Completer cancelCompleter; + final Completer? cancelCompleter; - factory _$DesignUIState([void Function(DesignUIStateBuilder) updates]) => + factory _$DesignUIState([void Function(DesignUIStateBuilder)? updates]) => (new DesignUIStateBuilder()..update(updates))._build(); _$DesignUIState._( {this.editing, - this.listUIState, + required this.listUIState, this.selectedId, this.forceSelected, - this.tabIndex, + required this.tabIndex, this.saveCompleter, this.cancelCompleter}) : super._() { @@ -307,10 +309,10 @@ class _$DesignUIState extends DesignUIState { cancelCompleter == other.cancelCompleter; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, editing.hashCode); _$hash = $jc(_$hash, listUIState.hashCode); @@ -339,40 +341,40 @@ class _$DesignUIState extends DesignUIState { class DesignUIStateBuilder implements Builder { - _$DesignUIState _$v; + _$DesignUIState? _$v; - DesignEntityBuilder _editing; + DesignEntityBuilder? _editing; DesignEntityBuilder get editing => _$this._editing ??= new DesignEntityBuilder(); - set editing(DesignEntityBuilder editing) => _$this._editing = editing; + set editing(DesignEntityBuilder? editing) => _$this._editing = editing; - ListUIStateBuilder _listUIState; + ListUIStateBuilder? _listUIState; ListUIStateBuilder get listUIState => _$this._listUIState ??= new ListUIStateBuilder(); - set listUIState(ListUIStateBuilder listUIState) => + set listUIState(ListUIStateBuilder? listUIState) => _$this._listUIState = listUIState; - String _selectedId; - String get selectedId => _$this._selectedId; - set selectedId(String selectedId) => _$this._selectedId = selectedId; + String? _selectedId; + String? get selectedId => _$this._selectedId; + set selectedId(String? selectedId) => _$this._selectedId = selectedId; - bool _forceSelected; - bool get forceSelected => _$this._forceSelected; - set forceSelected(bool forceSelected) => + bool? _forceSelected; + bool? get forceSelected => _$this._forceSelected; + set forceSelected(bool? forceSelected) => _$this._forceSelected = forceSelected; - int _tabIndex; - int get tabIndex => _$this._tabIndex; - set tabIndex(int tabIndex) => _$this._tabIndex = tabIndex; + int? _tabIndex; + int? get tabIndex => _$this._tabIndex; + set tabIndex(int? tabIndex) => _$this._tabIndex = tabIndex; - Completer _saveCompleter; - Completer get saveCompleter => _$this._saveCompleter; - set saveCompleter(Completer saveCompleter) => + Completer? _saveCompleter; + Completer? get saveCompleter => _$this._saveCompleter; + set saveCompleter(Completer? saveCompleter) => _$this._saveCompleter = saveCompleter; - Completer _cancelCompleter; - Completer get cancelCompleter => _$this._cancelCompleter; - set cancelCompleter(Completer cancelCompleter) => + Completer? _cancelCompleter; + Completer? get cancelCompleter => _$this._cancelCompleter; + set cancelCompleter(Completer? cancelCompleter) => _$this._cancelCompleter = cancelCompleter; DesignUIStateBuilder(); @@ -399,7 +401,7 @@ class DesignUIStateBuilder } @override - void update(void Function(DesignUIStateBuilder) updates) { + void update(void Function(DesignUIStateBuilder)? updates) { if (updates != null) updates(this); } @@ -420,7 +422,7 @@ class DesignUIStateBuilder saveCompleter: saveCompleter, cancelCompleter: cancelCompleter); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'editing'; _editing?.build(); diff --git a/lib/redux/document/document_actions.dart b/lib/redux/document/document_actions.dart index d2a0ed21d..1e360a718 100644 --- a/lib/redux/document/document_actions.dart +++ b/lib/redux/document/document_actions.dart @@ -57,8 +57,8 @@ class ViewDocumentList implements PersistUI { class ViewDocument implements PersistUI { ViewDocument({this.documentId, this.force}); - final String documentId; - final bool force; + final String? documentId; + final bool? force; } class EditDocument implements PersistUI { @@ -67,8 +67,8 @@ class EditDocument implements PersistUI { this.completer, }); - final DocumentEntity document; - final Completer completer; + final DocumentEntity? document; + final Completer? completer; } class UpdateDocument implements PersistUI { @@ -80,28 +80,28 @@ class UpdateDocument implements PersistUI { class LoadDocument { LoadDocument({this.completer, this.documentId}); - final Completer completer; - final String documentId; + final Completer? completer; + final String? documentId; } class LoadDocumentData { LoadDocumentData({this.completer, this.documentId}); - final Completer completer; - final String documentId; + final Completer? completer; + final String? documentId; } class LoadDocumentActivity { LoadDocumentActivity({this.completer, this.documentId}); - final Completer completer; - final String documentId; + final Completer? completer; + final String? documentId; } class LoadDocuments { LoadDocuments({this.completer}); - final Completer completer; + final Completer? completer; } class LoadDocumentRequest implements StartLoading {} @@ -156,12 +156,12 @@ class LoadDocumentsSuccess implements StopLoading { class SaveDocumentRequest implements StartSaving { SaveDocumentRequest({ - @required this.completer, - @required this.document, + required this.completer, + required this.document, }); final Completer completer; - final DocumentEntity document; + final DocumentEntity? document; } class SaveDocumentSuccess implements StopSaving, PersistData, PersistUI { @@ -187,8 +187,8 @@ class SaveDocumentFailure implements StopSaving { class DownloadDocumentsRequest implements StartSaving { DownloadDocumentsRequest({this.completer, this.documentIds}); - final Completer completer; - final List documentIds; + final Completer? completer; + final List? documentIds; } class DownloadDocumentsSuccess implements StopSaving {} @@ -215,28 +215,28 @@ class ArchiveDocumentSuccess implements StopSaving, PersistData { class ArchiveDocumentFailure implements StopSaving { ArchiveDocumentFailure(this.documents); - final List documents; + final List documents; } class DeleteDocumentRequest implements StartSaving { DeleteDocumentRequest({ - @required this.completer, - @required this.documentIds, - @required this.password, - @required this.idToken, + required this.completer, + required this.documentIds, + required this.password, + required this.idToken, }); final Completer completer; final List documentIds; - final String password; - final String idToken; + final String? password; + final String? idToken; } class DeleteDocumentSuccess implements StopSaving, PersistData, UserVerifiedPassword { DeleteDocumentSuccess({this.documentId}); - final String documentId; + final String? documentId; //DeleteDocumentSuccess(this.documents); //final List documents; @@ -263,7 +263,7 @@ class RestoreDocumentSuccess implements StopSaving, PersistData { class RestoreDocumentFailure implements StopSaving { RestoreDocumentFailure(this.documents); - final List documents; + final List documents; } class FilterDocuments implements PersistUI { @@ -315,35 +315,35 @@ class FilterDocumentsByCustom4 implements PersistUI { } void handleDocumentAction( - BuildContext context, List documents, EntityAction action) { + BuildContext? context, List documents, EntityAction? action) { if (documents.isEmpty) { return; } - final store = StoreProvider.of(context); + final store = StoreProvider.of(context!); final localization = AppLocalization.of(context); - final documentIds = documents.map((document) => document.id).toList(); + final documentIds = documents.map((document) => document!.id).toList(); final document = store.state.documentState.map[documentIds.first]; switch (action) { case EntityAction.edit: - editEntity(entity: document); + editEntity(entity: document!); break; case EntityAction.restore: final message = documentIds.length > 1 - ? localization.restoredDocuments + ? localization!.restoredDocuments .replaceFirst(':value', ':count') .replaceFirst(':count', documentIds.length.toString()) - : localization.restoredDocument; + : localization!.restoredDocument; store.dispatch(RestoreDocumentRequest( snackBarCompleter(context, message), documentIds)); break; case EntityAction.archive: final message = documentIds.length > 1 - ? localization.archivedDocuments + ? localization!.archivedDocuments .replaceFirst(':value', ':count') .replaceFirst(':count', documentIds.length.toString()) - : localization.archivedDocument; + : localization!.archivedDocument; store.dispatch(ArchiveDocumentRequest( snackBarCompleter(context, message), documentIds)); break; @@ -369,7 +369,7 @@ void handleDocumentAction( } for (final document in documents) { - if (!store.state.documentListState.isSelected(document.id)) { + if (!store.state.documentListState.isSelected(document!.id)) { store.dispatch(AddToDocumentMultiselect(entity: document)); } else { store.dispatch(RemoveFromDocumentMultiselect(entity: document)); @@ -387,7 +387,7 @@ void handleDocumentAction( documentIds: documentIds, completer: snackBarCompleter( context, - localization.exportedData, + localization!.exportedData, ), ), ); @@ -395,24 +395,24 @@ void handleDocumentAction( case EntityAction.viewDocument: void showDocument() { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (context) { final DocumentEntity document = - store.state.documentState.map[documentIds.first]; + store.state.documentState.map[documentIds.first]!; return AlertDialog( actions: [ TextButton( onPressed: () => Navigator.of(context).pop(), - child: Text(localization.close.toUpperCase())), + child: Text(localization!.close.toUpperCase())), ], content: document.isImage ? PinchZoom( - child: Image.memory(document.data), + child: Image.memory(document.data!), ) : SizedBox( width: 600, child: PdfPreview( - build: (format) => document.data, + build: (format) => document.data!, canChangeOrientation: false, canChangePageFormat: false, allowPrinting: false, @@ -423,7 +423,7 @@ void handleDocumentAction( ); }); } - if (document.data == null) { + if (document!.data == null) { store.dispatch(LoadDocumentData( documentId: document.id, completer: Completer() @@ -434,17 +434,17 @@ void handleDocumentAction( break; case EntityAction.download: void downloadDocument() async { - final DocumentEntity document = + final DocumentEntity? document = store.state.documentState.map[documentIds.first]; if (kIsWeb) { - WebUtils.downloadBinaryFile(document.name, document.data); + WebUtils.downloadBinaryFile(document!.name, document.data); } else { final directory = await (isDesktopOS() - ? getDownloadsDirectory() + ? getDownloadsDirectory() as FutureOr : getApplicationDocumentsDirectory()); String filePath = - '${directory.path}${file.Platform.pathSeparator}${document.name}'; + '${directory.path}${file.Platform.pathSeparator}${document!.name}'; if (file.File(filePath).existsSync()) { final extension = document.name.split('.').last; @@ -453,17 +453,17 @@ void handleDocumentAction( filePath.replaceFirst('.$extension', '_$timestamp.$extension'); } - await File(filePath).writeAsBytes(document.data); + await File(filePath).writeAsBytes(document.data!); if (isDesktopOS()) { - showToast(localization.fileSavedInPath + showToast(localization!.fileSavedInPath! .replaceFirst(':path', directory.path)); } else { await Share.shareXFiles([XFile(filePath)]); } } } - if (document.data == null) { + if (document!.data == null) { store.dispatch(LoadDocumentData( documentId: document.id, completer: Completer() @@ -480,70 +480,70 @@ void handleDocumentAction( context: context, callback: (password, idToken) { final completer = snackBarCompleter( - context, AppLocalization.of(context).deletedDocument); - switch (document.parentType) { + context, AppLocalization.of(context)!.deletedDocument); + switch (document!.parentType) { case EntityType.client: - completer.future.then((value) => store - .dispatch(LoadClient(clientId: document.parentId))); + completer.future.then(((value) => store + .dispatch(LoadClient(clientId: document.parentId))) as FutureOr Function(Null)); break; case EntityType.credit: - completer.future.then((value) => store - .dispatch(LoadCredit(creditId: document.parentId))); + completer.future.then(((value) => store + .dispatch(LoadCredit(creditId: document.parentId))) as FutureOr Function(Null)); break; case EntityType.expense: - completer.future.then((value) => store - .dispatch(LoadExpense(expenseId: document.parentId))); + completer.future.then(((value) => store + .dispatch(LoadExpense(expenseId: document.parentId))) as FutureOr Function(Null)); break; case EntityType.group: - completer.future.then((value) => store - .dispatch(LoadGroup(groupId: document.parentId))); + completer.future.then(((value) => store + .dispatch(LoadGroup(groupId: document.parentId))) as FutureOr Function(Null)); break; case EntityType.invoice: - completer.future.then((value) => store - .dispatch(LoadInvoice(invoiceId: document.parentId))); + completer.future.then(((value) => store + .dispatch(LoadInvoice(invoiceId: document.parentId))) as FutureOr Function(Null)); break; case EntityType.product: - completer.future.then((value) => store - .dispatch(LoadProduct(productId: document.parentId))); + completer.future.then(((value) => store + .dispatch(LoadProduct(productId: document.parentId))) as FutureOr Function(Null)); break; case EntityType.project: - completer.future.then((value) => store - .dispatch(LoadProject(projectId: document.parentId))); + completer.future.then(((value) => store + .dispatch(LoadProject(projectId: document.parentId))) as FutureOr Function(Null)); break; case EntityType.purchaseOrder: - completer.future.then((value) => store.dispatch( + completer.future.then(((value) => store.dispatch( LoadPurchaseOrder( - purchaseOrderId: document.parentId))); + purchaseOrderId: document.parentId))) as FutureOr Function(Null)); break; case EntityType.quote: - completer.future.then((value) => store - .dispatch(LoadQuote(quoteId: document.parentId))); + completer.future.then(((value) => store + .dispatch(LoadQuote(quoteId: document.parentId))) as FutureOr Function(Null)); break; case EntityType.recurringExpense: - completer.future.then((value) => store.dispatch( + completer.future.then(((value) => store.dispatch( LoadRecurringExpense( - recurringExpenseId: document.parentId))); + recurringExpenseId: document.parentId))) as FutureOr Function(Null)); break; case EntityType.recurringInvoice: - completer.future.then((value) => store.dispatch( + completer.future.then(((value) => store.dispatch( LoadRecurringInvoice( - recurringInvoiceId: document.parentId))); + recurringInvoiceId: document.parentId))) as FutureOr Function(Null)); break; case EntityType.task: - completer.future.then((value) => - store.dispatch(LoadTask(taskId: document.parentId))); + completer.future.then(((value) => + store.dispatch(LoadTask(taskId: document.parentId))) as FutureOr Function(Null)); break; case EntityType.vendor: - completer.future.then((value) => store - .dispatch(LoadVendor(vendorId: document.parentId))); + completer.future.then(((value) => store + .dispatch(LoadVendor(vendorId: document.parentId))) as FutureOr Function(Null)); break; default: completer.future - .then((value) => store.dispatch(RefreshData())); + .then(((value) => store.dispatch(RefreshData())) as FutureOr Function(Null)); } completer.future - .then((value) => store.dispatch(RefreshData())); + .then(((value) => store.dispatch(RefreshData())) as FutureOr Function(Null)); store.dispatch(DeleteDocumentRequest( completer: completer, documentIds: [document.id], @@ -562,15 +562,15 @@ void handleDocumentAction( class StartDocumentMultiselect {} class AddToDocumentMultiselect { - AddToDocumentMultiselect({@required this.entity}); + AddToDocumentMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class RemoveFromDocumentMultiselect { - RemoveFromDocumentMultiselect({@required this.entity}); + RemoveFromDocumentMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class ClearDocumentMultiselect {} diff --git a/lib/redux/document/document_middleware.dart b/lib/redux/document/document_middleware.dart index 3d1a7a838..ca6e2face 100644 --- a/lib/redux/document/document_middleware.dart +++ b/lib/redux/document/document_middleware.dart @@ -49,14 +49,14 @@ List> createStoreDocumentsMiddleware([ Middleware _editDocument() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as EditDocument; + final action = dynamicAction as EditDocument?; next(action); store.dispatch(UpdateCurrentRoute(DocumentEditScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(DocumentEditScreen.route); + navigatorKey.currentState!.pushNamed(DocumentEditScreen.route); } }; } @@ -67,7 +67,7 @@ Middleware _viewDocument() { final action = dynamicAction as ViewDocument; final state = store.state; - final document = state.documentState.map[action.documentId]; + final document = state.documentState.map[action.documentId]!; if (document.data == null) { store.dispatch(LoadDocumentData(documentId: document.id)); } @@ -77,14 +77,14 @@ Middleware _viewDocument() { store.dispatch(UpdateCurrentRoute(DocumentViewScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(DocumentViewScreen.route); + navigatorKey.currentState!.pushNamed(DocumentViewScreen.route); } }; } Middleware _viewDocumentList() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as ViewDocumentList; + final action = dynamicAction as ViewDocumentList?; next(action); @@ -95,7 +95,7 @@ Middleware _viewDocumentList() { store.dispatch(UpdateCurrentRoute(DocumentScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamedAndRemoveUntil( + navigatorKey.currentState!.pushNamedAndRemoveUntil( DocumentScreen.route, (Route route) => false); } }; @@ -105,11 +105,11 @@ Middleware _saveDocument(DocumentRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as SaveDocumentRequest; repository - .saveData(store.state.credentials, action.document) + .saveData(store.state.credentials, action.document!) .then((DocumentEntity document) { document = document.rebuild((b) => b - ..parentId = action.document.parentId - ..parentType = action.document.parentType); + ..parentId = action.document!.parentId + ..parentType = action.document!.parentType); store.dispatch(SaveDocumentSuccess(document)); @@ -160,17 +160,17 @@ Middleware _downloadDocuments(DocumentRepository repository) { final action = dynamicAction as DownloadDocumentsRequest; repository .bulkAction( - store.state.credentials, action.documentIds, EntityAction.download) + store.state.credentials, action.documentIds!, EntityAction.download) .then((List documents) { store.dispatch(DownloadDocumentsSuccess()); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(DownloadDocumentsFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -241,13 +241,13 @@ Middleware _loadDocument(DocumentRepository repository) { store.dispatch(LoadDocumentSuccess(document)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(LoadDocumentFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -266,18 +266,18 @@ Middleware _loadDocumentData(DocumentRepository repository) { repository.loadData(store.state.credentials, document).then((bodyBytes) { store.dispatch( LoadDocumentSuccess( - document.rebuild((b) => b..data = bodyBytes), + document!.rebuild((b) => b..data = bodyBytes), ), ); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(LoadDocumentFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); diff --git a/lib/redux/document/document_reducer.dart b/lib/redux/document/document_reducer.dart index 7eee18f39..a027de03a 100644 --- a/lib/redux/document/document_reducer.dart +++ b/lib/redux/document/document_reducer.dart @@ -14,56 +14,56 @@ import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; EntityUIState documentUIReducer(DocumentUIState state, dynamic action) { return state.rebuild((b) => b ..listUIState.replace(documentListReducer(state.listUIState, action)) - ..editing.replace(editingReducer(state.editing, action)) + ..editing.replace(editingReducer(state.editing, action)!) ..selectedId = selectedIdReducer(state.selectedId, action) ..forceSelected = forceSelectedReducer(state.forceSelected, action)); } -final forceSelectedReducer = combineReducers([ - TypedReducer((completer, action) => true), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), +final forceSelectedReducer = combineReducers([ + TypedReducer((completer, action) => true), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), ]); -Reducer selectedIdReducer = combineReducers([ - TypedReducer((completer, action) => ''), - TypedReducer((completer, action) => ''), - TypedReducer((selectedId, action) => +Reducer selectedIdReducer = combineReducers([ + TypedReducer((completer, action) => ''), + TypedReducer((completer, action) => ''), + TypedReducer((selectedId, action) => action.entityType == EntityType.document ? action.entityId : selectedId), - TypedReducer((selectedId, action) => action.documentId), + TypedReducer((selectedId, action) => action.documentId), //TypedReducer((selectedId, action) => action.document.id), - TypedReducer( + TypedReducer( (selectedId, action) => action.clearSelection ? '' : selectedId), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), ]); -final editingReducer = combineReducers([ - TypedReducer(_updateEditing), +final editingReducer = combineReducers([ + TypedReducer(_updateEditing), //TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), //TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer((document, action) { + TypedReducer(_updateEditing), + TypedReducer((document, action) { return action.document.rebuild((b) => b..isChanged = true); }), ]); -DocumentEntity _updateEditing(DocumentEntity document, dynamic action) { +DocumentEntity? _updateEditing(DocumentEntity? document, dynamic action) { return action.document; } @@ -151,7 +151,7 @@ ListUIState _filterDocuments( ListUIState _sortDocuments( ListUIState documentListState, SortDocuments action) { return documentListState.rebuild((b) => b - ..sortAscending = b.sortField != action.field || !b.sortAscending + ..sortAscending = b.sortField != action.field || !b.sortAscending! ..sortField = action.field); } @@ -162,13 +162,13 @@ ListUIState _startListMultiselect( ListUIState _addToListMultiselect( ListUIState documentListState, AddToDocumentMultiselect action) { - return documentListState.rebuild((b) => b..selectedIds.add(action.entity.id)); + return documentListState.rebuild((b) => b..selectedIds.add(action.entity!.id)); } ListUIState _removeFromListMultiselect( ListUIState documentListState, RemoveFromDocumentMultiselect action) { return documentListState - .rebuild((b) => b..selectedIds.remove(action.entity.id)); + .rebuild((b) => b..selectedIds.remove(action.entity!.id)); } ListUIState _clearListMultiselect( @@ -250,7 +250,7 @@ DocumentState _setLoadedDocuments( DocumentState _setLoadedCompany( DocumentState documentState, LoadCompanySuccess action) { - final company = action.userCompany.company; + final company = action.userCompany.company!; final documents = []; company.documents.forEach((document) { documents.add(document.rebuild((b) => b diff --git a/lib/redux/document/document_selectors.dart b/lib/redux/document/document_selectors.dart index c12962b9e..353d76e69 100644 --- a/lib/redux/document/document_selectors.dart +++ b/lib/redux/document/document_selectors.dart @@ -17,7 +17,7 @@ List dropdownDocumentsSelector( BuiltList documentList, String clientId) { final list = documentList.where((documentId) { - final document = documentMap[documentId]; + final document = documentMap[documentId]!; /* if (clientId != null && clientId > 0 && document.clientId != clientId) { return false; @@ -27,7 +27,7 @@ List dropdownDocumentsSelector( }).toList(); list.sort((documentAId, documentBId) { - final documentA = documentMap[documentAId]; + final documentA = documentMap[documentAId]!; final documentB = documentMap[documentBId]; return documentA.compareTo(documentB, DocumentFields.name, true); }); @@ -37,7 +37,7 @@ List dropdownDocumentsSelector( var memoizedFilteredDocumentList = memo4(( SelectionState selectionState, - BuiltMap documentMap, + BuiltMap documentMap, BuiltList documentList, ListUIState documentListState, ) => @@ -50,7 +50,7 @@ var memoizedFilteredDocumentList = memo4(( List filteredDocumentsSelector( SelectionState selectionState, - BuiltMap documentMap, + BuiltMap documentMap, BuiltList documentList, ListUIState documentListState, ) { @@ -62,15 +62,15 @@ List filteredDocumentsSelector( if (filterEntityType != null) { if (filterEntityType == EntityType.document && - document.id != filterEntityId) { + document!.id != filterEntityId) { return false; - } else if (document.parentType != filterEntityType || + } else if (document!.parentType != filterEntityType || document.parentId != filterEntityId) { return false; } } - if (!document.matchesStates(documentListState.stateFilters)) { + if (!document!.matchesStates(documentListState.stateFilters)) { return false; } if (!document.matchesStatuses(documentListState.statusFilters)) { @@ -80,7 +80,7 @@ List filteredDocumentsSelector( }).toList(); list.sort((documentAId, documentBId) { - final documentA = documentMap[documentAId]; + final documentA = documentMap[documentAId]!; final documentB = documentMap[documentBId]; return documentA.compareTo(documentB, documentListState.sortField, documentListState.sortAscending); @@ -98,11 +98,11 @@ List invoiceDocumentsSelector( BuiltMap documentMap, BuiltMap expenseMap, InvoiceEntity entity) { - final map = >{}; + final map = >{}; expenseMap.forEach((int, expense) { if (expense.invoiceDocuments) { if (map.containsKey(expense.invoiceId)) { - map[expense.invoiceId].add(expense.id); + map[expense.invoiceId]!.add(expense.id); } else { map[expense.invoiceId] = [expense.id]; } @@ -110,7 +110,7 @@ List invoiceDocumentsSelector( }); final list = documentMap.keys.where((documentId) { - final document = documentMap[documentId]; + final document = documentMap[documentId]!; if (!document.isActive) { return false; @@ -129,7 +129,7 @@ List invoiceDocumentsSelector( }).toList(); list.sort((documentAId, documentBId) { - final documentA = documentMap[documentAId]; + final documentA = documentMap[documentAId]!; final documentB = documentMap[documentBId]; return documentA.compareTo(documentB, DocumentFields.id, true); }); diff --git a/lib/redux/document/document_state.dart b/lib/redux/document/document_state.dart index defc16d5f..ad775ab77 100644 --- a/lib/redux/document/document_state.dart +++ b/lib/redux/document/document_state.dart @@ -30,7 +30,7 @@ abstract class DocumentState @memoized int get hashCode; - BuiltMap get map; + BuiltMap get map; BuiltList get list; @@ -40,7 +40,7 @@ abstract class DocumentState abstract class DocumentUIState extends Object with EntityUIState implements Built { - factory DocumentUIState(PrefStateSortField sortField) { + factory DocumentUIState(PrefStateSortField? sortField) { return _$DocumentUIState._( listUIState: ListUIState(sortField?.field ?? DocumentFields.name, sortAscending: sortField?.ascending), @@ -56,14 +56,13 @@ abstract class DocumentUIState extends Object @memoized int get hashCode; - @nullable - DocumentEntity get editing; + DocumentEntity? get editing; @override - bool get isCreatingNew => editing.isNew; + bool get isCreatingNew => editing!.isNew; @override - String get editingId => editing.id; + String get editingId => editing!.id; static Serializer get serializer => _$documentUIStateSerializer; diff --git a/lib/redux/document/document_state.g.dart b/lib/redux/document/document_state.g.dart index b5430c138..b4a88eee7 100644 --- a/lib/redux/document/document_state.g.dart +++ b/lib/redux/document/document_state.g.dart @@ -18,13 +18,15 @@ class _$DocumentStateSerializer implements StructuredSerializer { final String wireName = 'DocumentState'; @override - Iterable serialize(Serializers serializers, DocumentState object, + Iterable serialize(Serializers serializers, DocumentState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'map', serializers.serialize(object.map, - specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(DocumentEntity)])), + specifiedType: const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(DocumentEntity) + ])), 'list', serializers.serialize(object.list, specifiedType: @@ -36,28 +38,28 @@ class _$DocumentStateSerializer implements StructuredSerializer { @override DocumentState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new DocumentStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'map': result.map.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(DocumentEntity) - ]))); + const FullType.nullable(String), + const FullType.nullable(DocumentEntity) + ]))!); break; case 'list': result.list.replace(serializers.deserialize(value, - specifiedType: - const FullType(BuiltList, const [const FullType(String)])) - as BuiltList); + specifiedType: const FullType( + BuiltList, const [const FullType(String)]))! + as BuiltList); break; } } @@ -74,9 +76,9 @@ class _$DocumentUIStateSerializer final String wireName = 'DocumentUIState'; @override - Iterable serialize(Serializers serializers, DocumentUIState object, + Iterable serialize(Serializers serializers, DocumentUIState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'listUIState', serializers.serialize(object.listUIState, specifiedType: const FullType(ListUIState)), @@ -84,7 +86,7 @@ class _$DocumentUIStateSerializer serializers.serialize(object.tabIndex, specifiedType: const FullType(int)), ]; - Object value; + Object? value; value = object.editing; if (value != null) { result @@ -111,35 +113,36 @@ class _$DocumentUIStateSerializer @override DocumentUIState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new DocumentUIStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'editing': result.editing.replace(serializers.deserialize(value, - specifiedType: const FullType(DocumentEntity)) as DocumentEntity); + specifiedType: const FullType(DocumentEntity))! + as DocumentEntity); break; case 'listUIState': result.listUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(ListUIState)) as ListUIState); + specifiedType: const FullType(ListUIState))! as ListUIState); break; case 'selectedId': result.selectedId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'forceSelected': result.forceSelected = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'tabIndex': result.tabIndex = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; } } @@ -150,14 +153,14 @@ class _$DocumentUIStateSerializer class _$DocumentState extends DocumentState { @override - final BuiltMap map; + final BuiltMap map; @override final BuiltList list; - factory _$DocumentState([void Function(DocumentStateBuilder) updates]) => + factory _$DocumentState([void Function(DocumentStateBuilder)? updates]) => (new DocumentStateBuilder()..update(updates))._build(); - _$DocumentState._({this.map, this.list}) : super._() { + _$DocumentState._({required this.map, required this.list}) : super._() { BuiltValueNullFieldError.checkNotNull(map, r'DocumentState', 'map'); BuiltValueNullFieldError.checkNotNull(list, r'DocumentState', 'list'); } @@ -175,10 +178,10 @@ class _$DocumentState extends DocumentState { return other is DocumentState && map == other.map && list == other.list; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, map.hashCode); _$hash = $jc(_$hash, list.hashCode); @@ -197,16 +200,16 @@ class _$DocumentState extends DocumentState { class DocumentStateBuilder implements Builder { - _$DocumentState _$v; + _$DocumentState? _$v; - MapBuilder _map; - MapBuilder get map => - _$this._map ??= new MapBuilder(); - set map(MapBuilder map) => _$this._map = map; + MapBuilder? _map; + MapBuilder get map => + _$this._map ??= new MapBuilder(); + set map(MapBuilder? map) => _$this._map = map; - ListBuilder _list; + ListBuilder? _list; ListBuilder get list => _$this._list ??= new ListBuilder(); - set list(ListBuilder list) => _$this._list = list; + set list(ListBuilder? list) => _$this._list = list; DocumentStateBuilder(); @@ -227,7 +230,7 @@ class DocumentStateBuilder } @override - void update(void Function(DocumentStateBuilder) updates) { + void update(void Function(DocumentStateBuilder)? updates) { if (updates != null) updates(this); } @@ -240,7 +243,7 @@ class DocumentStateBuilder _$result = _$v ?? new _$DocumentState._(map: map.build(), list: list.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'map'; map.build(); @@ -259,29 +262,29 @@ class DocumentStateBuilder class _$DocumentUIState extends DocumentUIState { @override - final DocumentEntity editing; + final DocumentEntity? editing; @override final ListUIState listUIState; @override - final String selectedId; + final String? selectedId; @override - final bool forceSelected; + final bool? forceSelected; @override final int tabIndex; @override - final Completer saveCompleter; + final Completer? saveCompleter; @override - final Completer cancelCompleter; + final Completer? cancelCompleter; - factory _$DocumentUIState([void Function(DocumentUIStateBuilder) updates]) => + factory _$DocumentUIState([void Function(DocumentUIStateBuilder)? updates]) => (new DocumentUIStateBuilder()..update(updates))._build(); _$DocumentUIState._( {this.editing, - this.listUIState, + required this.listUIState, this.selectedId, this.forceSelected, - this.tabIndex, + required this.tabIndex, this.saveCompleter, this.cancelCompleter}) : super._() { @@ -312,10 +315,10 @@ class _$DocumentUIState extends DocumentUIState { cancelCompleter == other.cancelCompleter; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, editing.hashCode); _$hash = $jc(_$hash, listUIState.hashCode); @@ -344,40 +347,40 @@ class _$DocumentUIState extends DocumentUIState { class DocumentUIStateBuilder implements Builder { - _$DocumentUIState _$v; + _$DocumentUIState? _$v; - DocumentEntityBuilder _editing; + DocumentEntityBuilder? _editing; DocumentEntityBuilder get editing => _$this._editing ??= new DocumentEntityBuilder(); - set editing(DocumentEntityBuilder editing) => _$this._editing = editing; + set editing(DocumentEntityBuilder? editing) => _$this._editing = editing; - ListUIStateBuilder _listUIState; + ListUIStateBuilder? _listUIState; ListUIStateBuilder get listUIState => _$this._listUIState ??= new ListUIStateBuilder(); - set listUIState(ListUIStateBuilder listUIState) => + set listUIState(ListUIStateBuilder? listUIState) => _$this._listUIState = listUIState; - String _selectedId; - String get selectedId => _$this._selectedId; - set selectedId(String selectedId) => _$this._selectedId = selectedId; + String? _selectedId; + String? get selectedId => _$this._selectedId; + set selectedId(String? selectedId) => _$this._selectedId = selectedId; - bool _forceSelected; - bool get forceSelected => _$this._forceSelected; - set forceSelected(bool forceSelected) => + bool? _forceSelected; + bool? get forceSelected => _$this._forceSelected; + set forceSelected(bool? forceSelected) => _$this._forceSelected = forceSelected; - int _tabIndex; - int get tabIndex => _$this._tabIndex; - set tabIndex(int tabIndex) => _$this._tabIndex = tabIndex; + int? _tabIndex; + int? get tabIndex => _$this._tabIndex; + set tabIndex(int? tabIndex) => _$this._tabIndex = tabIndex; - Completer _saveCompleter; - Completer get saveCompleter => _$this._saveCompleter; - set saveCompleter(Completer saveCompleter) => + Completer? _saveCompleter; + Completer? get saveCompleter => _$this._saveCompleter; + set saveCompleter(Completer? saveCompleter) => _$this._saveCompleter = saveCompleter; - Completer _cancelCompleter; - Completer get cancelCompleter => _$this._cancelCompleter; - set cancelCompleter(Completer cancelCompleter) => + Completer? _cancelCompleter; + Completer? get cancelCompleter => _$this._cancelCompleter; + set cancelCompleter(Completer? cancelCompleter) => _$this._cancelCompleter = cancelCompleter; DocumentUIStateBuilder(); @@ -404,7 +407,7 @@ class DocumentUIStateBuilder } @override - void update(void Function(DocumentUIStateBuilder) updates) { + void update(void Function(DocumentUIStateBuilder)? updates) { if (updates != null) updates(this); } @@ -425,7 +428,7 @@ class DocumentUIStateBuilder saveCompleter: saveCompleter, cancelCompleter: cancelCompleter); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'editing'; _editing?.build(); diff --git a/lib/redux/expense/expense_actions.dart b/lib/redux/expense/expense_actions.dart index 141b16c66..b21e1b6cd 100644 --- a/lib/redux/expense/expense_actions.dart +++ b/lib/redux/expense/expense_actions.dart @@ -29,24 +29,24 @@ class ViewExpenseList implements PersistUI { }); final bool force; - final int page; + final int? page; } class ViewExpense implements PersistUI, PersistPrefs { ViewExpense({ - @required this.expenseId, + required this.expenseId, this.force = false, }); - final String expenseId; + final String? expenseId; final bool force; } class EditExpense implements PersistUI, PersistPrefs { - EditExpense({@required this.expense, this.completer, this.force = false}); + EditExpense({required this.expense, this.completer, this.force = false}); final ExpenseEntity expense; - final Completer completer; + final Completer? completer; final bool force; } @@ -59,21 +59,21 @@ class UpdateExpense implements PersistUI { class LoadExpense { LoadExpense({this.completer, this.expenseId}); - final Completer completer; - final String expenseId; + final Completer? completer; + final String? expenseId; } class LoadExpenseActivity { LoadExpenseActivity({this.completer, this.expenseId}); - final Completer completer; - final String expenseId; + final Completer? completer; + final String? expenseId; } class LoadExpenses { LoadExpenses({this.completer, this.page = 1}); - final Completer completer; + final Completer? completer; final int page; } @@ -128,8 +128,8 @@ class LoadExpensesSuccess implements StopLoading { class SaveExpenseRequest implements StartSaving { SaveExpenseRequest({this.completer, this.expense}); - final Completer completer; - final ExpenseEntity expense; + final Completer? completer; + final ExpenseEntity? expense; } class SaveExpenseSuccess implements StopSaving, PersistData, PersistUI { @@ -166,7 +166,7 @@ class ArchiveExpenseSuccess implements StopSaving, PersistData { class ArchiveExpenseFailure implements StopSaving { ArchiveExpenseFailure(this.expenses); - final List expenses; + final List expenses; } class DeleteExpenseRequest implements StartSaving { @@ -185,7 +185,7 @@ class DeleteExpenseSuccess implements StopSaving, PersistData { class DeleteExpenseFailure implements StopSaving { DeleteExpenseFailure(this.expenses); - final List expenses; + final List expenses; } class RestoreExpenseRequest implements StartSaving { @@ -204,7 +204,7 @@ class RestoreExpenseSuccess implements StopSaving, PersistData { class RestoreExpenseFailure implements StopSaving { RestoreExpenseFailure(this.expenses); - final List expenses; + final List expenses; } class FilterExpenses implements PersistUI { @@ -256,13 +256,13 @@ class FilterExpensesByCustom4 implements PersistUI { } void handleExpenseAction( - BuildContext context, List expenses, EntityAction action) { + BuildContext context, List expenses, EntityAction? action) { final store = StoreProvider.of(context); final state = store.state; final localization = AppLocalization.of(context); final expense = expenses.first as ExpenseEntity; - final expenseIds = expenses.map((expense) => expense.id).toList(); - final client = state.clientState.get(expense.clientId); + final expenseIds = expenses.map((expense) => expense!.id).toList(); + final client = state.clientState.get(expense.clientId!); switch (action) { case EntityAction.edit: @@ -287,19 +287,19 @@ void handleExpenseAction( case EntityAction.addToInvoice: final availableExpenses = expenses.where((entity) { final expense = entity as ExpenseEntity; - return !expense.isDeleted && !expense.isInvoiced; + return !expense.isDeleted! && !expense.isInvoiced; }); - String projectId = ''; - String vendorId = ''; + String? projectId = ''; + String? vendorId = ''; for (var each in availableExpenses) { final expense = each as ExpenseEntity; - if (expense.vendorId.isNotEmpty) { + if (expense.vendorId!.isNotEmpty) { vendorId = expense.vendorId; } - if (expense.projectId.isNotEmpty) { - if (projectId.isEmpty && - state.projectState.get(expense.projectId).clientId == client.id) { + if (expense.projectId!.isNotEmpty) { + if (projectId!.isEmpty && + state.projectState.get(expense.projectId!)!.clientId == client!.id) { projectId = expense.projectId; } } @@ -307,14 +307,14 @@ void handleExpenseAction( final items = availableExpenses .map((expense) => convertExpenseToInvoiceItem( - expense: expense, + expense: expense as ExpenseEntity, context: context, )) .toList(); if (items.isNotEmpty) { if (action == EntityAction.invoiceExpense) { createEntity( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, entity: InvoiceEntity(state: state, client: client).rebuild( (b) => b ..lineItems.addAll(items) @@ -333,28 +333,28 @@ void handleExpenseAction( break; case EntityAction.restore: final message = expenseIds.length > 1 - ? localization.restoredExpenses + ? localization!.restoredExpenses .replaceFirst(':value', ':count') .replaceFirst(':count', expenseIds.length.toString()) - : localization.restoredExpense; + : localization!.restoredExpense; store.dispatch(RestoreExpenseRequest( snackBarCompleter(context, message), expenseIds)); break; case EntityAction.archive: final message = expenseIds.length > 1 - ? localization.archivedExpenses + ? localization!.archivedExpenses .replaceFirst(':value', ':count') .replaceFirst(':count', expenseIds.length.toString()) - : localization.archivedExpense; + : localization!.archivedExpense; store.dispatch(ArchiveExpenseRequest( snackBarCompleter(context, message), expenseIds)); break; case EntityAction.delete: final message = expenseIds.length > 1 - ? localization.deletedExpenses + ? localization!.deletedExpenses .replaceFirst(':value', ':count') .replaceFirst(':count', expenseIds.length.toString()) - : localization.deletedExpense; + : localization!.deletedExpense; store.dispatch(DeleteExpenseRequest( snackBarCompleter(context, message), expenseIds)); break; @@ -368,7 +368,7 @@ void handleExpenseAction( } for (final expense in expenses) { - if (!store.state.expenseListState.isSelected(expense.id)) { + if (!store.state.expenseListState.isSelected(expense!.id)) { store.dispatch(AddToExpenseMultiselect(entity: expense)); } else { store.dispatch(RemoveFromExpenseMultiselect(entity: expense)); @@ -389,14 +389,14 @@ void handleExpenseAction( } if (documentIds.isEmpty) { showMessageDialog( - context: context, message: localization.noDocumentsToDownload); + context: context, message: localization!.noDocumentsToDownload); } else { store.dispatch( DownloadDocumentsRequest( documentIds: documentIds, completer: snackBarCompleter( context, - localization.exportedData, + localization!.exportedData, ), ), ); @@ -411,28 +411,28 @@ void handleExpenseAction( class StartExpenseMultiselect {} class AddToExpenseMultiselect { - AddToExpenseMultiselect({@required this.entity}); + AddToExpenseMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class RemoveFromExpenseMultiselect { - RemoveFromExpenseMultiselect({@required this.entity}); + RemoveFromExpenseMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class ClearExpenseMultiselect {} class SaveExpenseDocumentRequest implements StartSaving { SaveExpenseDocumentRequest({ - @required this.isPrivate, - @required this.completer, - @required this.multipartFiles, - @required this.expense, + required this.isPrivate, + required this.completer, + required this.multipartFiles, + required this.expense, }); - final bool isPrivate; + final bool? isPrivate; final Completer completer; final List multipartFiles; final ExpenseEntity expense; @@ -453,5 +453,5 @@ class SaveExpenseDocumentFailure implements StopSaving { class UpdateExpenseTab implements PersistUI { UpdateExpenseTab({this.tabIndex}); - final int tabIndex; + final int? tabIndex; } diff --git a/lib/redux/expense/expense_middleware.dart b/lib/redux/expense/expense_middleware.dart index 0141e621c..2688b9687 100644 --- a/lib/redux/expense/expense_middleware.dart +++ b/lib/redux/expense/expense_middleware.dart @@ -50,14 +50,14 @@ List> createStoreExpensesMiddleware([ Middleware _editExpense() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as EditExpense; + final action = dynamicAction as EditExpense?; next(action); store.dispatch(UpdateCurrentRoute(ExpenseEditScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(ExpenseEditScreen.route); + navigatorKey.currentState!.pushNamed(ExpenseEditScreen.route); } }; } @@ -65,21 +65,21 @@ Middleware _editExpense() { Middleware _viewExpense() { return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as ViewExpense; + final action = dynamicAction as ViewExpense?; next(action); store.dispatch(UpdateCurrentRoute(ExpenseViewScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(ExpenseViewScreen.route); + navigatorKey.currentState!.pushNamed(ExpenseViewScreen.route); } }; } Middleware _viewExpenseList() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as ViewExpenseList; + final action = dynamicAction as ViewExpenseList?; next(action); @@ -90,7 +90,7 @@ Middleware _viewExpenseList() { store.dispatch(UpdateCurrentRoute(ExpenseScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamedAndRemoveUntil( + navigatorKey.currentState!.pushNamedAndRemoveUntil( ExpenseScreen.route, (Route route) => false); } }; @@ -181,18 +181,18 @@ Middleware _saveExpense(ExpenseRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as SaveExpenseRequest; repository - .saveData(store.state.credentials, action.expense) + .saveData(store.state.credentials, action.expense!) .then((ExpenseEntity expense) { - if (action.expense.isNew) { + if (action.expense!.isNew) { store.dispatch(AddExpenseSuccess(expense)); } else { store.dispatch(SaveExpenseSuccess(expense)); } - action.completer.complete(expense); + action.completer!.complete(expense); }).catchError((Object error) { print(error); store.dispatch(SaveExpenseFailure(error)); - action.completer.completeError(error); + action.completer!.completeError(error); }); next(action); @@ -210,13 +210,13 @@ Middleware _loadExpense(ExpenseRepository repository) { store.dispatch(LoadExpenseSuccess(expense)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(LoadExpenseFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -253,7 +253,7 @@ Middleware _loadExpenses(ExpenseRepository repository) { )); } else { if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } store.dispatch(LoadRecurringExpenses()); } @@ -261,7 +261,7 @@ Middleware _loadExpenses(ExpenseRepository repository) { print(error); store.dispatch(LoadExpensesFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -271,14 +271,14 @@ Middleware _loadExpenses(ExpenseRepository repository) { Middleware _saveDocument(ExpenseRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as SaveExpenseDocumentRequest; + final action = dynamicAction as SaveExpenseDocumentRequest?; if (store.state.isEnterprisePlan) { repository .uploadDocuments( store.state.credentials, - action.expense, + action!.expense, action.multipartFiles, - action.isPrivate, + action.isPrivate!, ) .then((expense) { store.dispatch(SaveExpenseSuccess(expense)); @@ -300,7 +300,7 @@ Middleware _saveDocument(ExpenseRepository repository) { } else { const error = 'Uploading documents requires an enterprise plan'; store.dispatch(SaveExpenseDocumentFailure(error)); - action.completer.completeError(error); + action!.completer.completeError(error); } next(action); diff --git a/lib/redux/expense/expense_reducer.dart b/lib/redux/expense/expense_reducer.dart index 82db54095..f588384b8 100644 --- a/lib/redux/expense/expense_reducer.dart +++ b/lib/redux/expense/expense_reducer.dart @@ -15,79 +15,79 @@ import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; EntityUIState expenseUIReducer(ExpenseUIState state, dynamic action) { return state.rebuild((b) => b ..listUIState.replace(expenseListReducer(state.listUIState, action)) - ..editing.replace(editingReducer(state.editing, action)) + ..editing.replace(editingReducer(state.editing, action)!) ..selectedId = selectedIdReducer(state.selectedId, action) ..forceSelected = forceSelectedReducer(state.forceSelected, action) ..tabIndex = tabIndexReducer(state.tabIndex, action)); } -final forceSelectedReducer = combineReducers([ - TypedReducer((completer, action) => true), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), +final forceSelectedReducer = combineReducers([ + TypedReducer((completer, action) => true), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), ]); -final tabIndexReducer = combineReducers([ - TypedReducer((completer, action) { +final int? Function(int, dynamic) tabIndexReducer = combineReducers([ + TypedReducer((completer, action) { return action.tabIndex; }), - TypedReducer((completer, action) { + TypedReducer((completer, action) { return 0; }), ]); -Reducer selectedIdReducer = combineReducers([ - TypedReducer((completer, action) => ''), - TypedReducer((completer, action) => ''), - TypedReducer((selectedId, action) => +Reducer selectedIdReducer = combineReducers([ + TypedReducer((completer, action) => ''), + TypedReducer((completer, action) => ''), + TypedReducer((selectedId, action) => action.entityType == EntityType.expense ? action.entityId : selectedId), - TypedReducer((selectedId, action) => action.expenseId), - TypedReducer( + TypedReducer((selectedId, action) => action.expenseId), + TypedReducer( (selectedId, action) => action.expense.id), - TypedReducer( + TypedReducer( (selectedId, action) => action.clearSelection ? '' : selectedId), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), ]); -final editingReducer = combineReducers([ - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer((expenses, action) { +final editingReducer = combineReducers([ + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer((expenses, action) { return action.expenses[0]; }), - TypedReducer((expenses, action) { + TypedReducer((expenses, action) { return action.expenses[0]; }), - TypedReducer((expenses, action) { + TypedReducer((expenses, action) { return action.expenses[0]; }), - TypedReducer(_updateEditing), - TypedReducer((expense, action) { + TypedReducer(_updateEditing), + TypedReducer((expense, action) { return action.expense.rebuild((b) => b..isChanged = true); }), - TypedReducer(_clearEditing), + TypedReducer(_clearEditing), ]); -ExpenseEntity _clearEditing(ExpenseEntity expense, dynamic action) { +ExpenseEntity _clearEditing(ExpenseEntity? expense, dynamic action) { return ExpenseEntity(); } -ExpenseEntity _updateEditing(ExpenseEntity expense, dynamic action) { +ExpenseEntity? _updateEditing(ExpenseEntity? expense, dynamic action) { return action.expense; } @@ -191,7 +191,7 @@ ListUIState _filterExpenses( ListUIState _sortExpenses(ListUIState expenseListState, SortExpenses action) { return expenseListState.rebuild((b) => b - ..sortAscending = b.sortField != action.field || !b.sortAscending + ..sortAscending = b.sortField != action.field || !b.sortAscending! ..sortField = action.field); } @@ -202,13 +202,13 @@ ListUIState _startListMultiselect( ListUIState _addToListMultiselect( ListUIState expenseListState, AddToExpenseMultiselect action) { - return expenseListState.rebuild((b) => b..selectedIds.add(action.entity.id)); + return expenseListState.rebuild((b) => b..selectedIds.add(action.entity!.id)); } ListUIState _removeFromListMultiselect( ListUIState expenseListState, RemoveFromExpenseMultiselect action) { return expenseListState - .rebuild((b) => b..selectedIds.remove(action.entity.id)); + .rebuild((b) => b..selectedIds.remove(action.entity!.id)); } ListUIState _clearListMultiselect( @@ -231,8 +231,8 @@ final expensesReducer = combineReducers([ ExpenseState _purgeClientSuccess( ExpenseState expenseState, PurgeClientSuccess action) { final ids = expenseState.map.values - .where((each) => each.clientId == action.clientId) - .map((each) => each.id) + .where((each) => each!.clientId == action.clientId) + .map((each) => each!.id) .toList(); return expenseState.rebuild((b) => b @@ -291,6 +291,6 @@ ExpenseState _setLoadedExpenses( ExpenseState _setLoadedCompany( ExpenseState expenseState, LoadCompanySuccess action) { - final company = action.userCompany.company; + final company = action.userCompany.company!; return expenseState.loadExpenses(company.expenses); } diff --git a/lib/redux/expense/expense_selectors.dart b/lib/redux/expense/expense_selectors.dart index 69f0a141c..212d70e96 100644 --- a/lib/redux/expense/expense_selectors.dart +++ b/lib/redux/expense/expense_selectors.dart @@ -15,14 +15,14 @@ import 'package:invoiceninja_flutter/redux/static/static_state.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; var memoizedExpensePurchaseOrderSelector = memo2( - (ExpenseEntity expense, BuiltMap purchaseOrderMap) => + (ExpenseEntity expense, BuiltMap purchaseOrderMap) => expensePurchaseOrderSelector(expense, purchaseOrderMap)); -InvoiceEntity expensePurchaseOrderSelector( - ExpenseEntity expense, BuiltMap purchaseOrderMap) { - InvoiceEntity purchaseOrder; +InvoiceEntity? expensePurchaseOrderSelector( + ExpenseEntity expense, BuiltMap purchaseOrderMap) { + InvoiceEntity? purchaseOrder; purchaseOrderMap.forEach((purchaseOrderId, purchaseOrder) { - if (purchaseOrder.expenseId == expense.id) { + if (purchaseOrder!.expenseId == expense.id) { purchaseOrder = purchaseOrder; } }); @@ -30,18 +30,18 @@ InvoiceEntity expensePurchaseOrderSelector( } InvoiceItemEntity convertExpenseToInvoiceItem({ - @required ExpenseEntity expense, - @required BuildContext context, + required ExpenseEntity expense, + required BuildContext context, }) { final state = StoreProvider.of(context).state; - final company = state.company; + final company = state.company!; final categoryMap = state.expenseCategoryState.map; - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; - String customValue1 = ''; - String customValue2 = ''; - String customValue3 = ''; - String customValue4 = ''; + String? customValue1 = ''; + String? customValue2 = ''; + String? customValue3 = ''; + String? customValue4 = ''; final fieldLabel1 = company.getCustomFieldLabel(CustomFieldType.product1); final fieldLabel2 = company.getCustomFieldLabel(CustomFieldType.product2); @@ -54,10 +54,10 @@ InvoiceItemEntity convertExpenseToInvoiceItem({ company.getCustomFieldLabel(CustomFieldType.expense3): expense.customValue3, company.getCustomFieldLabel(CustomFieldType.expense4): expense.customValue4, localization.category: - state.expenseCategoryState.get(expense.categoryId).name, - localization.vendor: state.vendorState.get(expense.vendorId).name, + state.expenseCategoryState.get(expense.categoryId)!.name, + localization.vendor: state.vendorState.get(expense.vendorId!)!.name, localization.date: formatDate(expense.date, context), - localization.project: state.projectState.get(expense.projectId).name, + localization.project: state.projectState.get(expense.projectId!)!.name, }; for (var label in customValues.keys) { @@ -79,7 +79,7 @@ InvoiceItemEntity convertExpenseToInvoiceItem({ ..productKey = categoryMap[expense.categoryId]?.name ?? '' ..notes = expense.publicNotes ..quantity = 1 - ..cost = company.settings.enableInclusiveTaxes + ..cost = company.settings.enableInclusiveTaxes! ? expense.convertedAmount : expense.convertedNetAmount ..customValue1 = customValue1 @@ -121,7 +121,7 @@ List dropdownExpensesSelector( StaticState staticState, String clientId) { final list = expenseList.where((expenseId) { - final expense = expenseMap[expenseId]; + final expense = expenseMap[expenseId]!; /* if (clientId != null && clientId > 0 && expense.clientId != clientId) { return false; @@ -131,7 +131,7 @@ List dropdownExpensesSelector( }).toList(); list.sort((expenseAId, expenseBId) { - final expenseA = expenseMap[expenseAId]; + final expenseA = expenseMap[expenseAId]!; final expenseB = expenseMap[expenseBId]; return expenseA.compareTo( expenseB, @@ -149,13 +149,13 @@ List dropdownExpensesSelector( } var memoizedFilteredExpenseList = memo9((SelectionState selectionState, - BuiltMap expenseMap, - BuiltMap clientMap, - BuiltMap vendorMap, - BuiltMap userMap, + BuiltMap expenseMap, + BuiltMap clientMap, + BuiltMap vendorMap, + BuiltMap userMap, ListUIState expenseListState, - BuiltMap invoiceMap, - BuiltMap expenseCategoryMap, + BuiltMap invoiceMap, + BuiltMap expenseCategoryMap, StaticState staticState) => filteredExpensesSelector( selectionState, @@ -168,21 +168,21 @@ var memoizedFilteredExpenseList = memo9((SelectionState selectionState, expenseCategoryMap, staticState)); -List filteredExpensesSelector( +List filteredExpensesSelector( SelectionState selectionState, - BuiltMap expenseMap, - BuiltMap clientMap, - BuiltMap vendorMap, - BuiltMap userMap, + BuiltMap expenseMap, + BuiltMap clientMap, + BuiltMap vendorMap, + BuiltMap userMap, ListUIState expenseListState, - BuiltMap invoiceMap, - BuiltMap expenseCategoryMap, + BuiltMap invoiceMap, + BuiltMap expenseCategoryMap, StaticState staticState) { final filterEntityId = selectionState.filterEntityId; final filterEntityType = selectionState.filterEntityType; final list = expenseMap.keys.where((expenseId) { - final expense = expenseMap[expenseId]; + final expense = expenseMap[expenseId]!; final expenseCategory = expenseCategoryMap[expense.categoryId] ?? ExpenseCategoryEntity(); final vendor = @@ -257,7 +257,7 @@ List filteredExpensesSelector( }).toList(); list.sort((expenseAId, expenseBId) { - final expenseA = expenseMap[expenseAId]; + final expenseA = expenseMap[expenseAId]!; final expenseB = expenseMap[expenseBId]; return expenseA.compareTo( expenseB, @@ -275,15 +275,15 @@ List filteredExpensesSelector( } var memoizedExpenseStatsForVendor = memo2( - (String vendorId, BuiltMap expenseMap) => + (String vendorId, BuiltMap expenseMap) => expenseStatsForVendor(vendorId, expenseMap)); EntityStats expenseStatsForVendor( - String vendorId, BuiltMap expenseMap) { + String vendorId, BuiltMap expenseMap) { int countActive = 0; int countArchived = 0; expenseMap.forEach((expenseId, expense) { - if (expense.vendorId == vendorId) { + if (expense!.vendorId == vendorId) { if (expense.isActive) { countActive++; } else if (expense.isArchived) { @@ -296,15 +296,15 @@ EntityStats expenseStatsForVendor( } var memoizedExpenseStatsForClient = memo2( - (String clientId, BuiltMap expenseMap) => + (String clientId, BuiltMap expenseMap) => expenseStatsForClient(clientId, expenseMap)); EntityStats expenseStatsForClient( - String clientId, BuiltMap expenseMap) { + String clientId, BuiltMap expenseMap) { int countActive = 0; int countArchived = 0; expenseMap.forEach((expenseId, expense) { - if (expense.clientId == clientId) { + if (expense!.clientId == clientId) { if (expense.isActive) { countActive++; } else if (expense.isArchived) { @@ -317,40 +317,40 @@ EntityStats expenseStatsForClient( } var memoizedClientExpenseList = memo2( - (BuiltMap expenseMap, String clientId) => + (BuiltMap expenseMap, String? clientId) => clientExpenseList(expenseMap, clientId)); -List clientExpenseList( - BuiltMap expenseMap, String clientId) { +List clientExpenseList( + BuiltMap expenseMap, String? clientId) { final list = expenseMap.keys.where((expenseid) { final expense = expenseMap[expenseid]; if ((clientId ?? '').isNotEmpty && - (expense.clientId ?? '').isNotEmpty && + (expense!.clientId ?? '').isNotEmpty && expense.clientId != clientId) { return false; } - return expense.isActive && !expense.isInvoiced && expense.shouldBeInvoiced; + return expense!.isActive && !expense.isInvoiced && expense.shouldBeInvoiced; }).toList(); - list.sort((idA, idB) => expenseMap[idA] + list.sort((idA, idB) => expenseMap[idA]! .listDisplayName - .compareTo(expenseMap[idB].listDisplayName)); + .compareTo(expenseMap[idB]!.listDisplayName)); return list; } var memoizedExpenseStatsForProject = memo2(( String projectId, - BuiltMap expenseMap, + BuiltMap expenseMap, ) => expenseStatsForProject(projectId, expenseMap)); EntityStats expenseStatsForProject( - String projectId, BuiltMap expenseMap) { + String projectId, BuiltMap expenseMap) { int countActive = 0; int countArchived = 0; expenseMap.forEach((expenseId, expense) { - if (expense.projectId == projectId) { + if (expense!.projectId == projectId) { if (expense.isActive) { countActive++; } else if (expense.isArchived) { @@ -364,16 +364,16 @@ EntityStats expenseStatsForProject( var memoizedExpenseStatsForUser = memo2(( String userId, - BuiltMap expenseMap, + BuiltMap expenseMap, ) => expenseStatsForUser(userId, expenseMap)); EntityStats expenseStatsForUser( - String userId, BuiltMap expenseMap) { + String userId, BuiltMap expenseMap) { int countActive = 0; int countArchived = 0; expenseMap.forEach((expenseId, expense) { - if (expense.assignedUserId == userId) { + if (expense!.assignedUserId == userId) { if (expense.isActive) { countActive++; } else if (expense.isArchived) { diff --git a/lib/redux/expense/expense_state.dart b/lib/redux/expense/expense_state.dart index 28e1e957b..5d5bf3c1c 100644 --- a/lib/redux/expense/expense_state.dart +++ b/lib/redux/expense/expense_state.dart @@ -30,7 +30,7 @@ abstract class ExpenseState @memoized int get hashCode; - ExpenseEntity get(String expenseId) { + ExpenseEntity? get(String expenseId) { if (map.containsKey(expenseId)) { return map[expenseId]; } else { @@ -38,12 +38,12 @@ abstract class ExpenseState } } - BuiltMap get map; + BuiltMap get map; BuiltList get list; ExpenseState loadExpenses(BuiltList clients) { - final map = Map.fromIterable( + final map = Map.fromIterable( clients, key: (dynamic item) => item.id, value: (dynamic item) => item, @@ -60,7 +60,7 @@ abstract class ExpenseState abstract class ExpenseUIState extends Object with EntityUIState implements Built { - factory ExpenseUIState(PrefStateSortField sortField) { + factory ExpenseUIState(PrefStateSortField? sortField) { return _$ExpenseUIState._( listUIState: ListUIState(sortField?.field ?? ExpenseFields.number, sortAscending: sortField?.ascending ?? false), @@ -76,14 +76,13 @@ abstract class ExpenseUIState extends Object @memoized int get hashCode; - @nullable - ExpenseEntity get editing; + ExpenseEntity? get editing; @override - bool get isCreatingNew => editing.isNew; + bool get isCreatingNew => editing!.isNew; @override - String get editingId => editing.id; + String get editingId => editing!.id; static Serializer get serializer => _$expenseUIStateSerializer; diff --git a/lib/redux/expense/expense_state.g.dart b/lib/redux/expense/expense_state.g.dart index 4dd84bfd2..a4b674b61 100644 --- a/lib/redux/expense/expense_state.g.dart +++ b/lib/redux/expense/expense_state.g.dart @@ -18,13 +18,15 @@ class _$ExpenseStateSerializer implements StructuredSerializer { final String wireName = 'ExpenseState'; @override - Iterable serialize(Serializers serializers, ExpenseState object, + Iterable serialize(Serializers serializers, ExpenseState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'map', serializers.serialize(object.map, - specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(ExpenseEntity)])), + specifiedType: const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(ExpenseEntity) + ])), 'list', serializers.serialize(object.list, specifiedType: @@ -35,28 +37,29 @@ class _$ExpenseStateSerializer implements StructuredSerializer { } @override - ExpenseState deserialize(Serializers serializers, Iterable serialized, + ExpenseState deserialize( + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ExpenseStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'map': result.map.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(ExpenseEntity) - ]))); + const FullType.nullable(String), + const FullType.nullable(ExpenseEntity) + ]))!); break; case 'list': result.list.replace(serializers.deserialize(value, - specifiedType: - const FullType(BuiltList, const [const FullType(String)])) - as BuiltList); + specifiedType: const FullType( + BuiltList, const [const FullType(String)]))! + as BuiltList); break; } } @@ -73,9 +76,9 @@ class _$ExpenseUIStateSerializer final String wireName = 'ExpenseUIState'; @override - Iterable serialize(Serializers serializers, ExpenseUIState object, + Iterable serialize(Serializers serializers, ExpenseUIState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'listUIState', serializers.serialize(object.listUIState, specifiedType: const FullType(ListUIState)), @@ -83,7 +86,7 @@ class _$ExpenseUIStateSerializer serializers.serialize(object.tabIndex, specifiedType: const FullType(int)), ]; - Object value; + Object? value; value = object.editing; if (value != null) { result @@ -110,35 +113,35 @@ class _$ExpenseUIStateSerializer @override ExpenseUIState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ExpenseUIStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'editing': result.editing.replace(serializers.deserialize(value, - specifiedType: const FullType(ExpenseEntity)) as ExpenseEntity); + specifiedType: const FullType(ExpenseEntity))! as ExpenseEntity); break; case 'listUIState': result.listUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(ListUIState)) as ListUIState); + specifiedType: const FullType(ListUIState))! as ListUIState); break; case 'selectedId': result.selectedId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'forceSelected': result.forceSelected = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'tabIndex': result.tabIndex = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; } } @@ -149,14 +152,14 @@ class _$ExpenseUIStateSerializer class _$ExpenseState extends ExpenseState { @override - final BuiltMap map; + final BuiltMap map; @override final BuiltList list; - factory _$ExpenseState([void Function(ExpenseStateBuilder) updates]) => + factory _$ExpenseState([void Function(ExpenseStateBuilder)? updates]) => (new ExpenseStateBuilder()..update(updates))._build(); - _$ExpenseState._({this.map, this.list}) : super._() { + _$ExpenseState._({required this.map, required this.list}) : super._() { BuiltValueNullFieldError.checkNotNull(map, r'ExpenseState', 'map'); BuiltValueNullFieldError.checkNotNull(list, r'ExpenseState', 'list'); } @@ -174,10 +177,10 @@ class _$ExpenseState extends ExpenseState { return other is ExpenseState && map == other.map && list == other.list; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, map.hashCode); _$hash = $jc(_$hash, list.hashCode); @@ -196,16 +199,16 @@ class _$ExpenseState extends ExpenseState { class ExpenseStateBuilder implements Builder { - _$ExpenseState _$v; + _$ExpenseState? _$v; - MapBuilder _map; - MapBuilder get map => - _$this._map ??= new MapBuilder(); - set map(MapBuilder map) => _$this._map = map; + MapBuilder? _map; + MapBuilder get map => + _$this._map ??= new MapBuilder(); + set map(MapBuilder? map) => _$this._map = map; - ListBuilder _list; + ListBuilder? _list; ListBuilder get list => _$this._list ??= new ListBuilder(); - set list(ListBuilder list) => _$this._list = list; + set list(ListBuilder? list) => _$this._list = list; ExpenseStateBuilder(); @@ -226,7 +229,7 @@ class ExpenseStateBuilder } @override - void update(void Function(ExpenseStateBuilder) updates) { + void update(void Function(ExpenseStateBuilder)? updates) { if (updates != null) updates(this); } @@ -239,7 +242,7 @@ class ExpenseStateBuilder _$result = _$v ?? new _$ExpenseState._(map: map.build(), list: list.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'map'; map.build(); @@ -258,29 +261,29 @@ class ExpenseStateBuilder class _$ExpenseUIState extends ExpenseUIState { @override - final ExpenseEntity editing; + final ExpenseEntity? editing; @override final ListUIState listUIState; @override - final String selectedId; + final String? selectedId; @override - final bool forceSelected; + final bool? forceSelected; @override final int tabIndex; @override - final Completer saveCompleter; + final Completer? saveCompleter; @override - final Completer cancelCompleter; + final Completer? cancelCompleter; - factory _$ExpenseUIState([void Function(ExpenseUIStateBuilder) updates]) => + factory _$ExpenseUIState([void Function(ExpenseUIStateBuilder)? updates]) => (new ExpenseUIStateBuilder()..update(updates))._build(); _$ExpenseUIState._( {this.editing, - this.listUIState, + required this.listUIState, this.selectedId, this.forceSelected, - this.tabIndex, + required this.tabIndex, this.saveCompleter, this.cancelCompleter}) : super._() { @@ -311,10 +314,10 @@ class _$ExpenseUIState extends ExpenseUIState { cancelCompleter == other.cancelCompleter; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, editing.hashCode); _$hash = $jc(_$hash, listUIState.hashCode); @@ -343,40 +346,40 @@ class _$ExpenseUIState extends ExpenseUIState { class ExpenseUIStateBuilder implements Builder { - _$ExpenseUIState _$v; + _$ExpenseUIState? _$v; - ExpenseEntityBuilder _editing; + ExpenseEntityBuilder? _editing; ExpenseEntityBuilder get editing => _$this._editing ??= new ExpenseEntityBuilder(); - set editing(ExpenseEntityBuilder editing) => _$this._editing = editing; + set editing(ExpenseEntityBuilder? editing) => _$this._editing = editing; - ListUIStateBuilder _listUIState; + ListUIStateBuilder? _listUIState; ListUIStateBuilder get listUIState => _$this._listUIState ??= new ListUIStateBuilder(); - set listUIState(ListUIStateBuilder listUIState) => + set listUIState(ListUIStateBuilder? listUIState) => _$this._listUIState = listUIState; - String _selectedId; - String get selectedId => _$this._selectedId; - set selectedId(String selectedId) => _$this._selectedId = selectedId; + String? _selectedId; + String? get selectedId => _$this._selectedId; + set selectedId(String? selectedId) => _$this._selectedId = selectedId; - bool _forceSelected; - bool get forceSelected => _$this._forceSelected; - set forceSelected(bool forceSelected) => + bool? _forceSelected; + bool? get forceSelected => _$this._forceSelected; + set forceSelected(bool? forceSelected) => _$this._forceSelected = forceSelected; - int _tabIndex; - int get tabIndex => _$this._tabIndex; - set tabIndex(int tabIndex) => _$this._tabIndex = tabIndex; + int? _tabIndex; + int? get tabIndex => _$this._tabIndex; + set tabIndex(int? tabIndex) => _$this._tabIndex = tabIndex; - Completer _saveCompleter; - Completer get saveCompleter => _$this._saveCompleter; - set saveCompleter(Completer saveCompleter) => + Completer? _saveCompleter; + Completer? get saveCompleter => _$this._saveCompleter; + set saveCompleter(Completer? saveCompleter) => _$this._saveCompleter = saveCompleter; - Completer _cancelCompleter; - Completer get cancelCompleter => _$this._cancelCompleter; - set cancelCompleter(Completer cancelCompleter) => + Completer? _cancelCompleter; + Completer? get cancelCompleter => _$this._cancelCompleter; + set cancelCompleter(Completer? cancelCompleter) => _$this._cancelCompleter = cancelCompleter; ExpenseUIStateBuilder(); @@ -403,7 +406,7 @@ class ExpenseUIStateBuilder } @override - void update(void Function(ExpenseUIStateBuilder) updates) { + void update(void Function(ExpenseUIStateBuilder)? updates) { if (updates != null) updates(this); } @@ -424,7 +427,7 @@ class ExpenseUIStateBuilder saveCompleter: saveCompleter, cancelCompleter: cancelCompleter); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'editing'; _editing?.build(); diff --git a/lib/redux/expense_category/expense_category_actions.dart b/lib/redux/expense_category/expense_category_actions.dart index 385645921..b4939b286 100644 --- a/lib/redux/expense_category/expense_category_actions.dart +++ b/lib/redux/expense_category/expense_category_actions.dart @@ -26,24 +26,24 @@ class ViewExpenseCategoryList implements PersistUI { class ViewExpenseCategory implements PersistUI, PersistPrefs { ViewExpenseCategory({ - @required this.expenseCategoryId, + required this.expenseCategoryId, this.force = false, }); - final String expenseCategoryId; + final String? expenseCategoryId; final bool force; } class EditExpenseCategory implements PersistUI, PersistPrefs { EditExpenseCategory( - {@required this.expenseCategory, + {required this.expenseCategory, this.completer, this.cancelCompleter, this.force = false}); final ExpenseCategoryEntity expenseCategory; - final Completer completer; - final Completer cancelCompleter; + final Completer? completer; + final Completer? cancelCompleter; final bool force; } @@ -56,21 +56,21 @@ class UpdateExpenseCategory implements PersistUI { class LoadExpenseCategory { LoadExpenseCategory({this.completer, this.expenseCategoryId}); - final Completer completer; - final String expenseCategoryId; + final Completer? completer; + final String? expenseCategoryId; } class LoadExpenseCategoryActivity { LoadExpenseCategoryActivity({this.completer, this.expenseCategoryId}); - final Completer completer; - final String expenseCategoryId; + final Completer? completer; + final String? expenseCategoryId; } class LoadExpenseCategories { LoadExpenseCategories({this.completer}); - final Completer completer; + final Completer? completer; } class LoadExpenseCategoryRequest implements StartLoading {} @@ -124,8 +124,8 @@ class LoadExpenseCategoriesSuccess implements StopLoading { class SaveExpenseCategoryRequest implements StartSaving { SaveExpenseCategoryRequest({this.completer, this.expenseCategory}); - final Completer completer; - final ExpenseCategoryEntity expenseCategory; + final Completer? completer; + final ExpenseCategoryEntity? expenseCategory; } class SaveExpenseCategorySuccess implements StopSaving, PersistData, PersistUI { @@ -162,7 +162,7 @@ class ArchiveExpenseCategoriesSuccess implements StopSaving, PersistData { class ArchiveExpenseCategoriesFailure implements StopSaving { ArchiveExpenseCategoriesFailure(this.expenseCategories); - final List expenseCategories; + final List expenseCategories; } class DeleteExpenseCategoriesRequest implements StartSaving { @@ -181,7 +181,7 @@ class DeleteExpenseCategoriesSuccess implements StopSaving, PersistData { class DeleteExpenseCategoriesFailure implements StopSaving { DeleteExpenseCategoriesFailure(this.expenseCategories); - final List expenseCategories; + final List expenseCategories; } class RestoreExpenseCategoriesRequest implements StartSaving { @@ -200,7 +200,7 @@ class RestoreExpenseCategoriesSuccess implements StopSaving, PersistData { class RestoreExpenseCategoriesFailure implements StopSaving { RestoreExpenseCategoriesFailure(this.expenseCategories); - final List expenseCategories; + final List expenseCategories; } class FilterExpenseCategories implements PersistUI { @@ -250,62 +250,62 @@ class StartExpenseCategoryMultiselect { } class AddToExpenseCategoryMultiselect { - AddToExpenseCategoryMultiselect({@required this.entity}); + AddToExpenseCategoryMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class RemoveFromExpenseCategoryMultiselect { - RemoveFromExpenseCategoryMultiselect({@required this.entity}); + RemoveFromExpenseCategoryMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class ClearExpenseCategoryMultiselect { ClearExpenseCategoryMultiselect(); } -void handleExpenseCategoryAction(BuildContext context, - List expenseCategories, EntityAction action) { +void handleExpenseCategoryAction(BuildContext? context, + List expenseCategories, EntityAction? action) { if (expenseCategories.isEmpty) { return; } - final store = StoreProvider.of(context); + final store = StoreProvider.of(context!); final state = store.state; final localization = AppLocalization.of(context); - final expenseCategory = expenseCategories.first as ExpenseCategoryEntity; + final expenseCategory = expenseCategories.first as ExpenseCategoryEntity?; final expenseCategoryIds = - expenseCategories.map((expenseCategory) => expenseCategory.id).toList(); + expenseCategories.map((expenseCategory) => expenseCategory!.id).toList(); switch (action) { case EntityAction.edit: - editEntity(entity: expenseCategory); + editEntity(entity: expenseCategory!); break; case EntityAction.restore: final message = expenseCategoryIds.length > 1 - ? localization.restoredExpenseCategories + ? localization!.restoredExpenseCategories .replaceFirst(':value', ':count') .replaceFirst(':count', expenseCategoryIds.length.toString()) - : localization.restoredExpenseCategory; + : localization!.restoredExpenseCategory; store.dispatch(RestoreExpenseCategoriesRequest( snackBarCompleter(context, message), expenseCategoryIds)); break; case EntityAction.archive: final message = expenseCategoryIds.length > 1 - ? localization.archivedExpenseCategories + ? localization!.archivedExpenseCategories .replaceFirst(':value', ':count') .replaceFirst(':count', expenseCategoryIds.length.toString()) - : localization.archivedExpenseCategory; + : localization!.archivedExpenseCategory; store.dispatch(ArchiveExpenseCategoriesRequest( snackBarCompleter(context, message), expenseCategoryIds)); break; case EntityAction.delete: final message = expenseCategoryIds.length > 1 - ? localization.deletedExpenseCategories + ? localization!.deletedExpenseCategories .replaceFirst(':value', ':count') .replaceFirst(':count', expenseCategoryIds.length.toString()) - : localization.deletedExpenseCategory; + : localization!.deletedExpenseCategory; store.dispatch(DeleteExpenseCategoriesRequest( snackBarCompleter(context, message), expenseCategoryIds)); break; @@ -313,14 +313,14 @@ void handleExpenseCategoryAction(BuildContext context, createEntity( context: context, entity: ExpenseEntity(state: state) - .rebuild((b) => b..categoryId = expenseCategory.id), + .rebuild((b) => b..categoryId = expenseCategory!.id), ); break; case EntityAction.newTransaction: createEntity( context: context, entity: TransactionEntity(state: state) - .rebuild((b) => b..categoryId = expenseCategory.id), + .rebuild((b) => b..categoryId = expenseCategory!.id), ); break; case EntityAction.toggleMultiselect: @@ -334,7 +334,7 @@ void handleExpenseCategoryAction(BuildContext context, for (final expenseCategory in expenseCategories) { if (!store.state.expenseCategoryListState - .isSelected(expenseCategory.id)) { + .isSelected(expenseCategory!.id)) { store.dispatch( AddToExpenseCategoryMultiselect(entity: expenseCategory)); } else { diff --git a/lib/redux/expense_category/expense_category_middleware.dart b/lib/redux/expense_category/expense_category_middleware.dart index d1c2fd3f9..41d20e474 100644 --- a/lib/redux/expense_category/expense_category_middleware.dart +++ b/lib/redux/expense_category/expense_category_middleware.dart @@ -48,14 +48,14 @@ List> createStoreExpenseCategoriesMiddleware([ Middleware _editExpenseCategory() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as EditExpenseCategory; + final action = dynamicAction as EditExpenseCategory?; next(action); store.dispatch(UpdateCurrentRoute(ExpenseCategoryEditScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(ExpenseCategoryEditScreen.route); + navigatorKey.currentState!.pushNamed(ExpenseCategoryEditScreen.route); } }; } @@ -63,21 +63,21 @@ Middleware _editExpenseCategory() { Middleware _viewExpenseCategory() { return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as ViewExpenseCategory; + final action = dynamicAction as ViewExpenseCategory?; next(action); store.dispatch(UpdateCurrentRoute(ExpenseCategoryViewScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(ExpenseCategoryViewScreen.route); + navigatorKey.currentState!.pushNamed(ExpenseCategoryViewScreen.route); } }; } Middleware _viewExpenseCategoryList() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as ViewExpenseCategoryList; + final action = dynamicAction as ViewExpenseCategoryList?; next(action); @@ -88,7 +88,7 @@ Middleware _viewExpenseCategoryList() { store.dispatch(UpdateCurrentRoute(ExpenseCategoryScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamedAndRemoveUntil( + navigatorKey.currentState!.pushNamedAndRemoveUntil( ExpenseCategoryScreen.route, (Route route) => false); } }; @@ -180,24 +180,24 @@ Middleware _saveExpenseCategory( return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as SaveExpenseCategoryRequest; repository - .saveData(store.state.credentials, action.expenseCategory) + .saveData(store.state.credentials, action.expenseCategory!) .then((ExpenseCategoryEntity expenseCategory) { - if (action.expenseCategory.isNew) { + if (action.expenseCategory!.isNew) { store.dispatch(AddExpenseCategorySuccess(expenseCategory)); } else { store.dispatch(SaveExpenseCategorySuccess(expenseCategory)); } - action.completer.complete(expenseCategory); + action.completer!.complete(expenseCategory); final expenseCategoryUIState = store.state.expenseCategoryUIState; if (expenseCategoryUIState.saveCompleter != null) { - expenseCategoryUIState.saveCompleter.complete(expenseCategory); + expenseCategoryUIState.saveCompleter!.complete(expenseCategory); } }).catchError((Object error) { print(error); store.dispatch(SaveExpenseCategoryFailure(error)); - action.completer.completeError(error); + action.completer!.completeError(error); }); next(action); @@ -217,13 +217,13 @@ Middleware _loadExpenseCategory( store.dispatch(LoadExpenseCategorySuccess(expenseCategory)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(LoadExpenseCategoryFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -234,15 +234,15 @@ Middleware _loadExpenseCategory( Middleware _loadExpenseCategories( ExpenseCategoryRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as LoadExpenseCategories; + final action = dynamicAction as LoadExpenseCategories?; final AppState state = store.state; store.dispatch(LoadExpenseCategoriesRequest()); repository.loadList(state.credentials).then((data) { store.dispatch(LoadExpenseCategoriesSuccess(data)); - if (action.completer != null) { - action.completer.complete(null); + if (action!.completer != null) { + action.completer!.complete(null); } /* if (state.productState.isStale) { @@ -252,8 +252,8 @@ Middleware _loadExpenseCategories( }).catchError((Object error) { print(error); store.dispatch(LoadExpenseCategoriesFailure(error)); - if (action.completer != null) { - action.completer.completeError(error); + if (action!.completer != null) { + action.completer!.completeError(error); } }); diff --git a/lib/redux/expense_category/expense_category_reducer.dart b/lib/redux/expense_category/expense_category_reducer.dart index b82576076..18093ad8b 100644 --- a/lib/redux/expense_category/expense_category_reducer.dart +++ b/lib/redux/expense_category/expense_category_reducer.dart @@ -17,72 +17,72 @@ EntityUIState expenseCategoryUIReducer( ExpenseCategoryUIState state, dynamic action) { return state.rebuild((b) => b ..listUIState.replace(expenseCategoryListReducer(state.listUIState, action)) - ..editing.replace(editingReducer(state.editing, action)) + ..editing.replace(editingReducer(state.editing, action)!) ..selectedId = selectedIdReducer(state.selectedId, action) ..forceSelected = forceSelectedReducer(state.forceSelected, action) ..saveCompleter = saveCompleterReducer(state.saveCompleter, action) - ..cancelCompleter = cancelCompleterReducer(state.cancelCompleter, action)); + ..cancelCompleter = cancelCompleterReducer(state.cancelCompleter as Completer?, action) as Completer?); } -final saveCompleterReducer = combineReducers>([ - TypedReducer, EditExpenseCategory>( +final saveCompleterReducer = combineReducers?>([ + TypedReducer?, EditExpenseCategory>( (completer, action) { - return action.completer; + return action.completer as Completer?; }), ]); -final cancelCompleterReducer = combineReducers>([ - TypedReducer, EditExpenseCategory>( +final cancelCompleterReducer = combineReducers?>([ + TypedReducer?, EditExpenseCategory>( (completer, action) { - return action.cancelCompleter; + return action.cancelCompleter as Completer?; }), ]); -final forceSelectedReducer = combineReducers([ - TypedReducer((completer, action) => true), - TypedReducer((completer, action) => false), - TypedReducer( +final forceSelectedReducer = combineReducers([ + TypedReducer((completer, action) => true), + TypedReducer((completer, action) => false), + TypedReducer( (completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer( + TypedReducer((completer, action) => false), + TypedReducer( (completer, action) => false), - TypedReducer( + TypedReducer( (completer, action) => false), - TypedReducer( + TypedReducer( (completer, action) => false), - TypedReducer( + TypedReducer( (completer, action) => false), ]); -Reducer selectedIdReducer = combineReducers([ - TypedReducer( +Reducer selectedIdReducer = combineReducers([ + TypedReducer( (completer, action) => ''), - TypedReducer( + TypedReducer( (completer, action) => ''), - TypedReducer((selectedId, action) => + TypedReducer((selectedId, action) => action.entityType == EntityType.expenseCategory ? action.entityId : selectedId), - TypedReducer( - (String selectedId, dynamic action) => action.expenseCategoryId), - TypedReducer( - (String selectedId, dynamic action) => action.expenseCategory.id), - TypedReducer( + TypedReducer( + (String? selectedId, dynamic action) => action.expenseCategoryId), + TypedReducer( + (String? selectedId, dynamic action) => action.expenseCategory.id), + TypedReducer( (selectedId, action) => action.clearSelection ? '' : selectedId), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer( + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer( (selectedId, action) => ''), - TypedReducer( + TypedReducer( (selectedId, action) => ''), - TypedReducer( + TypedReducer( (selectedId, action) => ''), - TypedReducer( + TypedReducer( (selectedId, action) => ''), - TypedReducer( + TypedReducer( (selectedId, action) => ''), - TypedReducer( + TypedReducer( (selectedId, action) => action.clearSelection ? '' : action.entityType == EntityType.expenseCategory @@ -90,38 +90,38 @@ Reducer selectedIdReducer = combineReducers([ : selectedId), ]); -final editingReducer = combineReducers([ - TypedReducer( +final editingReducer = combineReducers([ + TypedReducer( _updateEditing), - TypedReducer( + TypedReducer( _updateEditing), - TypedReducer( + TypedReducer( (expenseCategories, action) { return action.expenseCategories[0]; }), - TypedReducer( + TypedReducer( (expenseCategories, action) { return action.expenseCategories[0]; }), - TypedReducer( + TypedReducer( (expenseCategories, action) { return action.expenseCategories[0]; }), - TypedReducer(_updateEditing), - TypedReducer( + TypedReducer(_updateEditing), + TypedReducer( (expenseCategory, action) { return action.expenseCategory.rebuild((b) => b..isChanged = true); }), - TypedReducer(_clearEditing), + TypedReducer(_clearEditing), ]); ExpenseCategoryEntity _clearEditing( - ExpenseCategoryEntity expenseCategory, dynamic action) { + ExpenseCategoryEntity? expenseCategory, dynamic action) { return ExpenseCategoryEntity(); } -ExpenseCategoryEntity _updateEditing( - ExpenseCategoryEntity expenseCategory, dynamic action) { +ExpenseCategoryEntity? _updateEditing( + ExpenseCategoryEntity? expenseCategory, dynamic action) { return action.expenseCategory; } @@ -196,7 +196,7 @@ ListUIState _filterExpenseCategories( ListUIState _sortExpenseCategories( ListUIState expenseCategoryListState, SortExpenseCategories action) { return expenseCategoryListState.rebuild((b) => b - ..sortAscending = b.sortField != action.field || !b.sortAscending + ..sortAscending = b.sortField != action.field || !b.sortAscending! ..sortField = action.field); } @@ -207,13 +207,13 @@ ListUIState _startListMultiselect( ListUIState _addToListMultiselect( ListUIState productListState, AddToExpenseCategoryMultiselect action) { - return productListState.rebuild((b) => b..selectedIds.add(action.entity.id)); + return productListState.rebuild((b) => b..selectedIds.add(action.entity!.id)); } ListUIState _removeFromListMultiselect( ListUIState productListState, RemoveFromExpenseCategoryMultiselect action) { return productListState - .rebuild((b) => b..selectedIds.remove(action.entity.id)); + .rebuild((b) => b..selectedIds.remove(action.entity!.id)); } ListUIState _clearListMultiselect( @@ -298,6 +298,6 @@ ExpenseCategoryState _setLoadedExpenseCategories( ExpenseCategoryState _setLoadedCompany( ExpenseCategoryState expenseCategoryState, LoadCompanySuccess action) { - final company = action.userCompany.company; + final company = action.userCompany.company!; return expenseCategoryState.loadExpenseCategories(company.expenseCategories); } diff --git a/lib/redux/expense_category/expense_category_selectors.dart b/lib/redux/expense_category/expense_category_selectors.dart index b9697304f..80567cbbd 100644 --- a/lib/redux/expense_category/expense_category_selectors.dart +++ b/lib/redux/expense_category/expense_category_selectors.dart @@ -9,22 +9,22 @@ import 'package:invoiceninja_flutter/redux/static/static_state.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; var memoizedDropdownExpenseCategoryList = memo5( - (BuiltMap expenseCategoryMap, + (BuiltMap expenseCategoryMap, BuiltList expenseCategoryList, StaticState staticState, - BuiltMap userMap, + BuiltMap userMap, String categoryId) => dropdownExpenseCategoriesSelector(expenseCategoryMap, expenseCategoryList, staticState, userMap, categoryId)); List dropdownExpenseCategoriesSelector( - BuiltMap expenseCategoryMap, + BuiltMap expenseCategoryMap, BuiltList expenseCategoryList, StaticState staticState, - BuiltMap userMap, + BuiltMap userMap, String clientId) { final list = expenseCategoryList.where((expenseCategoryId) { - final expenseCategory = expenseCategoryMap[expenseCategoryId]; + final expenseCategory = expenseCategoryMap[expenseCategoryId]!; /* if (clientId != null && clientId > 0 && expenseCategory.clientId != clientId) { return false; @@ -34,7 +34,7 @@ List dropdownExpenseCategoriesSelector( }).toList(); list.sort((expenseCategoryAId, expenseCategoryBId) { - final expenseCategoryA = expenseCategoryMap[expenseCategoryAId]; + final expenseCategoryA = expenseCategoryMap[expenseCategoryAId]!; final expenseCategoryB = expenseCategoryMap[expenseCategoryBId]; return expenseCategoryA.compareTo( expenseCategory: expenseCategoryB, @@ -46,7 +46,7 @@ List dropdownExpenseCategoriesSelector( } var memoizedFilteredExpenseCategoryList = memo4((SelectionState selectionState, - BuiltMap expenseCategoryMap, + BuiltMap expenseCategoryMap, BuiltList expenseCategoryList, ListUIState expenseCategoryListState) => filteredExpenseCategoriesSelector(selectionState, expenseCategoryMap, @@ -54,11 +54,11 @@ var memoizedFilteredExpenseCategoryList = memo4((SelectionState selectionState, List filteredExpenseCategoriesSelector( SelectionState selectionState, - BuiltMap expenseCategoryMap, + BuiltMap expenseCategoryMap, BuiltList expenseCategoryList, ListUIState expenseCategoryListState) { final list = expenseCategoryList.where((expenseCategoryId) { - final expenseCategory = expenseCategoryMap[expenseCategoryId]; + final expenseCategory = expenseCategoryMap[expenseCategoryId]!; if (expenseCategory.id == selectionState.selectedId) { return true; @@ -71,7 +71,7 @@ List filteredExpenseCategoriesSelector( }).toList(); list.sort((expenseCategoryAId, expenseCategoryBId) { - return expenseCategoryMap[expenseCategoryAId].compareTo( + return expenseCategoryMap[expenseCategoryAId]!.compareTo( expenseCategory: expenseCategoryMap[expenseCategoryBId], sortField: expenseCategoryListState.sortField, sortAscending: expenseCategoryListState.sortAscending, @@ -82,18 +82,18 @@ List filteredExpenseCategoriesSelector( } var memoizedCalculateExpenseCategoryAmount = memo2( - (String categoryId, BuiltMap expenseMap) => + (String categoryId, BuiltMap expenseMap) => calculateExpenseCategoryAmount( categoryId: categoryId, expenseMap: expenseMap)); double calculateExpenseCategoryAmount({ - String categoryId, - BuiltMap expenseMap, + String? categoryId, + required BuiltMap expenseMap, }) { double total = 0; expenseMap.forEach((expenseId, expense) { - if (expense.categoryId == categoryId) { + if (expense!.categoryId == categoryId) { total += expense.grossAmount; } }); @@ -102,17 +102,17 @@ double calculateExpenseCategoryAmount({ } var memoizedExpenseStatsForExpenseCategory = memo2( - (String companyGatewayId, BuiltMap expenseMap) => + (String companyGatewayId, BuiltMap expenseMap) => expenseStatsForExpenseCategory(companyGatewayId, expenseMap)); EntityStats expenseStatsForExpenseCategory( String categoryId, - BuiltMap expenseMap, + BuiltMap expenseMap, ) { int countActive = 0; int countArchived = 0; expenseMap.forEach((expenseId, expense) { - if (expense.categoryId == categoryId) { + if (expense!.categoryId == categoryId) { if (expense.isActive) { countActive++; } else if (expense.isArchived) { @@ -125,17 +125,17 @@ EntityStats expenseStatsForExpenseCategory( } var memoizedTransactionStatsForExpenseCategory = memo2((String companyGatewayId, - BuiltMap transactionMap) => + BuiltMap transactionMap) => transactionStatsForExpenseCategory(companyGatewayId, transactionMap)); EntityStats transactionStatsForExpenseCategory( String categoryId, - BuiltMap transactionMap, + BuiltMap transactionMap, ) { int countActive = 0; int countArchived = 0; transactionMap.forEach((transactionId, transaction) { - if (transaction.categoryId == categoryId) { + if (transaction!.categoryId == categoryId) { if (transaction.isActive) { countActive++; } else if (transaction.isArchived) { diff --git a/lib/redux/expense_category/expense_category_state.dart b/lib/redux/expense_category/expense_category_state.dart index ab496c698..16f70fd4a 100644 --- a/lib/redux/expense_category/expense_category_state.dart +++ b/lib/redux/expense_category/expense_category_state.dart @@ -29,9 +29,9 @@ abstract class ExpenseCategoryState @memoized int get hashCode; - BuiltMap get map; + BuiltMap get map; - ExpenseCategoryEntity get(String categoryId) { + ExpenseCategoryEntity? get(String categoryId) { if (map.containsKey(categoryId)) { return map[categoryId]; } else { @@ -43,7 +43,7 @@ abstract class ExpenseCategoryState ExpenseCategoryState loadExpenseCategories( BuiltList clients) { - final map = Map.fromIterable( + final map = Map.fromIterable( clients, key: (dynamic item) => item.id, value: (dynamic item) => item, @@ -61,7 +61,7 @@ abstract class ExpenseCategoryState abstract class ExpenseCategoryUIState extends Object with EntityUIState implements Built { - factory ExpenseCategoryUIState(PrefStateSortField sortField) { + factory ExpenseCategoryUIState(PrefStateSortField? sortField) { return _$ExpenseCategoryUIState._( listUIState: ListUIState(sortField?.field ?? ExpenseCategoryFields.name, sortAscending: sortField?.ascending), @@ -77,14 +77,13 @@ abstract class ExpenseCategoryUIState extends Object @memoized int get hashCode; - @nullable - ExpenseCategoryEntity get editing; + ExpenseCategoryEntity? get editing; @override - bool get isCreatingNew => editing.isNew; + bool get isCreatingNew => editing!.isNew; @override - String get editingId => editing.id; + String get editingId => editing!.id; static Serializer get serializer => _$expenseCategoryUIStateSerializer; diff --git a/lib/redux/expense_category/expense_category_state.g.dart b/lib/redux/expense_category/expense_category_state.g.dart index 11dc7d815..5639dc6da 100644 --- a/lib/redux/expense_category/expense_category_state.g.dart +++ b/lib/redux/expense_category/expense_category_state.g.dart @@ -22,15 +22,15 @@ class _$ExpenseCategoryStateSerializer final String wireName = 'ExpenseCategoryState'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, ExpenseCategoryState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'map', serializers.serialize(object.map, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(ExpenseCategoryEntity) + const FullType.nullable(String), + const FullType.nullable(ExpenseCategoryEntity) ])), 'list', serializers.serialize(object.list, @@ -43,28 +43,28 @@ class _$ExpenseCategoryStateSerializer @override ExpenseCategoryState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ExpenseCategoryStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'map': result.map.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(ExpenseCategoryEntity) - ]))); + const FullType.nullable(String), + const FullType.nullable(ExpenseCategoryEntity) + ]))!); break; case 'list': result.list.replace(serializers.deserialize(value, - specifiedType: - const FullType(BuiltList, const [const FullType(String)])) - as BuiltList); + specifiedType: const FullType( + BuiltList, const [const FullType(String)]))! + as BuiltList); break; } } @@ -84,10 +84,10 @@ class _$ExpenseCategoryUIStateSerializer final String wireName = 'ExpenseCategoryUIState'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, ExpenseCategoryUIState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'listUIState', serializers.serialize(object.listUIState, specifiedType: const FullType(ListUIState)), @@ -95,7 +95,7 @@ class _$ExpenseCategoryUIStateSerializer serializers.serialize(object.tabIndex, specifiedType: const FullType(int)), ]; - Object value; + Object? value; value = object.editing; if (value != null) { result @@ -122,36 +122,36 @@ class _$ExpenseCategoryUIStateSerializer @override ExpenseCategoryUIState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ExpenseCategoryUIStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'editing': result.editing.replace(serializers.deserialize(value, - specifiedType: const FullType(ExpenseCategoryEntity)) + specifiedType: const FullType(ExpenseCategoryEntity))! as ExpenseCategoryEntity); break; case 'listUIState': result.listUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(ListUIState)) as ListUIState); + specifiedType: const FullType(ListUIState))! as ListUIState); break; case 'selectedId': result.selectedId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'forceSelected': result.forceSelected = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'tabIndex': result.tabIndex = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; } } @@ -162,15 +162,16 @@ class _$ExpenseCategoryUIStateSerializer class _$ExpenseCategoryState extends ExpenseCategoryState { @override - final BuiltMap map; + final BuiltMap map; @override final BuiltList list; factory _$ExpenseCategoryState( - [void Function(ExpenseCategoryStateBuilder) updates]) => + [void Function(ExpenseCategoryStateBuilder)? updates]) => (new ExpenseCategoryStateBuilder()..update(updates))._build(); - _$ExpenseCategoryState._({this.map, this.list}) : super._() { + _$ExpenseCategoryState._({required this.map, required this.list}) + : super._() { BuiltValueNullFieldError.checkNotNull(map, r'ExpenseCategoryState', 'map'); BuiltValueNullFieldError.checkNotNull( list, r'ExpenseCategoryState', 'list'); @@ -193,10 +194,10 @@ class _$ExpenseCategoryState extends ExpenseCategoryState { list == other.list; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, map.hashCode); _$hash = $jc(_$hash, list.hashCode); @@ -215,16 +216,17 @@ class _$ExpenseCategoryState extends ExpenseCategoryState { class ExpenseCategoryStateBuilder implements Builder { - _$ExpenseCategoryState _$v; + _$ExpenseCategoryState? _$v; - MapBuilder _map; - MapBuilder get map => - _$this._map ??= new MapBuilder(); - set map(MapBuilder map) => _$this._map = map; + MapBuilder? _map; + MapBuilder get map => + _$this._map ??= new MapBuilder(); + set map(MapBuilder? map) => + _$this._map = map; - ListBuilder _list; + ListBuilder? _list; ListBuilder get list => _$this._list ??= new ListBuilder(); - set list(ListBuilder list) => _$this._list = list; + set list(ListBuilder? list) => _$this._list = list; ExpenseCategoryStateBuilder(); @@ -245,7 +247,7 @@ class ExpenseCategoryStateBuilder } @override - void update(void Function(ExpenseCategoryStateBuilder) updates) { + void update(void Function(ExpenseCategoryStateBuilder)? updates) { if (updates != null) updates(this); } @@ -258,7 +260,7 @@ class ExpenseCategoryStateBuilder _$result = _$v ?? new _$ExpenseCategoryState._(map: map.build(), list: list.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'map'; map.build(); @@ -277,30 +279,30 @@ class ExpenseCategoryStateBuilder class _$ExpenseCategoryUIState extends ExpenseCategoryUIState { @override - final ExpenseCategoryEntity editing; + final ExpenseCategoryEntity? editing; @override final ListUIState listUIState; @override - final String selectedId; + final String? selectedId; @override - final bool forceSelected; + final bool? forceSelected; @override final int tabIndex; @override - final Completer saveCompleter; + final Completer? saveCompleter; @override - final Completer cancelCompleter; + final Completer? cancelCompleter; factory _$ExpenseCategoryUIState( - [void Function(ExpenseCategoryUIStateBuilder) updates]) => + [void Function(ExpenseCategoryUIStateBuilder)? updates]) => (new ExpenseCategoryUIStateBuilder()..update(updates))._build(); _$ExpenseCategoryUIState._( {this.editing, - this.listUIState, + required this.listUIState, this.selectedId, this.forceSelected, - this.tabIndex, + required this.tabIndex, this.saveCompleter, this.cancelCompleter}) : super._() { @@ -332,10 +334,10 @@ class _$ExpenseCategoryUIState extends ExpenseCategoryUIState { cancelCompleter == other.cancelCompleter; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, editing.hashCode); _$hash = $jc(_$hash, listUIState.hashCode); @@ -364,41 +366,41 @@ class _$ExpenseCategoryUIState extends ExpenseCategoryUIState { class ExpenseCategoryUIStateBuilder implements Builder { - _$ExpenseCategoryUIState _$v; + _$ExpenseCategoryUIState? _$v; - ExpenseCategoryEntityBuilder _editing; + ExpenseCategoryEntityBuilder? _editing; ExpenseCategoryEntityBuilder get editing => _$this._editing ??= new ExpenseCategoryEntityBuilder(); - set editing(ExpenseCategoryEntityBuilder editing) => + set editing(ExpenseCategoryEntityBuilder? editing) => _$this._editing = editing; - ListUIStateBuilder _listUIState; + ListUIStateBuilder? _listUIState; ListUIStateBuilder get listUIState => _$this._listUIState ??= new ListUIStateBuilder(); - set listUIState(ListUIStateBuilder listUIState) => + set listUIState(ListUIStateBuilder? listUIState) => _$this._listUIState = listUIState; - String _selectedId; - String get selectedId => _$this._selectedId; - set selectedId(String selectedId) => _$this._selectedId = selectedId; + String? _selectedId; + String? get selectedId => _$this._selectedId; + set selectedId(String? selectedId) => _$this._selectedId = selectedId; - bool _forceSelected; - bool get forceSelected => _$this._forceSelected; - set forceSelected(bool forceSelected) => + bool? _forceSelected; + bool? get forceSelected => _$this._forceSelected; + set forceSelected(bool? forceSelected) => _$this._forceSelected = forceSelected; - int _tabIndex; - int get tabIndex => _$this._tabIndex; - set tabIndex(int tabIndex) => _$this._tabIndex = tabIndex; + int? _tabIndex; + int? get tabIndex => _$this._tabIndex; + set tabIndex(int? tabIndex) => _$this._tabIndex = tabIndex; - Completer _saveCompleter; - Completer get saveCompleter => _$this._saveCompleter; - set saveCompleter(Completer saveCompleter) => + Completer? _saveCompleter; + Completer? get saveCompleter => _$this._saveCompleter; + set saveCompleter(Completer? saveCompleter) => _$this._saveCompleter = saveCompleter; - Completer _cancelCompleter; - Completer get cancelCompleter => _$this._cancelCompleter; - set cancelCompleter(Completer cancelCompleter) => + Completer? _cancelCompleter; + Completer? get cancelCompleter => _$this._cancelCompleter; + set cancelCompleter(Completer? cancelCompleter) => _$this._cancelCompleter = cancelCompleter; ExpenseCategoryUIStateBuilder(); @@ -425,7 +427,7 @@ class ExpenseCategoryUIStateBuilder } @override - void update(void Function(ExpenseCategoryUIStateBuilder) updates) { + void update(void Function(ExpenseCategoryUIStateBuilder)? updates) { if (updates != null) updates(this); } @@ -446,7 +448,7 @@ class ExpenseCategoryUIStateBuilder saveCompleter: saveCompleter, cancelCompleter: cancelCompleter); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'editing'; _editing?.build(); diff --git a/lib/redux/group/group_actions.dart b/lib/redux/group/group_actions.dart index 5bea87844..9e14227dd 100644 --- a/lib/redux/group/group_actions.dart +++ b/lib/redux/group/group_actions.dart @@ -28,19 +28,19 @@ class ViewGroupList implements PersistUI { class ViewGroup implements PersistUI, PersistPrefs { ViewGroup({ - @required this.groupId, + required this.groupId, this.force = false, }); - final String groupId; + final String? groupId; final bool force; } class EditGroup implements PersistUI, PersistPrefs { - EditGroup({@required this.group, this.completer, this.force = false}); + EditGroup({required this.group, this.completer, this.force = false}); final GroupEntity group; - final Completer completer; + final Completer? completer; final bool force; } @@ -53,21 +53,21 @@ class UpdateGroup implements PersistUI { class LoadGroup { LoadGroup({this.completer, this.groupId}); - final Completer completer; - final String groupId; + final Completer? completer; + final String? groupId; } class LoadGroupActivity { LoadGroupActivity({this.completer, this.groupId}); - final Completer completer; - final String groupId; + final Completer? completer; + final String? groupId; } class LoadGroups { LoadGroups({this.completer}); - final Completer completer; + final Completer? completer; } class LoadGroupRequest implements StartLoading {} @@ -121,8 +121,8 @@ class LoadGroupsSuccess implements StopLoading { class SaveGroupRequest implements StartSaving { SaveGroupRequest({this.completer, this.group}); - final Completer completer; - final GroupEntity group; + final Completer? completer; + final GroupEntity? group; } class SaveGroupSuccess implements StopSaving, PersistData, PersistUI { @@ -159,7 +159,7 @@ class ArchiveGroupSuccess implements StopSaving, PersistData { class ArchiveGroupFailure implements StopSaving { ArchiveGroupFailure(this.groups); - final List groups; + final List groups; } class DeleteGroupRequest implements StartSaving { @@ -178,7 +178,7 @@ class DeleteGroupSuccess implements StopSaving, PersistData { class DeleteGroupFailure implements StopSaving { DeleteGroupFailure(this.groups); - final List groups; + final List groups; } class RestoreGroupRequest implements StartSaving { @@ -197,7 +197,7 @@ class RestoreGroupSuccess implements StopSaving, PersistData { class RestoreGroupFailure implements StopSaving { RestoreGroupFailure(this.groups); - final List groups; + final List groups; } class FilterGroups implements PersistUI { @@ -219,26 +219,26 @@ class FilterGroupsByState implements PersistUI { } void handleGroupAction( - BuildContext context, List groups, EntityAction action) { + BuildContext? context, List groups, EntityAction? action) { if (groups.isEmpty) { return; } - final store = StoreProvider.of(context); + final store = StoreProvider.of(context!); final state = store.state; final localization = AppLocalization.of(context); final group = groups.first; - final groupIds = groups.map((group) => group.id).toList(); + final groupIds = groups.map((group) => group!.id).toList(); switch (action) { case EntityAction.edit: - editEntity(entity: group); + editEntity(entity: group!); break; case EntityAction.settings: store.dispatch(ViewSettings( company: store.state.company, user: store.state.user, - group: group, + group: group as GroupEntity?, section: state.prefState.isDesktop ? kSettingsLocalization : null, clearFilter: true, )); @@ -246,32 +246,32 @@ void handleGroupAction( case EntityAction.newClient: createEntity( context: context, - entity: ClientEntity().rebuild((b) => b..groupId = group.id)); + entity: ClientEntity().rebuild((b) => b..groupId = group!.id)); break; case EntityAction.restore: final message = groupIds.length > 1 - ? localization.restoredGroups + ? localization!.restoredGroups .replaceFirst(':value', ':count') .replaceFirst(':count', groupIds.length.toString()) - : localization.restoredGroup; + : localization!.restoredGroup; store.dispatch(RestoreGroupRequest( snackBarCompleter(context, message), groupIds)); break; case EntityAction.archive: final message = groupIds.length > 1 - ? localization.archivedGroups + ? localization!.archivedGroups .replaceFirst(':value', ':count') .replaceFirst(':count', groupIds.length.toString()) - : localization.archivedGroup; + : localization!.archivedGroup; store.dispatch(ArchiveGroupRequest( snackBarCompleter(context, message), groupIds)); break; case EntityAction.delete: final message = groupIds.length > 1 - ? localization.deletedGroups + ? localization!.deletedGroups .replaceFirst(':value', ':count') .replaceFirst(':count', groupIds.length.toString()) - : localization.deletedGroup; + : localization!.deletedGroup; store.dispatch(DeleteGroupRequest( snackBarCompleter(context, message), groupIds)); break; @@ -285,7 +285,7 @@ void handleGroupAction( } for (final group in groups) { - if (!store.state.groupListState.isSelected(group.id)) { + if (!store.state.groupListState.isSelected(group!.id)) { store.dispatch(AddToGroupMultiselect(entity: group)); } else { store.dispatch(RemoveFromGroupMultiselect(entity: group)); @@ -303,25 +303,25 @@ void handleGroupAction( class StartGroupMultiselect {} class AddToGroupMultiselect { - AddToGroupMultiselect({@required this.entity}); + AddToGroupMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class RemoveFromGroupMultiselect { - RemoveFromGroupMultiselect({@required this.entity}); + RemoveFromGroupMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class ClearGroupMultiselect {} class SaveGroupDocumentRequest implements StartSaving { SaveGroupDocumentRequest({ - @required this.isPrivate, - @required this.completer, - @required this.multipartFiles, - @required this.group, + required this.isPrivate, + required this.completer, + required this.multipartFiles, + required this.group, }); final bool isPrivate; diff --git a/lib/redux/group/group_middleware.dart b/lib/redux/group/group_middleware.dart index 771ff2824..179c3504e 100644 --- a/lib/redux/group/group_middleware.dart +++ b/lib/redux/group/group_middleware.dart @@ -49,14 +49,14 @@ List> createStoreGroupsMiddleware([ Middleware _editGroup() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as EditGroup; + final action = dynamicAction as EditGroup?; next(action); store.dispatch(UpdateCurrentRoute(GroupEditScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(GroupEditScreen.route); + navigatorKey.currentState!.pushNamed(GroupEditScreen.route); } }; } @@ -64,21 +64,21 @@ Middleware _editGroup() { Middleware _viewGroup() { return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as ViewGroup; + final action = dynamicAction as ViewGroup?; next(action); store.dispatch(UpdateCurrentRoute(GroupViewScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(GroupViewScreen.route); + navigatorKey.currentState!.pushNamed(GroupViewScreen.route); } }; } Middleware _viewGroupList() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as ViewGroupList; + final action = dynamicAction as ViewGroupList?; next(action); @@ -89,7 +89,7 @@ Middleware _viewGroupList() { store.dispatch(UpdateCurrentRoute(GroupSettingsScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamedAndRemoveUntil( + navigatorKey.currentState!.pushNamedAndRemoveUntil( GroupSettingsScreen.route, (Route route) => false); } }; @@ -177,18 +177,18 @@ Middleware _saveGroup(GroupRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as SaveGroupRequest; repository - .saveData(store.state.credentials, action.group) + .saveData(store.state.credentials, action.group!) .then((GroupEntity group) { - if (action.group.isNew) { + if (action.group!.isNew) { store.dispatch(AddGroupSuccess(group)); } else { store.dispatch(SaveGroupSuccess(group)); } - action.completer.complete(group); + action.completer!.complete(group); }).catchError((Object error) { print(error); store.dispatch(SaveGroupFailure(error)); - action.completer.completeError(error); + action.completer!.completeError(error); }); next(action); @@ -205,13 +205,13 @@ Middleware _loadGroup(GroupRepository repository) { store.dispatch(LoadGroupSuccess(group)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(LoadGroupFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -221,7 +221,7 @@ Middleware _loadGroup(GroupRepository repository) { Middleware _loadGroups(GroupRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as LoadGroups; + final action = dynamicAction as LoadGroups?; final AppState state = store.state; store.dispatch(LoadGroupsRequest()); @@ -238,14 +238,14 @@ Middleware _loadGroups(GroupRepository repository) { }); store.dispatch(LoadDocumentsSuccess(documents)); - if (action.completer != null) { - action.completer.complete(null); + if (action!.completer != null) { + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(LoadGroupsFailure(error)); - if (action.completer != null) { - action.completer.completeError(error); + if (action!.completer != null) { + action.completer!.completeError(error); } }); @@ -255,12 +255,12 @@ Middleware _loadGroups(GroupRepository repository) { Middleware _saveDocument(GroupRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as SaveGroupDocumentRequest; + final action = dynamicAction as SaveGroupDocumentRequest?; if (store.state.isEnterprisePlan) { repository .uploadDocuments( store.state.credentials, - action.group, + action!.group, action.multipartFiles, action.isPrivate, ) @@ -284,7 +284,7 @@ Middleware _saveDocument(GroupRepository repository) { } else { const error = 'Uploading documents requires an enterprise plan'; store.dispatch(SaveGroupDocumentFailure(error)); - action.completer.completeError(error); + action!.completer.completeError(error); } next(action); diff --git a/lib/redux/group/group_reducer.dart b/lib/redux/group/group_reducer.dart index b12a2690e..4086230a8 100644 --- a/lib/redux/group/group_reducer.dart +++ b/lib/redux/group/group_reducer.dart @@ -15,36 +15,36 @@ import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; EntityUIState groupUIReducer(GroupUIState state, dynamic action) { return state.rebuild((b) => b ..listUIState.replace(groupListReducer(state.listUIState, action)) - ..editing.replace(editingReducer(state.editing, action)) + ..editing.replace(editingReducer(state.editing, action)!) ..selectedId = selectedIdReducer(state.selectedId, action) ..forceSelected = forceSelectedReducer(state.forceSelected, action)); } -final forceSelectedReducer = combineReducers([ - TypedReducer((completer, action) => true), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), +final forceSelectedReducer = combineReducers([ + TypedReducer((completer, action) => true), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), ]); -Reducer selectedIdReducer = combineReducers([ - TypedReducer((completer, action) => ''), - TypedReducer((completer, action) => ''), - TypedReducer((selectedId, action) => +Reducer selectedIdReducer = combineReducers([ + TypedReducer((completer, action) => ''), + TypedReducer((completer, action) => ''), + TypedReducer((selectedId, action) => action.entityType == EntityType.group ? action.entityId : selectedId), - TypedReducer( - (String selectedId, action) => action.groupId), - TypedReducer( - (String selectedId, action) => action.group.id), - TypedReducer( + TypedReducer( + (String? selectedId, action) => action.groupId), + TypedReducer( + (String? selectedId, action) => action.group.id), + TypedReducer( (selectedId, action) => action.clearSelection ? '' : selectedId), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => action.entityType == EntityType.group ? '' : selectedId), - TypedReducer( + TypedReducer( (selectedId, action) => action.clearSelection ? '' : action.entityType == EntityType.group @@ -52,30 +52,30 @@ Reducer selectedIdReducer = combineReducers([ : selectedId), ]); -final editingReducer = combineReducers([ - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer((groups, action) { +final editingReducer = combineReducers([ + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer((groups, action) { return action.groups[0]; }), - TypedReducer((groups, action) { + TypedReducer((groups, action) { return action.groups[0]; }), - TypedReducer((groups, action) { + TypedReducer((groups, action) { return action.groups[0]; }), - TypedReducer(_updateEditing), - TypedReducer((group, action) { + TypedReducer(_updateEditing), + TypedReducer((group, action) { return action.group.rebuild((b) => b..isChanged = true); }), - TypedReducer(_clearEditing), + TypedReducer(_clearEditing), ]); -GroupEntity _clearEditing(GroupEntity group, dynamic action) { +GroupEntity _clearEditing(GroupEntity? group, dynamic action) { return GroupEntity(); } -GroupEntity _updateEditing(GroupEntity group, dynamic action) { +GroupEntity? _updateEditing(GroupEntity? group, dynamic action) { return action.group; } @@ -121,7 +121,7 @@ ListUIState _filterGroups(ListUIState groupListState, FilterGroups action) { ListUIState _sortGroups(ListUIState groupListState, SortGroups action) { return groupListState.rebuild((b) => b - ..sortAscending = b.sortField != action.field || !b.sortAscending + ..sortAscending = b.sortField != action.field || !b.sortAscending! ..sortField = action.field); } @@ -132,12 +132,12 @@ ListUIState _startListMultiselect( ListUIState _addToListMultiselect( ListUIState groupListState, AddToGroupMultiselect action) { - return groupListState.rebuild((b) => b..selectedIds.add(action.entity.id)); + return groupListState.rebuild((b) => b..selectedIds.add(action.entity!.id)); } ListUIState _removeFromListMultiselect( ListUIState groupListState, RemoveFromGroupMultiselect action) { - return groupListState.rebuild((b) => b..selectedIds.remove(action.entity.id)); + return groupListState.rebuild((b) => b..selectedIds.remove(action.entity!.id)); } ListUIState _clearListMultiselect( @@ -211,7 +211,7 @@ GroupState _setLoadedGroups(GroupState groupState, LoadGroupsSuccess action) { GroupState _setLoadedCompany(GroupState groupState, LoadCompanySuccess action) { final state = groupState.rebuild((b) => b ..map.addAll(Map.fromIterable( - action.userCompany.company.groups, + action.userCompany.company!.groups, key: (dynamic item) => item.id, value: (dynamic item) => item, ))); diff --git a/lib/redux/group/group_selectors.dart b/lib/redux/group/group_selectors.dart index ddcbd6cda..7f3d00550 100644 --- a/lib/redux/group/group_selectors.dart +++ b/lib/redux/group/group_selectors.dart @@ -16,7 +16,7 @@ var memoizedDropdownGroupList = memo3((BuiltMap groupMap, List dropdownGroupsSelector(BuiltMap groupMap, BuiltList groupList, String clientId) { final list = groupList.where((groupId) { - final group = groupMap[groupId]; + final group = groupMap[groupId]!; /* if (clientId != null && clientId > 0 && group.clientId != clientId) { return false; @@ -26,7 +26,7 @@ List dropdownGroupsSelector(BuiltMap groupMap, }).toList(); list.sort((groupAId, groupBId) { - final groupA = groupMap[groupAId]; + final groupA = groupMap[groupAId]!; final groupB = groupMap[groupBId]; return groupA.compareTo(groupB, GroupFields.name, true); }); @@ -35,7 +35,7 @@ List dropdownGroupsSelector(BuiltMap groupMap, } var memoizedFilteredGroupList = memo4((SelectionState selectionState, - BuiltMap groupMap, + BuiltMap groupMap, BuiltList groupList, ListUIState groupListState) => filteredGroupsSelector( @@ -43,11 +43,11 @@ var memoizedFilteredGroupList = memo4((SelectionState selectionState, List filteredGroupsSelector( SelectionState selectionState, - BuiltMap groupMap, + BuiltMap groupMap, BuiltList groupList, ListUIState groupListState) { final list = groupList.where((groupId) { - final group = groupMap[groupId]; + final group = groupMap[groupId]!; if (group.id == selectionState.selectedId) { return true; @@ -60,7 +60,7 @@ List filteredGroupsSelector( }).toList(); list.sort((groupAId, groupBId) { - final groupA = groupMap[groupAId]; + final groupA = groupMap[groupAId]!; final groupB = groupMap[groupBId]; return groupA.compareTo( groupB, groupListState.sortField, groupListState.sortAscending); @@ -70,15 +70,15 @@ List filteredGroupsSelector( } var memoizedClientStatsForGroup = memo2( - (BuiltMap clientMap, String groupId) => + (BuiltMap clientMap, String groupId) => clientStatsForGroup(clientMap, groupId)); EntityStats clientStatsForGroup( - BuiltMap clientMap, String groupId) { + BuiltMap clientMap, String groupId) { int countActive = 0; int countArchived = 0; clientMap.forEach((clientId, client) { - if (client.groupId == groupId) { + if (client!.groupId == groupId) { if (client.isActive) { countActive++; } else if (client.isArchived) { diff --git a/lib/redux/group/group_state.dart b/lib/redux/group/group_state.dart index de9043936..35dda6b75 100644 --- a/lib/redux/group/group_state.dart +++ b/lib/redux/group/group_state.dart @@ -29,7 +29,7 @@ abstract class GroupState implements Built { @memoized int get hashCode; - GroupEntity get(String groupId) { + GroupEntity? get(String groupId) { if (map.containsKey(groupId)) { return map[groupId]; } else { @@ -37,7 +37,7 @@ abstract class GroupState implements Built { } } - BuiltMap get map; + BuiltMap get map; BuiltList get list; @@ -47,7 +47,7 @@ abstract class GroupState implements Built { abstract class GroupUIState extends Object with EntityUIState implements Built { - factory GroupUIState(PrefStateSortField sortField) { + factory GroupUIState(PrefStateSortField? sortField) { return _$GroupUIState._( listUIState: ListUIState(sortField?.field ?? GroupFields.name, sortAscending: sortField?.ascending), @@ -63,14 +63,13 @@ abstract class GroupUIState extends Object @memoized int get hashCode; - @nullable - GroupEntity get editing; + GroupEntity? get editing; @override - bool get isCreatingNew => editing.isNew; + bool get isCreatingNew => editing!.isNew; @override - String get editingId => editing.id; + String get editingId => editing!.id; static Serializer get serializer => _$groupUIStateSerializer; } diff --git a/lib/redux/group/group_state.g.dart b/lib/redux/group/group_state.g.dart index d08a33e0a..ebd28b076 100644 --- a/lib/redux/group/group_state.g.dart +++ b/lib/redux/group/group_state.g.dart @@ -17,13 +17,15 @@ class _$GroupStateSerializer implements StructuredSerializer { final String wireName = 'GroupState'; @override - Iterable serialize(Serializers serializers, GroupState object, + Iterable serialize(Serializers serializers, GroupState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'map', serializers.serialize(object.map, - specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(GroupEntity)])), + specifiedType: const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(GroupEntity) + ])), 'list', serializers.serialize(object.list, specifiedType: @@ -34,28 +36,28 @@ class _$GroupStateSerializer implements StructuredSerializer { } @override - GroupState deserialize(Serializers serializers, Iterable serialized, + GroupState deserialize(Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new GroupStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'map': result.map.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(GroupEntity) - ]))); + const FullType.nullable(String), + const FullType.nullable(GroupEntity) + ]))!); break; case 'list': result.list.replace(serializers.deserialize(value, - specifiedType: - const FullType(BuiltList, const [const FullType(String)])) - as BuiltList); + specifiedType: const FullType( + BuiltList, const [const FullType(String)]))! + as BuiltList); break; } } @@ -71,9 +73,9 @@ class _$GroupUIStateSerializer implements StructuredSerializer { final String wireName = 'GroupUIState'; @override - Iterable serialize(Serializers serializers, GroupUIState object, + Iterable serialize(Serializers serializers, GroupUIState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'listUIState', serializers.serialize(object.listUIState, specifiedType: const FullType(ListUIState)), @@ -81,7 +83,7 @@ class _$GroupUIStateSerializer implements StructuredSerializer { serializers.serialize(object.tabIndex, specifiedType: const FullType(int)), ]; - Object value; + Object? value; value = object.editing; if (value != null) { result @@ -107,35 +109,36 @@ class _$GroupUIStateSerializer implements StructuredSerializer { } @override - GroupUIState deserialize(Serializers serializers, Iterable serialized, + GroupUIState deserialize( + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new GroupUIStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'editing': result.editing.replace(serializers.deserialize(value, - specifiedType: const FullType(GroupEntity)) as GroupEntity); + specifiedType: const FullType(GroupEntity))! as GroupEntity); break; case 'listUIState': result.listUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(ListUIState)) as ListUIState); + specifiedType: const FullType(ListUIState))! as ListUIState); break; case 'selectedId': result.selectedId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'forceSelected': result.forceSelected = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'tabIndex': result.tabIndex = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; } } @@ -146,14 +149,14 @@ class _$GroupUIStateSerializer implements StructuredSerializer { class _$GroupState extends GroupState { @override - final BuiltMap map; + final BuiltMap map; @override final BuiltList list; - factory _$GroupState([void Function(GroupStateBuilder) updates]) => + factory _$GroupState([void Function(GroupStateBuilder)? updates]) => (new GroupStateBuilder()..update(updates))._build(); - _$GroupState._({this.map, this.list}) : super._() { + _$GroupState._({required this.map, required this.list}) : super._() { BuiltValueNullFieldError.checkNotNull(map, r'GroupState', 'map'); BuiltValueNullFieldError.checkNotNull(list, r'GroupState', 'list'); } @@ -171,10 +174,10 @@ class _$GroupState extends GroupState { return other is GroupState && map == other.map && list == other.list; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, map.hashCode); _$hash = $jc(_$hash, list.hashCode); @@ -192,16 +195,16 @@ class _$GroupState extends GroupState { } class GroupStateBuilder implements Builder { - _$GroupState _$v; + _$GroupState? _$v; - MapBuilder _map; - MapBuilder get map => - _$this._map ??= new MapBuilder(); - set map(MapBuilder map) => _$this._map = map; + MapBuilder? _map; + MapBuilder get map => + _$this._map ??= new MapBuilder(); + set map(MapBuilder? map) => _$this._map = map; - ListBuilder _list; + ListBuilder? _list; ListBuilder get list => _$this._list ??= new ListBuilder(); - set list(ListBuilder list) => _$this._list = list; + set list(ListBuilder? list) => _$this._list = list; GroupStateBuilder(); @@ -222,7 +225,7 @@ class GroupStateBuilder implements Builder { } @override - void update(void Function(GroupStateBuilder) updates) { + void update(void Function(GroupStateBuilder)? updates) { if (updates != null) updates(this); } @@ -235,7 +238,7 @@ class GroupStateBuilder implements Builder { _$result = _$v ?? new _$GroupState._(map: map.build(), list: list.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'map'; map.build(); @@ -254,29 +257,29 @@ class GroupStateBuilder implements Builder { class _$GroupUIState extends GroupUIState { @override - final GroupEntity editing; + final GroupEntity? editing; @override final ListUIState listUIState; @override - final String selectedId; + final String? selectedId; @override - final bool forceSelected; + final bool? forceSelected; @override final int tabIndex; @override - final Completer saveCompleter; + final Completer? saveCompleter; @override - final Completer cancelCompleter; + final Completer? cancelCompleter; - factory _$GroupUIState([void Function(GroupUIStateBuilder) updates]) => + factory _$GroupUIState([void Function(GroupUIStateBuilder)? updates]) => (new GroupUIStateBuilder()..update(updates))._build(); _$GroupUIState._( {this.editing, - this.listUIState, + required this.listUIState, this.selectedId, this.forceSelected, - this.tabIndex, + required this.tabIndex, this.saveCompleter, this.cancelCompleter}) : super._() { @@ -306,10 +309,10 @@ class _$GroupUIState extends GroupUIState { cancelCompleter == other.cancelCompleter; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, editing.hashCode); _$hash = $jc(_$hash, listUIState.hashCode); @@ -338,40 +341,40 @@ class _$GroupUIState extends GroupUIState { class GroupUIStateBuilder implements Builder { - _$GroupUIState _$v; + _$GroupUIState? _$v; - GroupEntityBuilder _editing; + GroupEntityBuilder? _editing; GroupEntityBuilder get editing => _$this._editing ??= new GroupEntityBuilder(); - set editing(GroupEntityBuilder editing) => _$this._editing = editing; + set editing(GroupEntityBuilder? editing) => _$this._editing = editing; - ListUIStateBuilder _listUIState; + ListUIStateBuilder? _listUIState; ListUIStateBuilder get listUIState => _$this._listUIState ??= new ListUIStateBuilder(); - set listUIState(ListUIStateBuilder listUIState) => + set listUIState(ListUIStateBuilder? listUIState) => _$this._listUIState = listUIState; - String _selectedId; - String get selectedId => _$this._selectedId; - set selectedId(String selectedId) => _$this._selectedId = selectedId; + String? _selectedId; + String? get selectedId => _$this._selectedId; + set selectedId(String? selectedId) => _$this._selectedId = selectedId; - bool _forceSelected; - bool get forceSelected => _$this._forceSelected; - set forceSelected(bool forceSelected) => + bool? _forceSelected; + bool? get forceSelected => _$this._forceSelected; + set forceSelected(bool? forceSelected) => _$this._forceSelected = forceSelected; - int _tabIndex; - int get tabIndex => _$this._tabIndex; - set tabIndex(int tabIndex) => _$this._tabIndex = tabIndex; + int? _tabIndex; + int? get tabIndex => _$this._tabIndex; + set tabIndex(int? tabIndex) => _$this._tabIndex = tabIndex; - Completer _saveCompleter; - Completer get saveCompleter => _$this._saveCompleter; - set saveCompleter(Completer saveCompleter) => + Completer? _saveCompleter; + Completer? get saveCompleter => _$this._saveCompleter; + set saveCompleter(Completer? saveCompleter) => _$this._saveCompleter = saveCompleter; - Completer _cancelCompleter; - Completer get cancelCompleter => _$this._cancelCompleter; - set cancelCompleter(Completer cancelCompleter) => + Completer? _cancelCompleter; + Completer? get cancelCompleter => _$this._cancelCompleter; + set cancelCompleter(Completer? cancelCompleter) => _$this._cancelCompleter = cancelCompleter; GroupUIStateBuilder(); @@ -398,7 +401,7 @@ class GroupUIStateBuilder } @override - void update(void Function(GroupUIStateBuilder) updates) { + void update(void Function(GroupUIStateBuilder)? updates) { if (updates != null) updates(this); } @@ -419,7 +422,7 @@ class GroupUIStateBuilder saveCompleter: saveCompleter, cancelCompleter: cancelCompleter); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'editing'; _editing?.build(); diff --git a/lib/redux/invoice/invoice_actions.dart b/lib/redux/invoice/invoice_actions.dart index 5d39e6633..52917d886 100644 --- a/lib/redux/invoice/invoice_actions.dart +++ b/lib/redux/invoice/invoice_actions.dart @@ -37,13 +37,13 @@ class ViewInvoiceList implements PersistUI { }); final bool force; - final int page; + final int? page; } class ViewInvoice implements PersistUI, PersistPrefs { ViewInvoice({this.invoiceId, this.force = false}); - final String invoiceId; + final String? invoiceId; final bool force; } @@ -55,32 +55,32 @@ class EditInvoice implements PersistUI, PersistPrefs { this.force = false, }); - final InvoiceEntity invoice; - final int invoiceItemIndex; - final Completer completer; + final InvoiceEntity? invoice; + final int? invoiceItemIndex; + final Completer? completer; final bool force; } class ShowEmailInvoice { ShowEmailInvoice({this.invoice, this.context, this.completer}); - final InvoiceEntity invoice; - final BuildContext context; - final Completer completer; + final InvoiceEntity? invoice; + final BuildContext? context; + final Completer? completer; } class ShowPdfInvoice { ShowPdfInvoice({this.invoice, this.context, this.activityId}); - final InvoiceEntity invoice; - final BuildContext context; - final String activityId; + final InvoiceEntity? invoice; + final BuildContext? context; + final String? activityId; } class EditInvoiceItem implements PersistUI { EditInvoiceItem([this.invoiceItemIndex]); - final int invoiceItemIndex; + final int? invoiceItemIndex; } class UpdateInvoice implements PersistUI { @@ -92,20 +92,20 @@ class UpdateInvoice implements PersistUI { class UpdateInvoiceClient implements PersistUI { UpdateInvoiceClient({this.client}); - final ClientEntity client; + final ClientEntity? client; } class LoadInvoice { LoadInvoice({this.completer, this.invoiceId}); - final Completer completer; - final String invoiceId; + final Completer? completer; + final String? invoiceId; } class LoadInvoices { LoadInvoices({this.completer, this.page = 1}); - final Completer completer; + final Completer? completer; final int page; } @@ -160,20 +160,20 @@ class LoadInvoicesSuccess implements StopLoading { class AddInvoiceContact implements PersistUI { AddInvoiceContact({this.contact, this.invitation}); - final ClientContactEntity contact; - final InvitationEntity invitation; + final ClientContactEntity? contact; + final InvitationEntity? invitation; } class RemoveInvoiceContact implements PersistUI { RemoveInvoiceContact({this.invitation}); - final InvitationEntity invitation; + final InvitationEntity? invitation; } class AddInvoiceItem implements PersistUI { AddInvoiceItem({this.invoiceItem}); - final InvoiceItemEntity invoiceItem; + final InvoiceItemEntity? invoiceItem; } class MoveInvoiceItem implements PersistUI { @@ -182,8 +182,8 @@ class MoveInvoiceItem implements PersistUI { this.newIndex, }); - final int oldIndex; - final int newIndex; + final int? oldIndex; + final int? newIndex; } class AddInvoiceItems implements PersistUI { @@ -195,8 +195,8 @@ class AddInvoiceItems implements PersistUI { class UpdateInvoiceItem implements PersistUI { UpdateInvoiceItem({this.index, this.invoiceItem}); - final int index; - final InvoiceItemEntity invoiceItem; + final int? index; + final InvoiceItemEntity? invoiceItem; } class DeleteInvoiceItem implements PersistUI { @@ -207,14 +207,14 @@ class DeleteInvoiceItem implements PersistUI { class SaveInvoiceRequest implements StartSaving { SaveInvoiceRequest({ - @required this.completer, - @required this.invoice, - @required this.entityAction, + required this.completer, + required this.invoice, + required this.entityAction, }); final Completer completer; final InvoiceEntity invoice; - final EntityAction entityAction; + final EntityAction? entityAction; } class SaveInvoiceSuccess implements StopSaving, PersistUI { @@ -237,12 +237,12 @@ class SaveInvoiceFailure implements StopSaving { class EmailInvoiceRequest implements StartSaving { EmailInvoiceRequest({ - @required this.completer, - @required this.invoiceId, - @required this.template, - @required this.subject, - @required this.body, - @required this.ccEmail, + required this.completer, + required this.invoiceId, + required this.template, + required this.subject, + required this.body, + required this.ccEmail, }); final Completer completer; @@ -254,7 +254,7 @@ class EmailInvoiceRequest implements StartSaving { } class EmailInvoiceSuccess implements StopSaving, PersistData { - EmailInvoiceSuccess({@required this.invoice}); + EmailInvoiceSuccess({required this.invoice}); final InvoiceEntity invoice; } @@ -287,9 +287,9 @@ class MarkInvoicesSentFailure implements StopSaving { class BulkEmailInvoicesRequest implements StartSaving { BulkEmailInvoicesRequest({this.completer, this.invoiceIds, this.template}); - final Completer completer; - final List invoiceIds; - final EmailTemplate template; + final Completer? completer; + final List? invoiceIds; + final EmailTemplate? template; } class BulkEmailInvoicesSuccess implements StopSaving, PersistData { @@ -377,7 +377,7 @@ class ArchiveInvoicesSuccess implements StopSaving, PersistData { class ArchiveInvoicesFailure implements StopSaving { ArchiveInvoicesFailure(this.invoices); - final List invoices; + final List invoices; } class DeleteInvoicesRequest implements StartSaving { @@ -396,7 +396,7 @@ class DeleteInvoicesSuccess implements StopSaving, PersistData { class DeleteInvoicesFailure implements StopSaving { DeleteInvoicesFailure(this.invoices); - final List invoices; + final List invoices; } class DownloadInvoicesRequest implements StartSaving { @@ -430,7 +430,7 @@ class RestoreInvoicesSuccess implements StopSaving, PersistData { class RestoreInvoicesFailure implements StopSaving { RestoreInvoicesFailure(this.invoices); - final List invoices; + final List invoices; } class FilterInvoices implements PersistUI { @@ -490,28 +490,28 @@ class FilterInvoicesByCustom4 implements PersistUI { class StartInvoiceMultiselect {} class AddToInvoiceMultiselect { - AddToInvoiceMultiselect({@required this.entity}); + AddToInvoiceMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class RemoveFromInvoiceMultiselect { - RemoveFromInvoiceMultiselect({@required this.entity}); + RemoveFromInvoiceMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class ClearInvoiceMultiselect {} class SaveInvoiceDocumentRequest implements StartSaving { SaveInvoiceDocumentRequest({ - @required this.isPrivate, - @required this.completer, - @required this.multipartFiles, - @required this.invoice, + required this.isPrivate, + required this.completer, + required this.multipartFiles, + required this.invoice, }); - final bool isPrivate; + final bool? isPrivate; final Completer completer; final List multipartFiles; final InvoiceEntity invoice; @@ -532,20 +532,20 @@ class SaveInvoiceDocumentFailure implements StopSaving { class UpdateInvoiceTab implements PersistUI { UpdateInvoiceTab({this.tabIndex}); - final int tabIndex; + final int? tabIndex; } -void handleInvoiceAction(BuildContext context, List invoices, - EntityAction action) async { +void handleInvoiceAction(BuildContext? context, List invoices, + EntityAction? action) async { if (invoices.isEmpty) { return; } - final store = StoreProvider.of(context); + final store = StoreProvider.of(context!); final state = store.state; final localization = AppLocalization.of(context); final invoice = invoices.first as InvoiceEntity; - final invoiceIds = invoices.map((invoice) => invoice.id).toList(); + final invoiceIds = invoices.map((invoice) => invoice!.id).toList(); final client = state.clientState.get(invoice.clientId); switch (action) { @@ -561,7 +561,7 @@ void handleInvoiceAction(BuildContext context, List invoices, if (!link.contains('?')) { link += '?'; } - link += '&client_hash=${client.clientHash}'; + link += '&client_hash=${client!.clientHash}'; launchUrl(Uri.parse(link)); } break; @@ -570,8 +570,8 @@ void handleInvoiceAction(BuildContext context, List invoices, snackBarCompleter( context, invoiceIds.length == 1 - ? localization.markedInvoiceAsSent - : localization.markedInvoicesAsSent), + ? localization!.markedInvoiceAsSent + : localization!.markedInvoicesAsSent), invoiceIds)); break; case EntityAction.reverse: @@ -589,7 +589,7 @@ void handleInvoiceAction(BuildContext context, List invoices, case EntityAction.cancelInvoice: confirmCallback( context: context, - message: localization.cancelInvoice, + message: localization!.cancelInvoice, callback: (_) { store.dispatch(CancelInvoicesRequest( snackBarCompleter( @@ -605,14 +605,14 @@ void handleInvoiceAction(BuildContext context, List invoices, snackBarCompleter( context, invoiceIds.length == 1 - ? localization.markedInvoiceAsPaid - : localization.markedInvoicesAsPaid), + ? localization!.markedInvoiceAsPaid + : localization!.markedInvoicesAsPaid), invoiceIds)); break; case EntityAction.autoBill: confirmCallback( context: context, - message: localization.autoBill, + message: localization!.autoBill, callback: (_) { store.dispatch(AutoBillInvoicesRequest( snackBarCompleter( @@ -630,7 +630,7 @@ void handleInvoiceAction(BuildContext context, List invoices, invoices.forEach((invoice) { final client = state.clientState.get( (invoice as InvoiceEntity).clientId, - ); + )!; if (!client.hasEmailAddress) { emailValid = false; } @@ -638,12 +638,12 @@ void handleInvoiceAction(BuildContext context, List invoices, if (!emailValid) { showMessageDialog( context: context, - message: localization.clientEmailNotSet, + message: localization!.clientEmailNotSet, secondaryActions: [ TextButton( onPressed: () { Navigator.of(context).pop(); - editEntity(entity: client); + editEntity(entity: client!); }, child: Text(localization.editClient.toUpperCase())) ]); @@ -652,14 +652,14 @@ void handleInvoiceAction(BuildContext context, List invoices, if (action == EntityAction.sendEmail) { store.dispatch(ShowEmailInvoice( completer: - snackBarCompleter(context, localization.emailedInvoice), + snackBarCompleter(context, localization!.emailedInvoice), invoice: invoice, context: context)); } else if (action == EntityAction.schedule) { if (!state.isProPlan) { showMessageDialog( context: context, - message: localization.upgradeToPaidPlanToSchedule, + message: localization!.upgradeToPaidPlanToSchedule, secondaryActions: [ TextButton( onPressed: () { @@ -684,7 +684,7 @@ void handleInvoiceAction(BuildContext context, List invoices, builder: (context) { final settings = getClientSettings(state, client); final templates = { - EmailTemplate.invoice: localization.initialEmail, + EmailTemplate.invoice: localization!.initialEmail, EmailTemplate.reminder1: localization.firstReminder, EmailTemplate.reminder2: localization.secondReminder, EmailTemplate.reminder3: localization.thirdReminder, @@ -700,12 +700,12 @@ void handleInvoiceAction(BuildContext context, List invoices, title: Text( invoiceIds.length == 1 ? localization.emailInvoice - : localization.emailCountInvoices + : localization.emailCountInvoices! .replaceFirst(':count', '${invoiceIds.length}'), ), children: templates.keys .map((template) => SimpleDialogOption( - child: Text(templates[template]), + child: Text(templates[template]!), onPressed: () { Navigator.of(context).pop(template); }, @@ -718,10 +718,10 @@ void handleInvoiceAction(BuildContext context, List invoices, if (template != null) { store.dispatch(BulkEmailInvoicesRequest( completer: snackBarCompleter( - navigatorKey.currentContext, + navigatorKey.currentContext!, invoiceIds.length == 1 - ? localization.emailedInvoice - : localization.emailedInvoices), + ? localization!.emailedInvoice + : localization!.emailedInvoices), invoiceIds: invoiceIds, template: template, )); @@ -782,7 +782,7 @@ void handleInvoiceAction(BuildContext context, List invoices, entity: PaymentEntity(state: state, client: client).rebuild((b) => b ..invoices.addAll(invoices .where((invoice) => !(invoice as InvoiceEntity).isPaid) - .map((invoice) => PaymentableEntity.fromInvoice(invoice)) + .map((invoice) => PaymentableEntity.fromInvoice(invoice as InvoiceEntity)) .toList())), filterEntity: client, ); @@ -795,33 +795,33 @@ void handleInvoiceAction(BuildContext context, List invoices, break; case EntityAction.bulkDownload: store.dispatch(DownloadInvoicesRequest( - snackBarCompleter(context, localization.exportedData), + snackBarCompleter(context, localization!.exportedData), invoiceIds)); break; case EntityAction.restore: final message = invoiceIds.length > 1 - ? localization.restoredInvoices + ? localization!.restoredInvoices .replaceFirst(':value', ':count') .replaceFirst(':count', invoiceIds.length.toString()) - : localization.restoredInvoice; + : localization!.restoredInvoice; store.dispatch(RestoreInvoicesRequest( snackBarCompleter(context, message), invoiceIds)); break; case EntityAction.archive: final message = invoiceIds.length > 1 - ? localization.archivedInvoices + ? localization!.archivedInvoices .replaceFirst(':value', ':count') .replaceFirst(':count', invoiceIds.length.toString()) - : localization.archivedInvoice; + : localization!.archivedInvoice; store.dispatch(ArchiveInvoicesRequest( snackBarCompleter(context, message), invoiceIds)); break; case EntityAction.delete: final message = invoiceIds.length > 1 - ? localization.deletedInvoices + ? localization!.deletedInvoices .replaceFirst(':value', ':count') .replaceFirst(':count', invoiceIds.length.toString()) - : localization.deletedInvoice; + : localization!.deletedInvoice; store.dispatch(DeleteInvoicesRequest( snackBarCompleter(context, message), invoiceIds)); break; @@ -830,7 +830,7 @@ void handleInvoiceAction(BuildContext context, List invoices, store.dispatch(StartInvoiceMultiselect()); } for (final invoice in invoices) { - if (!store.state.invoiceListState.isSelected(invoice.id)) { + if (!store.state.invoiceListState.isSelected(invoice!.id)) { store.dispatch(AddToInvoiceMultiselect(entity: invoice)); } else { store.dispatch(RemoveFromInvoiceMultiselect(entity: invoice)); @@ -841,20 +841,20 @@ void handleInvoiceAction(BuildContext context, List invoices, final invitation = invoice.invitations.first; final url = invitation.downloadLink; store.dispatch(StartSaving()); - final http.Response response = - await WebClient().get(url, '', rawResponse: true); + final http.Response? response = + await (WebClient().get(url, '', rawResponse: true) as FutureOr); store.dispatch(StopSaving()); - await Printing.layoutPdf(onLayout: (_) => response.bodyBytes); + await Printing.layoutPdf(onLayout: (_) => response!.bodyBytes); break; case EntityAction.bulkPrint: store.dispatch(StartSaving()); - final url = state.credentials.url + '/invoices/bulk'; + final url = state.credentials.url! + '/invoices/bulk'; final data = json.encode( {'ids': invoiceIds, 'action': EntityAction.bulkPrint.toApiParam()}); - final http.Response response = await WebClient() - .post(url, state.credentials.token, data: data, rawResponse: true); + final http.Response? response = await (WebClient() + .post(url, state.credentials.token, data: data, rawResponse: true) as FutureOr); store.dispatch(StopSaving()); - await Printing.layoutPdf(onLayout: (_) => response.bodyBytes); + await Printing.layoutPdf(onLayout: (_) => response!.bodyBytes); break; case EntityAction.more: showEntityActionsDialog( @@ -870,14 +870,14 @@ void handleInvoiceAction(BuildContext context, List invoices, } if (documentIds.isEmpty) { showMessageDialog( - context: context, message: localization.noDocumentsToDownload); + context: context, message: localization!.noDocumentsToDownload); } else { store.dispatch( DownloadDocumentsRequest( documentIds: documentIds, completer: snackBarCompleter( context, - localization.exportedData, + localization!.exportedData, ), ), ); diff --git a/lib/redux/invoice/invoice_middleware.dart b/lib/redux/invoice/invoice_middleware.dart index bb41112d5..e8d34584a 100644 --- a/lib/redux/invoice/invoice_middleware.dart +++ b/lib/redux/invoice/invoice_middleware.dart @@ -69,7 +69,7 @@ List> createStoreInvoicesMiddleware([ Middleware _viewInvoiceList() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as ViewInvoiceList; + final action = dynamicAction as ViewInvoiceList?; next(action); @@ -80,7 +80,7 @@ Middleware _viewInvoiceList() { store.dispatch(UpdateCurrentRoute(InvoiceScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamedAndRemoveUntil( + navigatorKey.currentState!.pushNamedAndRemoveUntil( InvoiceScreen.route, (Route route) => false); } }; @@ -89,28 +89,28 @@ Middleware _viewInvoiceList() { Middleware _viewInvoice() { return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as ViewInvoice; + final action = dynamicAction as ViewInvoice?; next(action); store.dispatch(UpdateCurrentRoute(InvoiceViewScreen.route)); if (store.state.prefState.isMobile) { - await navigatorKey.currentState.pushNamed(InvoiceViewScreen.route); + await navigatorKey.currentState!.pushNamed(InvoiceViewScreen.route); } }; } Middleware _editInvoice() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as EditInvoice; + final action = dynamicAction as EditInvoice?; next(action); store.dispatch(UpdateCurrentRoute(InvoiceEditScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(InvoiceEditScreen.route); + navigatorKey.currentState!.pushNamed(InvoiceEditScreen.route); } }; } @@ -118,7 +118,7 @@ Middleware _editInvoice() { Middleware _showEmailInvoice() { return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as ShowEmailInvoice; + final action = dynamicAction as ShowEmailInvoice?; next(action); @@ -126,10 +126,10 @@ Middleware _showEmailInvoice() { if (store.state.prefState.isMobile) { final emailWasSent = - await navigatorKey.currentState.pushNamed(InvoiceEmailScreen.route); + await navigatorKey.currentState!.pushNamed(InvoiceEmailScreen.route); - if (action.completer != null && emailWasSent != null && emailWasSent) { - action.completer.complete(null); + if (action!.completer != null && emailWasSent != null && emailWasSent as bool) { + action.completer!.complete(null); } } }; @@ -138,14 +138,14 @@ Middleware _showEmailInvoice() { Middleware _showPdfInvoice() { return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as ShowPdfInvoice; + final action = dynamicAction as ShowPdfInvoice?; next(action); store.dispatch(UpdateCurrentRoute(InvoicePdfScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(InvoicePdfScreen.route); + navigatorKey.currentState!.pushNamed(InvoicePdfScreen.route); } }; } @@ -352,7 +352,7 @@ Middleware _downloadInvoices(InvoiceRepository repository) { Middleware _emailInvoice(InvoiceRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as EmailInvoiceRequest; - final origInvoice = store.state.invoiceState.map[action.invoiceId]; + final origInvoice = store.state.invoiceState.map[action.invoiceId]!; repository .emailInvoice( store.state.credentials, @@ -387,20 +387,20 @@ Middleware _bulkEmailInvoices(InvoiceRepository repository) { repository .bulkAction( store.state.credentials, - action.invoiceIds, + action.invoiceIds!, EntityAction.sendEmail, template: action.template, ) .then((List invoices) { store.dispatch(BulkEmailInvoicesSuccess(invoices)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(BulkEmailInvoicesFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -415,7 +415,7 @@ Middleware _saveInvoice(InvoiceRepository repository) { // remove any empty line items final updatedInvoice = action.invoice.rebuild((b) => b ..lineItems - .replace(action.invoice.lineItems.where((item) => !item.isEmpty))); + .replace(action.invoice.lineItems.where((item) => !item!.isEmpty))); repository .saveData( @@ -452,13 +452,13 @@ Middleware _loadInvoice(InvoiceRepository repository) { store.dispatch(LoadInvoiceSuccess(invoice)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(LoadInvoiceFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -500,7 +500,7 @@ Middleware _loadInvoices(InvoiceRepository repository) { )); } else { if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } store.dispatch(LoadRecurringInvoices()); } @@ -508,7 +508,7 @@ Middleware _loadInvoices(InvoiceRepository repository) { print(error); store.dispatch(LoadInvoicesFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -518,14 +518,14 @@ Middleware _loadInvoices(InvoiceRepository repository) { Middleware _saveDocument(InvoiceRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as SaveInvoiceDocumentRequest; + final action = dynamicAction as SaveInvoiceDocumentRequest?; if (store.state.isEnterprisePlan) { repository .uploadDocuments( store.state.credentials, - action.invoice, + action!.invoice, action.multipartFiles, - action.isPrivate, + action.isPrivate!, ) .then((invoice) { store.dispatch(SaveInvoiceSuccess(invoice)); @@ -547,7 +547,7 @@ Middleware _saveDocument(InvoiceRepository repository) { } else { const error = 'Uploading documents requires an enterprise plan'; store.dispatch(SaveInvoiceDocumentFailure(error)); - action.completer.completeError(error); + action!.completer.completeError(error); } next(action); diff --git a/lib/redux/invoice/invoice_reducer.dart b/lib/redux/invoice/invoice_reducer.dart index 7386642d5..6f0310379 100644 --- a/lib/redux/invoice/invoice_reducer.dart +++ b/lib/redux/invoice/invoice_reducer.dart @@ -17,7 +17,7 @@ import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; EntityUIState invoiceUIReducer(InvoiceUIState state, dynamic action) { return state.rebuild((b) => b ..listUIState.replace(invoiceListReducer(state.listUIState, action)) - ..editing.replace(editingReducer(state.editing, action)) + ..editing.replace(editingReducer(state.editing, action)!) ..editingItemIndex = editingItemIndexReducer(state.editingItemIndex, action) ..selectedId = selectedIdReducer(state.selectedId, action) ..forceSelected = forceSelectedReducer(state.forceSelected, action) @@ -26,34 +26,34 @@ EntityUIState invoiceUIReducer(InvoiceUIState state, dynamic action) { historyActivityIdReducer(state.historyActivityId, action)); } -final forceSelectedReducer = combineReducers([ - TypedReducer((completer, action) => true), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), +final forceSelectedReducer = combineReducers([ + TypedReducer((completer, action) => true), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), ]); -final tabIndexReducer = combineReducers([ - TypedReducer((completer, action) { +final int? Function(int, dynamic) tabIndexReducer = combineReducers([ + TypedReducer((completer, action) { return action.tabIndex; }), - TypedReducer((completer, action) { + TypedReducer((completer, action) { return 0; }), ]); -final historyActivityIdReducer = combineReducers([ - TypedReducer((index, action) => action.activityId), +final historyActivityIdReducer = combineReducers([ + TypedReducer((index, action) => action.activityId), ]); -final editingItemIndexReducer = combineReducers([ - TypedReducer((index, action) => action.invoiceItemIndex), - TypedReducer( +final editingItemIndexReducer = combineReducers([ + TypedReducer((index, action) => action.invoiceItemIndex), + TypedReducer( (index, action) => action.invoiceItemIndex), ]); @@ -66,32 +66,32 @@ String filterInvoiceDropdownReducer( return action.filter; } -Reducer selectedIdReducer = combineReducers([ - TypedReducer((completer, action) => ''), - TypedReducer((completer, action) => ''), - TypedReducer((selectedId, action) => +Reducer selectedIdReducer = combineReducers([ + TypedReducer((completer, action) => ''), + TypedReducer((completer, action) => ''), + TypedReducer((selectedId, action) => action.entityType == EntityType.invoice ? action.entityId : selectedId), - TypedReducer((selectedId, action) => action.invoiceId), - TypedReducer( + TypedReducer((selectedId, action) => action.invoiceId), + TypedReducer( (selectedId, action) => action.invoice.id), - TypedReducer( - (selectedId, action) => action.invoice.id), - TypedReducer( - (selectedId, action) => action.invoice.id), - TypedReducer( + TypedReducer( + (selectedId, action) => action.invoice!.id), + TypedReducer( + (selectedId, action) => action.invoice!.id), + TypedReducer( (selectedId, action) => action.clearSelection ? '' : selectedId), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => action.entityType == EntityType.invoice ? '' : selectedId), - TypedReducer( + TypedReducer( (selectedId, action) => action.clearSelection ? '' : action.entityType == EntityType.invoice @@ -99,92 +99,92 @@ Reducer selectedIdReducer = combineReducers([ : selectedId), ]); -final editingReducer = combineReducers([ - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer((invoice, action) { +final editingReducer = combineReducers([ + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer((invoice, action) { return action.invoice.rebuild((b) => b..isChanged = true); }), - TypedReducer((invoice, action) { - return invoice.rebuild((b) => b..isChanged = true); + TypedReducer((invoice, action) { + return invoice!.rebuild((b) => b..isChanged = true); }), - TypedReducer((invoice, action) { - return invoice.moveLineItem(action.oldIndex, action.newIndex); + TypedReducer((invoice, action) { + return invoice!.moveLineItem(action.oldIndex!, action.newIndex); }), - TypedReducer((invoice, action) { - return invoice.rebuild((b) => b..isChanged = true); + TypedReducer((invoice, action) { + return invoice!.rebuild((b) => b..isChanged = true); }), - TypedReducer((invoice, action) { - return invoice.rebuild((b) => b..isChanged = true); + TypedReducer((invoice, action) { + return invoice!.rebuild((b) => b..isChanged = true); }), - TypedReducer((invoice, action) { + TypedReducer((invoice, action) { final client = action.client; - return invoice.rebuild((b) => b + return invoice!.rebuild((b) => b ..isChanged = true ..clientId = client?.id ?? '' ..invitations.replace((client?.emailContacts ?? []) - .map((contact) => InvitationEntity(clientContactId: contact.id)) + .map((contact) => InvitationEntity(clientContactId: contact!.id)) .toList())); }), - TypedReducer((invoices, action) { + TypedReducer((invoices, action) { return action.invoices[0]; }), - TypedReducer((invoices, action) { + TypedReducer((invoices, action) { return action.invoices[0]; }), - TypedReducer((invoices, action) { + TypedReducer((invoices, action) { return action.invoices[0]; }), - TypedReducer(_addInvoiceItem), - TypedReducer(_addInvoiceItems), - TypedReducer(_removeInvoiceItem), - TypedReducer(_updateInvoiceItem), - TypedReducer(_clearEditing), - TypedReducer((invoice, action) { - return invoice.rebuild((b) => b + TypedReducer(_addInvoiceItem), + TypedReducer(_addInvoiceItems), + TypedReducer(_removeInvoiceItem), + TypedReducer(_updateInvoiceItem), + TypedReducer(_clearEditing), + TypedReducer((invoice, action) { + return invoice!.rebuild((b) => b ..invitations.add(action.invitation ?? - InvitationEntity(clientContactId: action.contact.id))); + InvitationEntity(clientContactId: action.contact!.id))); }), - TypedReducer((invoice, action) { - return invoice.rebuild((b) => b..invitations.remove(action.invitation)); + TypedReducer((invoice, action) { + return invoice!.rebuild((b) => b..invitations.remove(action.invitation)); }), ]); -InvoiceEntity _clearEditing(InvoiceEntity invoice, dynamic action) { +InvoiceEntity _clearEditing(InvoiceEntity? invoice, dynamic action) { return InvoiceEntity(); } -InvoiceEntity _updateEditing(InvoiceEntity invoice, dynamic action) { +InvoiceEntity _updateEditing(InvoiceEntity? invoice, dynamic action) { return (action.invoice as InvoiceEntity) .rebuild((b) => b..idempotencyKey = BaseEntity.nextIdempotencyKey); } -InvoiceEntity _addInvoiceItem(InvoiceEntity invoice, AddInvoiceItem action) { +InvoiceEntity _addInvoiceItem(InvoiceEntity? invoice, AddInvoiceItem action) { final item = action.invoiceItem ?? InvoiceItemEntity(); - return invoice.rebuild((b) => b..lineItems.add(item)); + return invoice!.rebuild((b) => b..lineItems.add(item)); } -InvoiceEntity _addInvoiceItems(InvoiceEntity invoice, AddInvoiceItems action) { - return invoice.rebuild((b) => b..lineItems.addAll(action.lineItems)); +InvoiceEntity _addInvoiceItems(InvoiceEntity? invoice, AddInvoiceItems action) { + return invoice!.rebuild((b) => b..lineItems.addAll(action.lineItems)); } -InvoiceEntity _removeInvoiceItem( - InvoiceEntity invoice, DeleteInvoiceItem action) { - if (invoice.lineItems.length <= action.index) { +InvoiceEntity? _removeInvoiceItem( + InvoiceEntity? invoice, DeleteInvoiceItem action) { + if (invoice!.lineItems.length <= action.index) { return invoice; } return invoice.rebuild((b) => b..lineItems.removeAt(action.index)); } -InvoiceEntity _updateInvoiceItem( - InvoiceEntity invoice, UpdateInvoiceItem action) { - if (invoice.lineItems.length <= action.index) { +InvoiceEntity? _updateInvoiceItem( + InvoiceEntity? invoice, UpdateInvoiceItem action) { + if (invoice!.lineItems.length <= action.index!) { return invoice; } return invoice - .rebuild((b) => b..lineItems[action.index] = action.invoiceItem); + .rebuild((b) => b..lineItems[action.index!] = action.invoiceItem); } final invoiceListReducer = combineReducers([ @@ -287,7 +287,7 @@ ListUIState _filterInvoices( ListUIState _sortInvoices(ListUIState invoiceListState, SortInvoices action) { return invoiceListState.rebuild((b) => b - ..sortAscending = b.sortField != action.field || !b.sortAscending + ..sortAscending = b.sortField != action.field || !b.sortAscending! ..sortField = action.field); } @@ -298,13 +298,13 @@ ListUIState _startListMultiselect( ListUIState _addToListMultiselect( ListUIState invoiceListState, AddToInvoiceMultiselect action) { - return invoiceListState.rebuild((b) => b..selectedIds.add(action.entity.id)); + return invoiceListState.rebuild((b) => b..selectedIds.add(action.entity!.id)); } ListUIState _removeFromListMultiselect( ListUIState invoiceListState, RemoveFromInvoiceMultiselect action) { return invoiceListState - .rebuild((b) => b..selectedIds.remove(action.entity.id)); + .rebuild((b) => b..selectedIds.remove(action.entity!.id)); } ListUIState _clearListMultiselect( @@ -331,8 +331,8 @@ final invoicesReducer = combineReducers([ InvoiceState _purgeClientSuccess( InvoiceState invoiceState, PurgeClientSuccess action) { final ids = invoiceState.map.values - .where((each) => each.clientId == action.clientId) - .map((each) => each.id) + .where((each) => each!.clientId == action.clientId) + .map((each) => each!.id) .toList(); return invoiceState.rebuild((b) => b @@ -408,9 +408,9 @@ InvoiceState _addInvoice(InvoiceState invoiceState, AddInvoiceSuccess action) { } InvoiceState _updateInvoice(InvoiceState invoiceState, dynamic action) { - final InvoiceEntity invoice = action.invoice; + final InvoiceEntity? invoice = action.invoice; return invoiceState.rebuild((b) => b - ..map[action.invoice.id] = invoice + ..map[action.invoice.id] = invoice! .rebuild((b) => b..loadedAt = DateTime.now().millisecondsSinceEpoch)); } @@ -420,6 +420,6 @@ InvoiceState _setLoadedInvoices( InvoiceState _setLoadedCompany( InvoiceState invoiceState, LoadCompanySuccess action) { - final company = action.userCompany.company; + final company = action.userCompany.company!; return invoiceState.loadInvoices(company.invoices); } diff --git a/lib/redux/invoice/invoice_selectors.dart b/lib/redux/invoice/invoice_selectors.dart index 4a1eda340..586a0e8c2 100644 --- a/lib/redux/invoice/invoice_selectors.dart +++ b/lib/redux/invoice/invoice_selectors.dart @@ -8,17 +8,17 @@ import 'package:invoiceninja_flutter/redux/app/app_state.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; var memoizedHasActiveUnpaidInvoices = memo2( - (String clientId, BuiltMap invoiceMap) => + (String clientId, BuiltMap invoiceMap) => hasActiveUnpaidInvoices(clientId, invoiceMap)); bool hasActiveUnpaidInvoices( - String clientId, BuiltMap invoiceMap) { + String clientId, BuiltMap invoiceMap) { bool hasUnapid = false; final invoiceIds = invoiceMap.keys.toList(); for (var i = 0; i < invoiceIds.length; i++) { final invoiceId = invoiceIds[i]; - final invoice = invoiceMap[invoiceId]; + final invoice = invoiceMap[invoiceId]!; if (invoice.clientId == clientId && invoice.isUnpaid) { hasUnapid = true; @@ -29,41 +29,41 @@ bool hasActiveUnpaidInvoices( } var memoizedInvoiceQuoteSelector = memo2( - (InvoiceEntity invoice, BuiltMap quoteMap) => + (InvoiceEntity invoice, BuiltMap quoteMap) => invoiceQuoteSelector(invoice, quoteMap)); -InvoiceEntity invoiceQuoteSelector( - InvoiceEntity invoice, BuiltMap quoteMap) { - InvoiceEntity invoiceQuote; +InvoiceEntity? invoiceQuoteSelector( + InvoiceEntity invoice, BuiltMap quoteMap) { + InvoiceEntity? invoiceQuote; quoteMap.forEach((quoteId, quote) { - if (quote.invoiceId == invoice.id) { + if (quote!.invoiceId == invoice.id) { invoiceQuote = quote; } }); return invoiceQuote; } -ClientContactEntity invoiceContactSelector( +ClientContactEntity? invoiceContactSelector( InvoiceEntity invoice, ClientEntity client) { var contactIds = invoice.invitations .map((invitation) => invitation.clientContactId) .toList(); - if (contactIds.contains(client.primaryContact.id)) { - contactIds = [client.primaryContact.id]; + if (contactIds.contains(client.primaryContact!.id)) { + contactIds = [client.primaryContact!.id]; } return client.contacts - .firstWhere((contact) => contactIds.contains(contact.id), orElse: null); + .firstWhere((contact) => contactIds.contains(contact!.id), orElse: null); } var memoizedDropdownInvoiceList = memo8( - (BuiltMap invoiceMap, - BuiltMap clientMap, - BuiltMap vendorMap, + (BuiltMap invoiceMap, + BuiltMap clientMap, + BuiltMap vendorMap, BuiltList invoiceList, String clientId, - BuiltMap userMap, - List excludedIds, - String recurringPrefix) => + BuiltMap userMap, + List excludedIds, + String? recurringPrefix) => dropdownInvoiceSelector( invoiceMap, clientMap, @@ -76,14 +76,14 @@ var memoizedDropdownInvoiceList = memo8( )); List dropdownInvoiceSelector( - BuiltMap invoiceMap, - BuiltMap clientMap, - BuiltMap vendorMap, + BuiltMap invoiceMap, + BuiltMap clientMap, + BuiltMap vendorMap, BuiltList invoiceList, String clientId, - BuiltMap userMap, - List excludedIds, - String recurringPrefix, + BuiltMap userMap, + List excludedIds, + String? recurringPrefix, ) { final list = invoiceList.where((invoiceId) { final invoice = invoiceMap[invoiceId]; @@ -92,11 +92,11 @@ List dropdownInvoiceSelector( } if (clientId != null && clientId.isNotEmpty && - invoice.clientId != clientId) { + invoice!.clientId != clientId) { return false; } - if (!clientMap.containsKey(invoice.clientId) || - !clientMap[invoice.clientId].isActive) { + if (!clientMap.containsKey(invoice!.clientId) || + !clientMap[invoice.clientId]!.isActive) { return false; } return invoice.isActive && @@ -105,7 +105,7 @@ List dropdownInvoiceSelector( }).toList(); list.sort((invoiceAId, invoiceBId) { - final invoiceA = invoiceMap[invoiceAId]; + final invoiceA = invoiceMap[invoiceAId]!; final invoiceB = invoiceMap[invoiceBId]; return invoiceA.compareTo( invoice: invoiceB, @@ -122,14 +122,14 @@ List dropdownInvoiceSelector( } var memoizedFilteredInvoiceList = memo9((SelectionState selectionState, - BuiltMap invoiceMap, + BuiltMap invoiceMap, BuiltList invoiceList, - BuiltMap clientMap, - BuiltMap vendorMap, - BuiltMap paymentMap, + BuiltMap clientMap, + BuiltMap vendorMap, + BuiltMap paymentMap, ListUIState invoiceListState, - BuiltMap userMap, - String recurringPrefix) => + BuiltMap userMap, + String? recurringPrefix) => filteredInvoicesSelector( selectionState, invoiceMap, @@ -144,22 +144,22 @@ var memoizedFilteredInvoiceList = memo9((SelectionState selectionState, List filteredInvoicesSelector( SelectionState selectionState, - BuiltMap invoiceMap, + BuiltMap invoiceMap, BuiltList invoiceList, - BuiltMap clientMap, - BuiltMap vendorMap, - BuiltMap paymentMap, + BuiltMap clientMap, + BuiltMap vendorMap, + BuiltMap paymentMap, ListUIState invoiceListState, - BuiltMap userMap, - String recurringPrefix, + BuiltMap userMap, + String? recurringPrefix, ) { final filterEntityId = selectionState.filterEntityId; final filterEntityType = selectionState.filterEntityType; - final Map> invoicePaymentMap = {}; + final Map> invoicePaymentMap = {}; if (filterEntityType == EntityType.payment) { paymentMap.forEach((paymentId, payment) { - payment.invoicePaymentables.forEach((invoicePaymentable) { + payment!.invoicePaymentables.forEach((invoicePaymentable) { final List paymentIds = invoicePaymentMap[invoicePaymentable.invoiceId] ?? []; paymentIds.add(payment.id); @@ -169,7 +169,7 @@ List filteredInvoicesSelector( } final list = invoiceList.where((invoiceId) { - final invoice = invoiceMap[invoiceId]; + final invoice = invoiceMap[invoiceId]!; final client = clientMap[invoice.clientId] ?? ClientEntity(id: invoice.clientId); @@ -245,7 +245,7 @@ List filteredInvoicesSelector( }).toList(); list.sort((invoiceAId, invoiceBId) { - return invoiceMap[invoiceAId].compareTo( + return invoiceMap[invoiceAId]!.compareTo( invoice: invoiceMap[invoiceBId], sortField: invoiceListState.sortField, sortAscending: invoiceListState.sortAscending, @@ -260,15 +260,15 @@ List filteredInvoicesSelector( } var memoizedInvoiceStatsForClient = memo2( - (String clientId, BuiltMap invoiceMap) => + (String clientId, BuiltMap invoiceMap) => invoiceStatsForClient(clientId, invoiceMap)); EntityStats invoiceStatsForClient( - String clientId, BuiltMap invoiceMap) { + String clientId, BuiltMap invoiceMap) { int countActive = 0; int countArchived = 0; invoiceMap.forEach((invoiceId, invoice) { - if (invoice.clientId == clientId) { + if (invoice!.clientId == clientId) { if (invoice.isActive) { countActive++; } else if (invoice.isArchived) { @@ -281,15 +281,15 @@ EntityStats invoiceStatsForClient( } var memoizedInvoiceStatsForDesign = memo2( - (String designId, BuiltMap invoiceMap) => + (String designId, BuiltMap invoiceMap) => invoiceStatsForDesign(designId, invoiceMap)); EntityStats invoiceStatsForDesign( - String designId, BuiltMap invoiceMap) { + String designId, BuiltMap invoiceMap) { int countActive = 0; int countArchived = 0; invoiceMap.forEach((invoiceId, invoice) { - if (invoice.designId == designId) { + if (invoice!.designId == designId) { if (invoice.isActive) { countActive++; } else if (invoice.isArchived) { @@ -302,15 +302,15 @@ EntityStats invoiceStatsForDesign( } var memoizedInvoiceStatsForSubscription = memo2( - (String subscriptionId, BuiltMap invoiceMap) => + (String subscriptionId, BuiltMap invoiceMap) => invoiceStatsForSubscription(subscriptionId, invoiceMap)); EntityStats invoiceStatsForSubscription( - String subscriptionId, BuiltMap invoiceMap) { + String subscriptionId, BuiltMap invoiceMap) { int countActive = 0; int countArchived = 0; invoiceMap.forEach((invoiceId, invoice) { - if (invoice.subscriptionId == subscriptionId) { + if (invoice!.subscriptionId == subscriptionId) { if (invoice.isActive) { countActive++; } else if (invoice.isArchived) { @@ -324,16 +324,16 @@ EntityStats invoiceStatsForSubscription( var memoizedInvoiceStatsForProject = memo2(( String projectId, - BuiltMap invoiceMap, + BuiltMap invoiceMap, ) => invoiceStatsForProject(projectId, invoiceMap)); EntityStats invoiceStatsForProject( - String projectId, BuiltMap invoiceMap) { + String projectId, BuiltMap invoiceMap) { int countActive = 0; int countArchived = 0; invoiceMap.forEach((invoiceId, invoice) { - if (invoice.projectId == projectId) { + if (invoice!.projectId == projectId) { if (invoice.isActive) { countActive++; } else if (invoice.isArchived) { @@ -346,18 +346,18 @@ EntityStats invoiceStatsForProject( } var memoizedInvoiceStatsForUser = memo2( - (String userId, BuiltMap invoiceMap) => + (String userId, BuiltMap invoiceMap) => invoiceStatsForUser(userId, invoiceMap)); EntityStats invoiceStatsForUser( - String userId, BuiltMap invoiceMap) { + String userId, BuiltMap invoiceMap) { int countActive = 0; int countArchived = 0; invoiceMap.forEach((invoiceId, invoice) { - if (invoice.assignedUserId == userId) { + if (invoice!.assignedUserId == userId) { if (invoice.isActive) { countActive++; - } else if (invoice.isDeleted) { + } else if (invoice.isDeleted!) { countArchived++; } } @@ -367,7 +367,7 @@ EntityStats invoiceStatsForUser( } int precisionForInvoice(AppState state, InvoiceEntity invoice) { - final client = state.clientState.get(invoice.clientId); + final client = state.clientState.get(invoice.clientId)!; final currency = state.staticState.currencyMap[client.currencyId]; return currency?.precision ?? 2; } diff --git a/lib/redux/invoice/invoice_state.dart b/lib/redux/invoice/invoice_state.dart index 038f39370..750e58f79 100644 --- a/lib/redux/invoice/invoice_state.dart +++ b/lib/redux/invoice/invoice_state.dart @@ -29,9 +29,9 @@ abstract class InvoiceState @memoized int get hashCode; - BuiltMap get map; + BuiltMap get map; - InvoiceEntity get(String invoiceId) { + InvoiceEntity? get(String invoiceId) { if (map.containsKey(invoiceId)) { return map[invoiceId]; } else { @@ -42,7 +42,7 @@ abstract class InvoiceState BuiltList get list; InvoiceState loadInvoices(BuiltList clients) { - final map = Map.fromIterable( + final map = Map.fromIterable( clients, key: (dynamic item) => item.id, value: (dynamic item) => item, @@ -59,7 +59,7 @@ abstract class InvoiceState abstract class InvoiceUIState extends Object with EntityUIState implements Built { - factory InvoiceUIState(PrefStateSortField sortField) { + factory InvoiceUIState(PrefStateSortField? sortField) { return _$InvoiceUIState._( listUIState: ListUIState(sortField?.field ?? InvoiceFields.number, sortAscending: sortField?.ascending ?? false), @@ -75,22 +75,19 @@ abstract class InvoiceUIState extends Object @memoized int get hashCode; - @nullable - InvoiceEntity get editing; + InvoiceEntity? get editing; - @nullable @BuiltValueField(serialize: false) - int get editingItemIndex; + int? get editingItemIndex; - @nullable @BuiltValueField(serialize: false) - String get historyActivityId; + String? get historyActivityId; @override - bool get isCreatingNew => editing.isNew; + bool get isCreatingNew => editing!.isNew; @override - String get editingId => editing.id; + String get editingId => editing!.id; static Serializer get serializer => _$invoiceUIStateSerializer; diff --git a/lib/redux/invoice/invoice_state.g.dart b/lib/redux/invoice/invoice_state.g.dart index 8b8c07eb3..d7ec50a3f 100644 --- a/lib/redux/invoice/invoice_state.g.dart +++ b/lib/redux/invoice/invoice_state.g.dart @@ -18,13 +18,15 @@ class _$InvoiceStateSerializer implements StructuredSerializer { final String wireName = 'InvoiceState'; @override - Iterable serialize(Serializers serializers, InvoiceState object, + Iterable serialize(Serializers serializers, InvoiceState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'map', serializers.serialize(object.map, - specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(InvoiceEntity)])), + specifiedType: const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(InvoiceEntity) + ])), 'list', serializers.serialize(object.list, specifiedType: @@ -35,28 +37,29 @@ class _$InvoiceStateSerializer implements StructuredSerializer { } @override - InvoiceState deserialize(Serializers serializers, Iterable serialized, + InvoiceState deserialize( + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new InvoiceStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'map': result.map.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(InvoiceEntity) - ]))); + const FullType.nullable(String), + const FullType.nullable(InvoiceEntity) + ]))!); break; case 'list': result.list.replace(serializers.deserialize(value, - specifiedType: - const FullType(BuiltList, const [const FullType(String)])) - as BuiltList); + specifiedType: const FullType( + BuiltList, const [const FullType(String)]))! + as BuiltList); break; } } @@ -73,9 +76,9 @@ class _$InvoiceUIStateSerializer final String wireName = 'InvoiceUIState'; @override - Iterable serialize(Serializers serializers, InvoiceUIState object, + Iterable serialize(Serializers serializers, InvoiceUIState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'listUIState', serializers.serialize(object.listUIState, specifiedType: const FullType(ListUIState)), @@ -83,7 +86,7 @@ class _$InvoiceUIStateSerializer serializers.serialize(object.tabIndex, specifiedType: const FullType(int)), ]; - Object value; + Object? value; value = object.editing; if (value != null) { result @@ -110,35 +113,35 @@ class _$InvoiceUIStateSerializer @override InvoiceUIState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new InvoiceUIStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'editing': result.editing.replace(serializers.deserialize(value, - specifiedType: const FullType(InvoiceEntity)) as InvoiceEntity); + specifiedType: const FullType(InvoiceEntity))! as InvoiceEntity); break; case 'listUIState': result.listUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(ListUIState)) as ListUIState); + specifiedType: const FullType(ListUIState))! as ListUIState); break; case 'selectedId': result.selectedId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'forceSelected': result.forceSelected = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'tabIndex': result.tabIndex = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; } } @@ -149,14 +152,14 @@ class _$InvoiceUIStateSerializer class _$InvoiceState extends InvoiceState { @override - final BuiltMap map; + final BuiltMap map; @override final BuiltList list; - factory _$InvoiceState([void Function(InvoiceStateBuilder) updates]) => + factory _$InvoiceState([void Function(InvoiceStateBuilder)? updates]) => (new InvoiceStateBuilder()..update(updates))._build(); - _$InvoiceState._({this.map, this.list}) : super._() { + _$InvoiceState._({required this.map, required this.list}) : super._() { BuiltValueNullFieldError.checkNotNull(map, r'InvoiceState', 'map'); BuiltValueNullFieldError.checkNotNull(list, r'InvoiceState', 'list'); } @@ -174,10 +177,10 @@ class _$InvoiceState extends InvoiceState { return other is InvoiceState && map == other.map && list == other.list; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, map.hashCode); _$hash = $jc(_$hash, list.hashCode); @@ -196,16 +199,16 @@ class _$InvoiceState extends InvoiceState { class InvoiceStateBuilder implements Builder { - _$InvoiceState _$v; + _$InvoiceState? _$v; - MapBuilder _map; - MapBuilder get map => - _$this._map ??= new MapBuilder(); - set map(MapBuilder map) => _$this._map = map; + MapBuilder? _map; + MapBuilder get map => + _$this._map ??= new MapBuilder(); + set map(MapBuilder? map) => _$this._map = map; - ListBuilder _list; + ListBuilder? _list; ListBuilder get list => _$this._list ??= new ListBuilder(); - set list(ListBuilder list) => _$this._list = list; + set list(ListBuilder? list) => _$this._list = list; InvoiceStateBuilder(); @@ -226,7 +229,7 @@ class InvoiceStateBuilder } @override - void update(void Function(InvoiceStateBuilder) updates) { + void update(void Function(InvoiceStateBuilder)? updates) { if (updates != null) updates(this); } @@ -239,7 +242,7 @@ class InvoiceStateBuilder _$result = _$v ?? new _$InvoiceState._(map: map.build(), list: list.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'map'; map.build(); @@ -258,35 +261,35 @@ class InvoiceStateBuilder class _$InvoiceUIState extends InvoiceUIState { @override - final InvoiceEntity editing; + final InvoiceEntity? editing; @override - final int editingItemIndex; + final int? editingItemIndex; @override - final String historyActivityId; + final String? historyActivityId; @override final ListUIState listUIState; @override - final String selectedId; + final String? selectedId; @override - final bool forceSelected; + final bool? forceSelected; @override final int tabIndex; @override - final Completer saveCompleter; + final Completer? saveCompleter; @override - final Completer cancelCompleter; + final Completer? cancelCompleter; - factory _$InvoiceUIState([void Function(InvoiceUIStateBuilder) updates]) => + factory _$InvoiceUIState([void Function(InvoiceUIStateBuilder)? updates]) => (new InvoiceUIStateBuilder()..update(updates))._build(); _$InvoiceUIState._( {this.editing, this.editingItemIndex, this.historyActivityId, - this.listUIState, + required this.listUIState, this.selectedId, this.forceSelected, - this.tabIndex, + required this.tabIndex, this.saveCompleter, this.cancelCompleter}) : super._() { @@ -319,10 +322,10 @@ class _$InvoiceUIState extends InvoiceUIState { cancelCompleter == other.cancelCompleter; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, editing.hashCode); _$hash = $jc(_$hash, editingItemIndex.hashCode); @@ -355,50 +358,50 @@ class _$InvoiceUIState extends InvoiceUIState { class InvoiceUIStateBuilder implements Builder { - _$InvoiceUIState _$v; + _$InvoiceUIState? _$v; - InvoiceEntityBuilder _editing; + InvoiceEntityBuilder? _editing; InvoiceEntityBuilder get editing => _$this._editing ??= new InvoiceEntityBuilder(); - set editing(InvoiceEntityBuilder editing) => _$this._editing = editing; + set editing(InvoiceEntityBuilder? editing) => _$this._editing = editing; - int _editingItemIndex; - int get editingItemIndex => _$this._editingItemIndex; - set editingItemIndex(int editingItemIndex) => + int? _editingItemIndex; + int? get editingItemIndex => _$this._editingItemIndex; + set editingItemIndex(int? editingItemIndex) => _$this._editingItemIndex = editingItemIndex; - String _historyActivityId; - String get historyActivityId => _$this._historyActivityId; - set historyActivityId(String historyActivityId) => + String? _historyActivityId; + String? get historyActivityId => _$this._historyActivityId; + set historyActivityId(String? historyActivityId) => _$this._historyActivityId = historyActivityId; - ListUIStateBuilder _listUIState; + ListUIStateBuilder? _listUIState; ListUIStateBuilder get listUIState => _$this._listUIState ??= new ListUIStateBuilder(); - set listUIState(ListUIStateBuilder listUIState) => + set listUIState(ListUIStateBuilder? listUIState) => _$this._listUIState = listUIState; - String _selectedId; - String get selectedId => _$this._selectedId; - set selectedId(String selectedId) => _$this._selectedId = selectedId; + String? _selectedId; + String? get selectedId => _$this._selectedId; + set selectedId(String? selectedId) => _$this._selectedId = selectedId; - bool _forceSelected; - bool get forceSelected => _$this._forceSelected; - set forceSelected(bool forceSelected) => + bool? _forceSelected; + bool? get forceSelected => _$this._forceSelected; + set forceSelected(bool? forceSelected) => _$this._forceSelected = forceSelected; - int _tabIndex; - int get tabIndex => _$this._tabIndex; - set tabIndex(int tabIndex) => _$this._tabIndex = tabIndex; + int? _tabIndex; + int? get tabIndex => _$this._tabIndex; + set tabIndex(int? tabIndex) => _$this._tabIndex = tabIndex; - Completer _saveCompleter; - Completer get saveCompleter => _$this._saveCompleter; - set saveCompleter(Completer saveCompleter) => + Completer? _saveCompleter; + Completer? get saveCompleter => _$this._saveCompleter; + set saveCompleter(Completer? saveCompleter) => _$this._saveCompleter = saveCompleter; - Completer _cancelCompleter; - Completer get cancelCompleter => _$this._cancelCompleter; - set cancelCompleter(Completer cancelCompleter) => + Completer? _cancelCompleter; + Completer? get cancelCompleter => _$this._cancelCompleter; + set cancelCompleter(Completer? cancelCompleter) => _$this._cancelCompleter = cancelCompleter; InvoiceUIStateBuilder(); @@ -427,7 +430,7 @@ class InvoiceUIStateBuilder } @override - void update(void Function(InvoiceUIStateBuilder) updates) { + void update(void Function(InvoiceUIStateBuilder)? updates) { if (updates != null) updates(this); } @@ -450,7 +453,7 @@ class InvoiceUIStateBuilder saveCompleter: saveCompleter, cancelCompleter: cancelCompleter); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'editing'; _editing?.build(); diff --git a/lib/redux/payment/payment_actions.dart b/lib/redux/payment/payment_actions.dart index c3fbbdad8..85a9ea537 100644 --- a/lib/redux/payment/payment_actions.dart +++ b/lib/redux/payment/payment_actions.dart @@ -24,33 +24,33 @@ class ViewPaymentList implements PersistUI { }); final bool force; - final int page; + final int? page; } class ViewPayment implements PersistUI, PersistPrefs { ViewPayment({ - @required this.paymentId, + required this.paymentId, this.force = false, }); - final String paymentId; + final String? paymentId; final bool force; } class EditPayment implements PersistUI, PersistPrefs { - EditPayment({@required this.payment, this.completer, this.force = false}); + EditPayment({required this.payment, this.completer, this.force = false}); final PaymentEntity payment; - final Completer completer; + final Completer? completer; final bool force; } class ViewRefundPayment implements PersistUI, PersistPrefs { ViewRefundPayment( - {@required this.payment, this.completer, this.force = false}); + {required this.payment, this.completer, this.force = false}); final PaymentEntity payment; - final Completer completer; + final Completer? completer; final bool force; } @@ -63,21 +63,21 @@ class UpdatePayment implements PersistUI { class LoadPayment { LoadPayment({this.completer, this.paymentId}); - final Completer completer; - final String paymentId; + final Completer? completer; + final String? paymentId; } class LoadPaymentActivity { LoadPaymentActivity({this.completer, this.paymentId}); - final Completer completer; - final String paymentId; + final Completer? completer; + final String? paymentId; } class LoadPayments { LoadPayments({this.completer, this.page = 1}); - final Completer completer; + final Completer? completer; final int page; } @@ -131,8 +131,8 @@ class LoadPaymentsSuccess implements StopLoading { class SavePaymentRequest implements StartSaving { SavePaymentRequest({ - @required this.completer, - @required this.payment, + required this.completer, + required this.payment, }); final Completer completer; @@ -159,8 +159,8 @@ class SavePaymentFailure implements StopSaving { class RefundPaymentRequest implements StartSaving { RefundPaymentRequest({ - @required this.completer, - @required this.payment, + required this.completer, + required this.payment, }); final Completer completer; @@ -195,7 +195,7 @@ class ArchivePaymentsSuccess implements StopSaving, PersistData { class ArchivePaymentsFailure implements StopSaving { ArchivePaymentsFailure(this.payments); - final List payments; + final List payments; } class DeletePaymentsRequest implements StartSaving { @@ -214,7 +214,7 @@ class DeletePaymentsSuccess implements StopSaving { class DeletePaymentsFailure implements StopSaving { DeletePaymentsFailure(this.payments); - final List payments; + final List payments; } class RestorePaymentsRequest implements StartSaving { @@ -233,7 +233,7 @@ class RestorePaymentsSuccess implements StopSaving { class RestorePaymentsFailure implements StopSaving { RestorePaymentsFailure(this.payments); - final List payments; + final List payments; } class EmailPaymentRequest implements StartSaving { @@ -302,15 +302,15 @@ class FilterPaymentsByCustom4 implements PersistUI { class StartPaymentMultiselect {} class AddToPaymentMultiselect { - AddToPaymentMultiselect({@required this.entity}); + AddToPaymentMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class RemoveFromPaymentMultiselect { - RemoveFromPaymentMultiselect({@required this.entity}); + RemoveFromPaymentMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class ClearPaymentMultiselect {} @@ -318,75 +318,75 @@ class ClearPaymentMultiselect {} class UpdatePaymentTab implements PersistUI { UpdatePaymentTab({this.tabIndex}); - final int tabIndex; + final int? tabIndex; } void handlePaymentAction( - BuildContext context, List payments, EntityAction action) { + BuildContext? context, List payments, EntityAction? action) { if (payments.isEmpty) { return; } - final store = StoreProvider.of(context); + final store = StoreProvider.of(context!); final company = store.state.company; final localization = AppLocalization.of(context); - final paymentIds = payments.map((payment) => payment.id).toList(); - var payment = payments.first as PaymentEntity; + final paymentIds = payments.map((payment) => payment!.id).toList(); + var payment = payments.first as PaymentEntity?; switch (action) { case EntityAction.edit: - editEntity(entity: payment); + editEntity(entity: payment!); break; case EntityAction.applyPayment: - viewEntity(entity: payment); + viewEntity(entity: payment!); WidgetsBinding.instance.addPostFrameCallback((duration) { - editEntity(entity: payment.rebuild((b) => b..isApplying = true)); + editEntity(entity: payment!.rebuild((b) => b..isApplying = true)); }); break; case EntityAction.refundPayment: - viewEntity(entity: payment); + viewEntity(entity: payment!); WidgetsBinding.instance.addPostFrameCallback((duration) { - if (payment.invoicePaymentables.length == 1) { - payment = payment.rebuild((b) => b + if (payment!.invoicePaymentables.length == 1) { + payment = payment!.rebuild((b) => b ..invoices.add(PaymentableEntity( - invoiceId: payment.invoiceId, - amount: payment.completedAmount))); + invoiceId: payment!.invoiceId, + amount: payment!.completedAmount))); } store.dispatch(ViewRefundPayment( - payment: payment.rebuild((b) => - b..sendEmail = company.settings.clientManualPaymentNotification), + payment: payment!.rebuild((b) => + b..sendEmail = company!.settings.clientManualPaymentNotification), )); }); break; case EntityAction.sendEmail: store.dispatch(EmailPaymentRequest( - snackBarCompleter(context, localization.emailedPayment), + snackBarCompleter(context, localization!.emailedPayment), paymentIds)); break; case EntityAction.restore: final message = paymentIds.length > 1 - ? localization.restoredPayments + ? localization!.restoredPayments .replaceFirst(':value', ':count') .replaceFirst(':count', paymentIds.length.toString()) - : localization.restoredPayment; + : localization!.restoredPayment; store.dispatch(RestorePaymentsRequest( snackBarCompleter(context, message), paymentIds)); break; case EntityAction.archive: final message = paymentIds.length > 1 - ? localization.archivedPayments + ? localization!.archivedPayments .replaceFirst(':value', ':count') .replaceFirst(':count', paymentIds.length.toString()) - : localization.archivedPayment; + : localization!.archivedPayment; store.dispatch(ArchivePaymentsRequest( snackBarCompleter(context, message), paymentIds)); break; case EntityAction.delete: final message = paymentIds.length > 1 - ? localization.deletedPayments + ? localization!.deletedPayments .replaceFirst(':value', ':count') .replaceFirst(':count', paymentIds.length.toString()) - : localization.deletedPayment; + : localization!.deletedPayment; store.dispatch(DeletePaymentsRequest( snackBarCompleter(context, message), paymentIds)); break; @@ -400,7 +400,7 @@ void handlePaymentAction( } for (final payment in payments) { - if (!store.state.paymentListState.isSelected(payment.id)) { + if (!store.state.paymentListState.isSelected(payment!.id)) { store.dispatch(AddToPaymentMultiselect(entity: payment)); } else { store.dispatch(RemoveFromPaymentMultiselect(entity: payment)); diff --git a/lib/redux/payment/payment_middleware.dart b/lib/redux/payment/payment_middleware.dart index 6df7bbe31..a77f425f9 100644 --- a/lib/redux/payment/payment_middleware.dart +++ b/lib/redux/payment/payment_middleware.dart @@ -53,19 +53,19 @@ List> createStorePaymentsMiddleware([ Middleware _editPayment() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as EditPayment; + final action = dynamicAction as EditPayment?; next(action); - if (store.state.prefState.isMobile || action.payment.isApplying != true) { + if (store.state.prefState.isMobile || action!.payment.isApplying != true) { store.dispatch(UpdateCurrentRoute(PaymentEditScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(PaymentEditScreen.route); + navigatorKey.currentState!.pushNamed(PaymentEditScreen.route); } } else { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, barrierDismissible: false, builder: (BuildContext context) { return PaymentEditScreen(); @@ -76,16 +76,16 @@ Middleware _editPayment() { Middleware _viewRefundPayment() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as ViewRefundPayment; + final action = dynamicAction as ViewRefundPayment?; next(action); if (store.state.prefState.isMobile) { store.dispatch(UpdateCurrentRoute(PaymentRefundScreen.route)); - navigatorKey.currentState.pushNamed(PaymentRefundScreen.route); + navigatorKey.currentState!.pushNamed(PaymentRefundScreen.route); } else { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, barrierDismissible: false, builder: (BuildContext context) { return PaymentRefundScreen(); @@ -101,14 +101,14 @@ Middleware _viewPayment() { store.dispatch(UpdateCurrentRoute(PaymentViewScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(PaymentViewScreen.route); + navigatorKey.currentState!.pushNamed(PaymentViewScreen.route); } }; } Middleware _viewPaymentList() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as ViewPaymentList; + final action = dynamicAction as ViewPaymentList?; next(action); @@ -119,7 +119,7 @@ Middleware _viewPaymentList() { store.dispatch(UpdateCurrentRoute(PaymentScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamedAndRemoveUntil( + navigatorKey.currentState!.pushNamedAndRemoveUntil( PaymentScreen.route, (Route route) => false); } }; @@ -209,7 +209,7 @@ Middleware _savePayment(PaymentRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as SavePaymentRequest; final PaymentEntity payment = action.payment; - final bool sendEmail = payment.isNew ? payment.sendEmail : false; + final bool? sendEmail = payment.isNew ? payment.sendEmail : false; repository .saveData(store.state.credentials, action.payment, sendEmail: sendEmail) .then((PaymentEntity payment) { @@ -281,13 +281,13 @@ Middleware _loadPayment(PaymentRepository repository) { store.dispatch(LoadPaymentSuccess(payment)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(LoadPaymentFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -317,7 +317,7 @@ Middleware _loadPayments(PaymentRepository repository) { )); } else { if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } store.dispatch(LoadQuotes()); } @@ -325,7 +325,7 @@ Middleware _loadPayments(PaymentRepository repository) { print(error); store.dispatch(LoadPaymentsFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); diff --git a/lib/redux/payment/payment_reducer.dart b/lib/redux/payment/payment_reducer.dart index d7df28d99..0ec6eb37d 100644 --- a/lib/redux/payment/payment_reducer.dart +++ b/lib/redux/payment/payment_reducer.dart @@ -15,55 +15,55 @@ import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; EntityUIState paymentUIReducer(PaymentUIState state, dynamic action) { return state.rebuild((b) => b ..listUIState.replace(paymentListReducer(state.listUIState, action)) - ..editing.replace(editingReducer(state.editing, action)) + ..editing.replace(editingReducer(state.editing, action)!) ..selectedId = selectedIdReducer(state.selectedId, action) ..forceSelected = forceSelectedReducer(state.forceSelected, action) ..tabIndex = tabIndexReducer(state.tabIndex, action)); } -final forceSelectedReducer = combineReducers([ - TypedReducer((completer, action) => true), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), +final forceSelectedReducer = combineReducers([ + TypedReducer((completer, action) => true), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), ]); -final tabIndexReducer = combineReducers([ - TypedReducer((completer, action) { +final int? Function(int, dynamic) tabIndexReducer = combineReducers([ + TypedReducer((completer, action) { return action.tabIndex; }), - TypedReducer((completer, action) { + TypedReducer((completer, action) { return 0; }), ]); -Reducer selectedIdReducer = combineReducers([ - TypedReducer((completer, action) => ''), - TypedReducer((completer, action) => ''), - TypedReducer((selectedId, action) => +Reducer selectedIdReducer = combineReducers([ + TypedReducer((completer, action) => ''), + TypedReducer((completer, action) => ''), + TypedReducer((selectedId, action) => action.entityType == EntityType.payment ? action.entityId : selectedId), - TypedReducer((selectedId, action) => action.paymentId), - TypedReducer( + TypedReducer((selectedId, action) => action.paymentId), + TypedReducer( (selectedId, action) => action.payment.id), - TypedReducer( + TypedReducer( (selectedId, action) => action.clearSelection ? '' : selectedId), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => action.entityType == EntityType.payment ? '' : selectedId), - TypedReducer( + TypedReducer( (selectedId, action) => action.clearSelection ? '' : action.entityType == EntityType.payment @@ -71,31 +71,31 @@ Reducer selectedIdReducer = combineReducers([ : selectedId), ]); -final editingReducer = combineReducers([ - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer((payments, action) { +final editingReducer = combineReducers([ + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer((payments, action) { return action.payments[0]; }), - TypedReducer((payments, action) { + TypedReducer((payments, action) { return action.payments[0]; }), - TypedReducer((payments, action) { + TypedReducer((payments, action) { return action.payments[0]; }), - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer((payment, action) { + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer((payment, action) { return action.payment.rebuild((b) => b..isChanged = true); }), - TypedReducer(_clearEditing), + TypedReducer(_clearEditing), ]); -PaymentEntity _clearEditing(PaymentEntity payment, dynamic action) { +PaymentEntity _clearEditing(PaymentEntity? payment, dynamic action) { return PaymentEntity(); } -PaymentEntity _updateEditing(PaymentEntity payment, dynamic action) { +PaymentEntity? _updateEditing(PaymentEntity? payment, dynamic action) { return action.payment; } @@ -199,7 +199,7 @@ ListUIState _filterPayments( ListUIState _sortPayments(ListUIState paymentListState, SortPayments action) { return paymentListState.rebuild((b) => b - ..sortAscending = b.sortField != action.field || !b.sortAscending + ..sortAscending = b.sortField != action.field || !b.sortAscending! ..sortField = action.field); } @@ -210,13 +210,13 @@ ListUIState _startListMultiselect( ListUIState _addToListMultiselect( ListUIState paymentListState, AddToPaymentMultiselect action) { - return paymentListState.rebuild((b) => b..selectedIds.add(action.entity.id)); + return paymentListState.rebuild((b) => b..selectedIds.add(action.entity!.id)); } ListUIState _removeFromListMultiselect( ListUIState paymentListState, RemoveFromPaymentMultiselect action) { return paymentListState - .rebuild((b) => b..selectedIds.remove(action.entity.id)); + .rebuild((b) => b..selectedIds.remove(action.entity!.id)); } ListUIState _clearListMultiselect( @@ -239,8 +239,8 @@ final paymentsReducer = combineReducers([ PaymentState _purgeClientSuccess( PaymentState paymentState, PurgeClientSuccess action) { final ids = paymentState.map.values - .where((each) => each.clientId == action.clientId) - .map((each) => each.id) + .where((each) => each!.clientId == action.clientId) + .map((each) => each!.id) .toList(); return paymentState.rebuild((b) => b @@ -299,6 +299,6 @@ PaymentState _setLoadedPayments( PaymentState _setLoadedCompany( PaymentState paymentState, LoadCompanySuccess action) { - final company = action.userCompany.company; + final company = action.userCompany.company!; return paymentState.loadPayments(company.payments); } diff --git a/lib/redux/payment/payment_selectors.dart b/lib/redux/payment/payment_selectors.dart index dcfd59f93..65eb1b10d 100644 --- a/lib/redux/payment/payment_selectors.dart +++ b/lib/redux/payment/payment_selectors.dart @@ -8,28 +8,28 @@ import 'package:invoiceninja_flutter/redux/app/app_state.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; var memoizedPaymentsByInvoice = memo3((String invoiceId, - BuiltMap paymentMap, + BuiltMap paymentMap, BuiltList paymentList) => paymentsByInvoiceSelector(invoiceId, paymentMap, paymentList)); -List paymentsByInvoiceSelector(String invoiceId, - BuiltMap paymentMap, BuiltList paymentList) { +List paymentsByInvoiceSelector(String invoiceId, + BuiltMap paymentMap, BuiltList paymentList) { return paymentList.map((paymentId) => paymentMap[paymentId]).where((payment) { - return payment.paymentables.map((p) => p.invoiceId).contains(invoiceId) && - !payment.isDeleted; + return payment!.paymentables.map((p) => p.invoiceId).contains(invoiceId) && + !payment.isDeleted!; }).toList(); } var memoizedPaymentsByCredit = memo3((String invoiceId, - BuiltMap paymentMap, + BuiltMap paymentMap, BuiltList paymentList) => paymentsByCreditSelector(invoiceId, paymentMap, paymentList)); -List paymentsByCreditSelector(String creditId, - BuiltMap paymentMap, BuiltList paymentList) { +List paymentsByCreditSelector(String creditId, + BuiltMap paymentMap, BuiltList paymentList) { return paymentList.map((paymentId) => paymentMap[paymentId]).where((payment) { - return payment.paymentables.map((p) => p.creditId).contains(creditId) && - !payment.isDeleted; + return payment!.paymentables.map((p) => p.creditId).contains(creditId) && + !payment.isDeleted!; }).toList(); } @@ -53,10 +53,10 @@ List dropdownPaymentsSelector( BuiltMap paymentTypeMap, ) { final list = - paymentList.where((paymentId) => paymentMap[paymentId].isActive).toList(); + paymentList.where((paymentId) => paymentMap[paymentId]!.isActive).toList(); list.sort((paymentAId, paymentBId) { - final paymentA = paymentMap[paymentAId]; + final paymentA = paymentMap[paymentAId]!; final paymentB = paymentMap[paymentBId]; return paymentA.compareTo( @@ -74,12 +74,12 @@ List dropdownPaymentsSelector( } var memoizedFilteredPaymentList = memo8((SelectionState selectionState, - BuiltMap paymentMap, + BuiltMap paymentMap, BuiltList paymentList, - BuiltMap invoiceMap, - BuiltMap clientMap, - BuiltMap userMap, - BuiltMap paymentTypeMap, + BuiltMap invoiceMap, + BuiltMap clientMap, + BuiltMap userMap, + BuiltMap paymentTypeMap, ListUIState paymentListState) => filteredPaymentsSelector( selectionState, @@ -94,18 +94,18 @@ var memoizedFilteredPaymentList = memo8((SelectionState selectionState, List filteredPaymentsSelector( SelectionState selectionState, - BuiltMap paymentMap, + BuiltMap paymentMap, BuiltList paymentList, - BuiltMap invoiceMap, - BuiltMap clientMap, - BuiltMap userMap, - BuiltMap paymentTypeMap, + BuiltMap invoiceMap, + BuiltMap clientMap, + BuiltMap userMap, + BuiltMap paymentTypeMap, ListUIState paymentListState) { final filterEntityId = selectionState.filterEntityId; final filterEntityType = selectionState.filterEntityType; final list = paymentList.where((paymentId) { - final payment = paymentMap[paymentId]; + final payment = paymentMap[paymentId]!; if (!payment.matchesStates(paymentListState.stateFilters)) { return false; } @@ -152,7 +152,7 @@ List filteredPaymentsSelector( }).toList(); list.sort((paymentAId, paymentBId) { - final paymentA = paymentMap[paymentAId]; + final paymentA = paymentMap[paymentAId]!; final paymentB = paymentMap[paymentBId]; return paymentA.compareTo( payment: paymentB, @@ -169,18 +169,18 @@ List filteredPaymentsSelector( } var memoizedPaymentStatsForClient = memo3((String clientId, - BuiltMap paymentMap, - BuiltMap invoiceMap) => + BuiltMap paymentMap, + BuiltMap invoiceMap) => paymentStatsForClient(clientId, paymentMap, invoiceMap)); EntityStats paymentStatsForClient( String clientId, - BuiltMap paymentMap, - BuiltMap invoiceMap) { + BuiltMap paymentMap, + BuiltMap invoiceMap) { int countActive = 0; int countArchived = 0; paymentMap.forEach((paymentId, payment) { - if (payment.clientId == clientId) { + if (payment!.clientId == clientId) { if (payment.isActive) { countActive++; } else if (payment.isArchived) { diff --git a/lib/redux/payment/payment_state.dart b/lib/redux/payment/payment_state.dart index 2e12e3fa1..83484c1b6 100644 --- a/lib/redux/payment/payment_state.dart +++ b/lib/redux/payment/payment_state.dart @@ -30,11 +30,11 @@ abstract class PaymentState @memoized int get hashCode; - BuiltMap get map; + BuiltMap get map; BuiltList get list; - PaymentEntity get(String paymentId) { + PaymentEntity? get(String paymentId) { if (map.containsKey(paymentId)) { return map[paymentId]; } else { @@ -43,7 +43,7 @@ abstract class PaymentState } PaymentState loadPayments(BuiltList clients) { - final map = Map.fromIterable( + final map = Map.fromIterable( clients, key: (dynamic item) => item.id, value: (dynamic item) => item, @@ -60,7 +60,7 @@ abstract class PaymentState abstract class PaymentUIState extends Object with EntityUIState implements Built { - factory PaymentUIState(PrefStateSortField sortField) { + factory PaymentUIState(PrefStateSortField? sortField) { return _$PaymentUIState._( listUIState: ListUIState(sortField?.field ?? PaymentFields.number, sortAscending: sortField?.ascending ?? false), @@ -76,14 +76,13 @@ abstract class PaymentUIState extends Object @memoized int get hashCode; - @nullable - PaymentEntity get editing; + PaymentEntity? get editing; @override - bool get isCreatingNew => editing.isNew; + bool get isCreatingNew => editing!.isNew; @override - String get editingId => editing.id; + String get editingId => editing!.id; static Serializer get serializer => _$paymentUIStateSerializer; diff --git a/lib/redux/payment/payment_state.g.dart b/lib/redux/payment/payment_state.g.dart index 8e099bfdc..9d24628ec 100644 --- a/lib/redux/payment/payment_state.g.dart +++ b/lib/redux/payment/payment_state.g.dart @@ -18,13 +18,15 @@ class _$PaymentStateSerializer implements StructuredSerializer { final String wireName = 'PaymentState'; @override - Iterable serialize(Serializers serializers, PaymentState object, + Iterable serialize(Serializers serializers, PaymentState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'map', serializers.serialize(object.map, - specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(PaymentEntity)])), + specifiedType: const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(PaymentEntity) + ])), 'list', serializers.serialize(object.list, specifiedType: @@ -35,28 +37,29 @@ class _$PaymentStateSerializer implements StructuredSerializer { } @override - PaymentState deserialize(Serializers serializers, Iterable serialized, + PaymentState deserialize( + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new PaymentStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'map': result.map.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(PaymentEntity) - ]))); + const FullType.nullable(String), + const FullType.nullable(PaymentEntity) + ]))!); break; case 'list': result.list.replace(serializers.deserialize(value, - specifiedType: - const FullType(BuiltList, const [const FullType(String)])) - as BuiltList); + specifiedType: const FullType( + BuiltList, const [const FullType(String)]))! + as BuiltList); break; } } @@ -73,9 +76,9 @@ class _$PaymentUIStateSerializer final String wireName = 'PaymentUIState'; @override - Iterable serialize(Serializers serializers, PaymentUIState object, + Iterable serialize(Serializers serializers, PaymentUIState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'listUIState', serializers.serialize(object.listUIState, specifiedType: const FullType(ListUIState)), @@ -83,7 +86,7 @@ class _$PaymentUIStateSerializer serializers.serialize(object.tabIndex, specifiedType: const FullType(int)), ]; - Object value; + Object? value; value = object.editing; if (value != null) { result @@ -110,35 +113,35 @@ class _$PaymentUIStateSerializer @override PaymentUIState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new PaymentUIStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'editing': result.editing.replace(serializers.deserialize(value, - specifiedType: const FullType(PaymentEntity)) as PaymentEntity); + specifiedType: const FullType(PaymentEntity))! as PaymentEntity); break; case 'listUIState': result.listUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(ListUIState)) as ListUIState); + specifiedType: const FullType(ListUIState))! as ListUIState); break; case 'selectedId': result.selectedId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'forceSelected': result.forceSelected = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'tabIndex': result.tabIndex = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; } } @@ -149,14 +152,14 @@ class _$PaymentUIStateSerializer class _$PaymentState extends PaymentState { @override - final BuiltMap map; + final BuiltMap map; @override final BuiltList list; - factory _$PaymentState([void Function(PaymentStateBuilder) updates]) => + factory _$PaymentState([void Function(PaymentStateBuilder)? updates]) => (new PaymentStateBuilder()..update(updates))._build(); - _$PaymentState._({this.map, this.list}) : super._() { + _$PaymentState._({required this.map, required this.list}) : super._() { BuiltValueNullFieldError.checkNotNull(map, r'PaymentState', 'map'); BuiltValueNullFieldError.checkNotNull(list, r'PaymentState', 'list'); } @@ -174,10 +177,10 @@ class _$PaymentState extends PaymentState { return other is PaymentState && map == other.map && list == other.list; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, map.hashCode); _$hash = $jc(_$hash, list.hashCode); @@ -196,16 +199,16 @@ class _$PaymentState extends PaymentState { class PaymentStateBuilder implements Builder { - _$PaymentState _$v; + _$PaymentState? _$v; - MapBuilder _map; - MapBuilder get map => - _$this._map ??= new MapBuilder(); - set map(MapBuilder map) => _$this._map = map; + MapBuilder? _map; + MapBuilder get map => + _$this._map ??= new MapBuilder(); + set map(MapBuilder? map) => _$this._map = map; - ListBuilder _list; + ListBuilder? _list; ListBuilder get list => _$this._list ??= new ListBuilder(); - set list(ListBuilder list) => _$this._list = list; + set list(ListBuilder? list) => _$this._list = list; PaymentStateBuilder(); @@ -226,7 +229,7 @@ class PaymentStateBuilder } @override - void update(void Function(PaymentStateBuilder) updates) { + void update(void Function(PaymentStateBuilder)? updates) { if (updates != null) updates(this); } @@ -239,7 +242,7 @@ class PaymentStateBuilder _$result = _$v ?? new _$PaymentState._(map: map.build(), list: list.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'map'; map.build(); @@ -258,29 +261,29 @@ class PaymentStateBuilder class _$PaymentUIState extends PaymentUIState { @override - final PaymentEntity editing; + final PaymentEntity? editing; @override final ListUIState listUIState; @override - final String selectedId; + final String? selectedId; @override - final bool forceSelected; + final bool? forceSelected; @override final int tabIndex; @override - final Completer saveCompleter; + final Completer? saveCompleter; @override - final Completer cancelCompleter; + final Completer? cancelCompleter; - factory _$PaymentUIState([void Function(PaymentUIStateBuilder) updates]) => + factory _$PaymentUIState([void Function(PaymentUIStateBuilder)? updates]) => (new PaymentUIStateBuilder()..update(updates))._build(); _$PaymentUIState._( {this.editing, - this.listUIState, + required this.listUIState, this.selectedId, this.forceSelected, - this.tabIndex, + required this.tabIndex, this.saveCompleter, this.cancelCompleter}) : super._() { @@ -311,10 +314,10 @@ class _$PaymentUIState extends PaymentUIState { cancelCompleter == other.cancelCompleter; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, editing.hashCode); _$hash = $jc(_$hash, listUIState.hashCode); @@ -343,40 +346,40 @@ class _$PaymentUIState extends PaymentUIState { class PaymentUIStateBuilder implements Builder { - _$PaymentUIState _$v; + _$PaymentUIState? _$v; - PaymentEntityBuilder _editing; + PaymentEntityBuilder? _editing; PaymentEntityBuilder get editing => _$this._editing ??= new PaymentEntityBuilder(); - set editing(PaymentEntityBuilder editing) => _$this._editing = editing; + set editing(PaymentEntityBuilder? editing) => _$this._editing = editing; - ListUIStateBuilder _listUIState; + ListUIStateBuilder? _listUIState; ListUIStateBuilder get listUIState => _$this._listUIState ??= new ListUIStateBuilder(); - set listUIState(ListUIStateBuilder listUIState) => + set listUIState(ListUIStateBuilder? listUIState) => _$this._listUIState = listUIState; - String _selectedId; - String get selectedId => _$this._selectedId; - set selectedId(String selectedId) => _$this._selectedId = selectedId; + String? _selectedId; + String? get selectedId => _$this._selectedId; + set selectedId(String? selectedId) => _$this._selectedId = selectedId; - bool _forceSelected; - bool get forceSelected => _$this._forceSelected; - set forceSelected(bool forceSelected) => + bool? _forceSelected; + bool? get forceSelected => _$this._forceSelected; + set forceSelected(bool? forceSelected) => _$this._forceSelected = forceSelected; - int _tabIndex; - int get tabIndex => _$this._tabIndex; - set tabIndex(int tabIndex) => _$this._tabIndex = tabIndex; + int? _tabIndex; + int? get tabIndex => _$this._tabIndex; + set tabIndex(int? tabIndex) => _$this._tabIndex = tabIndex; - Completer _saveCompleter; - Completer get saveCompleter => _$this._saveCompleter; - set saveCompleter(Completer saveCompleter) => + Completer? _saveCompleter; + Completer? get saveCompleter => _$this._saveCompleter; + set saveCompleter(Completer? saveCompleter) => _$this._saveCompleter = saveCompleter; - Completer _cancelCompleter; - Completer get cancelCompleter => _$this._cancelCompleter; - set cancelCompleter(Completer cancelCompleter) => + Completer? _cancelCompleter; + Completer? get cancelCompleter => _$this._cancelCompleter; + set cancelCompleter(Completer? cancelCompleter) => _$this._cancelCompleter = cancelCompleter; PaymentUIStateBuilder(); @@ -403,7 +406,7 @@ class PaymentUIStateBuilder } @override - void update(void Function(PaymentUIStateBuilder) updates) { + void update(void Function(PaymentUIStateBuilder)? updates) { if (updates != null) updates(this); } @@ -424,7 +427,7 @@ class PaymentUIStateBuilder saveCompleter: saveCompleter, cancelCompleter: cancelCompleter); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'editing'; _editing?.build(); diff --git a/lib/redux/payment_term/payment_term_actions.dart b/lib/redux/payment_term/payment_term_actions.dart index ad19aea67..5eb4ed9b3 100644 --- a/lib/redux/payment_term/payment_term_actions.dart +++ b/lib/redux/payment_term/payment_term_actions.dart @@ -27,24 +27,24 @@ class ViewPaymentTermList implements PersistUI { class ViewPaymentTerm implements PersistUI, PersistPrefs { ViewPaymentTerm({ - @required this.paymentTermId, + required this.paymentTermId, this.force = false, }); - final String paymentTermId; + final String? paymentTermId; final bool force; } class EditPaymentTerm implements PersistUI, PersistPrefs { EditPaymentTerm( - {@required this.paymentTerm, + {required this.paymentTerm, this.completer, this.cancelCompleter, this.force = false}); final PaymentTermEntity paymentTerm; - final Completer completer; - final Completer cancelCompleter; + final Completer? completer; + final Completer? cancelCompleter; final bool force; } @@ -57,21 +57,21 @@ class UpdatePaymentTerm implements PersistUI { class LoadPaymentTerm { LoadPaymentTerm({this.completer, this.paymentTermId}); - final Completer completer; - final String paymentTermId; + final Completer? completer; + final String? paymentTermId; } class LoadPaymentTermActivity { LoadPaymentTermActivity({this.completer, this.paymentTermId}); - final Completer completer; - final String paymentTermId; + final Completer? completer; + final String? paymentTermId; } class LoadPaymentTerms { LoadPaymentTerms({this.completer}); - final Completer completer; + final Completer? completer; } class LoadPaymentTermRequest implements StartLoading {} @@ -125,8 +125,8 @@ class LoadPaymentTermsSuccess implements StopLoading { class SavePaymentTermRequest implements StartSaving { SavePaymentTermRequest({this.completer, this.paymentTerm}); - final Completer completer; - final PaymentTermEntity paymentTerm; + final Completer? completer; + final PaymentTermEntity? paymentTerm; } class SavePaymentTermSuccess implements StopSaving, PersistData, PersistUI { @@ -163,7 +163,7 @@ class ArchivePaymentTermsSuccess implements StopSaving, PersistData { class ArchivePaymentTermsFailure implements StopSaving { ArchivePaymentTermsFailure(this.paymentTerms); - final List paymentTerms; + final List paymentTerms; } class DeletePaymentTermsRequest implements StartSaving { @@ -182,7 +182,7 @@ class DeletePaymentTermsSuccess implements StopSaving, PersistData { class DeletePaymentTermsFailure implements StopSaving { DeletePaymentTermsFailure(this.paymentTerms); - final List paymentTerms; + final List paymentTerms; } class RestorePaymentTermsRequest implements StartSaving { @@ -201,7 +201,7 @@ class RestorePaymentTermsSuccess implements StopSaving, PersistData { class RestorePaymentTermsFailure implements StopSaving { RestorePaymentTermsFailure(this.paymentTerms); - final List paymentTerms; + final List paymentTerms; } class FilterPaymentTerms implements PersistUI { @@ -247,47 +247,47 @@ class FilterPaymentTermsByCustom4 implements PersistUI { } void handlePaymentTermAction( - BuildContext context, List paymentTerms, EntityAction action) { + BuildContext? context, List paymentTerms, EntityAction? action) { if (paymentTerms.isEmpty) { return; } - final store = StoreProvider.of(context); + final store = StoreProvider.of(context!); //final state = store.state; //final CompanyEntity company = state.company; final localization = AppLocalization.of(context); - final paymentTerm = paymentTerms.first as PaymentTermEntity; + final paymentTerm = paymentTerms.first as PaymentTermEntity?; final paymentTermIds = - paymentTerms.map((paymentTerm) => paymentTerm.id).toList(); + paymentTerms.map((paymentTerm) => paymentTerm!.id).toList(); switch (action) { case EntityAction.edit: - editEntity(entity: paymentTerm); + editEntity(entity: paymentTerm!); break; case EntityAction.restore: final message = paymentTermIds.length > 1 - ? localization.restoredPaymentTerms + ? localization!.restoredPaymentTerms .replaceFirst(':value', ':count') .replaceFirst(':count', paymentTermIds.length.toString()) - : localization.restoredPaymentTerm; + : localization!.restoredPaymentTerm; store.dispatch(RestorePaymentTermsRequest( snackBarCompleter(context, message), paymentTermIds)); break; case EntityAction.archive: final message = paymentTermIds.length > 1 - ? localization.archivedPaymentTerms + ? localization!.archivedPaymentTerms .replaceFirst(':value', ':count') .replaceFirst(':count', paymentTermIds.length.toString()) - : localization.archivedPaymentTerm; + : localization!.archivedPaymentTerm; store.dispatch(ArchivePaymentTermsRequest( snackBarCompleter(context, message), paymentTermIds)); break; case EntityAction.delete: final message = paymentTermIds.length > 1 - ? localization.deletedPaymentTerms + ? localization!.deletedPaymentTerms .replaceFirst(':value', ':count') .replaceFirst(':count', paymentTermIds.length.toString()) - : localization.deletedPaymentTerm; + : localization!.deletedPaymentTerm; store.dispatch(DeletePaymentTermsRequest( snackBarCompleter(context, message), paymentTermIds)); break; @@ -301,7 +301,7 @@ void handlePaymentTermAction( } for (final paymentTerm in paymentTerms) { - if (!store.state.paymentTermListState.isSelected(paymentTerm.id)) { + if (!store.state.paymentTermListState.isSelected(paymentTerm!.id)) { store.dispatch(AddToPaymentTermMultiselect(entity: paymentTerm)); } else { store.dispatch(RemoveFromPaymentTermMultiselect(entity: paymentTerm)); @@ -321,15 +321,15 @@ class StartPaymentTermMultiselect { } class AddToPaymentTermMultiselect { - AddToPaymentTermMultiselect({@required this.entity}); + AddToPaymentTermMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class RemoveFromPaymentTermMultiselect { - RemoveFromPaymentTermMultiselect({@required this.entity}); + RemoveFromPaymentTermMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class ClearPaymentTermMultiselect { diff --git a/lib/redux/payment_term/payment_term_middleware.dart b/lib/redux/payment_term/payment_term_middleware.dart index c656be828..a09de7b64 100644 --- a/lib/redux/payment_term/payment_term_middleware.dart +++ b/lib/redux/payment_term/payment_term_middleware.dart @@ -46,14 +46,14 @@ List> createStorePaymentTermsMiddleware([ Middleware _editPaymentTerm() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as EditPaymentTerm; + final action = dynamicAction as EditPaymentTerm?; next(action); store.dispatch(UpdateCurrentRoute(PaymentTermEditScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(PaymentTermEditScreen.route); + navigatorKey.currentState!.pushNamed(PaymentTermEditScreen.route); } }; } @@ -61,21 +61,21 @@ Middleware _editPaymentTerm() { Middleware _viewPaymentTerm() { return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as ViewPaymentTerm; + final action = dynamicAction as ViewPaymentTerm?; next(action); store.dispatch(UpdateCurrentRoute(PaymentTermViewScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(PaymentTermViewScreen.route); + navigatorKey.currentState!.pushNamed(PaymentTermViewScreen.route); } }; } Middleware _viewPaymentTermList() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as ViewPaymentTermList; + final action = dynamicAction as ViewPaymentTermList?; next(action); @@ -86,7 +86,7 @@ Middleware _viewPaymentTermList() { store.dispatch(UpdateCurrentRoute(PaymentTermScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamedAndRemoveUntil( + navigatorKey.currentState!.pushNamedAndRemoveUntil( PaymentTermScreen.route, (Route route) => false); } }; @@ -174,19 +174,19 @@ Middleware _savePaymentTerm(PaymentTermRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as SavePaymentTermRequest; repository - .saveData(store.state.credentials, action.paymentTerm) + .saveData(store.state.credentials, action.paymentTerm!) .then((PaymentTermEntity paymentTerm) { - if (action.paymentTerm.isNew) { + if (action.paymentTerm!.isNew) { store.dispatch(AddPaymentTermSuccess(paymentTerm)); } else { store.dispatch(SavePaymentTermSuccess(paymentTerm)); } - action.completer.complete(paymentTerm); + action.completer!.complete(paymentTerm); }).catchError((Object error) { print(error); store.dispatch(SavePaymentTermFailure(error)); - action.completer.completeError(error); + action.completer!.completeError(error); }); next(action); @@ -205,13 +205,13 @@ Middleware _loadPaymentTerm(PaymentTermRepository repository) { store.dispatch(LoadPaymentTermSuccess(paymentTerm)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(LoadPaymentTermFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -221,15 +221,15 @@ Middleware _loadPaymentTerm(PaymentTermRepository repository) { Middleware _loadPaymentTerms(PaymentTermRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as LoadPaymentTerms; + final action = dynamicAction as LoadPaymentTerms?; final AppState state = store.state; store.dispatch(LoadPaymentTermsRequest()); repository.loadList(state.credentials).then((data) { store.dispatch(LoadPaymentTermsSuccess(data)); - if (action.completer != null) { - action.completer.complete(null); + if (action!.completer != null) { + action.completer!.complete(null); } /* if (state.productState.isStale) { @@ -239,8 +239,8 @@ Middleware _loadPaymentTerms(PaymentTermRepository repository) { }).catchError((Object error) { print(error); store.dispatch(LoadPaymentTermsFailure(error)); - if (action.completer != null) { - action.completer.completeError(error); + if (action!.completer != null) { + action.completer!.completeError(error); } }); diff --git a/lib/redux/payment_term/payment_term_reducer.dart b/lib/redux/payment_term/payment_term_reducer.dart index a1133c75d..6427c9839 100644 --- a/lib/redux/payment_term/payment_term_reducer.dart +++ b/lib/redux/payment_term/payment_term_reducer.dart @@ -15,73 +15,73 @@ import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; EntityUIState paymentTermUIReducer(PaymentTermUIState state, dynamic action) { return state.rebuild((b) => b ..listUIState.replace(paymentTermListReducer(state.listUIState, action)) - ..editing.replace(editingReducer(state.editing, action)) + ..editing.replace(editingReducer(state.editing, action)!) ..selectedId = selectedIdReducer(state.selectedId, action) ..forceSelected = forceSelectedReducer(state.forceSelected, action)); } -final forceSelectedReducer = combineReducers([ - TypedReducer((completer, action) => true), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), +final forceSelectedReducer = combineReducers([ + TypedReducer((completer, action) => true), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), ]); -Reducer selectedIdReducer = combineReducers([ - TypedReducer((completer, action) => ''), - TypedReducer((completer, action) => ''), - TypedReducer((selectedId, action) => +Reducer selectedIdReducer = combineReducers([ + TypedReducer((completer, action) => ''), + TypedReducer((completer, action) => ''), + TypedReducer((selectedId, action) => action.entityType == EntityType.paymentTerm ? action.entityId : selectedId), - TypedReducer( - (String selectedId, dynamic action) => action.paymentTermId), - TypedReducer( - (String selectedId, dynamic action) => action.paymentTerm.id), - TypedReducer( + TypedReducer( + (String? selectedId, dynamic action) => action.paymentTermId), + TypedReducer( + (String? selectedId, dynamic action) => action.paymentTerm.id), + TypedReducer( (selectedId, action) => action.clearSelection ? '' : selectedId), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), ]); -final editingReducer = combineReducers([ - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer( +final editingReducer = combineReducers([ + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer( (paymentTerms, action) { return action.paymentTerms[0]; }), - TypedReducer( + TypedReducer( (paymentTerms, action) { return action.paymentTerms[0]; }), - TypedReducer( + TypedReducer( (paymentTerms, action) { return action.paymentTerms[0]; }), - TypedReducer(_updateEditing), - TypedReducer((paymentTerm, action) { + TypedReducer(_updateEditing), + TypedReducer((paymentTerm, action) { return action.paymentTerm.rebuild((b) => b..isChanged = true); }), - TypedReducer(_clearEditing), + TypedReducer(_clearEditing), ]); -PaymentTermEntity _clearEditing(PaymentTermEntity paymentTerm, dynamic action) { +PaymentTermEntity _clearEditing(PaymentTermEntity? paymentTerm, dynamic action) { return PaymentTermEntity(); } -PaymentTermEntity _updateEditing( - PaymentTermEntity paymentTerm, dynamic action) { +PaymentTermEntity? _updateEditing( + PaymentTermEntity? paymentTerm, dynamic action) { return action.paymentTerm; } @@ -159,7 +159,7 @@ ListUIState _filterPaymentTerms( ListUIState _sortPaymentTerms( ListUIState paymentTermListState, SortPaymentTerms action) { return paymentTermListState.rebuild((b) => b - ..sortAscending = b.sortField != action.field || !b.sortAscending + ..sortAscending = b.sortField != action.field || !b.sortAscending! ..sortField = action.field); } @@ -170,13 +170,13 @@ ListUIState _startListMultiselect( ListUIState _addToListMultiselect( ListUIState productListState, AddToPaymentTermMultiselect action) { - return productListState.rebuild((b) => b..selectedIds.add(action.entity.id)); + return productListState.rebuild((b) => b..selectedIds.add(action.entity!.id)); } ListUIState _removeFromListMultiselect( ListUIState productListState, RemoveFromPaymentTermMultiselect action) { return productListState - .rebuild((b) => b..selectedIds.remove(action.entity.id)); + .rebuild((b) => b..selectedIds.remove(action.entity!.id)); } ListUIState _clearListMultiselect( @@ -253,7 +253,7 @@ PaymentTermState _setLoadedCompany( PaymentTermState paymentTermState, LoadCompanySuccess action) { final state = paymentTermState.rebuild((b) => b ..map.addAll(Map.fromIterable( - action.userCompany.company.paymentTerms, + action.userCompany.company!.paymentTerms, key: (dynamic item) => item.id, value: (dynamic item) => item, ))); diff --git a/lib/redux/payment_term/payment_term_selectors.dart b/lib/redux/payment_term/payment_term_selectors.dart index f46abfe72..250a25126 100644 --- a/lib/redux/payment_term/payment_term_selectors.dart +++ b/lib/redux/payment_term/payment_term_selectors.dart @@ -8,16 +8,16 @@ import 'package:invoiceninja_flutter/redux/app/app_state.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; var memoizedDropdownPaymentTermList = memo2( - (BuiltMap paymentTermMap, + (BuiltMap paymentTermMap, BuiltList paymentTermList) => dropdownPaymentTermsSelector(paymentTermMap, paymentTermList)); List dropdownPaymentTermsSelector( - BuiltMap paymentTermMap, + BuiltMap paymentTermMap, BuiltList paymentTermList) { final Map numDays = {}; final list = paymentTermList.where((paymentTermId) { - final paymentTerm = paymentTermMap[paymentTermId]; + final paymentTerm = paymentTermMap[paymentTermId]!; if (!paymentTerm.isActive) { return false; } @@ -29,8 +29,8 @@ List dropdownPaymentTermsSelector( }).toList(); list.sort((paymentTermAId, paymentTermBId) { - final paymentTermA = paymentTermMap[paymentTermAId]; - final paymentTermB = paymentTermMap[paymentTermBId]; + final paymentTermA = paymentTermMap[paymentTermAId]!; + final paymentTermB = paymentTermMap[paymentTermBId]!; return paymentTermA.compareTo(paymentTermB, PaymentTermFields.name, true); }); @@ -38,7 +38,7 @@ List dropdownPaymentTermsSelector( } var memoizedFilteredPaymentTermList = memo4((SelectionState selectionState, - BuiltMap paymentTermMap, + BuiltMap paymentTermMap, BuiltList paymentTermList, ListUIState paymentTermListState) => filteredPaymentTermsSelector( @@ -46,11 +46,11 @@ var memoizedFilteredPaymentTermList = memo4((SelectionState selectionState, List filteredPaymentTermsSelector( SelectionState selectionState, - BuiltMap paymentTermMap, + BuiltMap paymentTermMap, BuiltList paymentTermList, ListUIState paymentTermListState) { final list = paymentTermList.where((paymentTermId) { - final paymentTerm = paymentTermMap[paymentTermId]; + final paymentTerm = paymentTermMap[paymentTermId]!; if (paymentTerm.id == selectionState.selectedId) { return true; @@ -63,8 +63,8 @@ List filteredPaymentTermsSelector( }).toList(); list.sort((paymentTermAId, paymentTermBId) { - final paymentTermA = paymentTermMap[paymentTermAId]; - final paymentTermB = paymentTermMap[paymentTermBId]; + final paymentTermA = paymentTermMap[paymentTermAId]!; + final paymentTermB = paymentTermMap[paymentTermBId]!; return paymentTermA.compareTo(paymentTermB, paymentTermListState.sortField, paymentTermListState.sortAscending); }); diff --git a/lib/redux/payment_term/payment_term_state.dart b/lib/redux/payment_term/payment_term_state.dart index f2faec6ec..d4c9f89b0 100644 --- a/lib/redux/payment_term/payment_term_state.dart +++ b/lib/redux/payment_term/payment_term_state.dart @@ -30,12 +30,12 @@ abstract class PaymentTermState @memoized int get hashCode; - BuiltMap get map; + BuiltMap get map; BuiltList get list; PaymentTermState loadPaymentTerms(BuiltList clients) { - final map = Map.fromIterable( + final map = Map.fromIterable( clients, key: (dynamic item) => item.id, value: (dynamic item) => item, @@ -53,7 +53,7 @@ abstract class PaymentTermState abstract class PaymentTermUIState extends Object with EntityUIState implements Built { - factory PaymentTermUIState(PrefStateSortField sortField) { + factory PaymentTermUIState(PrefStateSortField? sortField) { return _$PaymentTermUIState._( listUIState: ListUIState(sortField?.field ?? PaymentTermFields.name, sortAscending: sortField?.ascending), @@ -69,14 +69,13 @@ abstract class PaymentTermUIState extends Object @memoized int get hashCode; - @nullable - PaymentTermEntity get editing; + PaymentTermEntity? get editing; @override - bool get isCreatingNew => editing.isNew; + bool get isCreatingNew => editing!.isNew; @override - String get editingId => editing.id; + String get editingId => editing!.id; static Serializer get serializer => _$paymentTermUIStateSerializer; diff --git a/lib/redux/payment_term/payment_term_state.g.dart b/lib/redux/payment_term/payment_term_state.g.dart index 1f629e6b7..40638e8b0 100644 --- a/lib/redux/payment_term/payment_term_state.g.dart +++ b/lib/redux/payment_term/payment_term_state.g.dart @@ -19,14 +19,14 @@ class _$PaymentTermStateSerializer final String wireName = 'PaymentTermState'; @override - Iterable serialize(Serializers serializers, PaymentTermState object, + Iterable serialize(Serializers serializers, PaymentTermState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'map', serializers.serialize(object.map, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(PaymentTermEntity) + const FullType.nullable(String), + const FullType.nullable(PaymentTermEntity) ])), 'list', serializers.serialize(object.list, @@ -39,28 +39,28 @@ class _$PaymentTermStateSerializer @override PaymentTermState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new PaymentTermStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'map': result.map.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(PaymentTermEntity) - ]))); + const FullType.nullable(String), + const FullType.nullable(PaymentTermEntity) + ]))!); break; case 'list': result.list.replace(serializers.deserialize(value, - specifiedType: - const FullType(BuiltList, const [const FullType(String)])) - as BuiltList); + specifiedType: const FullType( + BuiltList, const [const FullType(String)]))! + as BuiltList); break; } } @@ -77,9 +77,10 @@ class _$PaymentTermUIStateSerializer final String wireName = 'PaymentTermUIState'; @override - Iterable serialize(Serializers serializers, PaymentTermUIState object, + Iterable serialize( + Serializers serializers, PaymentTermUIState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'listUIState', serializers.serialize(object.listUIState, specifiedType: const FullType(ListUIState)), @@ -87,7 +88,7 @@ class _$PaymentTermUIStateSerializer serializers.serialize(object.tabIndex, specifiedType: const FullType(int)), ]; - Object value; + Object? value; value = object.editing; if (value != null) { result @@ -114,36 +115,36 @@ class _$PaymentTermUIStateSerializer @override PaymentTermUIState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new PaymentTermUIStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'editing': result.editing.replace(serializers.deserialize(value, - specifiedType: const FullType(PaymentTermEntity)) + specifiedType: const FullType(PaymentTermEntity))! as PaymentTermEntity); break; case 'listUIState': result.listUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(ListUIState)) as ListUIState); + specifiedType: const FullType(ListUIState))! as ListUIState); break; case 'selectedId': result.selectedId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'forceSelected': result.forceSelected = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'tabIndex': result.tabIndex = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; } } @@ -154,15 +155,15 @@ class _$PaymentTermUIStateSerializer class _$PaymentTermState extends PaymentTermState { @override - final BuiltMap map; + final BuiltMap map; @override final BuiltList list; factory _$PaymentTermState( - [void Function(PaymentTermStateBuilder) updates]) => + [void Function(PaymentTermStateBuilder)? updates]) => (new PaymentTermStateBuilder()..update(updates))._build(); - _$PaymentTermState._({this.map, this.list}) : super._() { + _$PaymentTermState._({required this.map, required this.list}) : super._() { BuiltValueNullFieldError.checkNotNull(map, r'PaymentTermState', 'map'); BuiltValueNullFieldError.checkNotNull(list, r'PaymentTermState', 'list'); } @@ -181,10 +182,10 @@ class _$PaymentTermState extends PaymentTermState { return other is PaymentTermState && map == other.map && list == other.list; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, map.hashCode); _$hash = $jc(_$hash, list.hashCode); @@ -203,16 +204,16 @@ class _$PaymentTermState extends PaymentTermState { class PaymentTermStateBuilder implements Builder { - _$PaymentTermState _$v; + _$PaymentTermState? _$v; - MapBuilder _map; - MapBuilder get map => - _$this._map ??= new MapBuilder(); - set map(MapBuilder map) => _$this._map = map; + MapBuilder? _map; + MapBuilder get map => + _$this._map ??= new MapBuilder(); + set map(MapBuilder? map) => _$this._map = map; - ListBuilder _list; + ListBuilder? _list; ListBuilder get list => _$this._list ??= new ListBuilder(); - set list(ListBuilder list) => _$this._list = list; + set list(ListBuilder? list) => _$this._list = list; PaymentTermStateBuilder(); @@ -233,7 +234,7 @@ class PaymentTermStateBuilder } @override - void update(void Function(PaymentTermStateBuilder) updates) { + void update(void Function(PaymentTermStateBuilder)? updates) { if (updates != null) updates(this); } @@ -246,7 +247,7 @@ class PaymentTermStateBuilder _$result = _$v ?? new _$PaymentTermState._(map: map.build(), list: list.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'map'; map.build(); @@ -265,30 +266,30 @@ class PaymentTermStateBuilder class _$PaymentTermUIState extends PaymentTermUIState { @override - final PaymentTermEntity editing; + final PaymentTermEntity? editing; @override final ListUIState listUIState; @override - final String selectedId; + final String? selectedId; @override - final bool forceSelected; + final bool? forceSelected; @override final int tabIndex; @override - final Completer saveCompleter; + final Completer? saveCompleter; @override - final Completer cancelCompleter; + final Completer? cancelCompleter; factory _$PaymentTermUIState( - [void Function(PaymentTermUIStateBuilder) updates]) => + [void Function(PaymentTermUIStateBuilder)? updates]) => (new PaymentTermUIStateBuilder()..update(updates))._build(); _$PaymentTermUIState._( {this.editing, - this.listUIState, + required this.listUIState, this.selectedId, this.forceSelected, - this.tabIndex, + required this.tabIndex, this.saveCompleter, this.cancelCompleter}) : super._() { @@ -320,10 +321,10 @@ class _$PaymentTermUIState extends PaymentTermUIState { cancelCompleter == other.cancelCompleter; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, editing.hashCode); _$hash = $jc(_$hash, listUIState.hashCode); @@ -352,40 +353,40 @@ class _$PaymentTermUIState extends PaymentTermUIState { class PaymentTermUIStateBuilder implements Builder { - _$PaymentTermUIState _$v; + _$PaymentTermUIState? _$v; - PaymentTermEntityBuilder _editing; + PaymentTermEntityBuilder? _editing; PaymentTermEntityBuilder get editing => _$this._editing ??= new PaymentTermEntityBuilder(); - set editing(PaymentTermEntityBuilder editing) => _$this._editing = editing; + set editing(PaymentTermEntityBuilder? editing) => _$this._editing = editing; - ListUIStateBuilder _listUIState; + ListUIStateBuilder? _listUIState; ListUIStateBuilder get listUIState => _$this._listUIState ??= new ListUIStateBuilder(); - set listUIState(ListUIStateBuilder listUIState) => + set listUIState(ListUIStateBuilder? listUIState) => _$this._listUIState = listUIState; - String _selectedId; - String get selectedId => _$this._selectedId; - set selectedId(String selectedId) => _$this._selectedId = selectedId; + String? _selectedId; + String? get selectedId => _$this._selectedId; + set selectedId(String? selectedId) => _$this._selectedId = selectedId; - bool _forceSelected; - bool get forceSelected => _$this._forceSelected; - set forceSelected(bool forceSelected) => + bool? _forceSelected; + bool? get forceSelected => _$this._forceSelected; + set forceSelected(bool? forceSelected) => _$this._forceSelected = forceSelected; - int _tabIndex; - int get tabIndex => _$this._tabIndex; - set tabIndex(int tabIndex) => _$this._tabIndex = tabIndex; + int? _tabIndex; + int? get tabIndex => _$this._tabIndex; + set tabIndex(int? tabIndex) => _$this._tabIndex = tabIndex; - Completer _saveCompleter; - Completer get saveCompleter => _$this._saveCompleter; - set saveCompleter(Completer saveCompleter) => + Completer? _saveCompleter; + Completer? get saveCompleter => _$this._saveCompleter; + set saveCompleter(Completer? saveCompleter) => _$this._saveCompleter = saveCompleter; - Completer _cancelCompleter; - Completer get cancelCompleter => _$this._cancelCompleter; - set cancelCompleter(Completer cancelCompleter) => + Completer? _cancelCompleter; + Completer? get cancelCompleter => _$this._cancelCompleter; + set cancelCompleter(Completer? cancelCompleter) => _$this._cancelCompleter = cancelCompleter; PaymentTermUIStateBuilder(); @@ -412,7 +413,7 @@ class PaymentTermUIStateBuilder } @override - void update(void Function(PaymentTermUIStateBuilder) updates) { + void update(void Function(PaymentTermUIStateBuilder)? updates) { if (updates != null) updates(this); } @@ -433,7 +434,7 @@ class PaymentTermUIStateBuilder saveCompleter: saveCompleter, cancelCompleter: cancelCompleter); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'editing'; _editing?.build(); diff --git a/lib/redux/product/product_actions.dart b/lib/redux/product/product_actions.dart index 5ee70b804..88c989a24 100644 --- a/lib/redux/product/product_actions.dart +++ b/lib/redux/product/product_actions.dart @@ -29,21 +29,21 @@ class ViewProductList implements PersistUI { }); final bool force; - final int page; + final int? page; } class ViewProduct implements PersistUI, PersistPrefs { - ViewProduct({@required this.productId, this.force = false}); + ViewProduct({required this.productId, this.force = false}); - final String productId; + final String? productId; final bool force; } class EditProduct implements PersistUI, PersistPrefs { - EditProduct({@required this.product, this.completer, this.force = false}); + EditProduct({required this.product, this.completer, this.force = false}); final ProductEntity product; - final Completer completer; + final Completer? completer; final bool force; } @@ -58,8 +58,8 @@ class LoadProductRequest implements StartLoading {} class LoadProduct { LoadProduct({this.completer, this.productId}); - final Completer completer; - final String productId; + final Completer? completer; + final String? productId; } class LoadProductSuccess implements StopLoading, PersistData { @@ -87,7 +87,7 @@ class LoadProductFailure implements StopLoading { class LoadProducts { LoadProducts({this.completer, this.page = 1}); - final Completer completer; + final Completer? completer; final int page; } @@ -118,8 +118,8 @@ class LoadProductsSuccess implements StopLoading { class SaveProductRequest implements StartSaving { SaveProductRequest({this.product, this.completer}); - final Completer completer; - final ProductEntity product; + final Completer? completer; + final ProductEntity? product; } class SaveProductSuccess implements StopSaving, PersistData, PersistUI { @@ -156,7 +156,7 @@ class ArchiveProductsSuccess implements StopSaving, PersistData { class ArchiveProductsFailure implements StopSaving { ArchiveProductsFailure(this.products); - final List products; + final List products; } class DeleteProductsRequest implements StartSaving { @@ -175,7 +175,7 @@ class DeleteProductsSuccess implements StopSaving, PersistData { class DeleteProductsFailure implements StopSaving { DeleteProductsFailure(this.products); - final List products; + final List products; } class RestoreProductsRequest implements StartSaving { @@ -194,16 +194,16 @@ class RestoreProductsSuccess implements StopSaving, PersistData { class RestoreProductsFailure implements StopSaving { RestoreProductsFailure(this.products); - final List products; + final List products; } class SetTaxCategoryProductsRequest implements StartSaving { SetTaxCategoryProductsRequest( {this.completer, this.productIds, this.taxCategoryId}); - final Completer completer; - final List productIds; - final String taxCategoryId; + final Completer? completer; + final List? productIds; + final String? taxCategoryId; } class SetTaxCategoryProductsSuccess implements StopSaving, PersistData { @@ -267,15 +267,15 @@ class FilterProductDropdown { } void handleProductAction( - BuildContext context, List products, EntityAction action) { + BuildContext? context, List products, EntityAction? action) { if (products.isEmpty) { return; } - final store = StoreProvider.of(context); + final store = StoreProvider.of(context!); final state = store.state; final localization = AppLocalization.of(context); - final productIds = products.map((product) => product.id).toList(); + final productIds = products.map((product) => product!.id).toList(); final product = products.first; switch (action) { @@ -288,7 +288,7 @@ void handleProductAction( ..lineItems.addAll( productIds.map( (productId) => convertProductToInvoiceItem( - company: state.company, + company: state.company!, invoice: invoice, product: state.productState.map[productId], currencyMap: state.staticState.currencyMap, @@ -308,7 +308,7 @@ void handleProductAction( ..lineItems.addAll( productIds.map( (productId) => convertProductToInvoiceItem( - company: state.company, + company: state.company!, invoice: invoice, product: state.productState.map[productId], currencyMap: state.staticState.currencyMap, @@ -319,35 +319,35 @@ void handleProductAction( ); break; case EntityAction.edit: - editEntity(entity: product); + editEntity(entity: product!); break; case EntityAction.clone: createEntity(context: context, entity: (product as ProductEntity).clone); break; case EntityAction.restore: final message = productIds.length > 1 - ? localization.restoredProducts + ? localization!.restoredProducts .replaceFirst(':value', ':count') .replaceFirst(':count', productIds.length.toString()) - : localization.restoredProduct; + : localization!.restoredProduct; store.dispatch(RestoreProductsRequest( snackBarCompleter(context, message), productIds)); break; case EntityAction.archive: final message = productIds.length > 1 - ? localization.archivedProducts + ? localization!.archivedProducts .replaceFirst(':value', ':count') .replaceFirst(':count', productIds.length.toString()) - : localization.archivedProduct; + : localization!.archivedProduct; store.dispatch(ArchiveProductsRequest( snackBarCompleter(context, message), productIds)); break; case EntityAction.delete: final message = productIds.length > 1 - ? localization.deletedProducts + ? localization!.deletedProducts .replaceFirst(':value', ':count') .replaceFirst(':count', productIds.length.toString()) - : localization.deletedProduct; + : localization!.deletedProduct; store.dispatch(DeleteProductsRequest( snackBarCompleter(context, message), productIds)); break; @@ -361,7 +361,7 @@ void handleProductAction( } for (final product in products) { - if (!store.state.productListState.isSelected(product.id)) { + if (!store.state.productListState.isSelected(product!.id)) { store.dispatch(AddToProductMultiselect(entity: product)); } else { store.dispatch(RemoveFromProductMultiselect(entity: product)); @@ -382,14 +382,14 @@ void handleProductAction( } if (documentIds.isEmpty) { showMessageDialog( - context: context, message: localization.noDocumentsToDownload); + context: context, message: localization!.noDocumentsToDownload); } else { store.dispatch( DownloadDocumentsRequest( documentIds: documentIds, completer: snackBarCompleter( context, - localization.exportedData, + localization!.exportedData, ), ), ); @@ -400,11 +400,11 @@ void handleProductAction( context: context, builder: (context) { return SimpleDialog( - title: Text(localization.setTaxCategory), + title: Text(localization!.setTaxCategory!), children: kTaxCategories.keys.map((taxCategoryId) { final taxCategory = kTaxCategories[taxCategoryId]; return SimpleDialogOption( - child: Text(localization.lookup(taxCategory)), + child: Text(localization.lookup(taxCategory)!), onPressed: () { Navigator.of(context).pop(); store.dispatch(SetTaxCategoryProductsRequest( @@ -430,25 +430,25 @@ void handleProductAction( class StartProductMultiselect {} class AddToProductMultiselect { - AddToProductMultiselect({@required this.entity}); + AddToProductMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class RemoveFromProductMultiselect { - RemoveFromProductMultiselect({@required this.entity}); + RemoveFromProductMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class ClearProductMultiselect {} class SaveProductDocumentRequest implements StartSaving { SaveProductDocumentRequest({ - @required this.completer, - @required this.multipartFiles, - @required this.product, - @required this.isPrivate, + required this.completer, + required this.multipartFiles, + required this.product, + required this.isPrivate, }); final Completer completer; @@ -472,11 +472,11 @@ class SaveProductDocumentFailure implements StopSaving { class UpdateProductTab implements PersistUI { UpdateProductTab({this.tabIndex}); - final int tabIndex; + final int? tabIndex; } class UpdateClientTab implements PersistUI { UpdateClientTab({this.tabIndex}); - final int tabIndex; + final int? tabIndex; } diff --git a/lib/redux/product/product_middleware.dart b/lib/redux/product/product_middleware.dart index 679054a88..edc0d48e9 100644 --- a/lib/redux/product/product_middleware.dart +++ b/lib/redux/product/product_middleware.dart @@ -53,14 +53,14 @@ List> createStoreProductsMiddleware([ Middleware _editProduct() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as EditProduct; + final action = dynamicAction as EditProduct?; next(action); store.dispatch(UpdateCurrentRoute(ProductEditScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(ProductEditScreen.route); + navigatorKey.currentState!.pushNamed(ProductEditScreen.route); } }; } @@ -68,21 +68,21 @@ Middleware _editProduct() { Middleware _viewProduct() { return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as ViewProduct; + final action = dynamicAction as ViewProduct?; next(action); store.dispatch(UpdateCurrentRoute(ProductViewScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(ProductViewScreen.route); + navigatorKey.currentState!.pushNamed(ProductViewScreen.route); } }; } Middleware _viewProductList() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as ViewProductList; + final action = dynamicAction as ViewProductList?; next(action); @@ -93,7 +93,7 @@ Middleware _viewProductList() { store.dispatch(UpdateCurrentRoute(ProductScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamedAndRemoveUntil( + navigatorKey.currentState!.pushNamedAndRemoveUntil( ProductScreen.route, (Route route) => false); } }; @@ -129,19 +129,19 @@ Middleware _setTaxCategoryProducts(ProductRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as SetTaxCategoryProductsRequest; repository - .bulkAction(store.state.credentials, action.productIds, + .bulkAction(store.state.credentials, action.productIds!, EntityAction.setTaxCategory, - taxCategoryId: action.taxCategoryId) + taxCategoryId: action.taxCategoryId!) .then((List products) { store.dispatch(SetTaxCategoryProductsSuccess(products)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((dynamic error) { print(error); store.dispatch(SetTaxCategoryProductsFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -205,8 +205,8 @@ Middleware _saveProduct(ProductRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as SaveProductRequest; - final product = action.product; - final origProduct = store.state.productState.get(product.id); + final product = action.product!; + final origProduct = store.state.productState.get(product.id)!; final changedStock = product.stockQuantity != origProduct.stockQuantity; repository @@ -216,16 +216,16 @@ Middleware _saveProduct(ProductRepository repository) { changedStock: changedStock, ) .then((ProductEntity product) { - if (action.product.isNew) { + if (action.product!.isNew) { store.dispatch(AddProductSuccess(product)); } else { store.dispatch(SaveProductSuccess(product)); } - action.completer.complete(product); + action.completer!.complete(product); }).catchError((Object error) { print(error); store.dispatch(SaveProductFailure(error)); - action.completer.completeError(error); + action.completer!.completeError(error); }); next(action); @@ -234,7 +234,7 @@ Middleware _saveProduct(ProductRepository repository) { Middleware _loadProduct(ProductRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as LoadProduct; + final action = dynamicAction as LoadProduct?; if (Config.DEMO_MODE) { next(action); @@ -243,18 +243,18 @@ Middleware _loadProduct(ProductRepository repository) { store.dispatch(LoadProductRequest()); repository - .loadItem(store.state.credentials, action.productId) + .loadItem(store.state.credentials, action!.productId) .then((product) { store.dispatch(LoadProductSuccess(product)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(LoadProductFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -288,7 +288,7 @@ Middleware _loadProducts(ProductRepository repository) { )); } else { if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } store.dispatch(LoadInvoices()); } @@ -296,7 +296,7 @@ Middleware _loadProducts(ProductRepository repository) { print(error); store.dispatch(LoadProductsFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -306,12 +306,12 @@ Middleware _loadProducts(ProductRepository repository) { Middleware _saveDocument(ProductRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as SaveProductDocumentRequest; + final action = dynamicAction as SaveProductDocumentRequest?; if (store.state.isEnterprisePlan) { repository .uploadDocument( store.state.credentials, - action.product, + action!.product, action.multipartFiles, action.isPrivate, ) @@ -335,7 +335,7 @@ Middleware _saveDocument(ProductRepository repository) { } else { const error = 'Uploading documents requires an enterprise plan'; store.dispatch(SaveProductDocumentFailure(error)); - action.completer.completeError(error); + action!.completer.completeError(error); } next(action); diff --git a/lib/redux/product/product_reducer.dart b/lib/redux/product/product_reducer.dart index 721cd8da7..52617a109 100644 --- a/lib/redux/product/product_reducer.dart +++ b/lib/redux/product/product_reducer.dart @@ -15,28 +15,28 @@ import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; EntityUIState productUIReducer(ProductUIState state, dynamic action) { return state.rebuild((b) => b ..listUIState.replace(productListReducer(state.listUIState, action)) - ..editing.replace(editingReducer(state.editing, action)) + ..editing.replace(editingReducer(state.editing, action)!) ..tabIndex = tabIndexReducer(state.tabIndex, action) ..selectedId = selectedIdReducer(state.selectedId, action) ..forceSelected = forceSelectedReducer(state.forceSelected, action)); } -final forceSelectedReducer = combineReducers([ - TypedReducer((completer, action) => true), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), +final forceSelectedReducer = combineReducers([ + TypedReducer((completer, action) => true), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), ]); -final tabIndexReducer = combineReducers([ - TypedReducer((completer, action) { +final int? Function(int, dynamic) tabIndexReducer = combineReducers([ + TypedReducer((completer, action) { return action.tabIndex; }), - TypedReducer((completer, action) { + TypedReducer((completer, action) { return 0; }), ]); @@ -50,51 +50,51 @@ String filterProductDropdownReducer( return action.filter; } -final editingReducer = combineReducers([ - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer((product, action) { +final editingReducer = combineReducers([ + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer((product, action) { return action.product.rebuild((b) => b..isChanged = true); }), - TypedReducer((products, action) { + TypedReducer((products, action) { return action.products[0]; }), - TypedReducer((products, action) { + TypedReducer((products, action) { return action.products[0]; }), - TypedReducer((products, action) { + TypedReducer((products, action) { return action.products[0]; }), - TypedReducer(_clearEditing), + TypedReducer(_clearEditing), ]); -ProductEntity _clearEditing(ProductEntity product, dynamic action) { +ProductEntity _clearEditing(ProductEntity? product, dynamic action) { return ProductEntity(); } -ProductEntity _updateEditing(ProductEntity product, dynamic action) { +ProductEntity? _updateEditing(ProductEntity? product, dynamic action) { return action.product; } -Reducer selectedIdReducer = combineReducers([ - TypedReducer((completer, action) => ''), - TypedReducer((completer, action) => ''), - TypedReducer((selectedId, action) => +Reducer selectedIdReducer = combineReducers([ + TypedReducer((completer, action) => ''), + TypedReducer((completer, action) => ''), + TypedReducer((selectedId, action) => action.entityType == EntityType.product ? action.entityId : selectedId), - TypedReducer((selectedId, action) => action.productId), - TypedReducer( + TypedReducer((selectedId, action) => action.productId), + TypedReducer( (selectedId, action) => action.product.id), - TypedReducer( + TypedReducer( (selectedId, action) => action.clearSelection ? '' : selectedId), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), ]); final productListReducer = combineReducers([ @@ -186,7 +186,7 @@ ListUIState _filterProducts( ListUIState _sortProducts(ListUIState productListState, SortProducts action) { return productListState.rebuild((b) => b - ..sortAscending = b.sortField != action.field || !b.sortAscending + ..sortAscending = b.sortField != action.field || !b.sortAscending! ..sortField = action.field); } @@ -197,13 +197,13 @@ ListUIState _startListMultiselect( ListUIState _addToListMultiselect( ListUIState productListState, AddToProductMultiselect action) { - return productListState.rebuild((b) => b..selectedIds.add(action.entity.id)); + return productListState.rebuild((b) => b..selectedIds.add(action.entity!.id)); } ListUIState _removeFromListMultiselect( ListUIState productListState, RemoveFromProductMultiselect action) { return productListState - .rebuild((b) => b..selectedIds.remove(action.entity.id)); + .rebuild((b) => b..selectedIds.remove(action.entity!.id)); } ListUIState _clearListMultiselect( @@ -284,6 +284,6 @@ ProductState _setLoadedProducts( ProductState _setLoadedCompany( ProductState productState, LoadCompanySuccess action) { - final company = action.userCompany.company; + final company = action.userCompany.company!; return productState.loadProducts(company.products); } diff --git a/lib/redux/product/product_selectors.dart b/lib/redux/product/product_selectors.dart index 3d67e3fa6..73b507c75 100644 --- a/lib/redux/product/product_selectors.dart +++ b/lib/redux/product/product_selectors.dart @@ -12,29 +12,29 @@ import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; import 'package:invoiceninja_flutter/utils/formatting.dart'; int productNotificationThreshold({ - @required ProductEntity product, - @required CompanyEntity company, + required ProductEntity product, + required CompanyEntity? company, }) { if (product.stockNotificationThreshold != 0) { return product.stockNotificationThreshold; } - return company.stockNotificationThreshold; + return company!.stockNotificationThreshold; } InvoiceItemEntity convertProductToInvoiceItem({ - @required ProductEntity product, - @required CompanyEntity company, - @required InvoiceEntity invoice, - @required BuiltMap currencyMap, - ClientEntity client, + required ProductEntity? product, + required CompanyEntity company, + required InvoiceEntity invoice, + required BuiltMap currencyMap, + ClientEntity? client, }) { if (company.fillProducts) { double cost = (invoice.isPurchaseOrder && company.enableProductCost && - product.cost != 0) + product!.cost != 0) ? product.cost - : product.price; + : product!.price; if (company.convertProductExchangeRate && (client?.currencyId ?? '').isNotEmpty) { @@ -43,7 +43,7 @@ InvoiceItemEntity convertProductToInvoiceItem({ exchangeRate = 1 / exchangeRate; } cost = - round(cost * exchangeRate, currencyMap[client.currencyId].precision); + round(cost * exchangeRate, currencyMap[client!.currencyId]!.precision); } return InvoiceItemEntity().rebuild((b) => b @@ -64,24 +64,24 @@ InvoiceItemEntity convertProductToInvoiceItem({ ..taxName3 = company.numberOfItemTaxRates >= 3 ? product.taxName3 : '' ..taxRate3 = company.numberOfItemTaxRates >= 3 ? product.taxRate3 : 0); } else { - return InvoiceItemEntity(productKey: product.productKey); + return InvoiceItemEntity(productKey: product!.productKey); } } var memoizedDropdownProductList = memo3( - (BuiltMap productMap, BuiltList productList, - BuiltMap userMap) => + (BuiltMap productMap, BuiltList productList, + BuiltMap userMap) => dropdownProductsSelector(productMap, productList, userMap)); List dropdownProductsSelector( - BuiltMap productMap, + BuiltMap productMap, BuiltList productList, - BuiltMap userMap) { + BuiltMap userMap) { final list = - productList.where((productId) => productMap[productId].isActive).toList(); + productList.where((productId) => productMap[productId]!.isActive).toList(); list.sort((productAId, productBId) { - final productA = productMap[productAId]; + final productA = productMap[productAId]!; final productB = productMap[productBId]; return productA.compareTo( productB, ProductFields.productKey, true, userMap); @@ -91,36 +91,36 @@ List dropdownProductsSelector( } var memoizedProductList = memo1( - (BuiltMap productMap) => productList(productMap)); + (BuiltMap productMap) => productList(productMap)); -List productList(BuiltMap productMap) { +List productList(BuiltMap productMap) { final list = productMap.keys - .where((productId) => productMap[productId].isActive) + .where((productId) => productMap[productId]!.isActive) .toList(); - list.sort((idA, idB) => productMap[idA] + list.sort((idA, idB) => productMap[idA]! .listDisplayName - .compareTo(productMap[idB].listDisplayName)); + .compareTo(productMap[idB]!.listDisplayName)); return list; } var memoizedFilteredProductList = memo5((SelectionState selectionState, - BuiltMap productMap, + BuiltMap productMap, BuiltList productList, ListUIState productListState, - BuiltMap userMap) => + BuiltMap userMap) => filteredProductsSelector( selectionState, productMap, productList, productListState, userMap)); List filteredProductsSelector( SelectionState selectionState, - BuiltMap productMap, + BuiltMap productMap, BuiltList productList, ListUIState productListState, - BuiltMap userMap) { + BuiltMap userMap) { final list = productList.where((productId) { - final product = productMap[productId]; + final product = productMap[productId]!; if (product.id == selectionState.selectedId) { return true; @@ -150,7 +150,7 @@ List filteredProductsSelector( }).toList(); list.sort((productAId, productBId) { - final productA = productMap[productAId]; + final productA = productMap[productAId]!; final productB = productMap[productBId]; return productA.compareTo(productB, productListState.sortField, productListState.sortAscending, userMap); diff --git a/lib/redux/product/product_state.dart b/lib/redux/product/product_state.dart index d00772c46..8771a0e1a 100644 --- a/lib/redux/product/product_state.dart +++ b/lib/redux/product/product_state.dart @@ -29,11 +29,11 @@ abstract class ProductState @memoized int get hashCode; - BuiltMap get map; + BuiltMap get map; BuiltList get list; - ProductEntity get(String productId) { + ProductEntity? get(String productId) { if (map.containsKey(productId)) { return map[productId]; } else { @@ -42,7 +42,7 @@ abstract class ProductState } ProductState loadProducts(BuiltList clients) { - final map = Map.fromIterable( + final map = Map.fromIterable( clients, key: (dynamic item) => item.id, value: (dynamic item) => item, @@ -59,7 +59,7 @@ abstract class ProductState abstract class ProductUIState extends Object with EntityUIState implements Built { - factory ProductUIState(PrefStateSortField sortField) { + factory ProductUIState(PrefStateSortField? sortField) { return _$ProductUIState._( listUIState: ListUIState(sortField?.field ?? ProductFields.productKey, sortAscending: sortField?.ascending), @@ -75,14 +75,13 @@ abstract class ProductUIState extends Object @memoized int get hashCode; - @nullable - ProductEntity get editing; + ProductEntity? get editing; @override - bool get isCreatingNew => editing.isNew; + bool get isCreatingNew => editing!.isNew; @override - String get editingId => editing.id; + String get editingId => editing!.id; static Serializer get serializer => _$productUIStateSerializer; diff --git a/lib/redux/product/product_state.g.dart b/lib/redux/product/product_state.g.dart index a39f319a8..1588a4d47 100644 --- a/lib/redux/product/product_state.g.dart +++ b/lib/redux/product/product_state.g.dart @@ -18,13 +18,15 @@ class _$ProductStateSerializer implements StructuredSerializer { final String wireName = 'ProductState'; @override - Iterable serialize(Serializers serializers, ProductState object, + Iterable serialize(Serializers serializers, ProductState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'map', serializers.serialize(object.map, - specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(ProductEntity)])), + specifiedType: const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(ProductEntity) + ])), 'list', serializers.serialize(object.list, specifiedType: @@ -35,28 +37,29 @@ class _$ProductStateSerializer implements StructuredSerializer { } @override - ProductState deserialize(Serializers serializers, Iterable serialized, + ProductState deserialize( + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ProductStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'map': result.map.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(ProductEntity) - ]))); + const FullType.nullable(String), + const FullType.nullable(ProductEntity) + ]))!); break; case 'list': result.list.replace(serializers.deserialize(value, - specifiedType: - const FullType(BuiltList, const [const FullType(String)])) - as BuiltList); + specifiedType: const FullType( + BuiltList, const [const FullType(String)]))! + as BuiltList); break; } } @@ -73,9 +76,9 @@ class _$ProductUIStateSerializer final String wireName = 'ProductUIState'; @override - Iterable serialize(Serializers serializers, ProductUIState object, + Iterable serialize(Serializers serializers, ProductUIState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'listUIState', serializers.serialize(object.listUIState, specifiedType: const FullType(ListUIState)), @@ -83,7 +86,7 @@ class _$ProductUIStateSerializer serializers.serialize(object.tabIndex, specifiedType: const FullType(int)), ]; - Object value; + Object? value; value = object.editing; if (value != null) { result @@ -110,35 +113,35 @@ class _$ProductUIStateSerializer @override ProductUIState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ProductUIStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'editing': result.editing.replace(serializers.deserialize(value, - specifiedType: const FullType(ProductEntity)) as ProductEntity); + specifiedType: const FullType(ProductEntity))! as ProductEntity); break; case 'listUIState': result.listUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(ListUIState)) as ListUIState); + specifiedType: const FullType(ListUIState))! as ListUIState); break; case 'selectedId': result.selectedId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'forceSelected': result.forceSelected = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'tabIndex': result.tabIndex = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; } } @@ -149,14 +152,14 @@ class _$ProductUIStateSerializer class _$ProductState extends ProductState { @override - final BuiltMap map; + final BuiltMap map; @override final BuiltList list; - factory _$ProductState([void Function(ProductStateBuilder) updates]) => + factory _$ProductState([void Function(ProductStateBuilder)? updates]) => (new ProductStateBuilder()..update(updates))._build(); - _$ProductState._({this.map, this.list}) : super._() { + _$ProductState._({required this.map, required this.list}) : super._() { BuiltValueNullFieldError.checkNotNull(map, r'ProductState', 'map'); BuiltValueNullFieldError.checkNotNull(list, r'ProductState', 'list'); } @@ -174,10 +177,10 @@ class _$ProductState extends ProductState { return other is ProductState && map == other.map && list == other.list; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, map.hashCode); _$hash = $jc(_$hash, list.hashCode); @@ -196,16 +199,16 @@ class _$ProductState extends ProductState { class ProductStateBuilder implements Builder { - _$ProductState _$v; + _$ProductState? _$v; - MapBuilder _map; - MapBuilder get map => - _$this._map ??= new MapBuilder(); - set map(MapBuilder map) => _$this._map = map; + MapBuilder? _map; + MapBuilder get map => + _$this._map ??= new MapBuilder(); + set map(MapBuilder? map) => _$this._map = map; - ListBuilder _list; + ListBuilder? _list; ListBuilder get list => _$this._list ??= new ListBuilder(); - set list(ListBuilder list) => _$this._list = list; + set list(ListBuilder? list) => _$this._list = list; ProductStateBuilder(); @@ -226,7 +229,7 @@ class ProductStateBuilder } @override - void update(void Function(ProductStateBuilder) updates) { + void update(void Function(ProductStateBuilder)? updates) { if (updates != null) updates(this); } @@ -239,7 +242,7 @@ class ProductStateBuilder _$result = _$v ?? new _$ProductState._(map: map.build(), list: list.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'map'; map.build(); @@ -258,29 +261,29 @@ class ProductStateBuilder class _$ProductUIState extends ProductUIState { @override - final ProductEntity editing; + final ProductEntity? editing; @override final ListUIState listUIState; @override - final String selectedId; + final String? selectedId; @override - final bool forceSelected; + final bool? forceSelected; @override final int tabIndex; @override - final Completer saveCompleter; + final Completer? saveCompleter; @override - final Completer cancelCompleter; + final Completer? cancelCompleter; - factory _$ProductUIState([void Function(ProductUIStateBuilder) updates]) => + factory _$ProductUIState([void Function(ProductUIStateBuilder)? updates]) => (new ProductUIStateBuilder()..update(updates))._build(); _$ProductUIState._( {this.editing, - this.listUIState, + required this.listUIState, this.selectedId, this.forceSelected, - this.tabIndex, + required this.tabIndex, this.saveCompleter, this.cancelCompleter}) : super._() { @@ -311,10 +314,10 @@ class _$ProductUIState extends ProductUIState { cancelCompleter == other.cancelCompleter; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, editing.hashCode); _$hash = $jc(_$hash, listUIState.hashCode); @@ -343,40 +346,40 @@ class _$ProductUIState extends ProductUIState { class ProductUIStateBuilder implements Builder { - _$ProductUIState _$v; + _$ProductUIState? _$v; - ProductEntityBuilder _editing; + ProductEntityBuilder? _editing; ProductEntityBuilder get editing => _$this._editing ??= new ProductEntityBuilder(); - set editing(ProductEntityBuilder editing) => _$this._editing = editing; + set editing(ProductEntityBuilder? editing) => _$this._editing = editing; - ListUIStateBuilder _listUIState; + ListUIStateBuilder? _listUIState; ListUIStateBuilder get listUIState => _$this._listUIState ??= new ListUIStateBuilder(); - set listUIState(ListUIStateBuilder listUIState) => + set listUIState(ListUIStateBuilder? listUIState) => _$this._listUIState = listUIState; - String _selectedId; - String get selectedId => _$this._selectedId; - set selectedId(String selectedId) => _$this._selectedId = selectedId; + String? _selectedId; + String? get selectedId => _$this._selectedId; + set selectedId(String? selectedId) => _$this._selectedId = selectedId; - bool _forceSelected; - bool get forceSelected => _$this._forceSelected; - set forceSelected(bool forceSelected) => + bool? _forceSelected; + bool? get forceSelected => _$this._forceSelected; + set forceSelected(bool? forceSelected) => _$this._forceSelected = forceSelected; - int _tabIndex; - int get tabIndex => _$this._tabIndex; - set tabIndex(int tabIndex) => _$this._tabIndex = tabIndex; + int? _tabIndex; + int? get tabIndex => _$this._tabIndex; + set tabIndex(int? tabIndex) => _$this._tabIndex = tabIndex; - Completer _saveCompleter; - Completer get saveCompleter => _$this._saveCompleter; - set saveCompleter(Completer saveCompleter) => + Completer? _saveCompleter; + Completer? get saveCompleter => _$this._saveCompleter; + set saveCompleter(Completer? saveCompleter) => _$this._saveCompleter = saveCompleter; - Completer _cancelCompleter; - Completer get cancelCompleter => _$this._cancelCompleter; - set cancelCompleter(Completer cancelCompleter) => + Completer? _cancelCompleter; + Completer? get cancelCompleter => _$this._cancelCompleter; + set cancelCompleter(Completer? cancelCompleter) => _$this._cancelCompleter = cancelCompleter; ProductUIStateBuilder(); @@ -403,7 +406,7 @@ class ProductUIStateBuilder } @override - void update(void Function(ProductUIStateBuilder) updates) { + void update(void Function(ProductUIStateBuilder)? updates) { if (updates != null) updates(this); } @@ -424,7 +427,7 @@ class ProductUIStateBuilder saveCompleter: saveCompleter, cancelCompleter: cancelCompleter); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'editing'; _editing?.build(); diff --git a/lib/redux/project/project_actions.dart b/lib/redux/project/project_actions.dart index e2fe2be0c..c7eec204e 100644 --- a/lib/redux/project/project_actions.dart +++ b/lib/redux/project/project_actions.dart @@ -28,29 +28,29 @@ class ViewProjectList implements PersistUI { }); final bool force; - final int page; + final int? page; } class ViewProject implements PersistUI, PersistPrefs { ViewProject({ - @required this.projectId, + required this.projectId, this.force = false, }); - final String projectId; + final String? projectId; final bool force; } class EditProject implements PersistUI, PersistPrefs { EditProject( - {@required this.project, + {required this.project, this.completer, this.cancelCompleter, this.force = false}); final ProjectEntity project; - final Completer completer; - final Completer cancelCompleter; + final Completer? completer; + final Completer? cancelCompleter; final bool force; } @@ -63,21 +63,21 @@ class UpdateProject implements PersistUI { class LoadProject { LoadProject({this.completer, this.projectId}); - final Completer completer; - final String projectId; + final Completer? completer; + final String? projectId; } class LoadProjectActivity { LoadProjectActivity({this.completer, this.projectId}); - final Completer completer; - final String projectId; + final Completer? completer; + final String? projectId; } class LoadProjects { LoadProjects({this.completer}); - final Completer completer; + final Completer? completer; } class LoadProjectRequest implements StartLoading {} @@ -131,8 +131,8 @@ class LoadProjectsSuccess implements StopLoading { class SaveProjectRequest implements StartSaving { SaveProjectRequest({this.completer, this.project}); - final Completer completer; - final ProjectEntity project; + final Completer? completer; + final ProjectEntity? project; } class SaveProjectSuccess implements StopSaving, PersistData, PersistUI { @@ -169,7 +169,7 @@ class ArchiveProjectSuccess implements StopSaving, PersistData { class ArchiveProjectFailure implements StopSaving { ArchiveProjectFailure(this.projects); - final List projects; + final List projects; } class DeleteProjectRequest implements StartSaving { @@ -188,7 +188,7 @@ class DeleteProjectSuccess implements StopSaving, PersistData { class DeleteProjectFailure implements StopSaving { DeleteProjectFailure(this.projects); - final List projects; + final List projects; } class RestoreProjectRequest implements StartSaving { @@ -207,7 +207,7 @@ class RestoreProjectSuccess implements StopSaving, PersistData { class RestoreProjectFailure implements StopSaving { RestoreProjectFailure(this.projects); - final List projects; + final List projects; } class FilterProjects implements PersistUI { @@ -253,15 +253,15 @@ class FilterProjectsByCustom4 implements PersistUI { } void handleProjectAction( - BuildContext context, List projects, EntityAction action) { + BuildContext? context, List projects, EntityAction? action) { if (projects.isEmpty) { return; } - final store = StoreProvider.of(context); + final store = StoreProvider.of(context!); final state = store.state; final project = projects.first as ProjectEntity; - final projectIds = projects.map((project) => project.id).toList(); + final projectIds = projects.map((project) => project!.id).toList(); final client = state.clientState.get(project.clientId); final localization = AppLocalization.of(context); @@ -295,14 +295,14 @@ void handleProjectAction( } }); if (hasMultipleClients) { - showErrorDialog(message: localization.multipleClientError); + showErrorDialog(message: localization!.multipleClientError); return; } final items = []; projects.forEach((project) { items.addAll( - convertProjectToInvoiceItem(project: project, context: context)); + convertProjectToInvoiceItem(project: project as ProjectEntity?, context: context)); }); createEntity( context: context, @@ -321,28 +321,28 @@ void handleProjectAction( break; case EntityAction.restore: final message = projectIds.length > 1 - ? localization.restoredProjects + ? localization!.restoredProjects .replaceFirst(':value', ':count') .replaceFirst(':count', projectIds.length.toString()) - : localization.restoredProject; + : localization!.restoredProject; store.dispatch(RestoreProjectRequest( snackBarCompleter(context, message), projectIds)); break; case EntityAction.archive: final message = projectIds.length > 1 - ? localization.archivedProjects + ? localization!.archivedProjects .replaceFirst(':value', ':count') .replaceFirst(':count', projectIds.length.toString()) - : localization.archivedProject; + : localization!.archivedProject; store.dispatch(ArchiveProjectRequest( snackBarCompleter(context, message), projectIds)); break; case EntityAction.delete: final message = projectIds.length > 1 - ? localization.deletedProjects + ? localization!.deletedProjects .replaceFirst(':value', ':count') .replaceFirst(':count', projectIds.length.toString()) - : localization.deletedProject; + : localization!.deletedProject; store.dispatch(DeleteProjectRequest( snackBarCompleter(context, message), projectIds)); break; @@ -356,7 +356,7 @@ void handleProjectAction( } for (final project in projects) { - if (!store.state.projectListState.isSelected(project.id)) { + if (!store.state.projectListState.isSelected(project!.id)) { store.dispatch(AddToProjectMultiselect(entity: project)); } else { store.dispatch(RemoveFromProjectMultiselect(entity: project)); @@ -377,14 +377,14 @@ void handleProjectAction( } if (documentIds.isEmpty) { showMessageDialog( - context: context, message: localization.noDocumentsToDownload); + context: context, message: localization!.noDocumentsToDownload); } else { store.dispatch( DownloadDocumentsRequest( documentIds: documentIds, completer: snackBarCompleter( context, - localization.exportedData, + localization!.exportedData, ), ), ); @@ -398,25 +398,25 @@ void handleProjectAction( class StartProjectMultiselect {} class AddToProjectMultiselect { - AddToProjectMultiselect({@required this.entity}); + AddToProjectMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class RemoveFromProjectMultiselect { - RemoveFromProjectMultiselect({@required this.entity}); + RemoveFromProjectMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class ClearProjectMultiselect {} class SaveProjectDocumentRequest implements StartSaving { SaveProjectDocumentRequest({ - @required this.isPrivate, - @required this.completer, - @required this.multipartFile, - @required this.project, + required this.isPrivate, + required this.completer, + required this.multipartFile, + required this.project, }); final bool isPrivate; @@ -440,5 +440,5 @@ class SaveProjectDocumentFailure implements StopSaving { class UpdateProjectTab implements PersistUI { UpdateProjectTab({this.tabIndex}); - final int tabIndex; + final int? tabIndex; } diff --git a/lib/redux/project/project_middleware.dart b/lib/redux/project/project_middleware.dart index 8ed5bfdf4..70822c583 100644 --- a/lib/redux/project/project_middleware.dart +++ b/lib/redux/project/project_middleware.dart @@ -49,14 +49,14 @@ List> createStoreProjectsMiddleware([ Middleware _editProject() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as EditProject; + final action = dynamicAction as EditProject?; next(action); store.dispatch(UpdateCurrentRoute(ProjectEditScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(ProjectEditScreen.route); + navigatorKey.currentState!.pushNamed(ProjectEditScreen.route); } }; } @@ -64,21 +64,21 @@ Middleware _editProject() { Middleware _viewProject() { return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as ViewProject; + final action = dynamicAction as ViewProject?; next(action); store.dispatch(UpdateCurrentRoute(ProjectViewScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(ProjectViewScreen.route); + navigatorKey.currentState!.pushNamed(ProjectViewScreen.route); } }; } Middleware _viewProjectList() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as ViewProjectList; + final action = dynamicAction as ViewProjectList?; next(action); @@ -89,7 +89,7 @@ Middleware _viewProjectList() { store.dispatch(UpdateCurrentRoute(ProjectScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamedAndRemoveUntil( + navigatorKey.currentState!.pushNamedAndRemoveUntil( ProjectScreen.route, (Route route) => false); } }; @@ -180,24 +180,24 @@ Middleware _saveProject(ProjectRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as SaveProjectRequest; repository - .saveData(store.state.credentials, action.project) + .saveData(store.state.credentials, action.project!) .then((ProjectEntity project) { - if (action.project.isNew) { + if (action.project!.isNew) { store.dispatch(AddProjectSuccess(project)); } else { store.dispatch(SaveProjectSuccess(project)); } - action.completer.complete(project); + action.completer!.complete(project); final projectUIState = store.state.projectUIState; if (projectUIState.saveCompleter != null) { - projectUIState.saveCompleter.complete(project); + projectUIState.saveCompleter!.complete(project); } }).catchError((Object error) { print(error); store.dispatch(SaveProjectFailure(error)); - action.completer.completeError(error); + action.completer!.completeError(error); }); next(action); @@ -215,14 +215,14 @@ Middleware _loadProject(ProjectRepository repository) { store.dispatch(LoadProjectSuccess(project)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } //store.dispatch(LoadClients()); }).catchError((Object error) { print(error); store.dispatch(LoadProjectFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -232,7 +232,7 @@ Middleware _loadProject(ProjectRepository repository) { Middleware _loadProjects(ProjectRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as LoadProjects; + final action = dynamicAction as LoadProjects?; final state = store.state; store.dispatch(LoadProjectsRequest()); @@ -255,15 +255,15 @@ Middleware _loadProjects(ProjectRepository repository) { }); store.dispatch(LoadDocumentsSuccess(documents)); - if (action.completer != null) { - action.completer.complete(null); + if (action!.completer != null) { + action.completer!.complete(null); } store.dispatch(LoadTasks()); }).catchError((Object error) { print(error); store.dispatch(LoadProjectsFailure(error)); - if (action.completer != null) { - action.completer.completeError(error); + if (action!.completer != null) { + action.completer!.completeError(error); } }); @@ -273,12 +273,12 @@ Middleware _loadProjects(ProjectRepository repository) { Middleware _saveDocument(ProjectRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as SaveProjectDocumentRequest; + final action = dynamicAction as SaveProjectDocumentRequest?; if (store.state.isEnterprisePlan) { repository .uploadDocuments( store.state.credentials, - action.project, + action!.project, action.multipartFile, action.isPrivate, ) @@ -302,7 +302,7 @@ Middleware _saveDocument(ProjectRepository repository) { } else { const error = 'Uploading documents requires an enterprise plan'; store.dispatch(SaveProjectDocumentFailure(error)); - action.completer.completeError(error); + action!.completer.completeError(error); } next(action); diff --git a/lib/redux/project/project_reducer.dart b/lib/redux/project/project_reducer.dart index 3fa189029..cd61e2485 100644 --- a/lib/redux/project/project_reducer.dart +++ b/lib/redux/project/project_reducer.dart @@ -18,65 +18,65 @@ import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; EntityUIState projectUIReducer(ProjectUIState state, dynamic action) { return state.rebuild((b) => b ..listUIState.replace(projectListReducer(state.listUIState, action)) - ..editing.replace(editingReducer(state.editing, action)) + ..editing.replace(editingReducer(state.editing, action)!) ..selectedId = selectedIdReducer(state.selectedId, action) ..forceSelected = forceSelectedReducer(state.forceSelected, action) ..tabIndex = tabIndexReducer(state.tabIndex, action) ..saveCompleter = saveCompleterReducer(state.saveCompleter, action) - ..cancelCompleter = cancelCompleterReducer(state.cancelCompleter, action)); + ..cancelCompleter = cancelCompleterReducer(state.cancelCompleter as Completer?, action) as Completer?); } -final forceSelectedReducer = combineReducers([ - TypedReducer((completer, action) => true), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), +final forceSelectedReducer = combineReducers([ + TypedReducer((completer, action) => true), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), ]); -final tabIndexReducer = combineReducers([ - TypedReducer((completer, action) { +final int? Function(int, dynamic) tabIndexReducer = combineReducers([ + TypedReducer((completer, action) { return action.tabIndex; }), - TypedReducer((completer, action) { + TypedReducer((completer, action) { return 0; }), ]); -final saveCompleterReducer = combineReducers>([ - TypedReducer, EditProject>((completer, action) { - return action.completer; +final saveCompleterReducer = combineReducers?>([ + TypedReducer?, EditProject>((completer, action) { + return action.completer as Completer?; }), ]); -final cancelCompleterReducer = combineReducers>([ - TypedReducer, EditProject>((completer, action) { - return action.cancelCompleter; +final cancelCompleterReducer = combineReducers?>([ + TypedReducer?, EditProject>((completer, action) { + return action.cancelCompleter as Completer?; }), ]); -Reducer selectedIdReducer = combineReducers([ - TypedReducer((completer, action) => ''), - TypedReducer((completer, action) => ''), - TypedReducer((selectedId, action) => +Reducer selectedIdReducer = combineReducers([ + TypedReducer((completer, action) => ''), + TypedReducer((completer, action) => ''), + TypedReducer((selectedId, action) => action.entityType == EntityType.project ? action.entityId : selectedId), - TypedReducer((selectedId, action) => action.projectId), - TypedReducer( + TypedReducer((selectedId, action) => action.projectId), + TypedReducer( (selectedId, action) => action.project.id), - TypedReducer( + TypedReducer( (selectedId, action) => action.clearSelection ? '' : selectedId), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer( + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer( (selectedId, action) => action.clearSelection ? '' : action.entityType == EntityType.project @@ -84,30 +84,30 @@ Reducer selectedIdReducer = combineReducers([ : selectedId), ]); -final editingReducer = combineReducers([ - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer((projects, action) { +final editingReducer = combineReducers([ + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer((projects, action) { return action.projects[0]; }), - TypedReducer((projects, action) { + TypedReducer((projects, action) { return action.projects[0]; }), - TypedReducer((projects, action) { + TypedReducer((projects, action) { return action.projects[0]; }), - TypedReducer(_updateEditing), - TypedReducer((project, action) { + TypedReducer(_updateEditing), + TypedReducer((project, action) { return action.project.rebuild((b) => b..isChanged = true); }), - TypedReducer(_clearEditing), + TypedReducer(_clearEditing), ]); -ProjectEntity _clearEditing(ProjectEntity project, dynamic dynamicAction) { +ProjectEntity _clearEditing(ProjectEntity? project, dynamic dynamicAction) { return ProjectEntity(); } -ProjectEntity _updateEditing(ProjectEntity project, dynamic action) { +ProjectEntity? _updateEditing(ProjectEntity? project, dynamic action) { return action.project; } @@ -200,7 +200,7 @@ ListUIState _filterProjects( ListUIState _sortProjects(ListUIState projectListState, SortProjects action) { return projectListState.rebuild((b) => b - ..sortAscending = b.sortField != action.field || !b.sortAscending + ..sortAscending = b.sortField != action.field || !b.sortAscending! ..sortField = action.field); } @@ -211,13 +211,13 @@ ListUIState _startListMultiselect( ListUIState _addToListMultiselect( ListUIState projectListState, AddToProjectMultiselect action) { - return projectListState.rebuild((b) => b..selectedIds.add(action.entity.id)); + return projectListState.rebuild((b) => b..selectedIds.add(action.entity!.id)); } ListUIState _removeFromListMultiselect( ListUIState projectListState, RemoveFromProjectMultiselect action) { return projectListState - .rebuild((b) => b..selectedIds.remove(action.entity.id)); + .rebuild((b) => b..selectedIds.remove(action.entity!.id)); } ListUIState _clearListMultiselect( @@ -240,8 +240,8 @@ final projectsReducer = combineReducers([ ProjectState _purgeClientSuccess( ProjectState projectState, PurgeClientSuccess action) { final ids = projectState.map.values - .where((each) => each.clientId == action.clientId) - .map((each) => each.id) + .where((each) => each!.clientId == action.clientId) + .map((each) => each!.id) .toList(); return projectState.rebuild((b) => b @@ -300,6 +300,6 @@ ProjectState _setLoadedProjects( ProjectState _setLoadedCompany( ProjectState projectState, LoadCompanySuccess action) { - final company = action.userCompany.company; + final company = action.userCompany.company!; return projectState.loadProjects(company.projects); } diff --git a/lib/redux/project/project_selectors.dart b/lib/redux/project/project_selectors.dart index 1c3fee6ad..dacfc5a56 100644 --- a/lib/redux/project/project_selectors.dart +++ b/lib/redux/project/project_selectors.dart @@ -14,37 +14,37 @@ import 'package:invoiceninja_flutter/redux/task/task_selectors.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; List convertProjectToInvoiceItem({ - BuildContext context, - ProjectEntity project, + required BuildContext context, + ProjectEntity? project, }) { final List items = []; final state = StoreProvider.of(context).state; - final tasks = []; + final tasks = []; state.taskState.map.forEach((index, task) { - if (task.isActive && + if (task!.isActive && task.isStopped && !task.isInvoiced && - task.projectId == project.id) { + task.projectId == project!.id) { tasks.add(task); } }); - final expenses = []; + final expenses = []; state.expenseState.map.forEach((index, expense) { - if (expense.isActive && - expense.projectId == project.id && + if (expense!.isActive && + expense.projectId == project!.id && expense.isPending) { expenses.add(expense); } }); tasks.sort((taskA, taskB) { - final taskTimesA = taskA.getTaskTimes(); - final taskTimesB = taskB.getTaskTimes(); + final taskTimesA = taskA!.getTaskTimes(); + final taskTimesB = taskB!.getTaskTimes(); - final taskADate = taskTimesA.isEmpty ? null : taskTimesA.first.startDate; - final taskBDate = taskTimesB.isEmpty ? null : taskTimesB.first.startDate; + final taskADate = taskTimesA.isEmpty ? null : taskTimesA.first!.startDate; + final taskBDate = taskTimesB.isEmpty ? null : taskTimesB.first!.startDate; if (taskADate == null) { return 1; @@ -56,21 +56,21 @@ List convertProjectToInvoiceItem({ }); expenses.sort((expenseA, expenseB) { - return expenseA.date.compareTo(expenseB.date); + return expenseA!.date!.compareTo(expenseB!.date!); }); bool hasShownNotes = false; for (var i = 0; i < expenses.length; i++) { - final expense = expenses[i]; + final expense = expenses[i]!; var item = convertExpenseToInvoiceItem(expense: expense, context: context); if (i == 0) { var notes = ''; - if (state.company.markdownEnabled) { - notes = '## ${project.name}\n'; + if (state.company!.markdownEnabled) { + notes = '## ${project!.name}\n'; } else { - notes = '
${project.name}
\n'; + notes = '
${project!.name}
\n'; } if (project.publicNotes.isNotEmpty) { @@ -85,15 +85,15 @@ List convertProjectToInvoiceItem({ } for (var i = 0; i < tasks.length; i++) { - final task = tasks[i]; + final task = tasks[i]!; var item = convertTaskToInvoiceItem(task: task, context: context); if (i == 0) { var notes = ''; - if (state.company.markdownEnabled) { - notes = '## ${project.name}\n'; + if (state.company!.markdownEnabled) { + notes = '## ${project!.name}\n'; } else { - notes = '
${project.name}
\n'; + notes = '
${project!.name}
\n'; } if (project.publicNotes.isNotEmpty && !hasShownNotes) { @@ -111,37 +111,37 @@ List convertProjectToInvoiceItem({ } var memoizedDropdownProjectList = memo5( - (BuiltMap projectMap, + (BuiltMap projectMap, BuiltList projectList, - BuiltMap clientMap, - BuiltMap userMap, - String clientId) => + BuiltMap clientMap, + BuiltMap userMap, + String? clientId) => dropdownProjectsSelector( projectMap, projectList, clientMap, userMap, clientId)); List dropdownProjectsSelector( - BuiltMap projectMap, + BuiltMap projectMap, BuiltList projectList, - BuiltMap clientMap, - BuiltMap userMap, - String clientId) { + BuiltMap clientMap, + BuiltMap userMap, + String? clientId) { final list = projectList.where((projectId) { final project = projectMap[projectId]; if (clientId != null && clientId.isNotEmpty && - project.clientId != clientId) { + project!.clientId != clientId) { return false; } - if (project.hasClient && + if (project!.hasClient && clientMap.containsKey(project.clientId) && - !clientMap[project.clientId].isActive) { + !clientMap[project.clientId]!.isActive) { return false; } return project.isActive; }).toList(); list.sort((projectAId, projectBId) { - final projectA = projectMap[projectAId]; + final projectA = projectMap[projectAId]!; final projectB = projectMap[projectBId]; return projectA.compareTo( projectB, ProjectFields.name, true, userMap, clientMap); @@ -151,26 +151,26 @@ List dropdownProjectsSelector( } var memoizedFilteredProjectList = memo6((SelectionState selectionState, - BuiltMap projectMap, + BuiltMap projectMap, BuiltList projectList, ListUIState projectListState, - BuiltMap clientMap, - BuiltMap userMap) => + BuiltMap clientMap, + BuiltMap userMap) => filteredProjectsSelector(selectionState, projectMap, projectList, projectListState, clientMap, userMap)); List filteredProjectsSelector( SelectionState selectionState, - BuiltMap projectMap, + BuiltMap projectMap, BuiltList projectList, ListUIState projectListState, - BuiltMap clientMap, - BuiltMap userMap) { + BuiltMap clientMap, + BuiltMap userMap) { final filterEntityId = selectionState.filterEntityId; final filterEntityType = selectionState.filterEntityType; final list = projectList.where((projectId) { - final project = projectMap[projectId]; + final project = projectMap[projectId]!; final client = clientMap[project.clientId] ?? ClientEntity(id: project.clientId); final user = userMap[project.assignedUserId] ?? @@ -222,7 +222,7 @@ List filteredProjectsSelector( }).toList(); list.sort((projectAId, projectBId) { - final projectA = projectMap[projectAId]; + final projectA = projectMap[projectAId]!; final projectB = projectMap[projectBId]; return projectA.compareTo(projectB, projectListState.sortField, projectListState.sortAscending, userMap, clientMap); @@ -233,11 +233,11 @@ List filteredProjectsSelector( Duration taskDurationForProject( ProjectEntity project, - BuiltMap taskMap, + BuiltMap taskMap, ) { int total = 0; taskMap.forEach((index, task) { - if (!task.isDeleted && task.projectId == project.id) { + if (!task!.isDeleted! && task.projectId == project.id) { total += task.calculateDuration().inSeconds; } }); @@ -245,15 +245,15 @@ Duration taskDurationForProject( } var memoizedProjectStatsForClient = memo2( - (String clientId, BuiltMap projectMap) => + (String clientId, BuiltMap projectMap) => projectStatsForClient(clientId, projectMap)); EntityStats projectStatsForClient( - String clientId, BuiltMap projectMap) { + String clientId, BuiltMap projectMap) { int countActive = 0; int countArchived = 0; projectMap.forEach((projectId, project) { - if (project.clientId == clientId) { + if (project!.clientId == clientId) { if (project.isActive) { countActive++; } else if (project.isArchived) { @@ -266,7 +266,7 @@ EntityStats projectStatsForClient( } var memoizedProjectStatsForUser = memo2( - (String userId, BuiltMap projectMap) => + (String userId, BuiltMap projectMap) => projectStatsForClient(userId, projectMap)); EntityStats projectStatsForUser( diff --git a/lib/redux/project/project_state.dart b/lib/redux/project/project_state.dart index 5e0b01199..31b13b3b9 100644 --- a/lib/redux/project/project_state.dart +++ b/lib/redux/project/project_state.dart @@ -30,9 +30,9 @@ abstract class ProjectState @memoized int get hashCode; - BuiltMap get map; + BuiltMap get map; - ProjectEntity get(String projectId) { + ProjectEntity? get(String projectId) { if (map.containsKey(projectId)) { return map[projectId]; } else { @@ -43,7 +43,7 @@ abstract class ProjectState BuiltList get list; ProjectState loadProjects(BuiltList clients) { - final map = Map.fromIterable( + final map = Map.fromIterable( clients, key: (dynamic item) => item.id, value: (dynamic item) => item, @@ -60,7 +60,7 @@ abstract class ProjectState abstract class ProjectUIState extends Object with EntityUIState implements Built { - factory ProjectUIState(PrefStateSortField sortField) { + factory ProjectUIState(PrefStateSortField? sortField) { return _$ProjectUIState._( listUIState: ListUIState(sortField?.field ?? ProjectFields.number, sortAscending: sortField?.ascending ?? false), @@ -76,14 +76,13 @@ abstract class ProjectUIState extends Object @memoized int get hashCode; - @nullable - ProjectEntity get editing; + ProjectEntity? get editing; @override - bool get isCreatingNew => editing.isNew; + bool get isCreatingNew => editing!.isNew; @override - String get editingId => editing.id; + String get editingId => editing!.id; static Serializer get serializer => _$projectUIStateSerializer; diff --git a/lib/redux/project/project_state.g.dart b/lib/redux/project/project_state.g.dart index 14ac73793..001f14250 100644 --- a/lib/redux/project/project_state.g.dart +++ b/lib/redux/project/project_state.g.dart @@ -18,13 +18,15 @@ class _$ProjectStateSerializer implements StructuredSerializer { final String wireName = 'ProjectState'; @override - Iterable serialize(Serializers serializers, ProjectState object, + Iterable serialize(Serializers serializers, ProjectState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'map', serializers.serialize(object.map, - specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(ProjectEntity)])), + specifiedType: const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(ProjectEntity) + ])), 'list', serializers.serialize(object.list, specifiedType: @@ -35,28 +37,29 @@ class _$ProjectStateSerializer implements StructuredSerializer { } @override - ProjectState deserialize(Serializers serializers, Iterable serialized, + ProjectState deserialize( + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ProjectStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'map': result.map.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(ProjectEntity) - ]))); + const FullType.nullable(String), + const FullType.nullable(ProjectEntity) + ]))!); break; case 'list': result.list.replace(serializers.deserialize(value, - specifiedType: - const FullType(BuiltList, const [const FullType(String)])) - as BuiltList); + specifiedType: const FullType( + BuiltList, const [const FullType(String)]))! + as BuiltList); break; } } @@ -73,9 +76,9 @@ class _$ProjectUIStateSerializer final String wireName = 'ProjectUIState'; @override - Iterable serialize(Serializers serializers, ProjectUIState object, + Iterable serialize(Serializers serializers, ProjectUIState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'listUIState', serializers.serialize(object.listUIState, specifiedType: const FullType(ListUIState)), @@ -83,7 +86,7 @@ class _$ProjectUIStateSerializer serializers.serialize(object.tabIndex, specifiedType: const FullType(int)), ]; - Object value; + Object? value; value = object.editing; if (value != null) { result @@ -110,35 +113,35 @@ class _$ProjectUIStateSerializer @override ProjectUIState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ProjectUIStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'editing': result.editing.replace(serializers.deserialize(value, - specifiedType: const FullType(ProjectEntity)) as ProjectEntity); + specifiedType: const FullType(ProjectEntity))! as ProjectEntity); break; case 'listUIState': result.listUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(ListUIState)) as ListUIState); + specifiedType: const FullType(ListUIState))! as ListUIState); break; case 'selectedId': result.selectedId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'forceSelected': result.forceSelected = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'tabIndex': result.tabIndex = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; } } @@ -149,14 +152,14 @@ class _$ProjectUIStateSerializer class _$ProjectState extends ProjectState { @override - final BuiltMap map; + final BuiltMap map; @override final BuiltList list; - factory _$ProjectState([void Function(ProjectStateBuilder) updates]) => + factory _$ProjectState([void Function(ProjectStateBuilder)? updates]) => (new ProjectStateBuilder()..update(updates))._build(); - _$ProjectState._({this.map, this.list}) : super._() { + _$ProjectState._({required this.map, required this.list}) : super._() { BuiltValueNullFieldError.checkNotNull(map, r'ProjectState', 'map'); BuiltValueNullFieldError.checkNotNull(list, r'ProjectState', 'list'); } @@ -174,10 +177,10 @@ class _$ProjectState extends ProjectState { return other is ProjectState && map == other.map && list == other.list; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, map.hashCode); _$hash = $jc(_$hash, list.hashCode); @@ -196,16 +199,16 @@ class _$ProjectState extends ProjectState { class ProjectStateBuilder implements Builder { - _$ProjectState _$v; + _$ProjectState? _$v; - MapBuilder _map; - MapBuilder get map => - _$this._map ??= new MapBuilder(); - set map(MapBuilder map) => _$this._map = map; + MapBuilder? _map; + MapBuilder get map => + _$this._map ??= new MapBuilder(); + set map(MapBuilder? map) => _$this._map = map; - ListBuilder _list; + ListBuilder? _list; ListBuilder get list => _$this._list ??= new ListBuilder(); - set list(ListBuilder list) => _$this._list = list; + set list(ListBuilder? list) => _$this._list = list; ProjectStateBuilder(); @@ -226,7 +229,7 @@ class ProjectStateBuilder } @override - void update(void Function(ProjectStateBuilder) updates) { + void update(void Function(ProjectStateBuilder)? updates) { if (updates != null) updates(this); } @@ -239,7 +242,7 @@ class ProjectStateBuilder _$result = _$v ?? new _$ProjectState._(map: map.build(), list: list.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'map'; map.build(); @@ -258,29 +261,29 @@ class ProjectStateBuilder class _$ProjectUIState extends ProjectUIState { @override - final ProjectEntity editing; + final ProjectEntity? editing; @override final ListUIState listUIState; @override - final String selectedId; + final String? selectedId; @override - final bool forceSelected; + final bool? forceSelected; @override final int tabIndex; @override - final Completer saveCompleter; + final Completer? saveCompleter; @override - final Completer cancelCompleter; + final Completer? cancelCompleter; - factory _$ProjectUIState([void Function(ProjectUIStateBuilder) updates]) => + factory _$ProjectUIState([void Function(ProjectUIStateBuilder)? updates]) => (new ProjectUIStateBuilder()..update(updates))._build(); _$ProjectUIState._( {this.editing, - this.listUIState, + required this.listUIState, this.selectedId, this.forceSelected, - this.tabIndex, + required this.tabIndex, this.saveCompleter, this.cancelCompleter}) : super._() { @@ -311,10 +314,10 @@ class _$ProjectUIState extends ProjectUIState { cancelCompleter == other.cancelCompleter; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, editing.hashCode); _$hash = $jc(_$hash, listUIState.hashCode); @@ -343,40 +346,40 @@ class _$ProjectUIState extends ProjectUIState { class ProjectUIStateBuilder implements Builder { - _$ProjectUIState _$v; + _$ProjectUIState? _$v; - ProjectEntityBuilder _editing; + ProjectEntityBuilder? _editing; ProjectEntityBuilder get editing => _$this._editing ??= new ProjectEntityBuilder(); - set editing(ProjectEntityBuilder editing) => _$this._editing = editing; + set editing(ProjectEntityBuilder? editing) => _$this._editing = editing; - ListUIStateBuilder _listUIState; + ListUIStateBuilder? _listUIState; ListUIStateBuilder get listUIState => _$this._listUIState ??= new ListUIStateBuilder(); - set listUIState(ListUIStateBuilder listUIState) => + set listUIState(ListUIStateBuilder? listUIState) => _$this._listUIState = listUIState; - String _selectedId; - String get selectedId => _$this._selectedId; - set selectedId(String selectedId) => _$this._selectedId = selectedId; + String? _selectedId; + String? get selectedId => _$this._selectedId; + set selectedId(String? selectedId) => _$this._selectedId = selectedId; - bool _forceSelected; - bool get forceSelected => _$this._forceSelected; - set forceSelected(bool forceSelected) => + bool? _forceSelected; + bool? get forceSelected => _$this._forceSelected; + set forceSelected(bool? forceSelected) => _$this._forceSelected = forceSelected; - int _tabIndex; - int get tabIndex => _$this._tabIndex; - set tabIndex(int tabIndex) => _$this._tabIndex = tabIndex; + int? _tabIndex; + int? get tabIndex => _$this._tabIndex; + set tabIndex(int? tabIndex) => _$this._tabIndex = tabIndex; - Completer _saveCompleter; - Completer get saveCompleter => _$this._saveCompleter; - set saveCompleter(Completer saveCompleter) => + Completer? _saveCompleter; + Completer? get saveCompleter => _$this._saveCompleter; + set saveCompleter(Completer? saveCompleter) => _$this._saveCompleter = saveCompleter; - Completer _cancelCompleter; - Completer get cancelCompleter => _$this._cancelCompleter; - set cancelCompleter(Completer cancelCompleter) => + Completer? _cancelCompleter; + Completer? get cancelCompleter => _$this._cancelCompleter; + set cancelCompleter(Completer? cancelCompleter) => _$this._cancelCompleter = cancelCompleter; ProjectUIStateBuilder(); @@ -403,7 +406,7 @@ class ProjectUIStateBuilder } @override - void update(void Function(ProjectUIStateBuilder) updates) { + void update(void Function(ProjectUIStateBuilder)? updates) { if (updates != null) updates(this); } @@ -424,7 +427,7 @@ class ProjectUIStateBuilder saveCompleter: saveCompleter, cancelCompleter: cancelCompleter); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'editing'; _editing?.build(); diff --git a/lib/redux/purchase_order/purchase_order_actions.dart b/lib/redux/purchase_order/purchase_order_actions.dart index ae82cd19c..53b68a14c 100644 --- a/lib/redux/purchase_order/purchase_order_actions.dart +++ b/lib/redux/purchase_order/purchase_order_actions.dart @@ -26,54 +26,54 @@ class ViewPurchaseOrderList implements PersistUI { }); final bool force; - final int page; + final int? page; } class ViewPurchaseOrder implements PersistUI, PersistPrefs { ViewPurchaseOrder({ - @required this.purchaseOrderId, + required this.purchaseOrderId, this.force = false, }); - final String purchaseOrderId; + final String? purchaseOrderId; final bool force; } class EditPurchaseOrder implements PersistUI, PersistPrefs { EditPurchaseOrder( - {@required this.purchaseOrder, + {required this.purchaseOrder, this.completer, this.purchaseOrderItemIndex, this.cancelCompleter, this.force = false}); final InvoiceEntity purchaseOrder; - final Completer completer; - final int purchaseOrderItemIndex; - final Completer cancelCompleter; + final Completer? completer; + final int? purchaseOrderItemIndex; + final Completer? cancelCompleter; final bool force; } class ShowEmailPurchaseOrder { ShowEmailPurchaseOrder({this.purchaseOrder, this.context, this.completer}); - final InvoiceEntity purchaseOrder; - final BuildContext context; - final Completer completer; + final InvoiceEntity? purchaseOrder; + final BuildContext? context; + final Completer? completer; } class ShowPdfPurchaseOrder { ShowPdfPurchaseOrder({this.purchaseOrder, this.context, this.activityId}); - final InvoiceEntity purchaseOrder; - final BuildContext context; - final String activityId; + final InvoiceEntity? purchaseOrder; + final BuildContext? context; + final String? activityId; } class EditPurchaseOrderItem implements PersistUI { EditPurchaseOrderItem([this.itemIndex]); - final int itemIndex; + final int? itemIndex; } class UpdatePurchaseOrder implements PersistUI { @@ -85,27 +85,27 @@ class UpdatePurchaseOrder implements PersistUI { class UpdatePurchaseOrderVendor implements PersistUI { UpdatePurchaseOrderVendor({this.vendor}); - final VendorEntity vendor; + final VendorEntity? vendor; } class LoadPurchaseOrder { LoadPurchaseOrder({this.completer, this.purchaseOrderId}); - final Completer completer; - final String purchaseOrderId; + final Completer? completer; + final String? purchaseOrderId; } class LoadPurchaseOrderActivity { LoadPurchaseOrderActivity({this.completer, this.purchaseOrderId}); - final Completer completer; - final String purchaseOrderId; + final Completer? completer; + final String? purchaseOrderId; } class LoadPurchaseOrders { LoadPurchaseOrders({this.completer, this.page = 1}); - final Completer completer; + final Completer? completer; final int page; } @@ -159,13 +159,13 @@ class LoadPurchaseOrdersSuccess implements StopLoading { class SavePurchaseOrderDocumentRequest implements StartSaving { SavePurchaseOrderDocumentRequest({ - @required this.isPrivate, - @required this.completer, - @required this.multipartFiles, - @required this.purchaseOrder, + required this.isPrivate, + required this.completer, + required this.multipartFiles, + required this.purchaseOrder, }); - final bool isPrivate; + final bool? isPrivate; final Completer completer; final List multipartFiles; final InvoiceEntity purchaseOrder; @@ -186,14 +186,14 @@ class SavePurchaseOrderDocumentFailure implements StopSaving { class SavePurchaseOrderRequest implements StartSaving { SavePurchaseOrderRequest({ - @required this.completer, - @required this.purchaseOrder, - @required this.action, + required this.completer, + required this.purchaseOrder, + required this.action, }); final Completer completer; final InvoiceEntity purchaseOrder; - final EntityAction action; + final EntityAction? action; } class SavePurchaseOrderSuccess implements StopSaving, PersistData, PersistUI { @@ -218,9 +218,9 @@ class BulkEmailPurchaseOrdersRequest implements StartSaving { BulkEmailPurchaseOrdersRequest( {this.completer, this.purchaseOrderIds, this.template}); - final Completer completer; - final List purchaseOrderIds; - final EmailTemplate template; + final Completer? completer; + final List? purchaseOrderIds; + final EmailTemplate? template; } class BulkEmailPurchaseOrdersSuccess implements StopSaving, PersistData { @@ -251,7 +251,7 @@ class ArchivePurchaseOrdersSuccess implements StopSaving, PersistData { class ArchivePurchaseOrdersFailure implements StopSaving { ArchivePurchaseOrdersFailure(this.purchaseOrders); - final List purchaseOrders; + final List purchaseOrders; } class DeletePurchaseOrdersRequest implements StartSaving { @@ -270,7 +270,7 @@ class DeletePurchaseOrdersSuccess implements StopSaving, PersistData { class DeletePurchaseOrdersFailure implements StopSaving { DeletePurchaseOrdersFailure(this.purchaseOrders); - final List purchaseOrders; + final List purchaseOrders; } class DownloadPurchaseOrdersRequest implements StartSaving { @@ -342,17 +342,17 @@ class RestorePurchaseOrdersSuccess implements StopSaving, PersistData { class RestorePurchaseOrdersFailure implements StopSaving { RestorePurchaseOrdersFailure(this.purchaseOrders); - final List purchaseOrders; + final List purchaseOrders; } class EmailPurchaseOrderRequest implements StartSaving { EmailPurchaseOrderRequest({ - @required this.completer, - @required this.purchaseOrderId, - @required this.template, - @required this.subject, - @required this.body, - @required this.ccEmail, + required this.completer, + required this.purchaseOrderId, + required this.template, + required this.subject, + required this.body, + required this.ccEmail, }); final Completer completer; @@ -443,7 +443,7 @@ class ApprovePurchaseOrders implements StartSaving { class ApprovePurchaseOrderSuccess implements StopSaving { ApprovePurchaseOrderSuccess({this.purchaseOrders}); - final List purchaseOrders; + final List? purchaseOrders; } class ApprovePurchaseOrderFailure implements StopSaving { @@ -455,20 +455,20 @@ class ApprovePurchaseOrderFailure implements StopSaving { class AddPurchaseOrderContact implements PersistUI { AddPurchaseOrderContact({this.contact, this.invitation}); - final VendorContactEntity contact; - final InvitationEntity invitation; + final VendorContactEntity? contact; + final InvitationEntity? invitation; } class RemovePurchaseOrderContact implements PersistUI { RemovePurchaseOrderContact({this.invitation}); - final InvitationEntity invitation; + final InvitationEntity? invitation; } class AddPurchaseOrderItem implements PersistUI { AddPurchaseOrderItem({this.purchaseOrderItem}); - final InvoiceItemEntity purchaseOrderItem; + final InvoiceItemEntity? purchaseOrderItem; } class MovePurchaseOrderItem implements PersistUI { @@ -477,8 +477,8 @@ class MovePurchaseOrderItem implements PersistUI { this.newIndex, }); - final int oldIndex; - final int newIndex; + final int? oldIndex; + final int? newIndex; } class AddPurchaseOrderItems implements PersistUI { @@ -490,8 +490,8 @@ class AddPurchaseOrderItems implements PersistUI { class UpdatePurchaseOrderItem implements PersistUI { UpdatePurchaseOrderItem({this.index, this.purchaseOrderItem}); - final int index; - final InvoiceItemEntity purchaseOrderItem; + final int? index; + final InvoiceItemEntity? purchaseOrderItem; } class DeletePurchaseOrderItem implements PersistUI { @@ -559,15 +559,15 @@ class StartPurchaseOrderMultiselect { } class AddToPurchaseOrderMultiselect { - AddToPurchaseOrderMultiselect({@required this.entity}); + AddToPurchaseOrderMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class RemoveFromPurchaseOrderMultiselect { - RemoveFromPurchaseOrderMultiselect({@required this.entity}); + RemoveFromPurchaseOrderMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class ClearPurchaseOrderMultiselect { @@ -577,25 +577,25 @@ class ClearPurchaseOrderMultiselect { class UpdatePurchaseOrderTab implements PersistUI { UpdatePurchaseOrderTab({this.tabIndex}); - final int tabIndex; + final int? tabIndex; } -void handlePurchaseOrderAction(BuildContext context, - List purchaseOrders, EntityAction action) async { +void handlePurchaseOrderAction(BuildContext? context, + List purchaseOrders, EntityAction? action) async { if (purchaseOrders.isEmpty) { return; } - final store = StoreProvider.of(context); + final store = StoreProvider.of(context!); final state = store.state; final localization = AppLocalization.of(context); - final purchaseOrder = purchaseOrders.first as InvoiceEntity; + final purchaseOrder = purchaseOrders.first as InvoiceEntity?; final purchaseOrderIds = - purchaseOrders.map((purchaseOrder) => purchaseOrder.id).toList(); + purchaseOrders.map((purchaseOrder) => purchaseOrder!.id).toList(); switch (action) { case EntityAction.edit: - editEntity(entity: purchaseOrder); + editEntity(entity: purchaseOrder!); break; case EntityAction.viewPdf: store.dispatch( @@ -603,47 +603,47 @@ void handlePurchaseOrderAction(BuildContext context, break; case EntityAction.restore: store.dispatch(RestorePurchaseOrdersRequest( - snackBarCompleter(context, localization.restoredPurchaseOrder), + snackBarCompleter(context, localization!.restoredPurchaseOrder), purchaseOrderIds)); break; case EntityAction.archive: store.dispatch(ArchivePurchaseOrdersRequest( - snackBarCompleter(context, localization.archivedPurchaseOrder), + snackBarCompleter(context, localization!.archivedPurchaseOrder), purchaseOrderIds)); break; case EntityAction.delete: store.dispatch(DeletePurchaseOrdersRequest( - snackBarCompleter(context, localization.deletedPurchaseOrder), + snackBarCompleter(context, localization!.deletedPurchaseOrder), purchaseOrderIds)); break; case EntityAction.printPdf: - final invitation = purchaseOrder.invitations.first; + final invitation = purchaseOrder!.invitations.first; final url = invitation.downloadLink; store.dispatch(StartSaving()); - final http.Response response = - await WebClient().get(url, '', rawResponse: true); + final http.Response? response = + await (WebClient().get(url, '', rawResponse: true) as FutureOr); store.dispatch(StopSaving()); - await Printing.layoutPdf(onLayout: (_) => response.bodyBytes); + await Printing.layoutPdf(onLayout: (_) => response!.bodyBytes); break; case EntityAction.bulkPrint: store.dispatch(StartSaving()); - final url = state.credentials.url + '/purchase_orders/bulk'; + final url = state.credentials.url! + '/purchase_orders/bulk'; final data = json.encode({ 'ids': purchaseOrderIds, 'action': EntityAction.bulkPrint.toApiParam() }); - final http.Response response = await WebClient() - .post(url, state.credentials.token, data: data, rawResponse: true); + final http.Response? response = await (WebClient() + .post(url, state.credentials.token, data: data, rawResponse: true) as FutureOr); store.dispatch(StopSaving()); - await Printing.layoutPdf(onLayout: (_) => response.bodyBytes); + await Printing.layoutPdf(onLayout: (_) => response!.bodyBytes); break; case EntityAction.addToInventory: store.dispatch(AddPurchaseOrdersToInventoryRequest( snackBarCompleter( context, purchaseOrders.length == 1 - ? localization.addedPurchaseOrderToInventory - : localization.addedPurchaseOrdersToInventory), + ? localization!.addedPurchaseOrderToInventory + : localization!.addedPurchaseOrdersToInventory), purchaseOrderIds)); break; case EntityAction.convertToExpense: @@ -651,21 +651,21 @@ void handlePurchaseOrderAction(BuildContext context, snackBarCompleter( context, purchaseOrders.length == 1 - ? localization.convertedToExpense - : localization.convertedToExpenses), + ? localization!.convertedToExpense + : localization!.convertedToExpenses), purchaseOrderIds)); break; case EntityAction.viewExpense: viewEntityById( - entityId: purchaseOrder.expenseId, entityType: EntityType.expense); + entityId: purchaseOrder!.expenseId, entityType: EntityType.expense); break; case EntityAction.markSent: store.dispatch(MarkPurchaseOrdersSentRequest( snackBarCompleter( context, purchaseOrders.length == 1 - ? localization.markedPurchaseOrderAsSent - : localization.markedPurchaseOrdersAsSent), + ? localization!.markedPurchaseOrderAsSent + : localization!.markedPurchaseOrdersAsSent), purchaseOrderIds)); break; case EntityAction.cancelInvoice: @@ -673,8 +673,8 @@ void handlePurchaseOrderAction(BuildContext context, snackBarCompleter( context, purchaseOrders.length == 1 - ? localization.cancelledPurchaseOrder - : localization.cancelledPurchaseOrders), + ? localization!.cancelledPurchaseOrder + : localization!.cancelledPurchaseOrders), purchaseOrderIds)); break; case EntityAction.accept: @@ -682,8 +682,8 @@ void handlePurchaseOrderAction(BuildContext context, snackBarCompleter( context, purchaseOrders.length == 1 - ? localization.acceptedPurchaseOrder - : localization.acceptedPurchaseOrders), + ? localization!.acceptedPurchaseOrder + : localization!.acceptedPurchaseOrders), purchaseOrderIds)); break; case EntityAction.toggleMultiselect: @@ -696,7 +696,7 @@ void handlePurchaseOrderAction(BuildContext context, } for (final purchaseOrder in purchaseOrders) { - if (!store.state.purchaseOrderListState.isSelected(purchaseOrder.id)) { + if (!store.state.purchaseOrderListState.isSelected(purchaseOrder!.id)) { store.dispatch(AddToPurchaseOrderMultiselect(entity: purchaseOrder)); } else { store.dispatch( @@ -705,7 +705,7 @@ void handlePurchaseOrderAction(BuildContext context, } break; case EntityAction.vendorPortal: - launchUrl(Uri.parse(purchaseOrder.invitationSilentLink)); + launchUrl(Uri.parse(purchaseOrder!.invitationSilentLink)); break; case EntityAction.sendEmail: case EntityAction.bulkSendEmail: @@ -714,7 +714,7 @@ void handlePurchaseOrderAction(BuildContext context, purchaseOrders.forEach((purchaseOrder) { final vendor = state.vendorState.get( (purchaseOrder as InvoiceEntity).vendorId, - ); + )!; if (!vendor.hasEmailAddress) { emailValid = false; } @@ -722,13 +722,13 @@ void handlePurchaseOrderAction(BuildContext context, if (!emailValid) { showMessageDialog( context: context, - message: localization.vendorEmailNotSet, + message: localization!.vendorEmailNotSet, secondaryActions: [ TextButton( onPressed: () { Navigator.of(context).pop(); editEntity( - entity: state.vendorState.get(purchaseOrder.vendorId)); + entity: state.vendorState.get(purchaseOrder!.vendorId)!); }, child: Text(localization.editVendor.toUpperCase())) ]); @@ -737,14 +737,14 @@ void handlePurchaseOrderAction(BuildContext context, if (action == EntityAction.sendEmail) { store.dispatch(ShowEmailPurchaseOrder( completer: snackBarCompleter( - context, localization.emailedPurchaseOrder), + context, localization!.emailedPurchaseOrder), purchaseOrder: purchaseOrder, context: context)); } else if (action == EntityAction.schedule) { if (!state.isProPlan) { showMessageDialog( context: context, - message: localization.upgradeToPaidPlanToSchedule, + message: localization!.upgradeToPaidPlanToSchedule, secondaryActions: [ TextButton( onPressed: () { @@ -762,11 +762,11 @@ void handlePurchaseOrderAction(BuildContext context, entity: ScheduleEntity(ScheduleEntity.TEMPLATE_EMAIL_RECORD) .rebuild((b) => b ..parameters.entityType = EntityType.purchaseOrder.apiValue - ..parameters.entityId = purchaseOrder.id)); + ..parameters.entityId = purchaseOrder!.id)); } else { confirmCallback( context: context, - message: localization.bulkEmailPurchaseOrders, + message: localization!.bulkEmailPurchaseOrders, callback: (_) { store.dispatch(BulkEmailPurchaseOrdersRequest( completer: snackBarCompleter( @@ -782,7 +782,7 @@ void handlePurchaseOrderAction(BuildContext context, case EntityAction.cloneToQuote: final designId = getDesignIdForClientByEntity( state: state, - clientId: purchaseOrder.clientId, + clientId: purchaseOrder!.clientId, entityType: EntityType.purchaseOrder); createEntity( context: context, @@ -798,7 +798,7 @@ void handlePurchaseOrderAction(BuildContext context, case EntityAction.cloneToInvoice: final designId = getDesignIdForClientByEntity( state: state, - clientId: purchaseOrder.clientId, + clientId: purchaseOrder!.clientId, entityType: EntityType.invoice); createEntity( context: context, @@ -810,12 +810,12 @@ void handlePurchaseOrderAction(BuildContext context, break; case EntityAction.clone: case EntityAction.cloneToPurchaseOrder: - createEntity(context: context, entity: purchaseOrder.clone); + createEntity(context: context, entity: purchaseOrder!.clone); break; case EntityAction.cloneToCredit: final designId = getDesignIdForClientByEntity( state: state, - clientId: purchaseOrder.clientId, + clientId: purchaseOrder!.clientId, entityType: EntityType.credit); createEntity( context: context, @@ -828,7 +828,7 @@ void handlePurchaseOrderAction(BuildContext context, case EntityAction.cloneToRecurring: final designId = getDesignIdForClientByEntity( state: state, - clientId: purchaseOrder.clientId, + clientId: purchaseOrder!.clientId, entityType: EntityType.invoice); createEntity( context: context, @@ -839,11 +839,11 @@ void handlePurchaseOrderAction(BuildContext context, .recreateInvitations(state)); break; case EntityAction.download: - launchUrl(Uri.parse(purchaseOrder.invitationDownloadLink)); + launchUrl(Uri.parse(purchaseOrder!.invitationDownloadLink)); break; case EntityAction.bulkDownload: store.dispatch(DownloadPurchaseOrdersRequest( - snackBarCompleter(context, localization.exportedData), + snackBarCompleter(context, localization!.exportedData), purchaseOrderIds)); break; case EntityAction.more: diff --git a/lib/redux/purchase_order/purchase_order_middleware.dart b/lib/redux/purchase_order/purchase_order_middleware.dart index c6f9ce5bb..ce34216da 100644 --- a/lib/redux/purchase_order/purchase_order_middleware.dart +++ b/lib/redux/purchase_order/purchase_order_middleware.dart @@ -86,21 +86,21 @@ List> createStorePurchaseOrdersMiddleware([ Middleware _viewPurchaseOrder() { return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as ViewPurchaseOrder; + final action = dynamicAction as ViewPurchaseOrder?; next(action); store.dispatch(UpdateCurrentRoute(PurchaseOrderViewScreen.route)); if (store.state.prefState.isMobile) { - await navigatorKey.currentState.pushNamed(PurchaseOrderViewScreen.route); + await navigatorKey.currentState!.pushNamed(PurchaseOrderViewScreen.route); } }; } Middleware _viewPurchaseOrderList() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as ViewPurchaseOrderList; + final action = dynamicAction as ViewPurchaseOrderList?; next(action); @@ -111,7 +111,7 @@ Middleware _viewPurchaseOrderList() { store.dispatch(UpdateCurrentRoute(PurchaseOrderScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamedAndRemoveUntil( + navigatorKey.currentState!.pushNamedAndRemoveUntil( PurchaseOrderScreen.route, (Route route) => false); } }; @@ -119,14 +119,14 @@ Middleware _viewPurchaseOrderList() { Middleware _editPurchaseOrder() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as EditPurchaseOrder; + final action = dynamicAction as EditPurchaseOrder?; next(action); store.dispatch(UpdateCurrentRoute(PurchaseOrderEditScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(PurchaseOrderEditScreen.route); + navigatorKey.currentState!.pushNamed(PurchaseOrderEditScreen.route); } }; } @@ -134,18 +134,18 @@ Middleware _editPurchaseOrder() { Middleware _showEmailPurchaseOrder() { return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as ShowEmailPurchaseOrder; + final action = dynamicAction as ShowEmailPurchaseOrder?; next(action); store.dispatch(UpdateCurrentRoute(PurchaseOrderEmailScreen.route)); if (store.state.prefState.isMobile) { - final emailWasSent = await navigatorKey.currentState + final emailWasSent = await navigatorKey.currentState! .pushNamed(PurchaseOrderEmailScreen.route); - if (action.completer != null && emailWasSent != null && emailWasSent) { - action.completer.complete(null); + if (action!.completer != null && emailWasSent != null && emailWasSent as bool) { + action.completer!.complete(null); } } }; @@ -154,14 +154,14 @@ Middleware _showEmailPurchaseOrder() { Middleware _showPdfPurchaseOrder() { return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as ShowPdfPurchaseOrder; + final action = dynamicAction as ShowPdfPurchaseOrder?; next(action); store.dispatch(UpdateCurrentRoute(PurchaseOrderPdfScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(PurchaseOrderPdfScreen.route); + navigatorKey.currentState!.pushNamed(PurchaseOrderPdfScreen.route); } }; } @@ -391,7 +391,7 @@ Middleware _emailPurchaseOrder(PurchaseOrderRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as EmailPurchaseOrderRequest; final origPurchaseOrder = - store.state.purchaseOrderState.map[action.purchaseOrderId]; + store.state.purchaseOrderState.map[action.purchaseOrderId]!; repository .emailPurchaseOrder( store.state.credentials, @@ -425,7 +425,7 @@ Middleware _savePurchaseOrder(PurchaseOrderRepository repository) { // remove any empty line items final updatedPurchaseOrder = action.purchaseOrder.rebuild((b) => b ..lineItems.replace( - action.purchaseOrder.lineItems.where((item) => !item.isEmpty))); + action.purchaseOrder.lineItems.where((item) => !item!.isEmpty))); repository .saveData( @@ -464,13 +464,13 @@ Middleware _loadPurchaseOrder(PurchaseOrderRepository repository) { store.dispatch(LoadPurchaseOrderSuccess(purchaseOrder)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(LoadPurchaseOrderFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -508,18 +508,18 @@ Middleware _bulkEmailPurchaseOrders( final action = dynamicAction as BulkEmailPurchaseOrdersRequest; repository - .bulkAction(store.state.credentials, action.purchaseOrderIds, + .bulkAction(store.state.credentials, action.purchaseOrderIds!, EntityAction.sendEmail) .then((List purchaseOrders) { store.dispatch(BulkEmailPurchaseOrdersSuccess(purchaseOrders)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(BulkEmailPurchaseOrdersFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -560,7 +560,7 @@ Middleware _loadPurchaseOrders(PurchaseOrderRepository repository) { )); } else { if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } store.dispatch(LoadExpenses()); } @@ -568,7 +568,7 @@ Middleware _loadPurchaseOrders(PurchaseOrderRepository repository) { print(error); store.dispatch(LoadPurchaseOrdersFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -578,14 +578,14 @@ Middleware _loadPurchaseOrders(PurchaseOrderRepository repository) { Middleware _saveDocument(PurchaseOrderRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as SavePurchaseOrderDocumentRequest; + final action = dynamicAction as SavePurchaseOrderDocumentRequest?; if (store.state.isEnterprisePlan) { repository .uploadDocument( store.state.credentials, - action.purchaseOrder, + action!.purchaseOrder, action.multipartFiles, - action.isPrivate, + action.isPrivate!, ) .then((purchaseOrder) { store.dispatch(SavePurchaseOrderSuccess(purchaseOrder)); @@ -607,7 +607,7 @@ Middleware _saveDocument(PurchaseOrderRepository repository) { } else { const error = 'Uploading documents requires an enterprise plan'; store.dispatch(SavePurchaseOrderDocumentFailure(error)); - action.completer.completeError(error); + action!.completer.completeError(error); } next(action); diff --git a/lib/redux/purchase_order/purchase_order_reducer.dart b/lib/redux/purchase_order/purchase_order_reducer.dart index abdaab8a5..e6e7a035e 100644 --- a/lib/redux/purchase_order/purchase_order_reducer.dart +++ b/lib/redux/purchase_order/purchase_order_reducer.dart @@ -15,7 +15,7 @@ EntityUIState purchaseOrderUIReducer( PurchaseOrderUIState state, dynamic action) { return state.rebuild((b) => b ..listUIState.replace(purchaseOrderListReducer(state.listUIState, action)) - ..editing.replace(editingReducer(state.editing, action)) + ..editing.replace(editingReducer(state.editing, action)!) ..editingItemIndex = editingItemReducer(state.editingItemIndex, action) ..selectedId = selectedIdReducer(state.selectedId, action) ..forceSelected = forceSelectedReducer(state.forceSelected, action) @@ -24,41 +24,41 @@ EntityUIState purchaseOrderUIReducer( historyActivityIdReducer(state.historyActivityId, action)); } -final forceSelectedReducer = combineReducers([ - TypedReducer((completer, action) => true), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer( +final forceSelectedReducer = combineReducers([ + TypedReducer((completer, action) => true), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer( (completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer( + TypedReducer((completer, action) => false), + TypedReducer( (completer, action) => false), - TypedReducer( + TypedReducer( (completer, action) => false), - TypedReducer( + TypedReducer( (completer, action) => false), - TypedReducer( + TypedReducer( (completer, action) => false), ]); -final tabIndexReducer = combineReducers([ - TypedReducer((completer, action) { +final int? Function(int, dynamic) tabIndexReducer = combineReducers([ + TypedReducer((completer, action) { return action.tabIndex; }), - TypedReducer((completer, action) { + TypedReducer((completer, action) { return 0; }), ]); -final historyActivityIdReducer = combineReducers([ - TypedReducer( +final historyActivityIdReducer = combineReducers([ + TypedReducer( (index, action) => action.activityId), ]); -final editingItemReducer = combineReducers([ - TypedReducer( +final editingItemReducer = combineReducers([ + TypedReducer( (index, action) => action.purchaseOrderItemIndex), - TypedReducer((index, action) => action.itemIndex), + TypedReducer((index, action) => action.itemIndex), ]); Reducer dropdownFilterReducer = combineReducers([ @@ -71,40 +71,40 @@ String filterpurchaseOrderDropdownReducer( return action.filter; } -Reducer selectedIdReducer = combineReducers([ - TypedReducer((completer, action) => ''), - TypedReducer((completer, action) => ''), - TypedReducer((selectedId, action) => +Reducer selectedIdReducer = combineReducers([ + TypedReducer((completer, action) => ''), + TypedReducer((completer, action) => ''), + TypedReducer((selectedId, action) => action.entityType == EntityType.purchaseOrder ? action.entityId : selectedId), - TypedReducer( + TypedReducer( (selectedId, action) => action.purchaseOrderId), - TypedReducer( + TypedReducer( (selectedId, action) => action.purchaseOrder.id), - TypedReducer( - (selectedId, action) => action.purchaseOrder.id), - TypedReducer( - (selectedId, action) => action.purchaseOrder.id), - TypedReducer( + TypedReducer( + (selectedId, action) => action.purchaseOrder!.id), + TypedReducer( + (selectedId, action) => action.purchaseOrder!.id), + TypedReducer( (selectedId, action) => action.clearSelection ? '' : selectedId), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer( + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer( (selectedId, action) => ''), - TypedReducer( + TypedReducer( (selectedId, action) => ''), - TypedReducer( + TypedReducer( (selectedId, action) => ''), - TypedReducer( + TypedReducer( (selectedId, action) => ''), - TypedReducer( + TypedReducer( (selectedId, action) => ''), - TypedReducer((selectedId, action) => + TypedReducer((selectedId, action) => action.entityType == EntityType.purchaseOrder ? '' : selectedId), - TypedReducer( + TypedReducer( (selectedId, action) => action.clearSelection ? '' : action.entityType == EntityType.purchaseOrder @@ -112,99 +112,99 @@ Reducer selectedIdReducer = combineReducers([ : selectedId), ]); -final editingReducer = combineReducers([ - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer((purchaseOrder, action) { +final editingReducer = combineReducers([ + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer((purchaseOrder, action) { return action.purchaseOrder.rebuild((b) => b..isChanged = true); }), - TypedReducer((invoice, action) { - return invoice.rebuild((b) => b..isChanged = true); + TypedReducer((invoice, action) { + return invoice!.rebuild((b) => b..isChanged = true); }), - TypedReducer((invoice, action) { - return invoice.moveLineItem(action.oldIndex, action.newIndex); + TypedReducer((invoice, action) { + return invoice!.moveLineItem(action.oldIndex!, action.newIndex); }), - TypedReducer((invoice, action) { - return invoice.rebuild((b) => b..isChanged = true); + TypedReducer((invoice, action) { + return invoice!.rebuild((b) => b..isChanged = true); }), - TypedReducer((invoice, action) { - return invoice.rebuild((b) => b..isChanged = true); + TypedReducer((invoice, action) { + return invoice!.rebuild((b) => b..isChanged = true); }), - TypedReducer( + TypedReducer( (purchaseOrder, action) { final vendor = action.vendor; - return purchaseOrder.rebuild((b) => b + return purchaseOrder!.rebuild((b) => b ..isChanged = true ..vendorId = vendor?.id ?? '' ..invitations.replace((vendor?.emailContacts ?? []) - .map((contact) => InvitationEntity(vendorContactId: contact.id)) + .map((contact) => InvitationEntity(vendorContactId: contact!.id)) .toList())); }), - TypedReducer( + TypedReducer( (purchaseOrders, action) { return action.purchaseOrders[0]; }), - TypedReducer( + TypedReducer( (purchaseOrders, action) { return action.purchaseOrders[0]; }), - TypedReducer( + TypedReducer( (purchaseOrders, action) { return action.purchaseOrders[0]; }), - TypedReducer(_addPurchaseOrderItem), - TypedReducer(_addPurchaseOrderItems), - TypedReducer( + TypedReducer(_addPurchaseOrderItem), + TypedReducer(_addPurchaseOrderItems), + TypedReducer( _removePurchaseOrderItem), - TypedReducer( + TypedReducer( _updatePurchaseOrderItem), - TypedReducer(_clearEditing), - TypedReducer((invoice, action) { - return invoice.rebuild((b) => b + TypedReducer(_clearEditing), + TypedReducer((invoice, action) { + return invoice!.rebuild((b) => b ..invitations.add(action.invitation ?? - InvitationEntity(vendorContactId: action.contact.id))); + InvitationEntity(vendorContactId: action.contact!.id))); }), - TypedReducer((invoice, action) { - return invoice.rebuild((b) => b..invitations.remove(action.invitation)); + TypedReducer((invoice, action) { + return invoice!.rebuild((b) => b..invitations.remove(action.invitation)); }), ]); -InvoiceEntity _clearEditing(InvoiceEntity purchaseOrder, dynamic action) { +InvoiceEntity _clearEditing(InvoiceEntity? purchaseOrder, dynamic action) { return InvoiceEntity(); } -InvoiceEntity _updateEditing(InvoiceEntity purchaseOrder, dynamic action) { +InvoiceEntity? _updateEditing(InvoiceEntity? purchaseOrder, dynamic action) { return action.purchaseOrder; } InvoiceEntity _addPurchaseOrderItem( - InvoiceEntity purchaseOrder, AddPurchaseOrderItem action) { - return purchaseOrder.rebuild( + InvoiceEntity? purchaseOrder, AddPurchaseOrderItem action) { + return purchaseOrder!.rebuild( (b) => b..lineItems.add(action.purchaseOrderItem ?? InvoiceItemEntity())); } InvoiceEntity _addPurchaseOrderItems( - InvoiceEntity purchaseOrder, AddPurchaseOrderItems action) { - return purchaseOrder.rebuild((b) => b..lineItems.addAll(action.lineItems)); + InvoiceEntity? purchaseOrder, AddPurchaseOrderItems action) { + return purchaseOrder!.rebuild((b) => b..lineItems.addAll(action.lineItems)); } -InvoiceEntity _removePurchaseOrderItem( - InvoiceEntity purchaseOrder, DeletePurchaseOrderItem action) { - if (purchaseOrder.lineItems.length <= action.index) { +InvoiceEntity? _removePurchaseOrderItem( + InvoiceEntity? purchaseOrder, DeletePurchaseOrderItem action) { + if (purchaseOrder!.lineItems.length <= action.index) { return purchaseOrder; } return purchaseOrder.rebuild((b) => b..lineItems.removeAt(action.index)); } -InvoiceEntity _updatePurchaseOrderItem( - InvoiceEntity purchaseOrder, UpdatePurchaseOrderItem action) { - if (purchaseOrder.lineItems.length <= action.index) { +InvoiceEntity? _updatePurchaseOrderItem( + InvoiceEntity? purchaseOrder, UpdatePurchaseOrderItem action) { + if (purchaseOrder!.lineItems.length <= action.index!) { return purchaseOrder; } return purchaseOrder - .rebuild((b) => b..lineItems[action.index] = action.purchaseOrderItem); + .rebuild((b) => b..lineItems[action.index!] = action.purchaseOrderItem); } final purchaseOrderListReducer = combineReducers([ @@ -323,7 +323,7 @@ ListUIState _filterPurchaseOrders( ListUIState _sortPurchaseOrders( ListUIState purchaseOrderListState, SortPurchaseOrders action) { return purchaseOrderListState.rebuild((b) => b - ..sortAscending = b.sortField != action.field || !b.sortAscending + ..sortAscending = b.sortField != action.field || !b.sortAscending! ..sortField = action.field); } @@ -335,13 +335,13 @@ ListUIState _startListMultiselect( ListUIState _addToListMultiselect( ListUIState purchaseOrderListState, AddToPurchaseOrderMultiselect action) { return purchaseOrderListState - .rebuild((b) => b..selectedIds.add(action.entity.id)); + .rebuild((b) => b..selectedIds.add(action.entity!.id)); } ListUIState _removeFromListMultiselect(ListUIState purchaseOrderListState, RemoveFromPurchaseOrderMultiselect action) { return purchaseOrderListState - .rebuild((b) => b..selectedIds.remove(action.entity.id)); + .rebuild((b) => b..selectedIds.remove(action.entity!.id)); } ListUIState _clearListMultiselect( @@ -383,7 +383,7 @@ final purchaseOrdersReducer = combineReducers([ PurchaseOrderState _markSentPurchaseOrderSuccess( PurchaseOrderState purchaseOrderState, MarkPurchaseOrderSentSuccess action) { - final purchaseOrderMap = Map.fromIterable( + final purchaseOrderMap = Map.fromIterable( action.purchaseOrders, key: (dynamic item) => item.id, value: (dynamic item) => item, @@ -394,7 +394,7 @@ PurchaseOrderState _markSentPurchaseOrderSuccess( PurchaseOrderState _convertPurchaseOrdersToExpenses( PurchaseOrderState purchaseOrderState, ConvertPurchaseOrdersToExpensesSuccess action) { - final purchaseOrderMap = Map.fromIterable( + final purchaseOrderMap = Map.fromIterable( action.purchaseOrders, key: (dynamic item) => item.id, value: (dynamic item) => item, @@ -405,7 +405,7 @@ PurchaseOrderState _convertPurchaseOrdersToExpenses( PurchaseOrderState _addPurchaseOrdersToInventorySuccess( PurchaseOrderState purchaseOrderState, AddPurchaseOrdersToInventorySuccess action) { - final purchaseOrderMap = Map.fromIterable( + final purchaseOrderMap = Map.fromIterable( action.purchaseOrders, key: (dynamic item) => item.id, value: (dynamic item) => item, @@ -415,7 +415,7 @@ PurchaseOrderState _addPurchaseOrdersToInventorySuccess( PurchaseOrderState _acceptPurchaseOrderSuccess( PurchaseOrderState purchaseOrderState, AcceptPurchaseOrderSuccess action) { - final purchaseOrderMap = Map.fromIterable( + final purchaseOrderMap = Map.fromIterable( action.purchaseOrders, key: (dynamic item) => item.id, value: (dynamic item) => item, @@ -425,7 +425,7 @@ PurchaseOrderState _acceptPurchaseOrderSuccess( PurchaseOrderState _cancelPurchaseOrderSuccess( PurchaseOrderState purchaseOrderState, CancelPurchaseOrderSuccess action) { - final purchaseOrderMap = Map.fromIterable( + final purchaseOrderMap = Map.fromIterable( action.purchaseOrders, key: (dynamic item) => item.id, value: (dynamic item) => item, @@ -470,8 +470,8 @@ PurchaseOrderState _emailPurchaseOrderSuccess( PurchaseOrderState _approvePurchaseOrderSuccess( PurchaseOrderState purchaseOrderState, ApprovePurchaseOrderSuccess action) { - final purchaseOrderMap = Map.fromIterable( - action.purchaseOrders, + final purchaseOrderMap = Map.fromIterable( + action.purchaseOrders!, key: (dynamic item) => item.id, value: (dynamic item) => item, ); @@ -488,9 +488,9 @@ PurchaseOrderState _addPurchaseOrder( PurchaseOrderState _updatePurchaseOrder( PurchaseOrderState invoiceState, dynamic action) { - final InvoiceEntity purchaseOrder = action.purchaseOrder; + final InvoiceEntity? purchaseOrder = action.purchaseOrder; return invoiceState.rebuild((b) => b - ..map[purchaseOrder.id] = purchaseOrder + ..map[purchaseOrder!.id] = purchaseOrder .rebuild((b) => b..loadedAt = DateTime.now().millisecondsSinceEpoch)); } @@ -501,6 +501,6 @@ PurchaseOrderState _setLoadedPurchaseOrders( PurchaseOrderState _setLoadedCompany( PurchaseOrderState purchaseOrderState, LoadCompanySuccess action) { - final company = action.userCompany.company; + final company = action.userCompany.company!; return purchaseOrderState.loadPurchaseOrders(company.purchaseOrders); } diff --git a/lib/redux/purchase_order/purchase_order_selectors.dart b/lib/redux/purchase_order/purchase_order_selectors.dart index 96f9a8364..a79d8665c 100644 --- a/lib/redux/purchase_order/purchase_order_selectors.dart +++ b/lib/redux/purchase_order/purchase_order_selectors.dart @@ -6,44 +6,44 @@ import 'package:built_collection/built_collection.dart'; import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; -VendorEntity purchaseOrderClientSelector( +VendorEntity? purchaseOrderClientSelector( InvoiceEntity purchaseOrder, BuiltMap vendorMap) { return vendorMap[purchaseOrder.vendorId]; } -VendorContactEntity purchaseOrderContactSelector( +VendorContactEntity? purchaseOrderContactSelector( InvoiceEntity purchaseOrder, VendorEntity vendor) { var contactIds = purchaseOrder.invitations .map((invitation) => invitation.clientContactId) .toList(); - if (contactIds.contains(vendor.primaryContact.id)) { - contactIds = [vendor.primaryContact.id]; + if (contactIds.contains(vendor.primaryContact!.id)) { + contactIds = [vendor.primaryContact!.id]; } return vendor.contacts - .firstWhere((contact) => contactIds.contains(contact.id), orElse: null); + .firstWhere((contact) => contactIds.contains(contact!.id), orElse: null); } var memoizedDropdownPurchaseOrderList = memo7( - (BuiltMap purchaseOrderMap, + (BuiltMap purchaseOrderMap, BuiltList purchaseOrderList, StaticState staticState, - BuiltMap userMap, - BuiltMap clientMap, - BuiltMap vendorMap, + BuiltMap userMap, + BuiltMap clientMap, + BuiltMap vendorMap, String clientId) => dropdownPurchaseOrdersSelector(purchaseOrderMap, purchaseOrderList, staticState, userMap, clientMap, vendorMap, clientId)); List dropdownPurchaseOrdersSelector( - BuiltMap purchaseOrderMap, + BuiltMap purchaseOrderMap, BuiltList purchaseOrderList, StaticState staticState, - BuiltMap userMap, - BuiltMap clientMap, - BuiltMap vendorMap, + BuiltMap userMap, + BuiltMap clientMap, + BuiltMap vendorMap, String clientId) { final list = purchaseOrderList.where((purchaseOrderId) { - final purchaseOrder = purchaseOrderMap[purchaseOrderId]; + final purchaseOrder = purchaseOrderMap[purchaseOrderId]!; /* if (clientId != null && clientId > 0 && purchaseOrder.clientId != clientId) { return false; @@ -53,7 +53,7 @@ List dropdownPurchaseOrdersSelector( }).toList(); list.sort((purchaseOrderAId, purchaseOrderBId) { - final purchaseOrderA = purchaseOrderMap[purchaseOrderAId]; + final purchaseOrderA = purchaseOrderMap[purchaseOrderAId]!; final purchaseOrderB = purchaseOrderMap[purchaseOrderBId]; return purchaseOrderA.compareTo( invoice: purchaseOrderB, @@ -70,30 +70,30 @@ List dropdownPurchaseOrdersSelector( var memoizedFilteredPurchaseOrderList = memo7(( SelectionState selectionState, - BuiltMap invoiceMap, + BuiltMap invoiceMap, BuiltList invoiceList, - BuiltMap clientMap, - BuiltMap vendorMap, + BuiltMap clientMap, + BuiltMap vendorMap, ListUIState invoiceListState, - BuiltMap userMap, + BuiltMap userMap, ) => filteredPurchaseOrdersSelector(selectionState, invoiceMap, invoiceList, clientMap, vendorMap, invoiceListState, userMap)); List filteredPurchaseOrdersSelector( SelectionState selectionState, - BuiltMap invoiceMap, + BuiltMap invoiceMap, BuiltList invoiceList, - BuiltMap clientMap, - BuiltMap vendorMap, + BuiltMap clientMap, + BuiltMap vendorMap, ListUIState invoiceListState, - BuiltMap userMap, + BuiltMap userMap, ) { final filterEntityId = selectionState.filterEntityId; final filterEntityType = selectionState.filterEntityType; final list = invoiceList.where((invoiceId) { - final invoice = invoiceMap[invoiceId]; + final invoice = invoiceMap[invoiceId]!; final vendor = vendorMap[invoice.vendorId] ?? VendorEntity(id: invoice.vendorId); @@ -164,7 +164,7 @@ List filteredPurchaseOrdersSelector( }).toList(); list.sort((invoiceAId, invoiceBId) { - return invoiceMap[invoiceAId].compareTo( + return invoiceMap[invoiceAId]!.compareTo( invoice: invoiceMap[invoiceBId], sortField: invoiceListState.sortField, sortAscending: invoiceListState.sortAscending, @@ -178,15 +178,15 @@ List filteredPurchaseOrdersSelector( } var memoizedPurchaseOrderStatsForVendor = memo2( - (String vendorId, BuiltMap purchaseOrderMap) => + (String vendorId, BuiltMap purchaseOrderMap) => purchaseOrderStatsForVendor(vendorId, purchaseOrderMap)); EntityStats purchaseOrderStatsForVendor( - String vendorId, BuiltMap purchaseOrderMap) { + String vendorId, BuiltMap purchaseOrderMap) { int countActive = 0; int countArchived = 0; purchaseOrderMap.forEach((purchaseOrderId, purchaseOrder) { - if (purchaseOrder.vendorId == vendorId) { + if (purchaseOrder!.vendorId == vendorId) { if (purchaseOrder.isActive) { countActive++; } else if (purchaseOrder.isArchived) { diff --git a/lib/redux/purchase_order/purchase_order_state.dart b/lib/redux/purchase_order/purchase_order_state.dart index ea5d5c88c..ffa424f01 100644 --- a/lib/redux/purchase_order/purchase_order_state.dart +++ b/lib/redux/purchase_order/purchase_order_state.dart @@ -24,10 +24,10 @@ abstract class PurchaseOrderState @memoized int get hashCode; - BuiltMap get map; + BuiltMap get map; BuiltList get list; - InvoiceEntity get(String purchaseOrderId) { + InvoiceEntity? get(String purchaseOrderId) { if (map.containsKey(purchaseOrderId)) { return map[purchaseOrderId]; } else { @@ -36,7 +36,7 @@ abstract class PurchaseOrderState } PurchaseOrderState loadPurchaseOrders(BuiltList clients) { - final map = Map.fromIterable( + final map = Map.fromIterable( clients, key: (dynamic item) => item.id, value: (dynamic item) => item, @@ -54,7 +54,7 @@ abstract class PurchaseOrderState abstract class PurchaseOrderUIState extends Object with EntityUIState implements Built { - factory PurchaseOrderUIState(PrefStateSortField sortField) { + factory PurchaseOrderUIState(PrefStateSortField? sortField) { return _$PurchaseOrderUIState._( listUIState: ListUIState( sortField?.field ?? PurchaseOrderFields.number, @@ -71,22 +71,19 @@ abstract class PurchaseOrderUIState extends Object @memoized int get hashCode; - @nullable - InvoiceEntity get editing; + InvoiceEntity? get editing; - @nullable @BuiltValueField(serialize: false) - int get editingItemIndex; + int? get editingItemIndex; - @nullable @BuiltValueField(serialize: false) - String get historyActivityId; + String? get historyActivityId; @override - bool get isCreatingNew => editing.isNew; + bool get isCreatingNew => editing!.isNew; @override - String get editingId => editing.id; + String get editingId => editing!.id; static Serializer get serializer => _$purchaseOrderUIStateSerializer; diff --git a/lib/redux/purchase_order/purchase_order_state.g.dart b/lib/redux/purchase_order/purchase_order_state.g.dart index b05130c35..d69a2ddbd 100644 --- a/lib/redux/purchase_order/purchase_order_state.g.dart +++ b/lib/redux/purchase_order/purchase_order_state.g.dart @@ -19,13 +19,16 @@ class _$PurchaseOrderStateSerializer final String wireName = 'PurchaseOrderState'; @override - Iterable serialize(Serializers serializers, PurchaseOrderState object, + Iterable serialize( + Serializers serializers, PurchaseOrderState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'map', serializers.serialize(object.map, - specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(InvoiceEntity)])), + specifiedType: const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(InvoiceEntity) + ])), 'list', serializers.serialize(object.list, specifiedType: @@ -37,28 +40,28 @@ class _$PurchaseOrderStateSerializer @override PurchaseOrderState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new PurchaseOrderStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'map': result.map.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(InvoiceEntity) - ]))); + const FullType.nullable(String), + const FullType.nullable(InvoiceEntity) + ]))!); break; case 'list': result.list.replace(serializers.deserialize(value, - specifiedType: - const FullType(BuiltList, const [const FullType(String)])) - as BuiltList); + specifiedType: const FullType( + BuiltList, const [const FullType(String)]))! + as BuiltList); break; } } @@ -78,10 +81,10 @@ class _$PurchaseOrderUIStateSerializer final String wireName = 'PurchaseOrderUIState'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, PurchaseOrderUIState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'listUIState', serializers.serialize(object.listUIState, specifiedType: const FullType(ListUIState)), @@ -89,7 +92,7 @@ class _$PurchaseOrderUIStateSerializer serializers.serialize(object.tabIndex, specifiedType: const FullType(int)), ]; - Object value; + Object? value; value = object.editing; if (value != null) { result @@ -116,35 +119,35 @@ class _$PurchaseOrderUIStateSerializer @override PurchaseOrderUIState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new PurchaseOrderUIStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'editing': result.editing.replace(serializers.deserialize(value, - specifiedType: const FullType(InvoiceEntity)) as InvoiceEntity); + specifiedType: const FullType(InvoiceEntity))! as InvoiceEntity); break; case 'listUIState': result.listUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(ListUIState)) as ListUIState); + specifiedType: const FullType(ListUIState))! as ListUIState); break; case 'selectedId': result.selectedId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'forceSelected': result.forceSelected = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'tabIndex': result.tabIndex = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; } } @@ -155,15 +158,15 @@ class _$PurchaseOrderUIStateSerializer class _$PurchaseOrderState extends PurchaseOrderState { @override - final BuiltMap map; + final BuiltMap map; @override final BuiltList list; factory _$PurchaseOrderState( - [void Function(PurchaseOrderStateBuilder) updates]) => + [void Function(PurchaseOrderStateBuilder)? updates]) => (new PurchaseOrderStateBuilder()..update(updates))._build(); - _$PurchaseOrderState._({this.map, this.list}) : super._() { + _$PurchaseOrderState._({required this.map, required this.list}) : super._() { BuiltValueNullFieldError.checkNotNull(map, r'PurchaseOrderState', 'map'); BuiltValueNullFieldError.checkNotNull(list, r'PurchaseOrderState', 'list'); } @@ -185,10 +188,10 @@ class _$PurchaseOrderState extends PurchaseOrderState { list == other.list; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, map.hashCode); _$hash = $jc(_$hash, list.hashCode); @@ -207,16 +210,16 @@ class _$PurchaseOrderState extends PurchaseOrderState { class PurchaseOrderStateBuilder implements Builder { - _$PurchaseOrderState _$v; + _$PurchaseOrderState? _$v; - MapBuilder _map; - MapBuilder get map => - _$this._map ??= new MapBuilder(); - set map(MapBuilder map) => _$this._map = map; + MapBuilder? _map; + MapBuilder get map => + _$this._map ??= new MapBuilder(); + set map(MapBuilder? map) => _$this._map = map; - ListBuilder _list; + ListBuilder? _list; ListBuilder get list => _$this._list ??= new ListBuilder(); - set list(ListBuilder list) => _$this._list = list; + set list(ListBuilder? list) => _$this._list = list; PurchaseOrderStateBuilder(); @@ -237,7 +240,7 @@ class PurchaseOrderStateBuilder } @override - void update(void Function(PurchaseOrderStateBuilder) updates) { + void update(void Function(PurchaseOrderStateBuilder)? updates) { if (updates != null) updates(this); } @@ -250,7 +253,7 @@ class PurchaseOrderStateBuilder _$result = _$v ?? new _$PurchaseOrderState._(map: map.build(), list: list.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'map'; map.build(); @@ -269,36 +272,36 @@ class PurchaseOrderStateBuilder class _$PurchaseOrderUIState extends PurchaseOrderUIState { @override - final InvoiceEntity editing; + final InvoiceEntity? editing; @override - final int editingItemIndex; + final int? editingItemIndex; @override - final String historyActivityId; + final String? historyActivityId; @override final ListUIState listUIState; @override - final String selectedId; + final String? selectedId; @override - final bool forceSelected; + final bool? forceSelected; @override final int tabIndex; @override - final Completer saveCompleter; + final Completer? saveCompleter; @override - final Completer cancelCompleter; + final Completer? cancelCompleter; factory _$PurchaseOrderUIState( - [void Function(PurchaseOrderUIStateBuilder) updates]) => + [void Function(PurchaseOrderUIStateBuilder)? updates]) => (new PurchaseOrderUIStateBuilder()..update(updates))._build(); _$PurchaseOrderUIState._( {this.editing, this.editingItemIndex, this.historyActivityId, - this.listUIState, + required this.listUIState, this.selectedId, this.forceSelected, - this.tabIndex, + required this.tabIndex, this.saveCompleter, this.cancelCompleter}) : super._() { @@ -332,10 +335,10 @@ class _$PurchaseOrderUIState extends PurchaseOrderUIState { cancelCompleter == other.cancelCompleter; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, editing.hashCode); _$hash = $jc(_$hash, editingItemIndex.hashCode); @@ -368,50 +371,50 @@ class _$PurchaseOrderUIState extends PurchaseOrderUIState { class PurchaseOrderUIStateBuilder implements Builder { - _$PurchaseOrderUIState _$v; + _$PurchaseOrderUIState? _$v; - InvoiceEntityBuilder _editing; + InvoiceEntityBuilder? _editing; InvoiceEntityBuilder get editing => _$this._editing ??= new InvoiceEntityBuilder(); - set editing(InvoiceEntityBuilder editing) => _$this._editing = editing; + set editing(InvoiceEntityBuilder? editing) => _$this._editing = editing; - int _editingItemIndex; - int get editingItemIndex => _$this._editingItemIndex; - set editingItemIndex(int editingItemIndex) => + int? _editingItemIndex; + int? get editingItemIndex => _$this._editingItemIndex; + set editingItemIndex(int? editingItemIndex) => _$this._editingItemIndex = editingItemIndex; - String _historyActivityId; - String get historyActivityId => _$this._historyActivityId; - set historyActivityId(String historyActivityId) => + String? _historyActivityId; + String? get historyActivityId => _$this._historyActivityId; + set historyActivityId(String? historyActivityId) => _$this._historyActivityId = historyActivityId; - ListUIStateBuilder _listUIState; + ListUIStateBuilder? _listUIState; ListUIStateBuilder get listUIState => _$this._listUIState ??= new ListUIStateBuilder(); - set listUIState(ListUIStateBuilder listUIState) => + set listUIState(ListUIStateBuilder? listUIState) => _$this._listUIState = listUIState; - String _selectedId; - String get selectedId => _$this._selectedId; - set selectedId(String selectedId) => _$this._selectedId = selectedId; + String? _selectedId; + String? get selectedId => _$this._selectedId; + set selectedId(String? selectedId) => _$this._selectedId = selectedId; - bool _forceSelected; - bool get forceSelected => _$this._forceSelected; - set forceSelected(bool forceSelected) => + bool? _forceSelected; + bool? get forceSelected => _$this._forceSelected; + set forceSelected(bool? forceSelected) => _$this._forceSelected = forceSelected; - int _tabIndex; - int get tabIndex => _$this._tabIndex; - set tabIndex(int tabIndex) => _$this._tabIndex = tabIndex; + int? _tabIndex; + int? get tabIndex => _$this._tabIndex; + set tabIndex(int? tabIndex) => _$this._tabIndex = tabIndex; - Completer _saveCompleter; - Completer get saveCompleter => _$this._saveCompleter; - set saveCompleter(Completer saveCompleter) => + Completer? _saveCompleter; + Completer? get saveCompleter => _$this._saveCompleter; + set saveCompleter(Completer? saveCompleter) => _$this._saveCompleter = saveCompleter; - Completer _cancelCompleter; - Completer get cancelCompleter => _$this._cancelCompleter; - set cancelCompleter(Completer cancelCompleter) => + Completer? _cancelCompleter; + Completer? get cancelCompleter => _$this._cancelCompleter; + set cancelCompleter(Completer? cancelCompleter) => _$this._cancelCompleter = cancelCompleter; PurchaseOrderUIStateBuilder(); @@ -440,7 +443,7 @@ class PurchaseOrderUIStateBuilder } @override - void update(void Function(PurchaseOrderUIStateBuilder) updates) { + void update(void Function(PurchaseOrderUIStateBuilder)? updates) { if (updates != null) updates(this); } @@ -463,7 +466,7 @@ class PurchaseOrderUIStateBuilder saveCompleter: saveCompleter, cancelCompleter: cancelCompleter); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'editing'; _editing?.build(); diff --git a/lib/redux/quote/quote_actions.dart b/lib/redux/quote/quote_actions.dart index e9c7e4519..a4ded18b2 100644 --- a/lib/redux/quote/quote_actions.dart +++ b/lib/redux/quote/quote_actions.dart @@ -35,7 +35,7 @@ class ViewQuoteList implements PersistUI { }); final bool force; - final int page; + final int? page; } class ViewQuote implements PersistUI, PersistPrefs { @@ -44,7 +44,7 @@ class ViewQuote implements PersistUI, PersistPrefs { this.force = false, }); - final String quoteId; + final String? quoteId; final bool force; } @@ -52,32 +52,32 @@ class EditQuote implements PersistUI, PersistPrefs { EditQuote( {this.quote, this.quoteItemIndex, this.completer, this.force = false}); - final InvoiceEntity quote; - final int quoteItemIndex; - final Completer completer; + final InvoiceEntity? quote; + final int? quoteItemIndex; + final Completer? completer; final bool force; } class ShowEmailQuote { ShowEmailQuote({this.quote, this.context, this.completer}); - final InvoiceEntity quote; - final BuildContext context; - final Completer completer; + final InvoiceEntity? quote; + final BuildContext? context; + final Completer? completer; } class ShowPdfQuote { ShowPdfQuote({this.quote, this.context, this.activityId}); - final InvoiceEntity quote; - final BuildContext context; - final String activityId; + final InvoiceEntity? quote; + final BuildContext? context; + final String? activityId; } class EditQuoteItem implements PersistUI { EditQuoteItem([this.quoteItemIndex]); - final int quoteItemIndex; + final int? quoteItemIndex; } class UpdateQuote implements PersistUI { @@ -89,20 +89,20 @@ class UpdateQuote implements PersistUI { class UpdateQuoteClient implements PersistUI { UpdateQuoteClient({this.client}); - final ClientEntity client; + final ClientEntity? client; } class LoadQuote { LoadQuote({this.completer, this.quoteId}); - final Completer completer; - final String quoteId; + final Completer? completer; + final String? quoteId; } class LoadQuotes { LoadQuotes({this.completer, this.page = 1}); - final Completer completer; + final Completer? completer; final int page; } @@ -157,20 +157,20 @@ class LoadQuotesSuccess implements StopLoading { class AddQuoteContact implements PersistUI { AddQuoteContact({this.contact, this.invitation}); - final ClientContactEntity contact; - final InvitationEntity invitation; + final ClientContactEntity? contact; + final InvitationEntity? invitation; } class RemoveQuoteContact implements PersistUI { RemoveQuoteContact({this.invitation}); - final InvitationEntity invitation; + final InvitationEntity? invitation; } class AddQuoteItem implements PersistUI { AddQuoteItem({this.quoteItem}); - final InvoiceItemEntity quoteItem; + final InvoiceItemEntity? quoteItem; } class MoveQuoteItem implements PersistUI { @@ -179,8 +179,8 @@ class MoveQuoteItem implements PersistUI { this.newIndex, }); - final int oldIndex; - final int newIndex; + final int? oldIndex; + final int? newIndex; } class AddQuoteItems implements PersistUI { @@ -192,8 +192,8 @@ class AddQuoteItems implements PersistUI { class UpdateQuoteItem implements PersistUI { UpdateQuoteItem({this.index, this.quoteItem}); - final int index; - final InvoiceItemEntity quoteItem; + final int? index; + final InvoiceItemEntity? quoteItem; } class DeleteQuoteItem implements PersistUI { @@ -204,14 +204,14 @@ class DeleteQuoteItem implements PersistUI { class SaveQuoteRequest implements StartSaving { SaveQuoteRequest({ - @required this.completer, - @required this.quote, - @required this.action, + required this.completer, + required this.quote, + required this.action, }); final Completer completer; final InvoiceEntity quote; - final EntityAction action; + final EntityAction? action; } class SaveQuoteSuccess implements StopSaving, PersistData, PersistUI { @@ -234,12 +234,12 @@ class SaveQuoteFailure implements StopSaving { class EmailQuoteRequest implements StartSaving { EmailQuoteRequest({ - @required this.completer, - @required this.quoteId, - @required this.template, - @required this.subject, - @required this.body, - @required this.ccEmail, + required this.completer, + required this.quoteId, + required this.template, + required this.subject, + required this.body, + required this.ccEmail, }); final Completer completer; @@ -284,9 +284,9 @@ class MarkSentQuoteFailure implements StopSaving { class BulkEmailQuotesRequest implements StartSaving { BulkEmailQuotesRequest({this.completer, this.quoteIds, this.template}); - final Completer completer; - final List quoteIds; - final EmailTemplate template; + final Completer? completer; + final List? quoteIds; + final EmailTemplate? template; } class BulkEmailQuotesSuccess implements StopSaving, PersistData { @@ -318,7 +318,7 @@ class ArchiveQuotesSuccess implements StopSaving, PersistData { class ArchiveQuotesFailure implements StopSaving { ArchiveQuotesFailure(this.quotes); - final List quotes; + final List quotes; } class DeleteQuotesRequest implements StartSaving { @@ -338,7 +338,7 @@ class DeleteQuotesSuccess implements StopSaving, PersistData { class DeleteQuotesFailure implements StopSaving { DeleteQuotesFailure(this.quotes); - final List quotes; + final List quotes; } class DownloadQuotesRequest implements StartSaving { @@ -373,7 +373,7 @@ class RestoreQuotesSuccess implements StopSaving, PersistData { class RestoreQuotesFailure implements StopSaving { RestoreQuotesFailure(this.quotes); - final List quotes; + final List quotes; } class FilterQuotes implements PersistUI { @@ -440,7 +440,7 @@ class ConvertQuotesToInvoices implements StartSaving { class ConvertQuotesToInvoicesSuccess implements StopSaving { ConvertQuotesToInvoicesSuccess({this.quotes}); - final List quotes; + final List? quotes; } class ConvertQuotesToInvoicesFailure implements StopSaving { @@ -459,7 +459,7 @@ class ConvertQuotesToProjects implements StartSaving { class ConvertQuotesToProjectsSuccess implements StopSaving { ConvertQuotesToProjectsSuccess({this.quotes}); - final List quotes; + final List? quotes; } class ConvertQuotesToProjectsFailure implements StopSaving { @@ -478,7 +478,7 @@ class ApproveQuotes implements StartSaving { class ApproveQuoteSuccess implements StopSaving { ApproveQuoteSuccess({this.quotes}); - final List quotes; + final List? quotes; } class ApproveQuoteFailure implements StopSaving { @@ -489,13 +489,13 @@ class ApproveQuoteFailure implements StopSaving { class SaveQuoteDocumentRequest implements StartSaving { SaveQuoteDocumentRequest({ - @required this.isPrivate, - @required this.completer, - @required this.multipartFile, - @required this.quote, + required this.isPrivate, + required this.completer, + required this.multipartFile, + required this.quote, }); - final bool isPrivate; + final bool? isPrivate; final Completer completer; final List multipartFile; final InvoiceEntity quote; @@ -514,27 +514,27 @@ class SaveQuoteDocumentFailure implements StopSaving { } Future handleQuoteAction( - BuildContext context, List quotes, EntityAction action) async { + BuildContext context, List quotes, EntityAction? action) async { final store = StoreProvider.of(context); final state = store.state; final localization = AppLocalization.of(context); - final quote = quotes.first as InvoiceEntity; - final quoteIds = quotes.map((quote) => quote.id).toList(); + final quote = quotes.first as InvoiceEntity?; + final quoteIds = quotes.map((quote) => quote!.id).toList(); switch (action) { case EntityAction.edit: - editEntity(entity: quote); + editEntity(entity: quote!); break; case EntityAction.viewPdf: store.dispatch(ShowPdfQuote(quote: quote, context: context)); break; case EntityAction.clientPortal: - launchUrl(Uri.parse(quote.invitationSilentLink)); + launchUrl(Uri.parse(quote!.invitationSilentLink)); break; case EntityAction.convertToInvoice: confirmCallback( context: context, - message: localization.convertToInvoice, + message: localization!.convertToInvoice, callback: (_) { store.dispatch(ConvertQuotesToInvoices( snackBarCompleter(context, localization.convertedQuote), @@ -544,7 +544,7 @@ Future handleQuoteAction( case EntityAction.convertToProject: confirmCallback( context: context, - message: localization.convertToProject, + message: localization!.convertToProject, callback: (_) { store.dispatch(ConvertQuotesToProjects( snackBarCompleter(context, localization.convertedQuote), @@ -553,19 +553,19 @@ Future handleQuoteAction( break; case EntityAction.approve: final message = quoteIds.length > 1 - ? localization.approvedQuotes + ? localization!.approvedQuotes! .replaceFirst(':value', ':count') .replaceFirst(':count', quoteIds.length.toString()) - : localization.approveQuote; + : localization!.approveQuote; store.dispatch( ApproveQuotes(snackBarCompleter(context, message), quoteIds)); break; case EntityAction.viewInvoice: - viewEntityById(entityId: quote.invoiceId, entityType: EntityType.invoice); + viewEntityById(entityId: quote!.invoiceId, entityType: EntityType.invoice); break; case EntityAction.markSent: store.dispatch(MarkSentQuotesRequest( - snackBarCompleter(context, localization.markedQuoteAsSent), + snackBarCompleter(context, localization!.markedQuoteAsSent), quoteIds)); break; case EntityAction.sendEmail: @@ -575,7 +575,7 @@ Future handleQuoteAction( quotes.forEach((quote) { final client = state.clientState.get( (quote as InvoiceEntity).clientId, - ); + )!; if (!client.hasEmailAddress) { emailValid = false; } @@ -583,12 +583,12 @@ Future handleQuoteAction( if (!emailValid) { showMessageDialog( context: context, - message: localization.clientEmailNotSet, + message: localization!.clientEmailNotSet, secondaryActions: [ TextButton( onPressed: () { Navigator.of(context).pop(); - editEntity(entity: state.clientState.get(quote.clientId)); + editEntity(entity: state.clientState.get(quote!.clientId)!); }, child: Text(localization.editClient.toUpperCase())) ]); @@ -597,14 +597,14 @@ Future handleQuoteAction( if (action == EntityAction.sendEmail) { store.dispatch(ShowEmailQuote( completer: - snackBarCompleter(context, localization.emailedQuote), + snackBarCompleter(context, localization!.emailedQuote), quote: quote, context: context)); } else if (action == EntityAction.schedule) { if (!state.isProPlan) { showMessageDialog( context: context, - message: localization.upgradeToPaidPlanToSchedule, + message: localization!.upgradeToPaidPlanToSchedule, secondaryActions: [ TextButton( onPressed: () { @@ -622,11 +622,11 @@ Future handleQuoteAction( entity: ScheduleEntity(ScheduleEntity.TEMPLATE_EMAIL_RECORD) .rebuild((b) => b ..parameters.entityType = EntityType.quote.apiValue - ..parameters.entityId = quote.id)); + ..parameters.entityId = quote!.id)); } else { confirmCallback( context: context, - message: localization.bulkEmailQuotes, + message: localization!.bulkEmailQuotes, callback: (_) { store.dispatch(BulkEmailQuotesRequest( completer: snackBarCompleter( @@ -641,7 +641,7 @@ Future handleQuoteAction( case EntityAction.cloneToPurchaseOrder: final designId = getDesignIdForVendorByEntity( state: state, - vendorId: quote.vendorId, + vendorId: quote!.vendorId, entityType: EntityType.purchaseOrder); createEntity( context: context, @@ -655,7 +655,7 @@ Future handleQuoteAction( case EntityAction.cloneToInvoice: final designId = getDesignIdForClientByEntity( state: state, - clientId: quote.clientId, + clientId: quote!.clientId, entityType: EntityType.invoice); createEntity( context: context, @@ -665,12 +665,12 @@ Future handleQuoteAction( break; case EntityAction.clone: case EntityAction.cloneToQuote: - createEntity(context: context, entity: quote.clone); + createEntity(context: context, entity: quote!.clone); break; case EntityAction.cloneToCredit: final designId = getDesignIdForClientByEntity( state: state, - clientId: quote.clientId, + clientId: quote!.clientId, entityType: EntityType.credit); createEntity( context: context, @@ -681,7 +681,7 @@ Future handleQuoteAction( case EntityAction.cloneToRecurring: final designId = getDesignIdForClientByEntity( state: state, - clientId: quote.clientId, + clientId: quote!.clientId, entityType: EntityType.invoice); createEntity( context: context, @@ -690,37 +690,37 @@ Future handleQuoteAction( ..designId = designId)); break; case EntityAction.download: - launchUrl(Uri.parse(quote.invitationDownloadLink)); + launchUrl(Uri.parse(quote!.invitationDownloadLink)); break; case EntityAction.bulkDownload: store.dispatch(DownloadQuotesRequest( - snackBarCompleter(context, localization.exportedData), + snackBarCompleter(context, localization!.exportedData), quoteIds)); break; case EntityAction.restore: final message = quoteIds.length > 1 - ? localization.restoredQuotes + ? localization!.restoredQuotes .replaceFirst(':value', ':count') .replaceFirst(':count', quoteIds.length.toString()) - : localization.restoredQuote; + : localization!.restoredQuote; store.dispatch(RestoreQuotesRequest( snackBarCompleter(context, message), quoteIds)); break; case EntityAction.archive: final message = quoteIds.length > 1 - ? localization.archivedQuotes + ? localization!.archivedQuotes .replaceFirst(':value', ':count') .replaceFirst(':count', quoteIds.length.toString()) - : localization.archivedQuote; + : localization!.archivedQuote; store.dispatch(ArchiveQuotesRequest( snackBarCompleter(context, message), quoteIds)); break; case EntityAction.delete: final message = quoteIds.length > 1 - ? localization.deletedQuotes + ? localization!.deletedQuotes .replaceFirst(':value', ':count') .replaceFirst(':count', quoteIds.length.toString()) - : localization.deletedQuote; + : localization!.deletedQuote; store.dispatch(DeleteQuotesRequest( snackBarCompleter(context, message), quoteIds)); break; @@ -729,7 +729,7 @@ Future handleQuoteAction( store.dispatch(StartQuoteMultiselect()); } for (final quote in quotes) { - if (!store.state.quoteListState.isSelected(quote.id)) { + if (!store.state.quoteListState.isSelected(quote!.id)) { store.dispatch(AddToQuoteMultiselect(entity: quote)); } else { store.dispatch(RemoveFromQuoteMultiselect(entity: quote)); @@ -737,23 +737,23 @@ Future handleQuoteAction( } break; case EntityAction.printPdf: - final invitation = quote.invitations.first; + final invitation = quote!.invitations.first; final url = invitation.downloadLink; store.dispatch(StartSaving()); - final http.Response response = - await WebClient().get(url, '', rawResponse: true); + final http.Response? response = + await (WebClient().get(url, '', rawResponse: true) as FutureOr); store.dispatch(StopSaving()); - await Printing.layoutPdf(onLayout: (_) => response.bodyBytes); + await Printing.layoutPdf(onLayout: (_) => response!.bodyBytes); break; case EntityAction.bulkPrint: store.dispatch(StartSaving()); - final url = state.credentials.url + '/quotes/bulk'; + final url = state.credentials.url! + '/quotes/bulk'; final data = json.encode( {'ids': quoteIds, 'action': EntityAction.bulkPrint.toApiParam()}); - final http.Response response = await WebClient() - .post(url, state.credentials.token, data: data, rawResponse: true); + final http.Response? response = await (WebClient() + .post(url, state.credentials.token, data: data, rawResponse: true) as FutureOr); store.dispatch(StopSaving()); - await Printing.layoutPdf(onLayout: (_) => response.bodyBytes); + await Printing.layoutPdf(onLayout: (_) => response!.bodyBytes); break; case EntityAction.more: showEntityActionsDialog( @@ -769,14 +769,14 @@ Future handleQuoteAction( } if (documentIds.isEmpty) { showMessageDialog( - context: context, message: localization.noDocumentsToDownload); + context: context, message: localization!.noDocumentsToDownload); } else { store.dispatch( DownloadDocumentsRequest( documentIds: documentIds, completer: snackBarCompleter( context, - localization.exportedData, + localization!.exportedData, ), ), ); @@ -791,15 +791,15 @@ Future handleQuoteAction( class StartQuoteMultiselect {} class AddToQuoteMultiselect { - AddToQuoteMultiselect({@required this.entity}); + AddToQuoteMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class RemoveFromQuoteMultiselect { - RemoveFromQuoteMultiselect({@required this.entity}); + RemoveFromQuoteMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class ClearQuoteMultiselect {} @@ -807,5 +807,5 @@ class ClearQuoteMultiselect {} class UpdateQuoteTab implements PersistUI { UpdateQuoteTab({this.tabIndex}); - final int tabIndex; + final int? tabIndex; } diff --git a/lib/redux/quote/quote_middleware.dart b/lib/redux/quote/quote_middleware.dart index 5314bfdf2..d0be438e8 100644 --- a/lib/redux/quote/quote_middleware.dart +++ b/lib/redux/quote/quote_middleware.dart @@ -70,21 +70,21 @@ List> createStoreQuotesMiddleware([ Middleware _viewQuote() { return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as ViewQuote; + final action = dynamicAction as ViewQuote?; next(action); store.dispatch(UpdateCurrentRoute(QuoteViewScreen.route)); if (store.state.prefState.isMobile) { - await navigatorKey.currentState.pushNamed(QuoteViewScreen.route); + await navigatorKey.currentState!.pushNamed(QuoteViewScreen.route); } }; } Middleware _viewQuoteList() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as ViewQuoteList; + final action = dynamicAction as ViewQuoteList?; next(action); @@ -95,7 +95,7 @@ Middleware _viewQuoteList() { store.dispatch(UpdateCurrentRoute(QuoteScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamedAndRemoveUntil( + navigatorKey.currentState!.pushNamedAndRemoveUntil( QuoteScreen.route, (Route route) => false); } }; @@ -103,14 +103,14 @@ Middleware _viewQuoteList() { Middleware _editQuote() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as EditQuote; + final action = dynamicAction as EditQuote?; next(action); store.dispatch(UpdateCurrentRoute(QuoteEditScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(QuoteEditScreen.route); + navigatorKey.currentState!.pushNamed(QuoteEditScreen.route); } }; } @@ -118,7 +118,7 @@ Middleware _editQuote() { Middleware _showEmailQuote() { return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as ShowEmailQuote; + final action = dynamicAction as ShowEmailQuote?; next(action); @@ -126,10 +126,10 @@ Middleware _showEmailQuote() { if (store.state.prefState.isMobile) { final emailWasSent = - await navigatorKey.currentState.pushNamed(QuoteEmailScreen.route); + await navigatorKey.currentState!.pushNamed(QuoteEmailScreen.route); - if (action.completer != null && emailWasSent != null && emailWasSent) { - action.completer.complete(null); + if (action!.completer != null && emailWasSent != null && emailWasSent as bool) { + action.completer!.complete(null); } } }; @@ -138,14 +138,14 @@ Middleware _showEmailQuote() { Middleware _showPdfQuote() { return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as ShowPdfQuote; + final action = dynamicAction as ShowPdfQuote?; next(action); store.dispatch(UpdateCurrentRoute(QuotePdfScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(QuotePdfScreen.route); + navigatorKey.currentState!.pushNamed(QuotePdfScreen.route); } }; } @@ -313,7 +313,7 @@ Middleware _markSentQuote(QuoteRepository repository) { Middleware _emailQuote(QuoteRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as EmailQuoteRequest; - final origQuote = store.state.quoteState.map[action.quoteId]; + final origQuote = store.state.quoteState.map[action.quoteId]!; repository .emailQuote( store.state.credentials, @@ -347,7 +347,7 @@ Middleware _saveQuote(QuoteRepository repository) { // remove any empty line items final updatedQuote = action.quote.rebuild((b) => b ..lineItems - .replace(action.quote.lineItems.where((item) => !item.isEmpty))); + .replace(action.quote.lineItems.where((item) => !item!.isEmpty))); repository .saveData(store.state.credentials, updatedQuote, action.action) @@ -380,13 +380,13 @@ Middleware _loadQuote(QuoteRepository repository) { store.dispatch(LoadQuoteSuccess(quote)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(LoadQuoteFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -423,17 +423,17 @@ Middleware _bulkEmailQuotes(QuoteRepository repository) { repository .bulkAction( - store.state.credentials, action.quoteIds, EntityAction.sendEmail) + store.state.credentials, action.quoteIds!, EntityAction.sendEmail) .then((List quotes) { store.dispatch(BulkEmailQuotesSuccess(quotes)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(BulkEmailQuotesFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -474,7 +474,7 @@ Middleware _loadQuotes(QuoteRepository repository) { )); } else { if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } store.dispatch(LoadCredits()); } @@ -482,7 +482,7 @@ Middleware _loadQuotes(QuoteRepository repository) { print(error); store.dispatch(LoadQuotesFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -492,14 +492,14 @@ Middleware _loadQuotes(QuoteRepository repository) { Middleware _saveDocument(QuoteRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as SaveQuoteDocumentRequest; + final action = dynamicAction as SaveQuoteDocumentRequest?; if (store.state.isEnterprisePlan) { repository .uploadDocument( store.state.credentials, - action.quote, + action!.quote, action.multipartFile, - action.isPrivate, + action.isPrivate!, ) .then((quote) { store.dispatch(SaveQuoteSuccess(quote)); @@ -521,7 +521,7 @@ Middleware _saveDocument(QuoteRepository repository) { } else { const error = 'Uploading documents requires an enterprise plan'; store.dispatch(SaveQuoteDocumentFailure(error)); - action.completer.completeError(error); + action!.completer.completeError(error); } next(action); diff --git a/lib/redux/quote/quote_reducer.dart b/lib/redux/quote/quote_reducer.dart index 038c6618d..d2e4cc9f1 100644 --- a/lib/redux/quote/quote_reducer.dart +++ b/lib/redux/quote/quote_reducer.dart @@ -17,7 +17,7 @@ import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; EntityUIState quoteUIReducer(QuoteUIState state, dynamic action) { return state.rebuild((b) => b ..listUIState.replace(quoteListReducer(state.listUIState, action)) - ..editing.replace(editingReducer(state.editing, action)) + ..editing.replace(editingReducer(state.editing, action)!) ..editingItemIndex = editingItemReducer(state.editingItemIndex, action) ..selectedId = selectedIdReducer(state.selectedId, action) ..forceSelected = forceSelectedReducer(state.forceSelected, action) @@ -26,34 +26,34 @@ EntityUIState quoteUIReducer(QuoteUIState state, dynamic action) { historyActivityIdReducer(state.historyActivityId, action)); } -final forceSelectedReducer = combineReducers([ - TypedReducer((completer, action) => true), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), +final forceSelectedReducer = combineReducers([ + TypedReducer((completer, action) => true), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), ]); -final tabIndexReducer = combineReducers([ - TypedReducer((completer, action) { +final int? Function(int, dynamic) tabIndexReducer = combineReducers([ + TypedReducer((completer, action) { return action.tabIndex; }), - TypedReducer((completer, action) { + TypedReducer((completer, action) { return 0; }), ]); -final historyActivityIdReducer = combineReducers([ - TypedReducer((index, action) => action.activityId), +final historyActivityIdReducer = combineReducers([ + TypedReducer((index, action) => action.activityId), ]); -final editingItemReducer = combineReducers([ - TypedReducer((index, action) => action.quoteItemIndex), - TypedReducer((index, action) => action.quoteItemIndex), +final editingItemReducer = combineReducers([ + TypedReducer((index, action) => action.quoteItemIndex), + TypedReducer((index, action) => action.quoteItemIndex), ]); Reducer dropdownFilterReducer = combineReducers([ @@ -65,30 +65,30 @@ String filterquoteDropdownReducer( return action.filter; } -Reducer selectedIdReducer = combineReducers([ - TypedReducer((completer, action) => ''), - TypedReducer((completer, action) => ''), - TypedReducer((selectedId, action) => +Reducer selectedIdReducer = combineReducers([ + TypedReducer((completer, action) => ''), + TypedReducer((completer, action) => ''), + TypedReducer((selectedId, action) => action.entityType == EntityType.quote ? action.entityId : selectedId), - TypedReducer((selectedId, action) => action.quoteId), - TypedReducer( + TypedReducer((selectedId, action) => action.quoteId), + TypedReducer( (selectedId, action) => action.quote.id), - TypedReducer((selectedId, action) => action.quote.id), - TypedReducer((selectedId, action) => action.quote.id), - TypedReducer( + TypedReducer((selectedId, action) => action.quote!.id), + TypedReducer((selectedId, action) => action.quote!.id), + TypedReducer( (selectedId, action) => action.clearSelection ? '' : selectedId), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => action.entityType == EntityType.quote ? '' : selectedId), - TypedReducer( + TypedReducer( (selectedId, action) => action.clearSelection ? '' : action.entityType == EntityType.quote @@ -96,88 +96,88 @@ Reducer selectedIdReducer = combineReducers([ : selectedId), ]); -final editingReducer = combineReducers([ - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer((quote, action) { +final editingReducer = combineReducers([ + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer((quote, action) { return action.quote.rebuild((b) => b..isChanged = true); }), - TypedReducer((invoice, action) { - return invoice.rebuild((b) => b..isChanged = true); + TypedReducer((invoice, action) { + return invoice!.rebuild((b) => b..isChanged = true); }), - TypedReducer((invoice, action) { - return invoice.moveLineItem(action.oldIndex, action.newIndex); + TypedReducer((invoice, action) { + return invoice!.moveLineItem(action.oldIndex!, action.newIndex); }), - TypedReducer((invoice, action) { - return invoice.rebuild((b) => b..isChanged = true); + TypedReducer((invoice, action) { + return invoice!.rebuild((b) => b..isChanged = true); }), - TypedReducer((invoice, action) { - return invoice.rebuild((b) => b..isChanged = true); + TypedReducer((invoice, action) { + return invoice!.rebuild((b) => b..isChanged = true); }), - TypedReducer((quote, action) { + TypedReducer((quote, action) { final client = action.client; - return quote.rebuild((b) => b + return quote!.rebuild((b) => b ..isChanged = true ..clientId = client?.id ?? '' ..invitations.replace((client?.emailContacts ?? []) - .map((contact) => InvitationEntity(clientContactId: contact.id)) + .map((contact) => InvitationEntity(clientContactId: contact!.id)) .toList())); }), - TypedReducer((quotes, action) { + TypedReducer((quotes, action) { return action.quotes[0]; }), - TypedReducer((quotes, action) { + TypedReducer((quotes, action) { return action.quotes[0]; }), - TypedReducer((quotes, action) { + TypedReducer((quotes, action) { return action.quotes[0]; }), - TypedReducer(_addQuoteItem), - TypedReducer(_addQuoteItems), - TypedReducer(_removeQuoteItem), - TypedReducer(_updateQuoteItem), - TypedReducer(_clearEditing), - TypedReducer((invoice, action) { - return invoice.rebuild((b) => b + TypedReducer(_addQuoteItem), + TypedReducer(_addQuoteItems), + TypedReducer(_removeQuoteItem), + TypedReducer(_updateQuoteItem), + TypedReducer(_clearEditing), + TypedReducer((invoice, action) { + return invoice!.rebuild((b) => b ..invitations.add(action.invitation ?? - InvitationEntity(clientContactId: action.contact.id))); + InvitationEntity(clientContactId: action.contact!.id))); }), - TypedReducer((invoice, action) { - return invoice.rebuild((b) => b..invitations.remove(action.invitation)); + TypedReducer((invoice, action) { + return invoice!.rebuild((b) => b..invitations.remove(action.invitation)); }), ]); -InvoiceEntity _clearEditing(InvoiceEntity quote, dynamic action) { +InvoiceEntity _clearEditing(InvoiceEntity? quote, dynamic action) { return InvoiceEntity(); } -InvoiceEntity _updateEditing(InvoiceEntity quote, dynamic action) { +InvoiceEntity? _updateEditing(InvoiceEntity? quote, dynamic action) { return action.quote; } -InvoiceEntity _addQuoteItem(InvoiceEntity quote, AddQuoteItem action) { - return quote.rebuild( +InvoiceEntity _addQuoteItem(InvoiceEntity? quote, AddQuoteItem action) { + return quote!.rebuild( (b) => b..lineItems.add(action.quoteItem ?? InvoiceItemEntity())); } -InvoiceEntity _addQuoteItems(InvoiceEntity quote, AddQuoteItems action) { - return quote.rebuild((b) => b..lineItems.addAll(action.quoteItems)); +InvoiceEntity _addQuoteItems(InvoiceEntity? quote, AddQuoteItems action) { + return quote!.rebuild((b) => b..lineItems.addAll(action.quoteItems)); } -InvoiceEntity _removeQuoteItem(InvoiceEntity quote, DeleteQuoteItem action) { - if (quote.lineItems.length <= action.index) { +InvoiceEntity? _removeQuoteItem(InvoiceEntity? quote, DeleteQuoteItem action) { + if (quote!.lineItems.length <= action.index) { return quote; } return quote.rebuild((b) => b..lineItems.removeAt(action.index)); } -InvoiceEntity _updateQuoteItem(InvoiceEntity quote, UpdateQuoteItem action) { - if (quote.lineItems.length <= action.index) { +InvoiceEntity? _updateQuoteItem(InvoiceEntity? quote, UpdateQuoteItem action) { + if (quote!.lineItems.length <= action.index!) { return quote; } - return quote.rebuild((b) => b..lineItems[action.index] = action.quoteItem); + return quote.rebuild((b) => b..lineItems[action.index!] = action.quoteItem); } final quoteListReducer = combineReducers([ @@ -277,7 +277,7 @@ ListUIState _filterQuotes(ListUIState quoteListState, FilterQuotes action) { ListUIState _sortQuotes(ListUIState quoteListState, SortQuotes action) { return quoteListState.rebuild((b) => b - ..sortAscending = b.sortField != action.field || !b.sortAscending + ..sortAscending = b.sortField != action.field || !b.sortAscending! ..sortField = action.field); } @@ -288,12 +288,12 @@ ListUIState _startListMultiselect( ListUIState _addToListMultiselect( ListUIState quoteListState, AddToQuoteMultiselect action) { - return quoteListState.rebuild((b) => b..selectedIds.add(action.entity.id)); + return quoteListState.rebuild((b) => b..selectedIds.add(action.entity!.id)); } ListUIState _removeFromListMultiselect( ListUIState quoteListState, RemoveFromQuoteMultiselect action) { - return quoteListState.rebuild((b) => b..selectedIds.remove(action.entity.id)); + return quoteListState.rebuild((b) => b..selectedIds.remove(action.entity!.id)); } ListUIState _clearListMultiselect( @@ -322,8 +322,8 @@ final quotesReducer = combineReducers([ QuoteState _purgeClientSuccess( QuoteState quoteState, PurgeClientSuccess action) { final ids = quoteState.map.values - .where((each) => each.clientId == action.clientId) - .map((each) => each.id) + .where((each) => each!.clientId == action.clientId) + .map((each) => each!.id) .toList(); return quoteState.rebuild((b) => b @@ -333,7 +333,7 @@ QuoteState _purgeClientSuccess( QuoteState _markSentQuoteSuccess( QuoteState quoteState, MarkSentQuoteSuccess action) { - final quoteMap = Map.fromIterable( + final quoteMap = Map.fromIterable( action.quotes, key: (dynamic item) => item.id, value: (dynamic item) => item, @@ -374,8 +374,8 @@ QuoteState _emailQuoteSuccess(QuoteState quoteState, EmailQuoteSuccess action) { QuoteState _convertQuotesToInvoicesSuccess( QuoteState quoteState, ConvertQuotesToInvoicesSuccess action) { - final quoteMap = Map.fromIterable( - action.quotes, + final quoteMap = Map.fromIterable( + action.quotes!, key: (dynamic item) => item.id, value: (dynamic item) => item, ); @@ -384,8 +384,8 @@ QuoteState _convertQuotesToInvoicesSuccess( QuoteState _convertQuotesToProjectsSuccess( QuoteState quoteState, ConvertQuotesToProjectsSuccess action) { - final quoteMap = Map.fromIterable( - action.quotes, + final quoteMap = Map.fromIterable( + action.quotes!, key: (dynamic item) => item.id, value: (dynamic item) => item, ); @@ -400,9 +400,9 @@ QuoteState _addQuote(QuoteState quoteState, AddQuoteSuccess action) { } QuoteState _updateQuote(QuoteState invoiceState, dynamic action) { - final InvoiceEntity quote = action.quote; + final InvoiceEntity? quote = action.quote; return invoiceState.rebuild((b) => b - ..map[quote.id] = quote + ..map[quote!.id] = quote .rebuild((b) => b..loadedAt = DateTime.now().millisecondsSinceEpoch)); } @@ -410,6 +410,6 @@ QuoteState _setLoadedQuotes(QuoteState quoteState, LoadQuotesSuccess action) => quoteState.loadQuotes(action.quotes); QuoteState _setLoadedCompany(QuoteState quoteState, LoadCompanySuccess action) { - final company = action.userCompany.company; + final company = action.userCompany.company!; return quoteState.loadQuotes(company.quotes); } diff --git a/lib/redux/quote/quote_selectors.dart b/lib/redux/quote/quote_selectors.dart index 61cb71d76..5a0bc7805 100644 --- a/lib/redux/quote/quote_selectors.dart +++ b/lib/redux/quote/quote_selectors.dart @@ -7,30 +7,30 @@ import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/redux/app/app_state.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; -ClientEntity quoteClientSelector( +ClientEntity? quoteClientSelector( InvoiceEntity quote, BuiltMap clientMap) { return clientMap[quote.clientId]; } -ClientContactEntity quoteContactSelector( +ClientContactEntity? quoteContactSelector( InvoiceEntity quote, ClientEntity client) { var contactIds = quote.invitations .map((invitation) => invitation.clientContactId) .toList(); - if (contactIds.contains(client.primaryContact.id)) { - contactIds = [client.primaryContact.id]; + if (contactIds.contains(client.primaryContact!.id)) { + contactIds = [client.primaryContact!.id]; } return client.contacts - .firstWhere((contact) => contactIds.contains(contact.id), orElse: null); + .firstWhere((contact) => contactIds.contains(contact!.id), orElse: null); } var memoizedDropdownQuoteList = memo7(( - BuiltMap quoteMap, - BuiltMap clientMap, - BuiltMap vendorMap, + BuiltMap quoteMap, + BuiltMap clientMap, + BuiltMap vendorMap, BuiltList quoteList, String clientId, - BuiltMap userMap, + BuiltMap userMap, List excludedIds, ) => dropdownQuoteSelector( @@ -44,12 +44,12 @@ var memoizedDropdownQuoteList = memo7(( )); List dropdownQuoteSelector( - BuiltMap quoteMap, - BuiltMap clientMap, - BuiltMap vendorMap, + BuiltMap quoteMap, + BuiltMap clientMap, + BuiltMap vendorMap, BuiltList quoteList, String clientId, - BuiltMap userMap, + BuiltMap userMap, List excludedIds, ) { final list = quoteList.where((invoiceId) { @@ -59,11 +59,11 @@ List dropdownQuoteSelector( } if (clientId != null && clientId.isNotEmpty && - invoice.clientId != clientId) { + invoice!.clientId != clientId) { return false; } - if (!clientMap.containsKey(invoice.clientId) || - !clientMap[invoice.clientId].isActive) { + if (!clientMap.containsKey(invoice!.clientId) || + !clientMap[invoice.clientId]!.isActive) { return false; } return invoice.isActive && @@ -72,7 +72,7 @@ List dropdownQuoteSelector( }).toList(); list.sort((invoiceAId, invoiceBId) { - final invoiceA = quoteMap[invoiceAId]; + final invoiceA = quoteMap[invoiceAId]!; final invoiceB = quoteMap[invoiceBId]; return invoiceA.compareTo( invoice: invoiceB, @@ -88,28 +88,28 @@ List dropdownQuoteSelector( } var memoizedFilteredQuoteList = memo7((SelectionState selectionState, - BuiltMap quoteMap, + BuiltMap quoteMap, BuiltList quoteList, - BuiltMap clientMap, - BuiltMap vendorMap, + BuiltMap clientMap, + BuiltMap vendorMap, ListUIState quoteListState, - BuiltMap userMap) => + BuiltMap userMap) => filteredQuotesSelector(selectionState, quoteMap, quoteList, clientMap, vendorMap, quoteListState, userMap)); List filteredQuotesSelector( SelectionState selectionState, - BuiltMap quoteMap, + BuiltMap quoteMap, BuiltList quoteList, - BuiltMap clientMap, - BuiltMap vendorMap, + BuiltMap clientMap, + BuiltMap vendorMap, ListUIState quoteListState, - BuiltMap userMap) { + BuiltMap userMap) { final filterEntityId = selectionState.filterEntityId; final filterEntityType = selectionState.filterEntityType; final list = quoteList.where((quoteId) { - final quote = quoteMap[quoteId]; + final quote = quoteMap[quoteId]!; final client = clientMap[quote.clientId] ?? ClientEntity(id: quote.clientId); @@ -169,7 +169,7 @@ List filteredQuotesSelector( }).toList(); list.sort((quoteAId, quoteBId) { - return quoteMap[quoteAId].compareTo( + return quoteMap[quoteAId]!.compareTo( invoice: quoteMap[quoteBId], sortField: quoteListState.sortField, sortAscending: quoteListState.sortAscending, @@ -182,16 +182,16 @@ List filteredQuotesSelector( } var memoizedQuoteStatsForClient = memo2( - (String clientId, BuiltMap quoteMap) => + (String clientId, BuiltMap quoteMap) => quoteStatsForClient(clientId, quoteMap)); EntityStats quoteStatsForClient( - String clientId, BuiltMap quoteMap) { + String clientId, BuiltMap quoteMap) { int countActive = 0; int countArchived = 0; quoteMap.forEach((quoteId, quote) { - if (quote.clientId == clientId) { + if (quote!.clientId == clientId) { if (quote.isActive) { countActive++; } else if (quote.isArchived) { @@ -204,15 +204,15 @@ EntityStats quoteStatsForClient( } var memoizedQuoteStatsForDesign = memo2( - (String designId, BuiltMap quoteMap) => + (String designId, BuiltMap quoteMap) => quoteStatsForDesign(designId, quoteMap)); EntityStats quoteStatsForDesign( - String designId, BuiltMap quoteMap) { + String designId, BuiltMap quoteMap) { int countActive = 0; int countArchived = 0; quoteMap.forEach((quoteId, quote) { - if (quote.designId == designId) { + if (quote!.designId == designId) { if (quote.isActive) { countActive++; } else if (quote.isArchived) { @@ -225,17 +225,17 @@ EntityStats quoteStatsForDesign( } var memoizedQuoteStatsForUser = memo2( - (String userId, BuiltMap quoteMap) => + (String userId, BuiltMap quoteMap) => quoteStatsForUser(userId, quoteMap)); EntityStats quoteStatsForUser( String userId, - BuiltMap quoteMap, + BuiltMap quoteMap, ) { int countActive = 0; int countArchived = 0; quoteMap.forEach((quoteId, quote) { - if (quote.assignedUserId == userId) { + if (quote!.assignedUserId == userId) { if (quote.isActive) { countActive++; } else if (quote.isArchived) { diff --git a/lib/redux/quote/quote_state.dart b/lib/redux/quote/quote_state.dart index a110cca48..a42f5e804 100644 --- a/lib/redux/quote/quote_state.dart +++ b/lib/redux/quote/quote_state.dart @@ -30,11 +30,11 @@ abstract class QuoteState implements Built { @memoized int get hashCode; - BuiltMap get map; + BuiltMap get map; BuiltList get list; - InvoiceEntity get(String quoteId) { + InvoiceEntity? get(String quoteId) { if (map.containsKey(quoteId)) { return map[quoteId]; } else { @@ -43,7 +43,7 @@ abstract class QuoteState implements Built { } QuoteState loadQuotes(BuiltList quotes) { - final map = Map.fromIterable( + final map = Map.fromIterable( quotes, key: (dynamic item) => item.id, value: (dynamic item) => item, @@ -60,7 +60,7 @@ abstract class QuoteState implements Built { abstract class QuoteUIState extends Object with EntityUIState implements Built { - factory QuoteUIState(PrefStateSortField sortField) { + factory QuoteUIState(PrefStateSortField? sortField) { return _$QuoteUIState._( listUIState: ListUIState(sortField?.field ?? QuoteFields.number, sortAscending: sortField?.ascending ?? false), @@ -76,22 +76,19 @@ abstract class QuoteUIState extends Object @memoized int get hashCode; - @nullable - InvoiceEntity get editing; + InvoiceEntity? get editing; - @nullable @BuiltValueField(serialize: false) - int get editingItemIndex; + int? get editingItemIndex; - @nullable @BuiltValueField(serialize: false) - String get historyActivityId; + String? get historyActivityId; @override - bool get isCreatingNew => editing.isNew; + bool get isCreatingNew => editing!.isNew; @override - String get editingId => editing.id; + String get editingId => editing!.id; static Serializer get serializer => _$quoteUIStateSerializer; } diff --git a/lib/redux/quote/quote_state.g.dart b/lib/redux/quote/quote_state.g.dart index 33b363ae5..7cf98d820 100644 --- a/lib/redux/quote/quote_state.g.dart +++ b/lib/redux/quote/quote_state.g.dart @@ -17,13 +17,15 @@ class _$QuoteStateSerializer implements StructuredSerializer { final String wireName = 'QuoteState'; @override - Iterable serialize(Serializers serializers, QuoteState object, + Iterable serialize(Serializers serializers, QuoteState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'map', serializers.serialize(object.map, - specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(InvoiceEntity)])), + specifiedType: const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(InvoiceEntity) + ])), 'list', serializers.serialize(object.list, specifiedType: @@ -34,28 +36,28 @@ class _$QuoteStateSerializer implements StructuredSerializer { } @override - QuoteState deserialize(Serializers serializers, Iterable serialized, + QuoteState deserialize(Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new QuoteStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'map': result.map.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(InvoiceEntity) - ]))); + const FullType.nullable(String), + const FullType.nullable(InvoiceEntity) + ]))!); break; case 'list': result.list.replace(serializers.deserialize(value, - specifiedType: - const FullType(BuiltList, const [const FullType(String)])) - as BuiltList); + specifiedType: const FullType( + BuiltList, const [const FullType(String)]))! + as BuiltList); break; } } @@ -71,9 +73,9 @@ class _$QuoteUIStateSerializer implements StructuredSerializer { final String wireName = 'QuoteUIState'; @override - Iterable serialize(Serializers serializers, QuoteUIState object, + Iterable serialize(Serializers serializers, QuoteUIState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'listUIState', serializers.serialize(object.listUIState, specifiedType: const FullType(ListUIState)), @@ -81,7 +83,7 @@ class _$QuoteUIStateSerializer implements StructuredSerializer { serializers.serialize(object.tabIndex, specifiedType: const FullType(int)), ]; - Object value; + Object? value; value = object.editing; if (value != null) { result @@ -107,35 +109,36 @@ class _$QuoteUIStateSerializer implements StructuredSerializer { } @override - QuoteUIState deserialize(Serializers serializers, Iterable serialized, + QuoteUIState deserialize( + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new QuoteUIStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'editing': result.editing.replace(serializers.deserialize(value, - specifiedType: const FullType(InvoiceEntity)) as InvoiceEntity); + specifiedType: const FullType(InvoiceEntity))! as InvoiceEntity); break; case 'listUIState': result.listUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(ListUIState)) as ListUIState); + specifiedType: const FullType(ListUIState))! as ListUIState); break; case 'selectedId': result.selectedId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'forceSelected': result.forceSelected = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'tabIndex': result.tabIndex = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; } } @@ -146,14 +149,14 @@ class _$QuoteUIStateSerializer implements StructuredSerializer { class _$QuoteState extends QuoteState { @override - final BuiltMap map; + final BuiltMap map; @override final BuiltList list; - factory _$QuoteState([void Function(QuoteStateBuilder) updates]) => + factory _$QuoteState([void Function(QuoteStateBuilder)? updates]) => (new QuoteStateBuilder()..update(updates))._build(); - _$QuoteState._({this.map, this.list}) : super._() { + _$QuoteState._({required this.map, required this.list}) : super._() { BuiltValueNullFieldError.checkNotNull(map, r'QuoteState', 'map'); BuiltValueNullFieldError.checkNotNull(list, r'QuoteState', 'list'); } @@ -171,10 +174,10 @@ class _$QuoteState extends QuoteState { return other is QuoteState && map == other.map && list == other.list; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, map.hashCode); _$hash = $jc(_$hash, list.hashCode); @@ -192,16 +195,16 @@ class _$QuoteState extends QuoteState { } class QuoteStateBuilder implements Builder { - _$QuoteState _$v; + _$QuoteState? _$v; - MapBuilder _map; - MapBuilder get map => - _$this._map ??= new MapBuilder(); - set map(MapBuilder map) => _$this._map = map; + MapBuilder? _map; + MapBuilder get map => + _$this._map ??= new MapBuilder(); + set map(MapBuilder? map) => _$this._map = map; - ListBuilder _list; + ListBuilder? _list; ListBuilder get list => _$this._list ??= new ListBuilder(); - set list(ListBuilder list) => _$this._list = list; + set list(ListBuilder? list) => _$this._list = list; QuoteStateBuilder(); @@ -222,7 +225,7 @@ class QuoteStateBuilder implements Builder { } @override - void update(void Function(QuoteStateBuilder) updates) { + void update(void Function(QuoteStateBuilder)? updates) { if (updates != null) updates(this); } @@ -235,7 +238,7 @@ class QuoteStateBuilder implements Builder { _$result = _$v ?? new _$QuoteState._(map: map.build(), list: list.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'map'; map.build(); @@ -254,35 +257,35 @@ class QuoteStateBuilder implements Builder { class _$QuoteUIState extends QuoteUIState { @override - final InvoiceEntity editing; + final InvoiceEntity? editing; @override - final int editingItemIndex; + final int? editingItemIndex; @override - final String historyActivityId; + final String? historyActivityId; @override final ListUIState listUIState; @override - final String selectedId; + final String? selectedId; @override - final bool forceSelected; + final bool? forceSelected; @override final int tabIndex; @override - final Completer saveCompleter; + final Completer? saveCompleter; @override - final Completer cancelCompleter; + final Completer? cancelCompleter; - factory _$QuoteUIState([void Function(QuoteUIStateBuilder) updates]) => + factory _$QuoteUIState([void Function(QuoteUIStateBuilder)? updates]) => (new QuoteUIStateBuilder()..update(updates))._build(); _$QuoteUIState._( {this.editing, this.editingItemIndex, this.historyActivityId, - this.listUIState, + required this.listUIState, this.selectedId, this.forceSelected, - this.tabIndex, + required this.tabIndex, this.saveCompleter, this.cancelCompleter}) : super._() { @@ -314,10 +317,10 @@ class _$QuoteUIState extends QuoteUIState { cancelCompleter == other.cancelCompleter; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, editing.hashCode); _$hash = $jc(_$hash, editingItemIndex.hashCode); @@ -350,50 +353,50 @@ class _$QuoteUIState extends QuoteUIState { class QuoteUIStateBuilder implements Builder { - _$QuoteUIState _$v; + _$QuoteUIState? _$v; - InvoiceEntityBuilder _editing; + InvoiceEntityBuilder? _editing; InvoiceEntityBuilder get editing => _$this._editing ??= new InvoiceEntityBuilder(); - set editing(InvoiceEntityBuilder editing) => _$this._editing = editing; + set editing(InvoiceEntityBuilder? editing) => _$this._editing = editing; - int _editingItemIndex; - int get editingItemIndex => _$this._editingItemIndex; - set editingItemIndex(int editingItemIndex) => + int? _editingItemIndex; + int? get editingItemIndex => _$this._editingItemIndex; + set editingItemIndex(int? editingItemIndex) => _$this._editingItemIndex = editingItemIndex; - String _historyActivityId; - String get historyActivityId => _$this._historyActivityId; - set historyActivityId(String historyActivityId) => + String? _historyActivityId; + String? get historyActivityId => _$this._historyActivityId; + set historyActivityId(String? historyActivityId) => _$this._historyActivityId = historyActivityId; - ListUIStateBuilder _listUIState; + ListUIStateBuilder? _listUIState; ListUIStateBuilder get listUIState => _$this._listUIState ??= new ListUIStateBuilder(); - set listUIState(ListUIStateBuilder listUIState) => + set listUIState(ListUIStateBuilder? listUIState) => _$this._listUIState = listUIState; - String _selectedId; - String get selectedId => _$this._selectedId; - set selectedId(String selectedId) => _$this._selectedId = selectedId; + String? _selectedId; + String? get selectedId => _$this._selectedId; + set selectedId(String? selectedId) => _$this._selectedId = selectedId; - bool _forceSelected; - bool get forceSelected => _$this._forceSelected; - set forceSelected(bool forceSelected) => + bool? _forceSelected; + bool? get forceSelected => _$this._forceSelected; + set forceSelected(bool? forceSelected) => _$this._forceSelected = forceSelected; - int _tabIndex; - int get tabIndex => _$this._tabIndex; - set tabIndex(int tabIndex) => _$this._tabIndex = tabIndex; + int? _tabIndex; + int? get tabIndex => _$this._tabIndex; + set tabIndex(int? tabIndex) => _$this._tabIndex = tabIndex; - Completer _saveCompleter; - Completer get saveCompleter => _$this._saveCompleter; - set saveCompleter(Completer saveCompleter) => + Completer? _saveCompleter; + Completer? get saveCompleter => _$this._saveCompleter; + set saveCompleter(Completer? saveCompleter) => _$this._saveCompleter = saveCompleter; - Completer _cancelCompleter; - Completer get cancelCompleter => _$this._cancelCompleter; - set cancelCompleter(Completer cancelCompleter) => + Completer? _cancelCompleter; + Completer? get cancelCompleter => _$this._cancelCompleter; + set cancelCompleter(Completer? cancelCompleter) => _$this._cancelCompleter = cancelCompleter; QuoteUIStateBuilder(); @@ -422,7 +425,7 @@ class QuoteUIStateBuilder } @override - void update(void Function(QuoteUIStateBuilder) updates) { + void update(void Function(QuoteUIStateBuilder)? updates) { if (updates != null) updates(this); } @@ -445,7 +448,7 @@ class QuoteUIStateBuilder saveCompleter: saveCompleter, cancelCompleter: cancelCompleter); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'editing'; _editing?.build(); diff --git a/lib/redux/recurring_expense/recurring_expense_actions.dart b/lib/redux/recurring_expense/recurring_expense_actions.dart index 2753e26e6..e26d35d1f 100644 --- a/lib/redux/recurring_expense/recurring_expense_actions.dart +++ b/lib/redux/recurring_expense/recurring_expense_actions.dart @@ -26,29 +26,29 @@ class ViewRecurringExpenseList implements PersistUI { }); final bool force; - final int page; + final int? page; } class ViewRecurringExpense implements PersistUI, PersistPrefs { ViewRecurringExpense({ - @required this.recurringExpenseId, + required this.recurringExpenseId, this.force = false, }); - final String recurringExpenseId; + final String? recurringExpenseId; final bool force; } class EditRecurringExpense implements PersistUI, PersistPrefs { EditRecurringExpense( - {@required this.recurringExpense, + {required this.recurringExpense, this.completer, this.cancelCompleter, this.force = false}); final ExpenseEntity recurringExpense; - final Completer completer; - final Completer cancelCompleter; + final Completer? completer; + final Completer? cancelCompleter; final bool force; } @@ -61,21 +61,21 @@ class UpdateRecurringExpense implements PersistUI { class LoadRecurringExpense { LoadRecurringExpense({this.completer, this.recurringExpenseId}); - final Completer completer; - final String recurringExpenseId; + final Completer? completer; + final String? recurringExpenseId; } class LoadRecurringExpenseActivity { LoadRecurringExpenseActivity({this.completer, this.recurringExpenseId}); - final Completer completer; - final String recurringExpenseId; + final Completer? completer; + final String? recurringExpenseId; } class LoadRecurringExpenses { LoadRecurringExpenses({this.completer}); - final Completer completer; + final Completer? completer; } class LoadRecurringExpenseRequest implements StartLoading {} @@ -133,9 +133,9 @@ class SaveRecurringExpenseRequest implements StartSaving { this.action, }); - final Completer completer; - final ExpenseEntity recurringExpense; - final EntityAction action; + final Completer? completer; + final ExpenseEntity? recurringExpense; + final EntityAction? action; } class SaveRecurringExpenseSuccess @@ -173,7 +173,7 @@ class ArchiveRecurringExpensesSuccess implements StopSaving, PersistData { class ArchiveRecurringExpensesFailure implements StopSaving { ArchiveRecurringExpensesFailure(this.recurringExpenses); - final List recurringExpenses; + final List recurringExpenses; } class DeleteRecurringExpensesRequest implements StartSaving { @@ -192,7 +192,7 @@ class DeleteRecurringExpensesSuccess implements StopSaving, PersistData { class DeleteRecurringExpensesFailure implements StopSaving { DeleteRecurringExpensesFailure(this.recurringExpenses); - final List recurringExpenses; + final List recurringExpenses; } class RestoreRecurringExpensesRequest implements StartSaving { @@ -211,7 +211,7 @@ class RestoreRecurringExpensesSuccess implements StopSaving, PersistData { class RestoreRecurringExpensesFailure implements StopSaving { RestoreRecurringExpensesFailure(this.recurringExpenses); - final List recurringExpenses; + final List recurringExpenses; } class FilterRecurringExpenses implements PersistUI { @@ -267,15 +267,15 @@ class StartRecurringExpenseMultiselect { } class AddToRecurringExpenseMultiselect { - AddToRecurringExpenseMultiselect({@required this.entity}); + AddToRecurringExpenseMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class RemoveFromRecurringExpenseMultiselect { - RemoveFromRecurringExpenseMultiselect({@required this.entity}); + RemoveFromRecurringExpenseMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class ClearRecurringExpenseMultiselect { @@ -285,14 +285,14 @@ class ClearRecurringExpenseMultiselect { class UpdateRecurringExpenseTab implements PersistUI { UpdateRecurringExpenseTab({this.tabIndex}); - final int tabIndex; + final int? tabIndex; } class StartRecurringExpensesRequest implements StartSaving { StartRecurringExpensesRequest({this.completer, this.expenseIds}); - final Completer completer; - final List expenseIds; + final Completer? completer; + final List? expenseIds; } class StartRecurringExpensesSuccess @@ -311,8 +311,8 @@ class StartRecurringExpensesFailure implements StopSaving { class StopRecurringExpensesRequest implements StartSaving { StopRecurringExpensesRequest({this.completer, this.expenseIds}); - final Completer completer; - final List expenseIds; + final Completer? completer; + final List? expenseIds; } class StopRecurringExpensesSuccess @@ -330,10 +330,10 @@ class StopRecurringExpensesFailure implements StopSaving { class SaveRecurringExpenseDocumentRequest implements StartSaving { SaveRecurringExpenseDocumentRequest({ - @required this.isPrivate, - @required this.completer, - @required this.multipartFile, - @required this.expense, + required this.isPrivate, + required this.completer, + required this.multipartFile, + required this.expense, }); final bool isPrivate; @@ -355,61 +355,61 @@ class SaveRecurringExpenseDocumentFailure implements StopSaving { final Object error; } -void handleRecurringExpenseAction(BuildContext context, - List recurringExpenses, EntityAction action) { +void handleRecurringExpenseAction(BuildContext? context, + List recurringExpenses, EntityAction? action) { if (recurringExpenses.isEmpty) { return; } - final store = StoreProvider.of(context); + final store = StoreProvider.of(context!); final localization = AppLocalization.of(context); - final recurringExpense = recurringExpenses.first as ExpenseEntity; + final recurringExpense = recurringExpenses.first as ExpenseEntity?; final recurringExpenseIds = - recurringExpenses.map((recurringExpense) => recurringExpense.id).toList(); + recurringExpenses.map((recurringExpense) => recurringExpense!.id).toList(); switch (action) { case EntityAction.edit: - editEntity(entity: recurringExpense); + editEntity(entity: recurringExpense!); break; case EntityAction.restore: store.dispatch(RestoreRecurringExpensesRequest( snackBarCompleter( - context, localization.restoredRecurringExpense), + context, localization!.restoredRecurringExpense), recurringExpenseIds)); break; case EntityAction.archive: store.dispatch(ArchiveRecurringExpensesRequest( snackBarCompleter( - context, localization.archivedRecurringExpense), + context, localization!.archivedRecurringExpense), recurringExpenseIds)); break; case EntityAction.delete: store.dispatch(DeleteRecurringExpensesRequest( snackBarCompleter( - context, localization.deletedRecurringExpense), + context, localization!.deletedRecurringExpense), recurringExpenseIds)); break; case EntityAction.start: store.dispatch(StartRecurringExpensesRequest( completer: snackBarCompleter( context, - (recurringExpense.lastSentDate ?? '').isEmpty - ? localization.startedRecurringInvoice - : localization.resumedRecurringInvoice), + (recurringExpense!.lastSentDate ?? '').isEmpty + ? localization!.startedRecurringInvoice + : localization!.resumedRecurringInvoice), expenseIds: recurringExpenseIds, )); break; case EntityAction.stop: store.dispatch(StopRecurringExpensesRequest( completer: snackBarCompleter( - context, localization.stoppedRecurringInvoice), + context, localization!.stoppedRecurringInvoice), expenseIds: recurringExpenseIds, )); break; case EntityAction.cloneToExpense: createEntity( context: context, - entity: recurringExpense.clone + entity: recurringExpense!.clone .rebuild((b) => b..entityType = EntityType.expense), ); break; @@ -417,7 +417,7 @@ void handleRecurringExpenseAction(BuildContext context, case EntityAction.cloneToRecurring: createEntity( context: context, - entity: recurringExpense.clone + entity: recurringExpense!.clone .rebuild((b) => b..entityType = EntityType.recurringExpense), ); break; @@ -432,7 +432,7 @@ void handleRecurringExpenseAction(BuildContext context, for (final recurringExpense in recurringExpenses) { if (!store.state.recurringExpenseListState - .isSelected(recurringExpense.id)) { + .isSelected(recurringExpense!.id)) { store.dispatch( AddToRecurringExpenseMultiselect(entity: recurringExpense)); } else { @@ -455,14 +455,14 @@ void handleRecurringExpenseAction(BuildContext context, } if (documentIds.isEmpty) { showMessageDialog( - context: context, message: localization.noDocumentsToDownload); + context: context, message: localization!.noDocumentsToDownload); } else { store.dispatch( DownloadDocumentsRequest( documentIds: documentIds, completer: snackBarCompleter( context, - localization.exportedData, + localization!.exportedData, ), ), ); diff --git a/lib/redux/recurring_expense/recurring_expense_middleware.dart b/lib/redux/recurring_expense/recurring_expense_middleware.dart index 4196d6309..583b78b11 100644 --- a/lib/redux/recurring_expense/recurring_expense_middleware.dart +++ b/lib/redux/recurring_expense/recurring_expense_middleware.dart @@ -61,14 +61,14 @@ List> createStoreRecurringExpensesMiddleware([ Middleware _editRecurringExpense() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as EditRecurringExpense; + final action = dynamicAction as EditRecurringExpense?; next(action); store.dispatch(UpdateCurrentRoute(RecurringExpenseEditScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(RecurringExpenseEditScreen.route); + navigatorKey.currentState!.pushNamed(RecurringExpenseEditScreen.route); } }; } @@ -76,21 +76,21 @@ Middleware _editRecurringExpense() { Middleware _viewRecurringExpense() { return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as ViewRecurringExpense; + final action = dynamicAction as ViewRecurringExpense?; next(action); store.dispatch(UpdateCurrentRoute(RecurringExpenseViewScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(RecurringExpenseViewScreen.route); + navigatorKey.currentState!.pushNamed(RecurringExpenseViewScreen.route); } }; } Middleware _viewRecurringExpenseList() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as ViewRecurringExpenseList; + final action = dynamicAction as ViewRecurringExpenseList?; next(action); @@ -101,7 +101,7 @@ Middleware _viewRecurringExpenseList() { store.dispatch(UpdateCurrentRoute(RecurringExpenseScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamedAndRemoveUntil( + navigatorKey.currentState!.pushNamedAndRemoveUntil( RecurringExpenseScreen.route, (Route route) => false); } }; @@ -193,20 +193,20 @@ Middleware _saveRecurringExpense( return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as SaveRecurringExpenseRequest; repository - .saveData(store.state.credentials, action.recurringExpense, + .saveData(store.state.credentials, action.recurringExpense!, action: action.action) .then((ExpenseEntity recurringExpense) { - if (action.recurringExpense.isNew) { + if (action.recurringExpense!.isNew) { store.dispatch(AddRecurringExpenseSuccess(recurringExpense)); } else { store.dispatch(SaveRecurringExpenseSuccess(recurringExpense)); } - action.completer.complete(recurringExpense); + action.completer!.complete(recurringExpense); }).catchError((Object error) { print(error); store.dispatch(SaveRecurringExpenseFailure(error)); - action.completer.completeError(error); + action.completer!.completeError(error); }); next(action); @@ -226,13 +226,13 @@ Middleware _loadRecurringExpense( store.dispatch(LoadRecurringExpenseSuccess(recurringExpense)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(LoadRecurringExpenseFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -243,7 +243,7 @@ Middleware _loadRecurringExpense( Middleware _loadRecurringExpenses( RecurringExpenseRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as LoadRecurringExpenses; + final action = dynamicAction as LoadRecurringExpenses?; final AppState state = store.state; store.dispatch(LoadRecurringExpensesRequest()); @@ -260,16 +260,16 @@ Middleware _loadRecurringExpenses( }); store.dispatch(LoadDocumentsSuccess(documents)); - if (action.completer != null) { - action.completer.complete(null); + if (action!.completer != null) { + action.completer!.complete(null); } store.dispatch(LoadTransactions()); }).catchError((Object error) { print(error); store.dispatch(LoadRecurringExpensesFailure(error)); - if (action.completer != null) { - action.completer.completeError(error); + if (action!.completer != null) { + action.completer!.completeError(error); } }); @@ -283,17 +283,17 @@ Middleware _startRecurringExpense( final action = dynamicAction as StartRecurringExpensesRequest; repository .bulkAction( - store.state.credentials, action.expenseIds, EntityAction.start) + store.state.credentials, action.expenseIds!, EntityAction.start) .then((List expenses) { store.dispatch(StartRecurringExpensesSuccess(expenses)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(StartRecurringExpensesFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -307,17 +307,17 @@ Middleware _stopRecurringExpense( final action = dynamicAction as StopRecurringExpensesRequest; repository .bulkAction( - store.state.credentials, action.expenseIds, EntityAction.stop) + store.state.credentials, action.expenseIds!, EntityAction.stop) .then((List expenses) { store.dispatch(StopRecurringExpensesSuccess(expenses)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(StopRecurringExpensesFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -327,12 +327,12 @@ Middleware _stopRecurringExpense( Middleware _saveDocument(RecurringExpenseRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as SaveRecurringExpenseDocumentRequest; + final action = dynamicAction as SaveRecurringExpenseDocumentRequest?; if (store.state.isEnterprisePlan) { repository .uploadDocument( store.state.credentials, - action.expense, + action!.expense, action.multipartFile, action.isPrivate, ) @@ -356,7 +356,7 @@ Middleware _saveDocument(RecurringExpenseRepository repository) { } else { const error = 'Uploading documents requires an enterprise plan'; store.dispatch(SaveRecurringExpenseDocumentFailure(error)); - action.completer.completeError(error); + action!.completer.completeError(error); } next(action); diff --git a/lib/redux/recurring_expense/recurring_expense_reducer.dart b/lib/redux/recurring_expense/recurring_expense_reducer.dart index 186af686a..2b888c395 100644 --- a/lib/redux/recurring_expense/recurring_expense_reducer.dart +++ b/lib/redux/recurring_expense/recurring_expense_reducer.dart @@ -17,70 +17,70 @@ EntityUIState recurringExpenseUIReducer( return state.rebuild((b) => b ..listUIState .replace(recurringExpenseListReducer(state.listUIState, action)) - ..editing.replace(editingReducer(state.editing, action)) + ..editing.replace(editingReducer(state.editing, action)!) ..selectedId = selectedIdReducer(state.selectedId, action) ..forceSelected = forceSelectedReducer(state.forceSelected, action) ..tabIndex = tabIndexReducer(state.tabIndex, action)); } -final forceSelectedReducer = combineReducers([ - TypedReducer((completer, action) => true), - TypedReducer((completer, action) => false), - TypedReducer( +final forceSelectedReducer = combineReducers([ + TypedReducer((completer, action) => true), + TypedReducer((completer, action) => false), + TypedReducer( (completer, action) => false), - TypedReducer( + TypedReducer( (completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer( + TypedReducer((completer, action) => false), + TypedReducer( (completer, action) => false), - TypedReducer( + TypedReducer( (completer, action) => false), - TypedReducer( + TypedReducer( (completer, action) => false), - TypedReducer( + TypedReducer( (completer, action) => false), ]); -final tabIndexReducer = combineReducers([ - TypedReducer((completer, action) { +final int? Function(int, dynamic) tabIndexReducer = combineReducers([ + TypedReducer((completer, action) { return action.tabIndex; }), - TypedReducer((completer, action) { + TypedReducer((completer, action) { return 0; }), ]); -Reducer selectedIdReducer = combineReducers([ - TypedReducer( +Reducer selectedIdReducer = combineReducers([ + TypedReducer( (completer, action) => ''), - TypedReducer( + TypedReducer( (completer, action) => ''), - TypedReducer((selectedId, action) => + TypedReducer((selectedId, action) => action.entityType == EntityType.recurringExpense ? action.entityId : selectedId), - TypedReducer( - (String selectedId, dynamic action) => action.recurringExpenseId), - TypedReducer( - (String selectedId, dynamic action) => action.recurringExpense.id), - TypedReducer( + TypedReducer( + (String? selectedId, dynamic action) => action.recurringExpenseId), + TypedReducer( + (String? selectedId, dynamic action) => action.recurringExpense.id), + TypedReducer( (selectedId, action) => action.clearSelection ? '' : selectedId), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer( + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer( (selectedId, action) => ''), - TypedReducer( + TypedReducer( (selectedId, action) => ''), - TypedReducer( + TypedReducer( (selectedId, action) => ''), - TypedReducer( + TypedReducer( (selectedId, action) => ''), - TypedReducer( + TypedReducer( (selectedId, action) => ''), - TypedReducer( + TypedReducer( (selectedId, action) => ''), - TypedReducer( + TypedReducer( (selectedId, action) => action.clearSelection ? '' : action.entityType == EntityType.recurringExpense @@ -88,35 +88,35 @@ Reducer selectedIdReducer = combineReducers([ : selectedId), ]); -final editingReducer = combineReducers([ - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer( +final editingReducer = combineReducers([ + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer( (recurringExpenses, action) { return action.recurringExpenses[0]; }), - TypedReducer( + TypedReducer( (recurringExpenses, action) { return action.recurringExpenses[0]; }), - TypedReducer( + TypedReducer( (recurringExpenses, action) { return action.recurringExpenses[0]; }), - TypedReducer(_updateEditing), - TypedReducer( + TypedReducer(_updateEditing), + TypedReducer( (recurringExpense, action) { return action.recurringExpense.rebuild((b) => b..isChanged = true); }), - TypedReducer(_clearEditing), + TypedReducer(_clearEditing), ]); -ExpenseEntity _clearEditing(ExpenseEntity recurringExpense, dynamic action) { +ExpenseEntity _clearEditing(ExpenseEntity? recurringExpense, dynamic action) { return ExpenseEntity(entityType: EntityType.recurringExpense); } -ExpenseEntity _updateEditing(ExpenseEntity recurringExpense, dynamic action) { +ExpenseEntity? _updateEditing(ExpenseEntity? recurringExpense, dynamic action) { return action.recurringExpense; } @@ -215,7 +215,7 @@ ListUIState _filterRecurringExpenses( ListUIState _sortRecurringExpenses( ListUIState recurringExpenseListState, SortRecurringExpenses action) { return recurringExpenseListState.rebuild((b) => b - ..sortAscending = b.sortField != action.field || !b.sortAscending + ..sortAscending = b.sortField != action.field || !b.sortAscending! ..sortField = action.field); } @@ -226,13 +226,13 @@ ListUIState _startListMultiselect( ListUIState _addToListMultiselect( ListUIState productListState, AddToRecurringExpenseMultiselect action) { - return productListState.rebuild((b) => b..selectedIds.add(action.entity.id)); + return productListState.rebuild((b) => b..selectedIds.add(action.entity!.id)); } ListUIState _removeFromListMultiselect(ListUIState productListState, RemoveFromRecurringExpenseMultiselect action) { return productListState - .rebuild((b) => b..selectedIds.remove(action.entity.id)); + .rebuild((b) => b..selectedIds.remove(action.entity!.id)); } ListUIState _clearListMultiselect( @@ -266,8 +266,8 @@ final recurringExpensesReducer = combineReducers([ RecurringExpenseState _purgeClientSuccess( RecurringExpenseState expenseState, PurgeClientSuccess action) { final ids = expenseState.map.values - .where((each) => each.clientId == action.clientId) - .map((each) => each.id) + .where((each) => each!.clientId == action.clientId) + .map((each) => each!.id) .toList(); return expenseState.rebuild((b) => b @@ -357,6 +357,6 @@ RecurringExpenseState _setLoadedRecurringExpenses( RecurringExpenseState _setLoadedCompany( RecurringExpenseState recurringExpenseState, LoadCompanySuccess action) { - final company = action.userCompany.company; + final company = action.userCompany.company!; return recurringExpenseState.loadRecurringExpenses(company.recurringExpenses); } diff --git a/lib/redux/recurring_expense/recurring_expense_selectors.dart b/lib/redux/recurring_expense/recurring_expense_selectors.dart index bbf3e1dbd..555fefc0a 100644 --- a/lib/redux/recurring_expense/recurring_expense_selectors.dart +++ b/lib/redux/recurring_expense/recurring_expense_selectors.dart @@ -41,7 +41,7 @@ List dropdownRecurringExpensesSelector( StaticState staticState, String clientId) { final list = recurringExpenseList.where((recurringExpenseId) { - final recurringExpense = recurringExpenseMap[recurringExpenseId]; + final recurringExpense = recurringExpenseMap[recurringExpenseId]!; /* if (clientId != null && clientId > 0 && recurringExpense.clientId != clientId) { return false; @@ -51,7 +51,7 @@ List dropdownRecurringExpensesSelector( }).toList(); list.sort((recurringExpenseAId, recurringExpenseBId) { - final recurringExpenseA = recurringExpenseMap[recurringExpenseAId]; + final recurringExpenseA = recurringExpenseMap[recurringExpenseAId]!; final recurringExpenseB = recurringExpenseMap[recurringExpenseBId]; return recurringExpenseA.compareTo( recurringExpenseB, @@ -69,13 +69,13 @@ List dropdownRecurringExpensesSelector( } var memoizedFilteredRecurringExpenseList = memo9((SelectionState selectionState, - BuiltMap expenseMap, - BuiltMap clientMap, - BuiltMap vendorMap, - BuiltMap userMap, + BuiltMap expenseMap, + BuiltMap clientMap, + BuiltMap vendorMap, + BuiltMap userMap, ListUIState expenseListState, - BuiltMap invoiceMap, - BuiltMap expenseCategoryMap, + BuiltMap invoiceMap, + BuiltMap expenseCategoryMap, StaticState staticState) => filteredRecurringExpensesSelector( selectionState, @@ -88,21 +88,21 @@ var memoizedFilteredRecurringExpenseList = memo9((SelectionState selectionState, expenseCategoryMap, staticState)); -List filteredRecurringExpensesSelector( +List filteredRecurringExpensesSelector( SelectionState selectionState, - BuiltMap expenseMap, - BuiltMap clientMap, - BuiltMap vendorMap, - BuiltMap userMap, + BuiltMap expenseMap, + BuiltMap clientMap, + BuiltMap vendorMap, + BuiltMap userMap, ListUIState expenseListState, - BuiltMap invoiceMap, - BuiltMap expenseCategoryMap, + BuiltMap invoiceMap, + BuiltMap expenseCategoryMap, StaticState staticState) { final filterEntityId = selectionState.filterEntityId; final filterEntityType = selectionState.filterEntityType; final list = expenseMap.keys.where((expenseId) { - final expense = expenseMap[expenseId]; + final expense = expenseMap[expenseId]!; final expenseCategory = expenseCategoryMap[expense.categoryId] ?? ExpenseCategoryEntity(); final vendor = @@ -174,7 +174,7 @@ List filteredRecurringExpensesSelector( }).toList(); list.sort((expenseAId, expenseBId) { - final expenseA = expenseMap[expenseAId]; + final expenseA = expenseMap[expenseAId]!; final expenseB = expenseMap[expenseBId]; return expenseA.compareTo( expenseB, @@ -192,15 +192,15 @@ List filteredRecurringExpensesSelector( } var memoizedRecurringExpenseStatsForClient = memo2( - (String clientId, BuiltMap expenseMap) => + (String clientId, BuiltMap expenseMap) => recurringExpenseStatsForClient(clientId, expenseMap)); EntityStats recurringExpenseStatsForClient( - String clientId, BuiltMap expenseMap) { + String clientId, BuiltMap expenseMap) { int countActive = 0; int countArchived = 0; expenseMap.forEach((expenseId, expense) { - if (expense.clientId == clientId) { + if (expense!.clientId == clientId) { if (expense.isActive) { countActive++; } else if (expense.isArchived) { @@ -213,15 +213,15 @@ EntityStats recurringExpenseStatsForClient( } var memoizedRecurringExpenseStatsForVendor = memo2( - (String vendorId, BuiltMap expenseMap) => + (String vendorId, BuiltMap expenseMap) => recurringExpenseStatsForVendor(vendorId, expenseMap)); EntityStats recurringExpenseStatsForVendor( - String vendorId, BuiltMap expenseMap) { + String vendorId, BuiltMap expenseMap) { int countActive = 0; int countArchived = 0; expenseMap.forEach((expenseId, expense) { - if (expense.vendorId == vendorId) { + if (expense!.vendorId == vendorId) { if (expense.isActive) { countActive++; } else if (expense.isArchived) { @@ -234,15 +234,15 @@ EntityStats recurringExpenseStatsForVendor( } var memoizedTransactionStatsForVendor = memo2( - (String vendorId, BuiltMap transactionMap) => + (String vendorId, BuiltMap transactionMap) => transactionStatsForVendor(vendorId, transactionMap)); EntityStats transactionStatsForVendor( - String vendorId, BuiltMap transactionMap) { + String vendorId, BuiltMap transactionMap) { int countActive = 0; int countArchived = 0; transactionMap.forEach((transactionId, transaction) { - if (transaction.vendorId == vendorId) { + if (transaction!.vendorId == vendorId) { if (transaction.isActive) { countActive++; } else if (transaction.isArchived) { @@ -255,18 +255,18 @@ EntityStats transactionStatsForVendor( } var memoizedRecurringExpenseStatsForUser = memo2( - (String userId, BuiltMap expenseMap) => + (String userId, BuiltMap expenseMap) => recurringExpenseStatsForUser(userId, expenseMap)); EntityStats recurringExpenseStatsForUser( - String userId, BuiltMap expenseMap) { + String userId, BuiltMap expenseMap) { int countActive = 0; int countArchived = 0; expenseMap.forEach((expenseId, expense) { - if (expense.assignedUserId == userId) { + if (expense!.assignedUserId == userId) { if (expense.isActive) { countActive++; - } else if (expense.isDeleted) { + } else if (expense.isDeleted!) { countArchived++; } } @@ -276,18 +276,18 @@ EntityStats recurringExpenseStatsForUser( } var memoizedRecurringExpenseStatsForExpense = memo2( - (String expenseId, BuiltMap expenseMap) => + (String expenseId, BuiltMap expenseMap) => recurringExpenseStatsForExpense(expenseId, expenseMap)); EntityStats recurringExpenseStatsForExpense( - String recurrigExpenseId, BuiltMap expenseMap) { + String recurrigExpenseId, BuiltMap expenseMap) { int countActive = 0; int countArchived = 0; expenseMap.forEach((expenseId, expense) { - if (expense.recurringExpenseId == recurrigExpenseId) { + if (expense!.recurringExpenseId == recurrigExpenseId) { if (expense.isActive) { countActive++; - } else if (expense.isDeleted) { + } else if (expense.isDeleted!) { countArchived++; } } diff --git a/lib/redux/recurring_expense/recurring_expense_state.dart b/lib/redux/recurring_expense/recurring_expense_state.dart index b50662c91..9514de109 100644 --- a/lib/redux/recurring_expense/recurring_expense_state.dart +++ b/lib/redux/recurring_expense/recurring_expense_state.dart @@ -29,10 +29,10 @@ abstract class RecurringExpenseState @memoized int get hashCode; - BuiltMap get map; + BuiltMap get map; BuiltList get list; - ExpenseEntity get(String recurringExpenseId) { + ExpenseEntity? get(String recurringExpenseId) { if (map.containsKey(recurringExpenseId)) { return map[recurringExpenseId]; } else { @@ -42,7 +42,7 @@ abstract class RecurringExpenseState RecurringExpenseState loadRecurringExpenses( BuiltList clients) { - final map = Map.fromIterable( + final map = Map.fromIterable( clients, key: (dynamic item) => item.id, value: (dynamic item) => item, @@ -60,7 +60,7 @@ abstract class RecurringExpenseState abstract class RecurringExpenseUIState extends Object with EntityUIState implements Built { - factory RecurringExpenseUIState(PrefStateSortField sortField) { + factory RecurringExpenseUIState(PrefStateSortField? sortField) { return _$RecurringExpenseUIState._( listUIState: ListUIState( sortField?.field ?? RecurringExpenseFields.number, @@ -76,14 +76,13 @@ abstract class RecurringExpenseUIState extends Object @memoized int get hashCode; - @nullable - ExpenseEntity get editing; + ExpenseEntity? get editing; @override - bool get isCreatingNew => editing.isNew; + bool get isCreatingNew => editing!.isNew; @override - String get editingId => editing.id; + String get editingId => editing!.id; static Serializer get serializer => _$recurringExpenseUIStateSerializer; diff --git a/lib/redux/recurring_expense/recurring_expense_state.g.dart b/lib/redux/recurring_expense/recurring_expense_state.g.dart index a7abf4eb0..d2d1785f1 100644 --- a/lib/redux/recurring_expense/recurring_expense_state.g.dart +++ b/lib/redux/recurring_expense/recurring_expense_state.g.dart @@ -22,14 +22,16 @@ class _$RecurringExpenseStateSerializer final String wireName = 'RecurringExpenseState'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, RecurringExpenseState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'map', serializers.serialize(object.map, - specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(ExpenseEntity)])), + specifiedType: const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(ExpenseEntity) + ])), 'list', serializers.serialize(object.list, specifiedType: @@ -41,28 +43,28 @@ class _$RecurringExpenseStateSerializer @override RecurringExpenseState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new RecurringExpenseStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'map': result.map.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(ExpenseEntity) - ]))); + const FullType.nullable(String), + const FullType.nullable(ExpenseEntity) + ]))!); break; case 'list': result.list.replace(serializers.deserialize(value, - specifiedType: - const FullType(BuiltList, const [const FullType(String)])) - as BuiltList); + specifiedType: const FullType( + BuiltList, const [const FullType(String)]))! + as BuiltList); break; } } @@ -82,10 +84,10 @@ class _$RecurringExpenseUIStateSerializer final String wireName = 'RecurringExpenseUIState'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, RecurringExpenseUIState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'listUIState', serializers.serialize(object.listUIState, specifiedType: const FullType(ListUIState)), @@ -93,7 +95,7 @@ class _$RecurringExpenseUIStateSerializer serializers.serialize(object.tabIndex, specifiedType: const FullType(int)), ]; - Object value; + Object? value; value = object.editing; if (value != null) { result @@ -120,35 +122,35 @@ class _$RecurringExpenseUIStateSerializer @override RecurringExpenseUIState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new RecurringExpenseUIStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'editing': result.editing.replace(serializers.deserialize(value, - specifiedType: const FullType(ExpenseEntity)) as ExpenseEntity); + specifiedType: const FullType(ExpenseEntity))! as ExpenseEntity); break; case 'listUIState': result.listUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(ListUIState)) as ListUIState); + specifiedType: const FullType(ListUIState))! as ListUIState); break; case 'selectedId': result.selectedId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'forceSelected': result.forceSelected = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'tabIndex': result.tabIndex = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; } } @@ -159,15 +161,16 @@ class _$RecurringExpenseUIStateSerializer class _$RecurringExpenseState extends RecurringExpenseState { @override - final BuiltMap map; + final BuiltMap map; @override final BuiltList list; factory _$RecurringExpenseState( - [void Function(RecurringExpenseStateBuilder) updates]) => + [void Function(RecurringExpenseStateBuilder)? updates]) => (new RecurringExpenseStateBuilder()..update(updates))._build(); - _$RecurringExpenseState._({this.map, this.list}) : super._() { + _$RecurringExpenseState._({required this.map, required this.list}) + : super._() { BuiltValueNullFieldError.checkNotNull(map, r'RecurringExpenseState', 'map'); BuiltValueNullFieldError.checkNotNull( list, r'RecurringExpenseState', 'list'); @@ -190,10 +193,10 @@ class _$RecurringExpenseState extends RecurringExpenseState { list == other.list; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, map.hashCode); _$hash = $jc(_$hash, list.hashCode); @@ -212,16 +215,16 @@ class _$RecurringExpenseState extends RecurringExpenseState { class RecurringExpenseStateBuilder implements Builder { - _$RecurringExpenseState _$v; + _$RecurringExpenseState? _$v; - MapBuilder _map; - MapBuilder get map => - _$this._map ??= new MapBuilder(); - set map(MapBuilder map) => _$this._map = map; + MapBuilder? _map; + MapBuilder get map => + _$this._map ??= new MapBuilder(); + set map(MapBuilder? map) => _$this._map = map; - ListBuilder _list; + ListBuilder? _list; ListBuilder get list => _$this._list ??= new ListBuilder(); - set list(ListBuilder list) => _$this._list = list; + set list(ListBuilder? list) => _$this._list = list; RecurringExpenseStateBuilder(); @@ -242,7 +245,7 @@ class RecurringExpenseStateBuilder } @override - void update(void Function(RecurringExpenseStateBuilder) updates) { + void update(void Function(RecurringExpenseStateBuilder)? updates) { if (updates != null) updates(this); } @@ -255,7 +258,7 @@ class RecurringExpenseStateBuilder _$result = _$v ?? new _$RecurringExpenseState._(map: map.build(), list: list.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'map'; map.build(); @@ -274,30 +277,30 @@ class RecurringExpenseStateBuilder class _$RecurringExpenseUIState extends RecurringExpenseUIState { @override - final ExpenseEntity editing; + final ExpenseEntity? editing; @override final ListUIState listUIState; @override - final String selectedId; + final String? selectedId; @override - final bool forceSelected; + final bool? forceSelected; @override final int tabIndex; @override - final Completer saveCompleter; + final Completer? saveCompleter; @override - final Completer cancelCompleter; + final Completer? cancelCompleter; factory _$RecurringExpenseUIState( - [void Function(RecurringExpenseUIStateBuilder) updates]) => + [void Function(RecurringExpenseUIStateBuilder)? updates]) => (new RecurringExpenseUIStateBuilder()..update(updates))._build(); _$RecurringExpenseUIState._( {this.editing, - this.listUIState, + required this.listUIState, this.selectedId, this.forceSelected, - this.tabIndex, + required this.tabIndex, this.saveCompleter, this.cancelCompleter}) : super._() { @@ -329,10 +332,10 @@ class _$RecurringExpenseUIState extends RecurringExpenseUIState { cancelCompleter == other.cancelCompleter; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, editing.hashCode); _$hash = $jc(_$hash, listUIState.hashCode); @@ -362,40 +365,40 @@ class _$RecurringExpenseUIState extends RecurringExpenseUIState { class RecurringExpenseUIStateBuilder implements Builder { - _$RecurringExpenseUIState _$v; + _$RecurringExpenseUIState? _$v; - ExpenseEntityBuilder _editing; + ExpenseEntityBuilder? _editing; ExpenseEntityBuilder get editing => _$this._editing ??= new ExpenseEntityBuilder(); - set editing(ExpenseEntityBuilder editing) => _$this._editing = editing; + set editing(ExpenseEntityBuilder? editing) => _$this._editing = editing; - ListUIStateBuilder _listUIState; + ListUIStateBuilder? _listUIState; ListUIStateBuilder get listUIState => _$this._listUIState ??= new ListUIStateBuilder(); - set listUIState(ListUIStateBuilder listUIState) => + set listUIState(ListUIStateBuilder? listUIState) => _$this._listUIState = listUIState; - String _selectedId; - String get selectedId => _$this._selectedId; - set selectedId(String selectedId) => _$this._selectedId = selectedId; + String? _selectedId; + String? get selectedId => _$this._selectedId; + set selectedId(String? selectedId) => _$this._selectedId = selectedId; - bool _forceSelected; - bool get forceSelected => _$this._forceSelected; - set forceSelected(bool forceSelected) => + bool? _forceSelected; + bool? get forceSelected => _$this._forceSelected; + set forceSelected(bool? forceSelected) => _$this._forceSelected = forceSelected; - int _tabIndex; - int get tabIndex => _$this._tabIndex; - set tabIndex(int tabIndex) => _$this._tabIndex = tabIndex; + int? _tabIndex; + int? get tabIndex => _$this._tabIndex; + set tabIndex(int? tabIndex) => _$this._tabIndex = tabIndex; - Completer _saveCompleter; - Completer get saveCompleter => _$this._saveCompleter; - set saveCompleter(Completer saveCompleter) => + Completer? _saveCompleter; + Completer? get saveCompleter => _$this._saveCompleter; + set saveCompleter(Completer? saveCompleter) => _$this._saveCompleter = saveCompleter; - Completer _cancelCompleter; - Completer get cancelCompleter => _$this._cancelCompleter; - set cancelCompleter(Completer cancelCompleter) => + Completer? _cancelCompleter; + Completer? get cancelCompleter => _$this._cancelCompleter; + set cancelCompleter(Completer? cancelCompleter) => _$this._cancelCompleter = cancelCompleter; RecurringExpenseUIStateBuilder(); @@ -422,7 +425,7 @@ class RecurringExpenseUIStateBuilder } @override - void update(void Function(RecurringExpenseUIStateBuilder) updates) { + void update(void Function(RecurringExpenseUIStateBuilder)? updates) { if (updates != null) updates(this); } @@ -443,7 +446,7 @@ class RecurringExpenseUIStateBuilder saveCompleter: saveCompleter, cancelCompleter: cancelCompleter); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'editing'; _editing?.build(); diff --git a/lib/redux/recurring_invoice/recurring_invoice_actions.dart b/lib/redux/recurring_invoice/recurring_invoice_actions.dart index 8e2c05a47..bdb1d8497 100644 --- a/lib/redux/recurring_invoice/recurring_invoice_actions.dart +++ b/lib/redux/recurring_invoice/recurring_invoice_actions.dart @@ -31,54 +31,54 @@ class ViewRecurringInvoiceList implements PersistUI { }); final bool force; - final int page; + final int? page; } class ViewRecurringInvoice implements PersistUI, PersistPrefs { ViewRecurringInvoice({ - @required this.recurringInvoiceId, + required this.recurringInvoiceId, this.force = false, }); - final String recurringInvoiceId; + final String? recurringInvoiceId; final bool force; } class EditRecurringInvoice implements PersistUI, PersistPrefs { EditRecurringInvoice( - {@required this.recurringInvoice, + {required this.recurringInvoice, this.completer, this.cancelCompleter, this.itemIndex, this.force = false}); final InvoiceEntity recurringInvoice; - final int itemIndex; - final Completer completer; - final Completer cancelCompleter; + final int? itemIndex; + final Completer? completer; + final Completer? cancelCompleter; final bool force; } class ShowEmailRecurringInvoice { ShowEmailRecurringInvoice({this.invoice, this.context, this.completer}); - final InvoiceEntity invoice; - final BuildContext context; - final Completer completer; + final InvoiceEntity? invoice; + final BuildContext? context; + final Completer? completer; } class ShowPdfRecurringInvoice { ShowPdfRecurringInvoice({this.invoice, this.context, this.activityId}); - final InvoiceEntity invoice; - final BuildContext context; - final String activityId; + final InvoiceEntity? invoice; + final BuildContext? context; + final String? activityId; } class EditRecurringInvoiceItem implements PersistUI { EditRecurringInvoiceItem([this.itemIndex]); - final int itemIndex; + final int? itemIndex; } class UpdateRecurringInvoice implements PersistUI { @@ -90,27 +90,27 @@ class UpdateRecurringInvoice implements PersistUI { class UpdateRecurringInvoiceClient implements PersistUI { UpdateRecurringInvoiceClient({this.client}); - final ClientEntity client; + final ClientEntity? client; } class LoadRecurringInvoice { LoadRecurringInvoice({this.completer, this.recurringInvoiceId}); - final Completer completer; - final String recurringInvoiceId; + final Completer? completer; + final String? recurringInvoiceId; } class LoadRecurringInvoiceActivity { LoadRecurringInvoiceActivity({this.completer, this.recurringInvoiceId}); - final Completer completer; - final String recurringInvoiceId; + final Completer? completer; + final String? recurringInvoiceId; } class LoadRecurringInvoices { LoadRecurringInvoices({this.completer, this.page = 1}); - final Completer completer; + final Completer? completer; final int page; } @@ -165,14 +165,14 @@ class LoadRecurringInvoicesSuccess implements StopLoading { class AddRecurringInvoiceContact implements PersistUI { AddRecurringInvoiceContact({this.contact, this.invitation}); - final ClientContactEntity contact; - final InvitationEntity invitation; + final ClientContactEntity? contact; + final InvitationEntity? invitation; } class RemoveRecurringInvoiceContact implements PersistUI { RemoveRecurringInvoiceContact({this.invitation}); - final InvitationEntity invitation; + final InvitationEntity? invitation; } class SaveRecurringInvoiceRequest implements StartSaving { @@ -182,9 +182,9 @@ class SaveRecurringInvoiceRequest implements StartSaving { this.action, }); - final Completer completer; - final InvoiceEntity recurringInvoice; - final EntityAction action; + final Completer? completer; + final InvoiceEntity? recurringInvoice; + final EntityAction? action; } class SaveRecurringInvoiceSuccess @@ -203,7 +203,7 @@ class AddRecurringInvoiceSuccess implements StopSaving, PersistData, PersistUI { class AddRecurringInvoiceItem implements PersistUI { AddRecurringInvoiceItem({this.invoiceItem}); - final InvoiceItemEntity invoiceItem; + final InvoiceItemEntity? invoiceItem; } class MoveRecurringInvoiceItem implements PersistUI { @@ -212,8 +212,8 @@ class MoveRecurringInvoiceItem implements PersistUI { this.newIndex, }); - final int oldIndex; - final int newIndex; + final int? oldIndex; + final int? newIndex; } class AddRecurringInvoiceItems implements PersistUI { @@ -225,8 +225,8 @@ class AddRecurringInvoiceItems implements PersistUI { class UpdateRecurringInvoiceItem implements PersistUI { UpdateRecurringInvoiceItem({this.index, this.item}); - final int index; - final InvoiceItemEntity item; + final int? index; + final InvoiceItemEntity? item; } class DeleteRecurringInvoiceItem implements PersistUI { @@ -245,15 +245,15 @@ class EmailRecurringInvoiceRequest implements StartSaving { EmailRecurringInvoiceRequest( {this.completer, this.invoiceId, this.template, this.subject, this.body}); - final Completer completer; - final String invoiceId; - final EmailTemplate template; - final String subject; - final String body; + final Completer? completer; + final String? invoiceId; + final EmailTemplate? template; + final String? subject; + final String? body; } class EmailRecurringInvoiceSuccess implements StopSaving, PersistData { - EmailRecurringInvoiceSuccess({@required this.invoice}); + EmailRecurringInvoiceSuccess({required this.invoice}); final InvoiceEntity invoice; } @@ -280,7 +280,7 @@ class ArchiveRecurringInvoicesSuccess implements StopSaving, PersistData { class ArchiveRecurringInvoicesFailure implements StopSaving { ArchiveRecurringInvoicesFailure(this.recurringInvoices); - final List recurringInvoices; + final List recurringInvoices; } class SendNowRecurringInvoicesRequest implements StartSaving { @@ -306,8 +306,8 @@ class UpdatePricesRecurringInvoicesRequest implements StartSaving { UpdatePricesRecurringInvoicesRequest( {this.completer, this.recurringInvoiceIds}); - final Completer completer; - final List recurringInvoiceIds; + final Completer? completer; + final List? recurringInvoiceIds; } class UpdatePricesRecurringInvoicesSuccess implements StopSaving, PersistData { @@ -326,9 +326,9 @@ class IncreasePricesRecurringInvoicesRequest implements StartSaving { IncreasePricesRecurringInvoicesRequest( {this.completer, this.recurringInvoiceIds, this.percentageIncrease}); - final Completer completer; - final double percentageIncrease; - final List recurringInvoiceIds; + final Completer? completer; + final double? percentageIncrease; + final List? recurringInvoiceIds; } class IncreasePricesRecurringInvoicesSuccess @@ -360,7 +360,7 @@ class DeleteRecurringInvoicesSuccess implements StopSaving, PersistData { class DeleteRecurringInvoicesFailure implements StopSaving { DeleteRecurringInvoicesFailure(this.recurringInvoices); - final List recurringInvoices; + final List recurringInvoices; } class RestoreRecurringInvoicesRequest implements StartSaving { @@ -379,7 +379,7 @@ class RestoreRecurringInvoicesSuccess implements StopSaving, PersistData { class RestoreRecurringInvoicesFailure implements StopSaving { RestoreRecurringInvoicesFailure(this.recurringInvoices); - final List recurringInvoices; + final List recurringInvoices; } class FilterRecurringInvoices implements PersistUI { @@ -438,10 +438,10 @@ class FilterRecurringInvoicesByCustom4 implements PersistUI { class SaveRecurringInvoiceDocumentRequest implements StartSaving { SaveRecurringInvoiceDocumentRequest({ - @required this.isPrivate, - @required this.completer, - @required this.multipartFiles, - @required this.invoice, + required this.isPrivate, + required this.completer, + required this.multipartFiles, + required this.invoice, }); final bool isPrivate; @@ -466,8 +466,8 @@ class SaveRecurringInvoiceDocumentFailure implements StopSaving { class StartRecurringInvoicesRequest implements StartSaving { StartRecurringInvoicesRequest({this.completer, this.invoiceIds}); - final Completer completer; - final List invoiceIds; + final Completer? completer; + final List? invoiceIds; } class StartRecurringInvoicesSuccess @@ -486,8 +486,8 @@ class StartRecurringInvoicesFailure implements StopSaving { class StopRecurringInvoicesRequest implements StartSaving { StopRecurringInvoicesRequest({this.completer, this.invoiceIds}); - final Completer completer; - final List invoiceIds; + final Completer? completer; + final List? invoiceIds; } class StopRecurringInvoicesSuccess @@ -503,18 +503,18 @@ class StopRecurringInvoicesFailure implements StopSaving { final Object error; } -void handleRecurringInvoiceAction(BuildContext context, - List recurringInvoices, EntityAction action) async { +void handleRecurringInvoiceAction(BuildContext? context, + List recurringInvoices, EntityAction? action) async { if (recurringInvoices.isEmpty) { return; } - final store = StoreProvider.of(context); + final store = StoreProvider.of(context!); final state = store.state; final localization = AppLocalization.of(context); final recurringInvoice = recurringInvoices.first as InvoiceEntity; final recurringInvoiceIds = - recurringInvoices.map((recurringInvoice) => recurringInvoice.id).toList(); + recurringInvoices.map((recurringInvoice) => recurringInvoice!.id).toList(); final client = state.clientState.get(recurringInvoice.clientId); switch (action) { @@ -528,7 +528,7 @@ void handleRecurringInvoiceAction(BuildContext context, case EntityAction.updatePrices: confirmCallback( context: context, - message: localization.updatePrices, + message: localization!.updatePrices, callback: (_) { store.dispatch(UpdatePricesRecurringInvoicesRequest( completer: @@ -541,9 +541,9 @@ void handleRecurringInvoiceAction(BuildContext context, final amount = await showDialog( context: context, builder: (context) { - var _amount = 0.0; + double? _amount = 0.0; return AlertDialog( - title: Text(localization.increasePrices), + title: Text(localization!.increasePrices!), content: DecoratedFormField( autofocus: true, label: localization.percent, @@ -566,7 +566,7 @@ void handleRecurringInvoiceAction(BuildContext context, if (amount != 0) { store.dispatch(IncreasePricesRecurringInvoicesRequest( completer: snackBarCompleter( - navigatorKey.currentContext, localization.updatedPrices), + navigatorKey.currentContext!, localization!.updatedPrices), recurringInvoiceIds: recurringInvoiceIds, percentageIncrease: amount, )); @@ -578,7 +578,7 @@ void handleRecurringInvoiceAction(BuildContext context, if (!link.contains('?')) { link += '?'; } - link += '&client_hash=${client.clientHash}'; + link += '&client_hash=${client!.clientHash}'; launchUrl(Uri.parse(link)); } break; @@ -633,42 +633,42 @@ void handleRecurringInvoiceAction(BuildContext context, completer: snackBarCompleter( context, (recurringInvoice.lastSentDate ?? '').isEmpty - ? localization.startedRecurringInvoice - : localization.resumedRecurringInvoice), + ? localization!.startedRecurringInvoice + : localization!.resumedRecurringInvoice), invoiceIds: recurringInvoiceIds, )); break; case EntityAction.stop: store.dispatch(StopRecurringInvoicesRequest( completer: snackBarCompleter( - context, localization.stoppedRecurringInvoice), + context, localization!.stoppedRecurringInvoice), invoiceIds: recurringInvoiceIds, )); break; case EntityAction.restore: final message = recurringInvoiceIds.length > 1 - ? localization.restoredRecurringInvoices + ? localization!.restoredRecurringInvoices .replaceFirst(':value', ':count') .replaceFirst(':count', recurringInvoiceIds.length.toString()) - : localization.restoredRecurringInvoice; + : localization!.restoredRecurringInvoice; store.dispatch(RestoreRecurringInvoicesRequest( snackBarCompleter(context, message), recurringInvoiceIds)); break; case EntityAction.archive: final message = recurringInvoiceIds.length > 1 - ? localization.archivedRecurringInvoices + ? localization!.archivedRecurringInvoices .replaceFirst(':value', ':count') .replaceFirst(':count', recurringInvoiceIds.length.toString()) - : localization.archivedRecurringInvoice; + : localization!.archivedRecurringInvoice; store.dispatch(ArchiveRecurringInvoicesRequest( snackBarCompleter(context, message), recurringInvoiceIds)); break; case EntityAction.delete: final message = recurringInvoiceIds.length > 1 - ? localization.deletedRecurringInvoices + ? localization!.deletedRecurringInvoices .replaceFirst(':value', ':count') .replaceFirst(':count', recurringInvoiceIds.length.toString()) - : localization.deletedRecurringInvoice; + : localization!.deletedRecurringInvoice; store.dispatch(DeleteRecurringInvoicesRequest( snackBarCompleter(context, message), recurringInvoiceIds)); break; @@ -683,7 +683,7 @@ void handleRecurringInvoiceAction(BuildContext context, for (final recurringInvoice in recurringInvoices) { if (!store.state.recurringInvoiceListState - .isSelected(recurringInvoice.id)) { + .isSelected(recurringInvoice!.id)) { store.dispatch( AddToRecurringInvoiceMultiselect(entity: recurringInvoice)); } else { @@ -706,14 +706,14 @@ void handleRecurringInvoiceAction(BuildContext context, } if (documentIds.isEmpty) { showMessageDialog( - context: context, message: localization.noDocumentsToDownload); + context: context, message: localization!.noDocumentsToDownload); } else { store.dispatch( DownloadDocumentsRequest( documentIds: documentIds, completer: snackBarCompleter( context, - localization.exportedData, + localization!.exportedData, ), ), ); @@ -724,8 +724,8 @@ void handleRecurringInvoiceAction(BuildContext context, snackBarCompleter( context, recurringInvoiceIds.length == 1 - ? localization.emailedInvoice - : localization.emailedInvoice), + ? localization!.emailedInvoice + : localization!.emailedInvoice), recurringInvoiceIds, )); break; @@ -737,15 +737,15 @@ class StartRecurringInvoiceMultiselect { } class AddToRecurringInvoiceMultiselect { - AddToRecurringInvoiceMultiselect({@required this.entity}); + AddToRecurringInvoiceMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class RemoveFromRecurringInvoiceMultiselect { - RemoveFromRecurringInvoiceMultiselect({@required this.entity}); + RemoveFromRecurringInvoiceMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class ClearRecurringInvoiceMultiselect { @@ -755,5 +755,5 @@ class ClearRecurringInvoiceMultiselect { class UpdateRecurringInvoiceTab implements PersistUI { UpdateRecurringInvoiceTab({this.tabIndex}); - final int tabIndex; + final int? tabIndex; } diff --git a/lib/redux/recurring_invoice/recurring_invoice_middleware.dart b/lib/redux/recurring_invoice/recurring_invoice_middleware.dart index 9f18024e7..6e0eec68c 100644 --- a/lib/redux/recurring_invoice/recurring_invoice_middleware.dart +++ b/lib/redux/recurring_invoice/recurring_invoice_middleware.dart @@ -77,14 +77,14 @@ List> createStoreRecurringInvoicesMiddleware([ Middleware _editRecurringInvoice() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as EditRecurringInvoice; + final action = dynamicAction as EditRecurringInvoice?; next(action); store.dispatch(UpdateCurrentRoute(RecurringInvoiceEditScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(RecurringInvoiceEditScreen.route); + navigatorKey.currentState!.pushNamed(RecurringInvoiceEditScreen.route); } }; } @@ -92,21 +92,21 @@ Middleware _editRecurringInvoice() { Middleware _viewRecurringInvoice() { return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as ViewRecurringInvoice; + final action = dynamicAction as ViewRecurringInvoice?; next(action); store.dispatch(UpdateCurrentRoute(RecurringInvoiceViewScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(RecurringInvoiceViewScreen.route); + navigatorKey.currentState!.pushNamed(RecurringInvoiceViewScreen.route); } }; } Middleware _viewRecurringInvoiceList() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as ViewRecurringInvoiceList; + final action = dynamicAction as ViewRecurringInvoiceList?; next(action); @@ -117,7 +117,7 @@ Middleware _viewRecurringInvoiceList() { store.dispatch(UpdateCurrentRoute(RecurringInvoiceScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamedAndRemoveUntil( + navigatorKey.currentState!.pushNamedAndRemoveUntil( RecurringInvoiceScreen.route, (Route route) => false); } }; @@ -126,14 +126,14 @@ Middleware _viewRecurringInvoiceList() { Middleware _showPdfRecurringInvoice() { return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as ShowPdfRecurringInvoice; + final action = dynamicAction as ShowPdfRecurringInvoice?; next(action); store.dispatch(UpdateCurrentRoute(RecurringInvoicePdfScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(RecurringInvoicePdfScreen.route); + navigatorKey.currentState!.pushNamed(RecurringInvoicePdfScreen.route); } }; } @@ -144,17 +144,17 @@ Middleware _startRecurringInvoice( final action = dynamicAction as StartRecurringInvoicesRequest; repository .bulkAction( - store.state.credentials, action.invoiceIds, EntityAction.start) + store.state.credentials, action.invoiceIds!, EntityAction.start) .then((List invoices) { store.dispatch(StartRecurringInvoicesSuccess(invoices)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(StartRecurringInvoicesFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -168,17 +168,17 @@ Middleware _stopRecurringInvoice( final action = dynamicAction as StopRecurringInvoicesRequest; repository .bulkAction( - store.state.credentials, action.invoiceIds, EntityAction.stop) + store.state.credentials, action.invoiceIds!, EntityAction.stop) .then((List invoices) { store.dispatch(StopRecurringInvoicesSuccess(invoices)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(StopRecurringInvoicesFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -191,18 +191,18 @@ Middleware _updatePricesRecurringInvoice( return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as UpdatePricesRecurringInvoicesRequest; repository - .bulkAction(store.state.credentials, action.recurringInvoiceIds, + .bulkAction(store.state.credentials, action.recurringInvoiceIds!, EntityAction.updatePrices) .then((List invoices) { store.dispatch(UpdatePricesRecurringInvoicesSuccess(invoices)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); - store.dispatch(UpdatePricesRecurringInvoicesFailure(error)); + store.dispatch(UpdatePricesRecurringInvoicesFailure(error as List)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -214,20 +214,20 @@ Middleware _increasePricesRecurringInvoice( RecurringInvoiceRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as IncreasePricesRecurringInvoicesRequest; - repository.bulkAction(store.state.credentials, action.recurringInvoiceIds, + repository.bulkAction(store.state.credentials, action.recurringInvoiceIds!, EntityAction.increasePrices, data: { 'percentage_increase': action.percentageIncrease, }).then((List invoices) { store.dispatch(IncreasePricesRecurringInvoicesSuccess(invoices)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); - store.dispatch(IncreasePricesRecurringInvoicesFailure(error)); + store.dispatch(IncreasePricesRecurringInvoicesFailure(error as List)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -249,7 +249,7 @@ Middleware _sendNowRecurringInvoice( } }).catchError((Object error) { print(error); - store.dispatch(SendNowRecurringInvoicesFailure(error)); + store.dispatch(SendNowRecurringInvoicesFailure(error as List)); if (action.completer != null) { action.completer.completeError(error); } @@ -346,25 +346,25 @@ Middleware _saveRecurringInvoice( final action = dynamicAction as SaveRecurringInvoiceRequest; // remove any empty line items - final updatedInvoice = action.recurringInvoice.rebuild((b) => b + final updatedInvoice = action.recurringInvoice!.rebuild((b) => b ..lineItems.replace( - action.recurringInvoice.lineItems.where((item) => !item.isEmpty))); + action.recurringInvoice!.lineItems.where((item) => !item!.isEmpty))); repository .saveData(store.state.credentials, updatedInvoice, action: action.action) .then((InvoiceEntity recurringInvoice) { - if (action.recurringInvoice.isNew) { + if (action.recurringInvoice!.isNew) { store.dispatch(AddRecurringInvoiceSuccess(recurringInvoice)); } else { store.dispatch(SaveRecurringInvoiceSuccess(recurringInvoice)); } - action.completer.complete(recurringInvoice); + action.completer!.complete(recurringInvoice); }).catchError((Object error) { print(error); store.dispatch(SaveRecurringInvoiceFailure(error)); - action.completer.completeError(error); + action.completer!.completeError(error); }); next(action); @@ -384,13 +384,13 @@ Middleware _loadRecurringInvoice( store.dispatch(LoadRecurringInvoiceSuccess(recurringInvoice)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(LoadRecurringInvoiceFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -431,7 +431,7 @@ Middleware _loadRecurringInvoices( )); } else { if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } store.dispatch(LoadPayments()); } @@ -439,7 +439,7 @@ Middleware _loadRecurringInvoices( print(error); store.dispatch(LoadRecurringInvoicesFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -449,12 +449,12 @@ Middleware _loadRecurringInvoices( Middleware _saveDocument(RecurringInvoiceRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as SaveRecurringInvoiceDocumentRequest; + final action = dynamicAction as SaveRecurringInvoiceDocumentRequest?; if (store.state.isEnterprisePlan) { repository .uploadDocument( store.state.credentials, - action.invoice, + action!.invoice, action.multipartFiles, action.isPrivate, ) @@ -478,7 +478,7 @@ Middleware _saveDocument(RecurringInvoiceRepository repository) { } else { const error = 'Uploading documents requires an enterprise plan'; store.dispatch(SaveRecurringInvoiceDocumentFailure(error)); - action.completer.completeError(error); + action!.completer.completeError(error); } next(action); diff --git a/lib/redux/recurring_invoice/recurring_invoice_reducer.dart b/lib/redux/recurring_invoice/recurring_invoice_reducer.dart index adfa72dfb..be0714e27 100644 --- a/lib/redux/recurring_invoice/recurring_invoice_reducer.dart +++ b/lib/redux/recurring_invoice/recurring_invoice_reducer.dart @@ -17,7 +17,7 @@ EntityUIState recurringInvoiceUIReducer( return state.rebuild((b) => b ..listUIState .replace(recurringInvoiceListReducer(state.listUIState, action)) - ..editing.replace(editingReducer(state.editing, action)) + ..editing.replace(editingReducer(state.editing, action)!) ..editingItemIndex = editingItemIndexReducer(state.editingItemIndex, action) ..selectedId = selectedIdReducer(state.selectedId, action) ..forceSelected = forceSelectedReducer(state.forceSelected, action) @@ -26,41 +26,41 @@ EntityUIState recurringInvoiceUIReducer( historyActivityIdReducer(state.historyActivityId, action)); } -final forceSelectedReducer = combineReducers([ - TypedReducer((completer, action) => true), - TypedReducer((completer, action) => false), - TypedReducer( +final forceSelectedReducer = combineReducers([ + TypedReducer((completer, action) => true), + TypedReducer((completer, action) => false), + TypedReducer( (completer, action) => false), - TypedReducer( + TypedReducer( (completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer( + TypedReducer((completer, action) => false), + TypedReducer( (completer, action) => false), - TypedReducer( + TypedReducer( (completer, action) => false), - TypedReducer( + TypedReducer( (completer, action) => false), - TypedReducer( + TypedReducer( (completer, action) => false), ]); -final tabIndexReducer = combineReducers([ - TypedReducer((completer, action) { +final int? Function(int, dynamic) tabIndexReducer = combineReducers([ + TypedReducer((completer, action) { return action.tabIndex; }), - TypedReducer((completer, action) { + TypedReducer((completer, action) { return 0; }), ]); -final historyActivityIdReducer = combineReducers([ - TypedReducer( +final historyActivityIdReducer = combineReducers([ + TypedReducer( (index, action) => action.activityId), ]); -final editingItemIndexReducer = combineReducers([ - TypedReducer((index, action) => action.itemIndex), - TypedReducer( +final editingItemIndexReducer = combineReducers([ + TypedReducer((index, action) => action.itemIndex), + TypedReducer( (index, action) => action.itemIndex), ]); @@ -74,43 +74,43 @@ String filterRecurringInvoiceDropdownReducer( return action.filter; } -Reducer selectedIdReducer = combineReducers([ - TypedReducer( +Reducer selectedIdReducer = combineReducers([ + TypedReducer( (completer, action) => ''), - TypedReducer( + TypedReducer( (completer, action) => ''), - TypedReducer((selectedId, action) => + TypedReducer((selectedId, action) => action.entityType == EntityType.recurringInvoice ? action.entityId : selectedId), - TypedReducer( + TypedReducer( (selectedId, action) => action.recurringInvoiceId), - TypedReducer( + TypedReducer( (selectedId, action) => action.recurringInvoice.id), - TypedReducer( - (selectedId, action) => action.invoice.id), - TypedReducer( - (selectedId, action) => action.invoice.id), - TypedReducer( + TypedReducer( + (selectedId, action) => action.invoice!.id), + TypedReducer( + (selectedId, action) => action.invoice!.id), + TypedReducer( (selectedId, action) => action.clearSelection ? '' : selectedId), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer( + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer( (selectedId, action) => ''), - TypedReducer( + TypedReducer( (selectedId, action) => ''), - TypedReducer( + TypedReducer( (selectedId, action) => ''), - TypedReducer( + TypedReducer( (selectedId, action) => ''), - TypedReducer( + TypedReducer( (selectedId, action) => ''), - TypedReducer( + TypedReducer( (selectedId, action) => ''), - TypedReducer((selectedId, action) => + TypedReducer((selectedId, action) => action.entityType == EntityType.recurringInvoice ? '' : selectedId), - TypedReducer( + TypedReducer( (selectedId, action) => action.clearSelection ? '' : action.entityType == EntityType.recurringInvoice @@ -118,108 +118,108 @@ Reducer selectedIdReducer = combineReducers([ : selectedId), ]); -final editingReducer = combineReducers([ - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer( +final editingReducer = combineReducers([ + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer( (recurringInvoice, action) { return action.recurringInvoice.rebuild((b) => b..isChanged = true); }), - TypedReducer( + TypedReducer( (recurringInvoice, action) { - return recurringInvoice.rebuild((b) => b..isChanged = true); + return recurringInvoice!.rebuild((b) => b..isChanged = true); }), - TypedReducer((invoice, action) { - return invoice.moveLineItem(action.oldIndex, action.newIndex); + TypedReducer((invoice, action) { + return invoice!.moveLineItem(action.oldIndex!, action.newIndex); }), - TypedReducer( + TypedReducer( (recurringInvoice, action) { - return recurringInvoice.rebuild((b) => b..isChanged = true); + return recurringInvoice!.rebuild((b) => b..isChanged = true); }), - TypedReducer( + TypedReducer( (recurringInvoice, action) { - return recurringInvoice.rebuild((b) => b..isChanged = true); + return recurringInvoice!.rebuild((b) => b..isChanged = true); }), - TypedReducer( + TypedReducer( (recurringInvoice, action) { final client = action.client; - return recurringInvoice.rebuild((b) => b + return recurringInvoice!.rebuild((b) => b ..isChanged = true ..clientId = client?.id ?? '' ..invitations.replace((client?.emailContacts ?? []) - .map((contact) => InvitationEntity(clientContactId: contact.id)) + .map((contact) => InvitationEntity(clientContactId: contact!.id)) .toList())); }), - TypedReducer( + TypedReducer( (recurringInvoices, action) { return action.recurringInvoices[0]; }), - TypedReducer( + TypedReducer( (recurringInvoices, action) { return action.recurringInvoices[0]; }), - TypedReducer( + TypedReducer( (recurringInvoices, action) { return action.recurringInvoices[0]; }), - TypedReducer( + TypedReducer( _addRecurringInvoiceItem), - TypedReducer( + TypedReducer( _addRecurringInvoiceItems), - TypedReducer( + TypedReducer( _removeRecurringInvoiceItem), - TypedReducer( + TypedReducer( _updateRecurringInvoiceItem), - TypedReducer(_clearEditing), - TypedReducer( + TypedReducer(_clearEditing), + TypedReducer( (recurringInvoice, action) { - return recurringInvoice.rebuild((b) => b + return recurringInvoice!.rebuild((b) => b ..invitations.add(action.invitation ?? - InvitationEntity(clientContactId: action.contact.id))); + InvitationEntity(clientContactId: action.contact!.id))); }), - TypedReducer( + TypedReducer( (recurringInvoice, action) { - return recurringInvoice + return recurringInvoice! .rebuild((b) => b..invitations.remove(action.invitation)); }), ]); -InvoiceEntity _clearEditing(InvoiceEntity recurringInvoice, dynamic action) { +InvoiceEntity _clearEditing(InvoiceEntity? recurringInvoice, dynamic action) { return InvoiceEntity(); } -InvoiceEntity _updateEditing(InvoiceEntity recurringInvoice, dynamic action) { +InvoiceEntity? _updateEditing(InvoiceEntity? recurringInvoice, dynamic action) { return action.recurringInvoice; } InvoiceEntity _addRecurringInvoiceItem( - InvoiceEntity recurringInvoice, AddRecurringInvoiceItem action) { + InvoiceEntity? recurringInvoice, AddRecurringInvoiceItem action) { final item = action.invoiceItem ?? InvoiceItemEntity(); - return recurringInvoice.rebuild((b) => b..lineItems.add(item)); + return recurringInvoice!.rebuild((b) => b..lineItems.add(item)); } InvoiceEntity _addRecurringInvoiceItems( - InvoiceEntity recurringInvoice, AddRecurringInvoiceItems action) { - return recurringInvoice.rebuild((b) => b..lineItems.addAll(action.items)); + InvoiceEntity? recurringInvoice, AddRecurringInvoiceItems action) { + return recurringInvoice!.rebuild((b) => b..lineItems.addAll(action.items)); } -InvoiceEntity _removeRecurringInvoiceItem( - InvoiceEntity recurringInvoice, DeleteRecurringInvoiceItem action) { - if (recurringInvoice.lineItems.length <= action.index) { +InvoiceEntity? _removeRecurringInvoiceItem( + InvoiceEntity? recurringInvoice, DeleteRecurringInvoiceItem action) { + if (recurringInvoice!.lineItems.length <= action.index) { return recurringInvoice; } return recurringInvoice.rebuild((b) => b..lineItems.removeAt(action.index)); } -InvoiceEntity _updateRecurringInvoiceItem( - InvoiceEntity recurringInvoice, UpdateRecurringInvoiceItem action) { - if (recurringInvoice.lineItems.length <= action.index) { +InvoiceEntity? _updateRecurringInvoiceItem( + InvoiceEntity? recurringInvoice, UpdateRecurringInvoiceItem action) { + if (recurringInvoice!.lineItems.length <= action.index!) { return recurringInvoice; } return recurringInvoice - .rebuild((b) => b..lineItems[action.index] = action.item); + .rebuild((b) => b..lineItems[action.index!] = action.item); } final recurringInvoiceListReducer = combineReducers([ @@ -335,7 +335,7 @@ ListUIState _filterRecurringInvoices( ListUIState _sortRecurringInvoices( ListUIState recurringInvoiceListState, SortRecurringInvoices action) { return recurringInvoiceListState.rebuild((b) => b - ..sortAscending = b.sortField != action.field || !b.sortAscending + ..sortAscending = b.sortField != action.field || !b.sortAscending! ..sortField = action.field); } @@ -348,13 +348,13 @@ ListUIState _startListMultiselect(ListUIState recurringInvoiceListState, ListUIState _addToListMultiselect(ListUIState recurringInvoiceListState, AddToRecurringInvoiceMultiselect action) { return recurringInvoiceListState - .rebuild((b) => b..selectedIds.add(action.entity.id)); + .rebuild((b) => b..selectedIds.add(action.entity!.id)); } ListUIState _removeFromListMultiselect(ListUIState recurringInvoiceListState, RemoveFromRecurringInvoiceMultiselect action) { return recurringInvoiceListState - .rebuild((b) => b..selectedIds.remove(action.entity.id)); + .rebuild((b) => b..selectedIds.remove(action.entity!.id)); } ListUIState _clearListMultiselect(ListUIState recurringInvoiceListState, @@ -392,8 +392,8 @@ final recurringInvoicesReducer = combineReducers([ RecurringInvoiceState _purgeClientSuccess( RecurringInvoiceState invoiceState, PurgeClientSuccess action) { final ids = invoiceState.map.values - .where((each) => each.clientId == action.clientId) - .map((each) => each.id) + .where((each) => each!.clientId == action.clientId) + .map((each) => each!.id) .toList(); return invoiceState.rebuild((b) => b @@ -479,9 +479,9 @@ RecurringInvoiceState _addRecurringInvoice( RecurringInvoiceState _updateRecurringInvoice( RecurringInvoiceState recurringInvoiceState, dynamic action) { - final InvoiceEntity recurringInvoice = action.recurringInvoice; + final InvoiceEntity? recurringInvoice = action.recurringInvoice; return recurringInvoiceState.rebuild((b) => b - ..map[action.recurringInvoice.id] = recurringInvoice + ..map[action.recurringInvoice.id] = recurringInvoice! .rebuild((b) => b..loadedAt = DateTime.now().millisecondsSinceEpoch)); } @@ -492,6 +492,6 @@ RecurringInvoiceState _setLoadedRecurringInvoices( RecurringInvoiceState _setLoadedCompany( RecurringInvoiceState recurringInvoiceState, LoadCompanySuccess action) { - final company = action.userCompany.company; + final company = action.userCompany.company!; return recurringInvoiceState.loadRecurringInvoices(company.recurringInvoices); } diff --git a/lib/redux/recurring_invoice/recurring_invoice_selectors.dart b/lib/redux/recurring_invoice/recurring_invoice_selectors.dart index 6b41d3009..a86939495 100644 --- a/lib/redux/recurring_invoice/recurring_invoice_selectors.dart +++ b/lib/redux/recurring_invoice/recurring_invoice_selectors.dart @@ -9,12 +9,12 @@ import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; var memoizedFilteredRecurringInvoiceList = memo7(( SelectionState selectionState, - BuiltMap recurringInvoiceMap, - BuiltMap clientMap, - BuiltMap vendorMap, + BuiltMap recurringInvoiceMap, + BuiltMap clientMap, + BuiltMap vendorMap, BuiltList recurringInvoiceList, ListUIState recurringInvoiceListState, - BuiltMap userMap, + BuiltMap userMap, ) => filteredRecurringInvoicesSelector( selectionState, @@ -28,18 +28,18 @@ var memoizedFilteredRecurringInvoiceList = memo7(( List filteredRecurringInvoicesSelector( SelectionState selectionState, - BuiltMap recurringInvoiceMap, - BuiltMap clientMap, - BuiltMap vendorMap, + BuiltMap recurringInvoiceMap, + BuiltMap clientMap, + BuiltMap vendorMap, BuiltList recurringInvoiceList, ListUIState invoiceListState, - BuiltMap userMap, + BuiltMap userMap, ) { final filterEntityId = selectionState.filterEntityId; final filterEntityType = selectionState.filterEntityType; final list = recurringInvoiceList.where((recurringInvoiceId) { - final invoice = recurringInvoiceMap[recurringInvoiceId]; + final invoice = recurringInvoiceMap[recurringInvoiceId]!; final client = clientMap[invoice.clientId] ?? ClientEntity(id: invoice.clientId); @@ -98,7 +98,7 @@ List filteredRecurringInvoicesSelector( }).toList(); list.sort((recurringInvoiceAId, recurringInvoiceBId) { - final recurringInvoiceA = recurringInvoiceMap[recurringInvoiceAId]; + final recurringInvoiceA = recurringInvoiceMap[recurringInvoiceAId]!; final recurringInvoiceB = recurringInvoiceMap[recurringInvoiceBId]; return recurringInvoiceA.compareTo( @@ -115,15 +115,15 @@ List filteredRecurringInvoicesSelector( } var memoizedRecurringInvoiceStatsForClient = memo2( - (String clientId, BuiltMap invoiceMap) => + (String clientId, BuiltMap invoiceMap) => recurringInvoiceStatsForClient(clientId, invoiceMap)); EntityStats recurringInvoiceStatsForClient( - String clientId, BuiltMap invoiceMap) { + String clientId, BuiltMap invoiceMap) { int countActive = 0; int countArchived = 0; invoiceMap.forEach((invoiceId, invoice) { - if (invoice.clientId == clientId) { + if (invoice!.clientId == clientId) { if (invoice.isActive) { countActive++; } else if (invoice.isArchived) { @@ -136,18 +136,18 @@ EntityStats recurringInvoiceStatsForClient( } var memoizedRecurringInvoiceStatsForUser = memo2( - (String userId, BuiltMap invoiceMap) => + (String userId, BuiltMap invoiceMap) => recurringInvoiceStatsForUser(userId, invoiceMap)); EntityStats recurringInvoiceStatsForUser( - String userId, BuiltMap invoiceMap) { + String userId, BuiltMap invoiceMap) { int countActive = 0; int countArchived = 0; invoiceMap.forEach((invoiceId, invoice) { - if (invoice.assignedUserId == userId) { + if (invoice!.assignedUserId == userId) { if (invoice.isActive) { countActive++; - } else if (invoice.isDeleted) { + } else if (invoice.isDeleted!) { countArchived++; } } @@ -157,18 +157,18 @@ EntityStats recurringInvoiceStatsForUser( } var memoizedRecurringInvoiceStatsForInvoice = memo2( - (String invoiceId, BuiltMap invoiceMap) => + (String invoiceId, BuiltMap invoiceMap) => recurringInvoiceStatsForInvoice(invoiceId, invoiceMap)); EntityStats recurringInvoiceStatsForInvoice( - String recurrinInvoiceId, BuiltMap invoiceMap) { + String recurrinInvoiceId, BuiltMap invoiceMap) { int countActive = 0; int countArchived = 0; invoiceMap.forEach((invoiceId, invoice) { - if (invoice.recurringId == recurrinInvoiceId) { + if (invoice!.recurringId == recurrinInvoiceId) { if (invoice.isActive) { countActive++; - } else if (invoice.isDeleted) { + } else if (invoice.isDeleted!) { countArchived++; } } @@ -178,15 +178,15 @@ EntityStats recurringInvoiceStatsForInvoice( } var memoizedRecurringInvoiceStatsForDesign = memo2( - (String designId, BuiltMap recurringInvoiceMap) => + (String designId, BuiltMap recurringInvoiceMap) => recurringInvoiceStatsForDesign(designId, recurringInvoiceMap)); EntityStats recurringInvoiceStatsForDesign( - String designId, BuiltMap recurringInvoiceMap) { + String designId, BuiltMap recurringInvoiceMap) { int countActive = 0; int countArchived = 0; recurringInvoiceMap.forEach((invoiceId, invoice) { - if (invoice.designId == designId) { + if (invoice!.designId == designId) { if (invoice.isActive) { countActive++; } else if (invoice.isArchived) { @@ -199,15 +199,15 @@ EntityStats recurringInvoiceStatsForDesign( } var memoizedRecurringInvoiceStatsForSubscription = memo2( - (String subscriptionId, BuiltMap invoiceMap) => + (String subscriptionId, BuiltMap invoiceMap) => recurringInvoiceStatsForSubscription(subscriptionId, invoiceMap)); EntityStats recurringInvoiceStatsForSubscription( - String subscriptionId, BuiltMap invoiceMap) { + String subscriptionId, BuiltMap invoiceMap) { int countActive = 0; int countArchived = 0; invoiceMap.forEach((invoiceId, invoice) { - if (invoice.subscriptionId == subscriptionId) { + if (invoice!.subscriptionId == subscriptionId) { if (invoice.isActive) { countActive++; } else if (invoice.isArchived) { diff --git a/lib/redux/recurring_invoice/recurring_invoice_state.dart b/lib/redux/recurring_invoice/recurring_invoice_state.dart index 84a036213..a4b1d1125 100644 --- a/lib/redux/recurring_invoice/recurring_invoice_state.dart +++ b/lib/redux/recurring_invoice/recurring_invoice_state.dart @@ -30,9 +30,9 @@ abstract class RecurringInvoiceState @memoized int get hashCode; - BuiltMap get map; + BuiltMap get map; - InvoiceEntity get(String invoiceId) { + InvoiceEntity? get(String invoiceId) { if (map.containsKey(invoiceId)) { return map[invoiceId]; } else { @@ -44,7 +44,7 @@ abstract class RecurringInvoiceState RecurringInvoiceState loadRecurringInvoices( BuiltList clients) { - final map = Map.fromIterable( + final map = Map.fromIterable( clients, key: (dynamic item) => item.id, value: (dynamic item) => item, @@ -62,7 +62,7 @@ abstract class RecurringInvoiceState abstract class RecurringInvoiceUIState extends Object with EntityUIState implements Built { - factory RecurringInvoiceUIState(PrefStateSortField sortField) { + factory RecurringInvoiceUIState(PrefStateSortField? sortField) { return _$RecurringInvoiceUIState._( listUIState: ListUIState( sortField?.field ?? RecurringInvoiceFields.number, @@ -79,22 +79,19 @@ abstract class RecurringInvoiceUIState extends Object @memoized int get hashCode; - @nullable - InvoiceEntity get editing; + InvoiceEntity? get editing; - @nullable @BuiltValueField(serialize: false) - int get editingItemIndex; + int? get editingItemIndex; - @nullable @BuiltValueField(serialize: false) - String get historyActivityId; + String? get historyActivityId; @override - bool get isCreatingNew => editing.isNew; + bool get isCreatingNew => editing!.isNew; @override - String get editingId => editing.id; + String get editingId => editing!.id; static Serializer get serializer => _$recurringInvoiceUIStateSerializer; diff --git a/lib/redux/recurring_invoice/recurring_invoice_state.g.dart b/lib/redux/recurring_invoice/recurring_invoice_state.g.dart index 2fc6f076d..6ab95fe86 100644 --- a/lib/redux/recurring_invoice/recurring_invoice_state.g.dart +++ b/lib/redux/recurring_invoice/recurring_invoice_state.g.dart @@ -22,14 +22,16 @@ class _$RecurringInvoiceStateSerializer final String wireName = 'RecurringInvoiceState'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, RecurringInvoiceState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'map', serializers.serialize(object.map, - specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(InvoiceEntity)])), + specifiedType: const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(InvoiceEntity) + ])), 'list', serializers.serialize(object.list, specifiedType: @@ -41,28 +43,28 @@ class _$RecurringInvoiceStateSerializer @override RecurringInvoiceState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new RecurringInvoiceStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'map': result.map.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(InvoiceEntity) - ]))); + const FullType.nullable(String), + const FullType.nullable(InvoiceEntity) + ]))!); break; case 'list': result.list.replace(serializers.deserialize(value, - specifiedType: - const FullType(BuiltList, const [const FullType(String)])) - as BuiltList); + specifiedType: const FullType( + BuiltList, const [const FullType(String)]))! + as BuiltList); break; } } @@ -82,10 +84,10 @@ class _$RecurringInvoiceUIStateSerializer final String wireName = 'RecurringInvoiceUIState'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, RecurringInvoiceUIState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'listUIState', serializers.serialize(object.listUIState, specifiedType: const FullType(ListUIState)), @@ -93,7 +95,7 @@ class _$RecurringInvoiceUIStateSerializer serializers.serialize(object.tabIndex, specifiedType: const FullType(int)), ]; - Object value; + Object? value; value = object.editing; if (value != null) { result @@ -120,35 +122,35 @@ class _$RecurringInvoiceUIStateSerializer @override RecurringInvoiceUIState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new RecurringInvoiceUIStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'editing': result.editing.replace(serializers.deserialize(value, - specifiedType: const FullType(InvoiceEntity)) as InvoiceEntity); + specifiedType: const FullType(InvoiceEntity))! as InvoiceEntity); break; case 'listUIState': result.listUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(ListUIState)) as ListUIState); + specifiedType: const FullType(ListUIState))! as ListUIState); break; case 'selectedId': result.selectedId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'forceSelected': result.forceSelected = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'tabIndex': result.tabIndex = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; } } @@ -159,15 +161,16 @@ class _$RecurringInvoiceUIStateSerializer class _$RecurringInvoiceState extends RecurringInvoiceState { @override - final BuiltMap map; + final BuiltMap map; @override final BuiltList list; factory _$RecurringInvoiceState( - [void Function(RecurringInvoiceStateBuilder) updates]) => + [void Function(RecurringInvoiceStateBuilder)? updates]) => (new RecurringInvoiceStateBuilder()..update(updates))._build(); - _$RecurringInvoiceState._({this.map, this.list}) : super._() { + _$RecurringInvoiceState._({required this.map, required this.list}) + : super._() { BuiltValueNullFieldError.checkNotNull(map, r'RecurringInvoiceState', 'map'); BuiltValueNullFieldError.checkNotNull( list, r'RecurringInvoiceState', 'list'); @@ -190,10 +193,10 @@ class _$RecurringInvoiceState extends RecurringInvoiceState { list == other.list; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, map.hashCode); _$hash = $jc(_$hash, list.hashCode); @@ -212,16 +215,16 @@ class _$RecurringInvoiceState extends RecurringInvoiceState { class RecurringInvoiceStateBuilder implements Builder { - _$RecurringInvoiceState _$v; + _$RecurringInvoiceState? _$v; - MapBuilder _map; - MapBuilder get map => - _$this._map ??= new MapBuilder(); - set map(MapBuilder map) => _$this._map = map; + MapBuilder? _map; + MapBuilder get map => + _$this._map ??= new MapBuilder(); + set map(MapBuilder? map) => _$this._map = map; - ListBuilder _list; + ListBuilder? _list; ListBuilder get list => _$this._list ??= new ListBuilder(); - set list(ListBuilder list) => _$this._list = list; + set list(ListBuilder? list) => _$this._list = list; RecurringInvoiceStateBuilder(); @@ -242,7 +245,7 @@ class RecurringInvoiceStateBuilder } @override - void update(void Function(RecurringInvoiceStateBuilder) updates) { + void update(void Function(RecurringInvoiceStateBuilder)? updates) { if (updates != null) updates(this); } @@ -255,7 +258,7 @@ class RecurringInvoiceStateBuilder _$result = _$v ?? new _$RecurringInvoiceState._(map: map.build(), list: list.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'map'; map.build(); @@ -274,36 +277,36 @@ class RecurringInvoiceStateBuilder class _$RecurringInvoiceUIState extends RecurringInvoiceUIState { @override - final InvoiceEntity editing; + final InvoiceEntity? editing; @override - final int editingItemIndex; + final int? editingItemIndex; @override - final String historyActivityId; + final String? historyActivityId; @override final ListUIState listUIState; @override - final String selectedId; + final String? selectedId; @override - final bool forceSelected; + final bool? forceSelected; @override final int tabIndex; @override - final Completer saveCompleter; + final Completer? saveCompleter; @override - final Completer cancelCompleter; + final Completer? cancelCompleter; factory _$RecurringInvoiceUIState( - [void Function(RecurringInvoiceUIStateBuilder) updates]) => + [void Function(RecurringInvoiceUIStateBuilder)? updates]) => (new RecurringInvoiceUIStateBuilder()..update(updates))._build(); _$RecurringInvoiceUIState._( {this.editing, this.editingItemIndex, this.historyActivityId, - this.listUIState, + required this.listUIState, this.selectedId, this.forceSelected, - this.tabIndex, + required this.tabIndex, this.saveCompleter, this.cancelCompleter}) : super._() { @@ -337,10 +340,10 @@ class _$RecurringInvoiceUIState extends RecurringInvoiceUIState { cancelCompleter == other.cancelCompleter; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, editing.hashCode); _$hash = $jc(_$hash, editingItemIndex.hashCode); @@ -374,50 +377,50 @@ class _$RecurringInvoiceUIState extends RecurringInvoiceUIState { class RecurringInvoiceUIStateBuilder implements Builder { - _$RecurringInvoiceUIState _$v; + _$RecurringInvoiceUIState? _$v; - InvoiceEntityBuilder _editing; + InvoiceEntityBuilder? _editing; InvoiceEntityBuilder get editing => _$this._editing ??= new InvoiceEntityBuilder(); - set editing(InvoiceEntityBuilder editing) => _$this._editing = editing; + set editing(InvoiceEntityBuilder? editing) => _$this._editing = editing; - int _editingItemIndex; - int get editingItemIndex => _$this._editingItemIndex; - set editingItemIndex(int editingItemIndex) => + int? _editingItemIndex; + int? get editingItemIndex => _$this._editingItemIndex; + set editingItemIndex(int? editingItemIndex) => _$this._editingItemIndex = editingItemIndex; - String _historyActivityId; - String get historyActivityId => _$this._historyActivityId; - set historyActivityId(String historyActivityId) => + String? _historyActivityId; + String? get historyActivityId => _$this._historyActivityId; + set historyActivityId(String? historyActivityId) => _$this._historyActivityId = historyActivityId; - ListUIStateBuilder _listUIState; + ListUIStateBuilder? _listUIState; ListUIStateBuilder get listUIState => _$this._listUIState ??= new ListUIStateBuilder(); - set listUIState(ListUIStateBuilder listUIState) => + set listUIState(ListUIStateBuilder? listUIState) => _$this._listUIState = listUIState; - String _selectedId; - String get selectedId => _$this._selectedId; - set selectedId(String selectedId) => _$this._selectedId = selectedId; + String? _selectedId; + String? get selectedId => _$this._selectedId; + set selectedId(String? selectedId) => _$this._selectedId = selectedId; - bool _forceSelected; - bool get forceSelected => _$this._forceSelected; - set forceSelected(bool forceSelected) => + bool? _forceSelected; + bool? get forceSelected => _$this._forceSelected; + set forceSelected(bool? forceSelected) => _$this._forceSelected = forceSelected; - int _tabIndex; - int get tabIndex => _$this._tabIndex; - set tabIndex(int tabIndex) => _$this._tabIndex = tabIndex; + int? _tabIndex; + int? get tabIndex => _$this._tabIndex; + set tabIndex(int? tabIndex) => _$this._tabIndex = tabIndex; - Completer _saveCompleter; - Completer get saveCompleter => _$this._saveCompleter; - set saveCompleter(Completer saveCompleter) => + Completer? _saveCompleter; + Completer? get saveCompleter => _$this._saveCompleter; + set saveCompleter(Completer? saveCompleter) => _$this._saveCompleter = saveCompleter; - Completer _cancelCompleter; - Completer get cancelCompleter => _$this._cancelCompleter; - set cancelCompleter(Completer cancelCompleter) => + Completer? _cancelCompleter; + Completer? get cancelCompleter => _$this._cancelCompleter; + set cancelCompleter(Completer? cancelCompleter) => _$this._cancelCompleter = cancelCompleter; RecurringInvoiceUIStateBuilder(); @@ -446,7 +449,7 @@ class RecurringInvoiceUIStateBuilder } @override - void update(void Function(RecurringInvoiceUIStateBuilder) updates) { + void update(void Function(RecurringInvoiceUIStateBuilder)? updates) { if (updates != null) updates(this); } @@ -469,7 +472,7 @@ class RecurringInvoiceUIStateBuilder saveCompleter: saveCompleter, cancelCompleter: cancelCompleter); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'editing'; _editing?.build(); diff --git a/lib/redux/reports/reports_actions.dart b/lib/redux/reports/reports_actions.dart index 787bea9e1..f564b1735 100644 --- a/lib/redux/reports/reports_actions.dart +++ b/lib/redux/reports/reports_actions.dart @@ -14,12 +14,12 @@ class ViewReports implements PersistUI { }); final bool force; - final String report; + final String? report; } class UpdateReportSettings implements PersistUI { UpdateReportSettings({ - @required this.report, + required this.report, this.filters, this.chart, this.group, @@ -32,13 +32,13 @@ class UpdateReportSettings implements PersistUI { }); final String report; - final BuiltMap filters; - final String group; - final String selectedGroup; - final String chart; - final String subgroup; - final String sortColumn; - final int sortTotalsIndex; - final String customStartDate; - final String customEndDate; + final BuiltMap? filters; + final String? group; + final String? selectedGroup; + final String? chart; + final String? subgroup; + final String? sortColumn; + final int? sortTotalsIndex; + final String? customStartDate; + final String? customEndDate; } diff --git a/lib/redux/reports/reports_middleware.dart b/lib/redux/reports/reports_middleware.dart index 8a5b03c60..2c5135b02 100644 --- a/lib/redux/reports/reports_middleware.dart +++ b/lib/redux/reports/reports_middleware.dart @@ -36,10 +36,10 @@ Middleware _viewReports() { if (store.state.prefState.isMobile) { if (action.report == null) { - navigatorKey.currentState.pushNamedAndRemoveUntil( + navigatorKey.currentState!.pushNamedAndRemoveUntil( ReportsScreen.route, (Route route) => false); } else { - navigatorKey.currentState.pushNamed(route); + navigatorKey.currentState!.pushNamed(route); } } }); diff --git a/lib/redux/reports/reports_selectors.dart b/lib/redux/reports/reports_selectors.dart index b7b06abd8..a427c227c 100644 --- a/lib/redux/reports/reports_selectors.dart +++ b/lib/redux/reports/reports_selectors.dart @@ -2,7 +2,7 @@ import 'package:invoiceninja_flutter/constants.dart'; import 'package:invoiceninja_flutter/data/models/company_model.dart'; dynamic presentCustomField( - {String value, String customFieldType, CompanyEntity company}) { + {String? value, String? customFieldType, required CompanyEntity company}) { if (company.getCustomFieldType(customFieldType) == kFieldTypeSwitch) return value == 'yes'; else diff --git a/lib/redux/reports/reports_state.dart b/lib/redux/reports/reports_state.dart index 6d5e05e0d..f5be5958b 100644 --- a/lib/redux/reports/reports_state.dart +++ b/lib/redux/reports/reports_state.dart @@ -43,10 +43,10 @@ abstract class ReportsUIState String get customEndDate; - BuiltMap get filters; + BuiltMap get filters; bool get isGroupByFiltered => - filters.containsKey(group) && filters[group].isNotEmpty; + filters.containsKey(group) && filters[group]!.isNotEmpty; static Serializer get serializer => _$reportsUIStateSerializer; diff --git a/lib/redux/reports/reports_state.g.dart b/lib/redux/reports/reports_state.g.dart index 91e3a0724..e9f726104 100644 --- a/lib/redux/reports/reports_state.g.dart +++ b/lib/redux/reports/reports_state.g.dart @@ -17,9 +17,9 @@ class _$ReportsUIStateSerializer final String wireName = 'ReportsUIState'; @override - Iterable serialize(Serializers serializers, ReportsUIState object, + Iterable serialize(Serializers serializers, ReportsUIState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'report', serializers.serialize(object.report, specifiedType: const FullType(String)), @@ -43,8 +43,10 @@ class _$ReportsUIStateSerializer specifiedType: const FullType(String)), 'filters', serializers.serialize(object.filters, - specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(String)])), + specifiedType: const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(String) + ])), ]; return result; @@ -52,48 +54,50 @@ class _$ReportsUIStateSerializer @override ReportsUIState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ReportsUIStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'report': result.report = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'group': result.group = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'selectedGroup': result.selectedGroup = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'chart': result.chart = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'subgroup': result.subgroup = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'customStartDate': result.customStartDate = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'customEndDate': result.customEndDate = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'filters': result.filters.replace(serializers.deserialize(value, - specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(String)]))); + specifiedType: const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(String) + ]))!); break; } } @@ -118,20 +122,20 @@ class _$ReportsUIState extends ReportsUIState { @override final String customEndDate; @override - final BuiltMap filters; + final BuiltMap filters; - factory _$ReportsUIState([void Function(ReportsUIStateBuilder) updates]) => + factory _$ReportsUIState([void Function(ReportsUIStateBuilder)? updates]) => (new ReportsUIStateBuilder()..update(updates))._build(); _$ReportsUIState._( - {this.report, - this.group, - this.selectedGroup, - this.chart, - this.subgroup, - this.customStartDate, - this.customEndDate, - this.filters}) + {required this.report, + required this.group, + required this.selectedGroup, + required this.chart, + required this.subgroup, + required this.customStartDate, + required this.customEndDate, + required this.filters}) : super._() { BuiltValueNullFieldError.checkNotNull(report, r'ReportsUIState', 'report'); BuiltValueNullFieldError.checkNotNull(group, r'ReportsUIState', 'group'); @@ -170,10 +174,10 @@ class _$ReportsUIState extends ReportsUIState { filters == other.filters; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, report.hashCode); _$hash = $jc(_$hash, group.hashCode); @@ -204,43 +208,44 @@ class _$ReportsUIState extends ReportsUIState { class ReportsUIStateBuilder implements Builder { - _$ReportsUIState _$v; + _$ReportsUIState? _$v; - String _report; - String get report => _$this._report; - set report(String report) => _$this._report = report; + String? _report; + String? get report => _$this._report; + set report(String? report) => _$this._report = report; - String _group; - String get group => _$this._group; - set group(String group) => _$this._group = group; + String? _group; + String? get group => _$this._group; + set group(String? group) => _$this._group = group; - String _selectedGroup; - String get selectedGroup => _$this._selectedGroup; - set selectedGroup(String selectedGroup) => + String? _selectedGroup; + String? get selectedGroup => _$this._selectedGroup; + set selectedGroup(String? selectedGroup) => _$this._selectedGroup = selectedGroup; - String _chart; - String get chart => _$this._chart; - set chart(String chart) => _$this._chart = chart; + String? _chart; + String? get chart => _$this._chart; + set chart(String? chart) => _$this._chart = chart; - String _subgroup; - String get subgroup => _$this._subgroup; - set subgroup(String subgroup) => _$this._subgroup = subgroup; + String? _subgroup; + String? get subgroup => _$this._subgroup; + set subgroup(String? subgroup) => _$this._subgroup = subgroup; - String _customStartDate; - String get customStartDate => _$this._customStartDate; - set customStartDate(String customStartDate) => + String? _customStartDate; + String? get customStartDate => _$this._customStartDate; + set customStartDate(String? customStartDate) => _$this._customStartDate = customStartDate; - String _customEndDate; - String get customEndDate => _$this._customEndDate; - set customEndDate(String customEndDate) => + String? _customEndDate; + String? get customEndDate => _$this._customEndDate; + set customEndDate(String? customEndDate) => _$this._customEndDate = customEndDate; - MapBuilder _filters; - MapBuilder get filters => - _$this._filters ??= new MapBuilder(); - set filters(MapBuilder filters) => _$this._filters = filters; + MapBuilder? _filters; + MapBuilder get filters => + _$this._filters ??= new MapBuilder(); + set filters(MapBuilder? filters) => + _$this._filters = filters; ReportsUIStateBuilder(); @@ -267,7 +272,7 @@ class ReportsUIStateBuilder } @override - void update(void Function(ReportsUIStateBuilder) updates) { + void update(void Function(ReportsUIStateBuilder)? updates) { if (updates != null) updates(this); } @@ -295,7 +300,7 @@ class ReportsUIStateBuilder customEndDate, r'ReportsUIState', 'customEndDate'), filters: filters.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'filters'; filters.build(); diff --git a/lib/redux/schedule/schedule_actions.dart b/lib/redux/schedule/schedule_actions.dart index b1fd24224..f070abf2b 100644 --- a/lib/redux/schedule/schedule_actions.dart +++ b/lib/redux/schedule/schedule_actions.dart @@ -17,24 +17,24 @@ class ViewScheduleList implements PersistUI { class ViewSchedule implements PersistUI, PersistPrefs { ViewSchedule({ - @required this.scheduleId, + required this.scheduleId, this.force = false, }); - final String scheduleId; + final String? scheduleId; final bool force; } class EditSchedule implements PersistUI, PersistPrefs { EditSchedule( - {@required this.schedule, + {required this.schedule, this.completer, this.cancelCompleter, this.force = false}); final ScheduleEntity schedule; - final Completer completer; - final Completer cancelCompleter; + final Completer? completer; + final Completer? cancelCompleter; final bool force; } @@ -47,21 +47,21 @@ class UpdateSchedule implements PersistUI { class LoadSchedule { LoadSchedule({this.completer, this.scheduleId}); - final Completer completer; - final String scheduleId; + final Completer? completer; + final String? scheduleId; } class LoadScheduleActivity { LoadScheduleActivity({this.completer, this.scheduleId}); - final Completer completer; - final String scheduleId; + final Completer? completer; + final String? scheduleId; } class LoadSchedules { LoadSchedules({this.completer}); - final Completer completer; + final Completer? completer; } class LoadScheduleRequest implements StartLoading {} @@ -115,8 +115,8 @@ class LoadSchedulesSuccess implements StopLoading { class SaveScheduleRequest implements StartSaving { SaveScheduleRequest({this.completer, this.schedule}); - final Completer completer; - final ScheduleEntity schedule; + final Completer? completer; + final ScheduleEntity? schedule; } class SaveScheduleSuccess implements StopSaving, PersistData, PersistUI { @@ -153,7 +153,7 @@ class ArchiveSchedulesSuccess implements StopSaving, PersistData { class ArchiveSchedulesFailure implements StopSaving { ArchiveSchedulesFailure(this.schedules); - final List schedules; + final List schedules; } class DeleteSchedulesRequest implements StartSaving { @@ -172,7 +172,7 @@ class DeleteSchedulesSuccess implements StopSaving, PersistData { class DeleteSchedulesFailure implements StopSaving { DeleteSchedulesFailure(this.schedules); - final List schedules; + final List schedules; } class RestoreSchedulesRequest implements StartSaving { @@ -191,7 +191,7 @@ class RestoreSchedulesSuccess implements StopSaving, PersistData { class RestoreSchedulesFailure implements StopSaving { RestoreSchedulesFailure(this.schedules); - final List schedules; + final List schedules; } class FilterSchedules implements PersistUI { @@ -241,15 +241,15 @@ class StartScheduleMultiselect { } class AddToScheduleMultiselect { - AddToScheduleMultiselect({@required this.entity}); + AddToScheduleMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class RemoveFromScheduleMultiselect { - RemoveFromScheduleMultiselect({@required this.entity}); + RemoveFromScheduleMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class ClearScheduleMultiselect { @@ -259,37 +259,37 @@ class ClearScheduleMultiselect { class UpdateScheduleTab implements PersistUI { UpdateScheduleTab({this.tabIndex}); - final int tabIndex; + final int? tabIndex; } void handleScheduleAction( - BuildContext context, List schedules, EntityAction action) { + BuildContext? context, List schedules, EntityAction? action) { if (schedules.isEmpty) { return; } - final store = StoreProvider.of(context); + final store = StoreProvider.of(context!); final localization = AppLocalization.of(context); - final schedule = schedules.first as ScheduleEntity; - final scheduleIds = schedules.map((schedule) => schedule.id).toList(); + final schedule = schedules.first as ScheduleEntity?; + final scheduleIds = schedules.map((schedule) => schedule!.id).toList(); switch (action) { case EntityAction.edit: - editEntity(entity: schedule); + editEntity(entity: schedule!); break; case EntityAction.restore: store.dispatch(RestoreSchedulesRequest( - snackBarCompleter(context, localization.restoredSchedule), + snackBarCompleter(context, localization!.restoredSchedule), scheduleIds)); break; case EntityAction.archive: store.dispatch(ArchiveSchedulesRequest( - snackBarCompleter(context, localization.archivedSchedule), + snackBarCompleter(context, localization!.archivedSchedule), scheduleIds)); break; case EntityAction.delete: store.dispatch(DeleteSchedulesRequest( - snackBarCompleter(context, localization.deletedSchedule), + snackBarCompleter(context, localization!.deletedSchedule), scheduleIds)); break; case EntityAction.toggleMultiselect: @@ -302,7 +302,7 @@ void handleScheduleAction( } for (final schedule in schedules) { - if (!store.state.scheduleListState.isSelected(schedule.id)) { + if (!store.state.scheduleListState.isSelected(schedule!.id)) { store.dispatch(AddToScheduleMultiselect(entity: schedule)); } else { store.dispatch(RemoveFromScheduleMultiselect(entity: schedule)); diff --git a/lib/redux/schedule/schedule_middleware.dart b/lib/redux/schedule/schedule_middleware.dart index 40799fe93..b858a7356 100644 --- a/lib/redux/schedule/schedule_middleware.dart +++ b/lib/redux/schedule/schedule_middleware.dart @@ -40,14 +40,14 @@ List> createStoreSchedulesMiddleware([ Middleware _editSchedule() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as EditSchedule; + final action = dynamicAction as EditSchedule?; next(action); store.dispatch(UpdateCurrentRoute(ScheduleEditScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(ScheduleEditScreen.route); + navigatorKey.currentState!.pushNamed(ScheduleEditScreen.route); } }; } @@ -55,21 +55,21 @@ Middleware _editSchedule() { Middleware _viewSchedule() { return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as ViewSchedule; + final action = dynamicAction as ViewSchedule?; next(action); store.dispatch(UpdateCurrentRoute(ScheduleViewScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(ScheduleViewScreen.route); + navigatorKey.currentState!.pushNamed(ScheduleViewScreen.route); } }; } Middleware _viewScheduleList() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as ViewScheduleList; + final action = dynamicAction as ViewScheduleList?; next(action); @@ -80,7 +80,7 @@ Middleware _viewScheduleList() { store.dispatch(UpdateCurrentRoute(ScheduleScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamedAndRemoveUntil( + navigatorKey.currentState!.pushNamedAndRemoveUntil( ScheduleScreen.route, (Route route) => false); } }; @@ -168,19 +168,19 @@ Middleware _saveSchedule(ScheduleRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as SaveScheduleRequest; repository - .saveData(store.state.credentials, action.schedule) + .saveData(store.state.credentials, action.schedule!) .then((ScheduleEntity schedule) { - if (action.schedule.isNew) { + if (action.schedule!.isNew) { store.dispatch(AddScheduleSuccess(schedule)); } else { store.dispatch(SaveScheduleSuccess(schedule)); } - action.completer.complete(schedule); + action.completer!.complete(schedule); }).catchError((Object error) { print(error); store.dispatch(SaveScheduleFailure(error)); - action.completer.completeError(error); + action.completer!.completeError(error); }); next(action); @@ -197,13 +197,13 @@ Middleware _loadSchedule(ScheduleRepository repository) { store.dispatch(LoadScheduleSuccess(schedule)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(LoadScheduleFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -213,21 +213,21 @@ Middleware _loadSchedule(ScheduleRepository repository) { Middleware _loadSchedules(ScheduleRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as LoadSchedules; + final action = dynamicAction as LoadSchedules?; final AppState state = store.state; store.dispatch(LoadSchedulesRequest()); repository.loadList(state.credentials).then((data) { store.dispatch(LoadSchedulesSuccess(data)); - if (action.completer != null) { - action.completer.complete(null); + if (action!.completer != null) { + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(LoadSchedulesFailure(error)); - if (action.completer != null) { - action.completer.completeError(error); + if (action!.completer != null) { + action.completer!.completeError(error); } }); diff --git a/lib/redux/schedule/schedule_reducer.dart b/lib/redux/schedule/schedule_reducer.dart index 5ef688738..5dbc4e825 100644 --- a/lib/redux/schedule/schedule_reducer.dart +++ b/lib/redux/schedule/schedule_reducer.dart @@ -11,52 +11,52 @@ import 'package:invoiceninja_flutter/redux/schedule/schedule_state.dart'; EntityUIState scheduleUIReducer(ScheduleUIState state, dynamic action) { return state.rebuild((b) => b ..listUIState.replace(scheduleListReducer(state.listUIState, action)) - ..editing.replace(editingReducer(state.editing, action)) + ..editing.replace(editingReducer(state.editing, action)!) ..selectedId = selectedIdReducer(state.selectedId, action) ..forceSelected = forceSelectedReducer(state.forceSelected, action) ..tabIndex = tabIndexReducer(state.tabIndex, action)); } -final forceSelectedReducer = combineReducers([ - TypedReducer((completer, action) => true), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), +final forceSelectedReducer = combineReducers([ + TypedReducer((completer, action) => true), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), ]); -final tabIndexReducer = combineReducers([ - TypedReducer((completer, action) { +final int? Function(int, dynamic) tabIndexReducer = combineReducers([ + TypedReducer((completer, action) { return action.tabIndex; }), - TypedReducer((completer, action) { + TypedReducer((completer, action) { return 0; }), ]); -Reducer selectedIdReducer = combineReducers([ - TypedReducer((completer, action) => ''), - TypedReducer((completer, action) => ''), - TypedReducer((selectedId, action) => +Reducer selectedIdReducer = combineReducers([ + TypedReducer((completer, action) => ''), + TypedReducer((completer, action) => ''), + TypedReducer((selectedId, action) => action.entityType == EntityType.schedule ? action.entityId : selectedId), - TypedReducer( - (String selectedId, dynamic action) => action.scheduleId), - TypedReducer( - (String selectedId, dynamic action) => action.schedule.id), - TypedReducer( + TypedReducer( + (String? selectedId, dynamic action) => action.scheduleId), + TypedReducer( + (String? selectedId, dynamic action) => action.schedule.id), + TypedReducer( (selectedId, action) => action.clearSelection ? '' : selectedId), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer( + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer( (selectedId, action) => action.clearSelection ? '' : action.entityType == EntityType.schedule @@ -64,30 +64,30 @@ Reducer selectedIdReducer = combineReducers([ : selectedId), ]); -final editingReducer = combineReducers([ - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer((schedules, action) { +final editingReducer = combineReducers([ + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer((schedules, action) { return action.schedules[0]; }), - TypedReducer((schedules, action) { + TypedReducer((schedules, action) { return action.schedules[0]; }), - TypedReducer((schedules, action) { + TypedReducer((schedules, action) { return action.schedules[0]; }), - TypedReducer(_updateEditing), - TypedReducer((schedule, action) { + TypedReducer(_updateEditing), + TypedReducer((schedule, action) { return action.schedule.rebuild((b) => b..isChanged = true); }), - TypedReducer(_clearEditing), + TypedReducer(_clearEditing), ]); -ScheduleEntity _clearEditing(ScheduleEntity schedule, dynamic action) { +ScheduleEntity _clearEditing(ScheduleEntity? schedule, dynamic action) { return ScheduleEntity(ScheduleEntity.TEMPLATE_EMAIL_STATEMENT); } -ScheduleEntity _updateEditing(ScheduleEntity schedule, dynamic action) { +ScheduleEntity? _updateEditing(ScheduleEntity? schedule, dynamic action) { return action.schedule; } @@ -163,7 +163,7 @@ ListUIState _filterSchedules( ListUIState _sortSchedules( ListUIState scheduleListState, SortSchedules action) { return scheduleListState.rebuild((b) => b - ..sortAscending = b.sortField != action.field || !b.sortAscending + ..sortAscending = b.sortField != action.field || !b.sortAscending! ..sortField = action.field); } @@ -174,13 +174,13 @@ ListUIState _startListMultiselect( ListUIState _addToListMultiselect( ListUIState productListState, AddToScheduleMultiselect action) { - return productListState.rebuild((b) => b..selectedIds.add(action.entity.id)); + return productListState.rebuild((b) => b..selectedIds.add(action.entity!.id)); } ListUIState _removeFromListMultiselect( ListUIState productListState, RemoveFromScheduleMultiselect action) { return productListState - .rebuild((b) => b..selectedIds.remove(action.entity.id)); + .rebuild((b) => b..selectedIds.remove(action.entity!.id)); } ListUIState _clearListMultiselect( @@ -251,6 +251,6 @@ ScheduleState _setLoadedSchedules( ScheduleState _setLoadedCompany( ScheduleState scheduleState, LoadCompanySuccess action) { - final company = action.userCompany.company; + final company = action.userCompany.company!; return scheduleState.loadSchedules(company.schedules); } diff --git a/lib/redux/schedule/schedule_selectors.dart b/lib/redux/schedule/schedule_selectors.dart index f06544dbd..8c5007de8 100644 --- a/lib/redux/schedule/schedule_selectors.dart +++ b/lib/redux/schedule/schedule_selectors.dart @@ -21,7 +21,7 @@ List dropdownSchedulesSelector( BuiltMap userMap, String clientId) { final list = scheduleList.where((scheduleId) { - final schedule = scheduleMap[scheduleId]; + final schedule = scheduleMap[scheduleId]!; /* if (clientId != null && clientId > 0 && schedule.clientId != clientId) { return false; @@ -31,7 +31,7 @@ List dropdownSchedulesSelector( }).toList(); list.sort((scheduleAId, scheduleBId) { - final scheduleA = scheduleMap[scheduleAId]; + final scheduleA = scheduleMap[scheduleAId]!; final scheduleB = scheduleMap[scheduleBId]; return scheduleA.compareTo(scheduleB, ScheduleFields.template, true); }); @@ -40,7 +40,7 @@ List dropdownSchedulesSelector( } var memoizedFilteredScheduleList = memo4((SelectionState selectionState, - BuiltMap scheduleMap, + BuiltMap scheduleMap, BuiltList scheduleList, ListUIState scheduleListState) => filteredSchedulesSelector( @@ -48,7 +48,7 @@ var memoizedFilteredScheduleList = memo4((SelectionState selectionState, List filteredSchedulesSelector( SelectionState selectionState, - BuiltMap scheduleMap, + BuiltMap scheduleMap, BuiltList scheduleList, ListUIState scheduleListState) { final filterEntityId = selectionState.filterEntityId; @@ -56,11 +56,11 @@ List filteredSchedulesSelector( final list = scheduleList.where((scheduleId) { final schedule = scheduleMap[scheduleId]; - if (filterEntityId != null && schedule.id != filterEntityId) { + if (filterEntityId != null && schedule!.id != filterEntityId) { return false; } else {} - if (!schedule.matchesStates(scheduleListState.stateFilters)) { + if (!schedule!.matchesStates(scheduleListState.stateFilters)) { return false; } @@ -68,7 +68,7 @@ List filteredSchedulesSelector( }).toList(); list.sort((scheduleAId, scheduleBId) { - final scheduleA = scheduleMap[scheduleAId]; + final scheduleA = scheduleMap[scheduleAId]!; final scheduleB = scheduleMap[scheduleBId]; return scheduleA.compareTo(scheduleB, scheduleListState.sortField, scheduleListState.sortAscending); diff --git a/lib/redux/schedule/schedule_state.dart b/lib/redux/schedule/schedule_state.dart index 73bfab61f..eb5a79221 100644 --- a/lib/redux/schedule/schedule_state.dart +++ b/lib/redux/schedule/schedule_state.dart @@ -23,10 +23,10 @@ abstract class ScheduleState @memoized int get hashCode; - BuiltMap get map; + BuiltMap get map; BuiltList get list; - ScheduleEntity get(String scheduleId) { + ScheduleEntity? get(String scheduleId) { if (map.containsKey(scheduleId)) { return map[scheduleId]; } else { @@ -36,7 +36,7 @@ abstract class ScheduleState } ScheduleState loadSchedules(BuiltList clients) { - final map = Map.fromIterable( + final map = Map.fromIterable( clients, key: (dynamic item) => item.id, value: (dynamic item) => item, @@ -53,7 +53,7 @@ abstract class ScheduleState abstract class ScheduleUIState extends Object with EntityUIState implements Built { - factory ScheduleUIState(PrefStateSortField sortField) { + factory ScheduleUIState(PrefStateSortField? sortField) { return _$ScheduleUIState._( listUIState: ListUIState(sortField?.field ?? ScheduleFields.nextRun, sortAscending: sortField?.ascending), @@ -68,14 +68,13 @@ abstract class ScheduleUIState extends Object @memoized int get hashCode; - @nullable - ScheduleEntity get editing; + ScheduleEntity? get editing; @override - bool get isCreatingNew => editing.isNew; + bool get isCreatingNew => editing!.isNew; @override - String get editingId => editing.id; + String get editingId => editing!.id; static Serializer get serializer => _$scheduleUIStateSerializer; diff --git a/lib/redux/schedule/schedule_state.g.dart b/lib/redux/schedule/schedule_state.g.dart index f62109d49..f57e69714 100644 --- a/lib/redux/schedule/schedule_state.g.dart +++ b/lib/redux/schedule/schedule_state.g.dart @@ -18,13 +18,15 @@ class _$ScheduleStateSerializer implements StructuredSerializer { final String wireName = 'ScheduleState'; @override - Iterable serialize(Serializers serializers, ScheduleState object, + Iterable serialize(Serializers serializers, ScheduleState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'map', serializers.serialize(object.map, - specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(ScheduleEntity)])), + specifiedType: const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(ScheduleEntity) + ])), 'list', serializers.serialize(object.list, specifiedType: @@ -36,28 +38,28 @@ class _$ScheduleStateSerializer implements StructuredSerializer { @override ScheduleState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ScheduleStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'map': result.map.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(ScheduleEntity) - ]))); + const FullType.nullable(String), + const FullType.nullable(ScheduleEntity) + ]))!); break; case 'list': result.list.replace(serializers.deserialize(value, - specifiedType: - const FullType(BuiltList, const [const FullType(String)])) - as BuiltList); + specifiedType: const FullType( + BuiltList, const [const FullType(String)]))! + as BuiltList); break; } } @@ -74,9 +76,9 @@ class _$ScheduleUIStateSerializer final String wireName = 'ScheduleUIState'; @override - Iterable serialize(Serializers serializers, ScheduleUIState object, + Iterable serialize(Serializers serializers, ScheduleUIState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'listUIState', serializers.serialize(object.listUIState, specifiedType: const FullType(ListUIState)), @@ -84,7 +86,7 @@ class _$ScheduleUIStateSerializer serializers.serialize(object.tabIndex, specifiedType: const FullType(int)), ]; - Object value; + Object? value; value = object.editing; if (value != null) { result @@ -111,35 +113,36 @@ class _$ScheduleUIStateSerializer @override ScheduleUIState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ScheduleUIStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'editing': result.editing.replace(serializers.deserialize(value, - specifiedType: const FullType(ScheduleEntity)) as ScheduleEntity); + specifiedType: const FullType(ScheduleEntity))! + as ScheduleEntity); break; case 'listUIState': result.listUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(ListUIState)) as ListUIState); + specifiedType: const FullType(ListUIState))! as ListUIState); break; case 'selectedId': result.selectedId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'forceSelected': result.forceSelected = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'tabIndex': result.tabIndex = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; } } @@ -150,14 +153,14 @@ class _$ScheduleUIStateSerializer class _$ScheduleState extends ScheduleState { @override - final BuiltMap map; + final BuiltMap map; @override final BuiltList list; - factory _$ScheduleState([void Function(ScheduleStateBuilder) updates]) => + factory _$ScheduleState([void Function(ScheduleStateBuilder)? updates]) => (new ScheduleStateBuilder()..update(updates))._build(); - _$ScheduleState._({this.map, this.list}) : super._() { + _$ScheduleState._({required this.map, required this.list}) : super._() { BuiltValueNullFieldError.checkNotNull(map, r'ScheduleState', 'map'); BuiltValueNullFieldError.checkNotNull(list, r'ScheduleState', 'list'); } @@ -175,10 +178,10 @@ class _$ScheduleState extends ScheduleState { return other is ScheduleState && map == other.map && list == other.list; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, map.hashCode); _$hash = $jc(_$hash, list.hashCode); @@ -197,16 +200,16 @@ class _$ScheduleState extends ScheduleState { class ScheduleStateBuilder implements Builder { - _$ScheduleState _$v; + _$ScheduleState? _$v; - MapBuilder _map; - MapBuilder get map => - _$this._map ??= new MapBuilder(); - set map(MapBuilder map) => _$this._map = map; + MapBuilder? _map; + MapBuilder get map => + _$this._map ??= new MapBuilder(); + set map(MapBuilder? map) => _$this._map = map; - ListBuilder _list; + ListBuilder? _list; ListBuilder get list => _$this._list ??= new ListBuilder(); - set list(ListBuilder list) => _$this._list = list; + set list(ListBuilder? list) => _$this._list = list; ScheduleStateBuilder(); @@ -227,7 +230,7 @@ class ScheduleStateBuilder } @override - void update(void Function(ScheduleStateBuilder) updates) { + void update(void Function(ScheduleStateBuilder)? updates) { if (updates != null) updates(this); } @@ -240,7 +243,7 @@ class ScheduleStateBuilder _$result = _$v ?? new _$ScheduleState._(map: map.build(), list: list.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'map'; map.build(); @@ -259,29 +262,29 @@ class ScheduleStateBuilder class _$ScheduleUIState extends ScheduleUIState { @override - final ScheduleEntity editing; + final ScheduleEntity? editing; @override final ListUIState listUIState; @override - final String selectedId; + final String? selectedId; @override - final bool forceSelected; + final bool? forceSelected; @override final int tabIndex; @override - final Completer saveCompleter; + final Completer? saveCompleter; @override - final Completer cancelCompleter; + final Completer? cancelCompleter; - factory _$ScheduleUIState([void Function(ScheduleUIStateBuilder) updates]) => + factory _$ScheduleUIState([void Function(ScheduleUIStateBuilder)? updates]) => (new ScheduleUIStateBuilder()..update(updates))._build(); _$ScheduleUIState._( {this.editing, - this.listUIState, + required this.listUIState, this.selectedId, this.forceSelected, - this.tabIndex, + required this.tabIndex, this.saveCompleter, this.cancelCompleter}) : super._() { @@ -312,10 +315,10 @@ class _$ScheduleUIState extends ScheduleUIState { cancelCompleter == other.cancelCompleter; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, editing.hashCode); _$hash = $jc(_$hash, listUIState.hashCode); @@ -344,40 +347,40 @@ class _$ScheduleUIState extends ScheduleUIState { class ScheduleUIStateBuilder implements Builder { - _$ScheduleUIState _$v; + _$ScheduleUIState? _$v; - ScheduleEntityBuilder _editing; + ScheduleEntityBuilder? _editing; ScheduleEntityBuilder get editing => _$this._editing ??= new ScheduleEntityBuilder(); - set editing(ScheduleEntityBuilder editing) => _$this._editing = editing; + set editing(ScheduleEntityBuilder? editing) => _$this._editing = editing; - ListUIStateBuilder _listUIState; + ListUIStateBuilder? _listUIState; ListUIStateBuilder get listUIState => _$this._listUIState ??= new ListUIStateBuilder(); - set listUIState(ListUIStateBuilder listUIState) => + set listUIState(ListUIStateBuilder? listUIState) => _$this._listUIState = listUIState; - String _selectedId; - String get selectedId => _$this._selectedId; - set selectedId(String selectedId) => _$this._selectedId = selectedId; + String? _selectedId; + String? get selectedId => _$this._selectedId; + set selectedId(String? selectedId) => _$this._selectedId = selectedId; - bool _forceSelected; - bool get forceSelected => _$this._forceSelected; - set forceSelected(bool forceSelected) => + bool? _forceSelected; + bool? get forceSelected => _$this._forceSelected; + set forceSelected(bool? forceSelected) => _$this._forceSelected = forceSelected; - int _tabIndex; - int get tabIndex => _$this._tabIndex; - set tabIndex(int tabIndex) => _$this._tabIndex = tabIndex; + int? _tabIndex; + int? get tabIndex => _$this._tabIndex; + set tabIndex(int? tabIndex) => _$this._tabIndex = tabIndex; - Completer _saveCompleter; - Completer get saveCompleter => _$this._saveCompleter; - set saveCompleter(Completer saveCompleter) => + Completer? _saveCompleter; + Completer? get saveCompleter => _$this._saveCompleter; + set saveCompleter(Completer? saveCompleter) => _$this._saveCompleter = saveCompleter; - Completer _cancelCompleter; - Completer get cancelCompleter => _$this._cancelCompleter; - set cancelCompleter(Completer cancelCompleter) => + Completer? _cancelCompleter; + Completer? get cancelCompleter => _$this._cancelCompleter; + set cancelCompleter(Completer? cancelCompleter) => _$this._cancelCompleter = cancelCompleter; ScheduleUIStateBuilder(); @@ -404,7 +407,7 @@ class ScheduleUIStateBuilder } @override - void update(void Function(ScheduleUIStateBuilder) updates) { + void update(void Function(ScheduleUIStateBuilder)? updates) { if (updates != null) updates(this); } @@ -425,7 +428,7 @@ class ScheduleUIStateBuilder saveCompleter: saveCompleter, cancelCompleter: cancelCompleter); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'editing'; _editing?.build(); diff --git a/lib/redux/settings/settings_actions.dart b/lib/redux/settings/settings_actions.dart index 6a1e8aaef..262357937 100644 --- a/lib/redux/settings/settings_actions.dart +++ b/lib/redux/settings/settings_actions.dart @@ -29,14 +29,14 @@ class ViewSettings implements PersistUI { this.tabIndex, }); - final CompanyEntity company; - final GroupEntity group; - final ClientEntity client; - final UserEntity user; + final CompanyEntity? company; + final GroupEntity? group; + final ClientEntity? client; + final UserEntity? user; final bool force; - final String section; + final String? section; final bool clearFilter; - final int tabIndex; + final int? tabIndex; } class ClearSettingsFilter implements PersistUI {} @@ -44,13 +44,13 @@ class ClearSettingsFilter implements PersistUI {} class ResetSettings {} class UpdateSettings implements PersistUI { - UpdateSettings({@required this.settings}); + UpdateSettings({required this.settings}); final SettingsEntity settings; } class UpdateSettingsTab implements PersistUI { - UpdateSettingsTab({@required this.tabIndex}); + UpdateSettingsTab({required this.tabIndex}); final int tabIndex; } @@ -60,13 +60,13 @@ class UpdatedSetting implements PersistUI {} class UpdatedSettingUI implements PersistUI {} class UpdateSettingsTemplate implements PersistUI { - UpdateSettingsTemplate({@required this.selectedTemplate}); + UpdateSettingsTemplate({required this.selectedTemplate}); final EmailTemplate selectedTemplate; } class UpdateUserSettings implements PersistUI { - UpdateUserSettings({@required this.user}); + UpdateUserSettings({required this.user}); final UserEntity user; } @@ -74,9 +74,9 @@ class UpdateUserSettings implements PersistUI { class UploadLogoRequest implements StartSaving { UploadLogoRequest({this.completer, this.multipartFile, this.type}); - final Completer completer; - final MultipartFile multipartFile; - final EntityType type; + final Completer? completer; + final MultipartFile? multipartFile; + final EntityType? type; } class UploadLogoFailure implements StopSaving { @@ -87,8 +87,8 @@ class UploadLogoFailure implements StopSaving { class SaveUserSettingsRequest implements StartSaving { SaveUserSettingsRequest({ - @required this.completer, - @required this.user, + required this.completer, + required this.user, }); final Completer completer; @@ -109,16 +109,16 @@ class SaveUserSettingsFailure implements StopSaving { class SaveAuthUserRequest implements StartSaving { SaveAuthUserRequest({ - @required this.user, + required this.user, this.completer, this.password, this.idToken, }); - final Completer completer; + final Completer? completer; final UserEntity user; - final String password; - final String idToken; + final String? password; + final String? idToken; } class SaveAuthUserSuccess @@ -136,16 +136,16 @@ class SaveAuthUserFailure implements StopSaving { class ConnecOAuthUserRequest implements StartSaving { ConnecOAuthUserRequest({ - @required this.provider, - @required this.idToken, - @required this.accessToken, + required this.provider, + required this.idToken, + required this.accessToken, this.completer, this.password, }); - final Completer completer; + final Completer? completer; final String provider; - final String password; + final String? password; final String idToken; final String accessToken; } @@ -165,16 +165,16 @@ class ConnecOAuthUserFailure implements StopSaving { class DisconnecOAuthUserRequest implements StartSaving { DisconnecOAuthUserRequest({ - @required this.user, - @required this.idToken, - @required this.completer, - @required this.password, + required this.user, + required this.idToken, + required this.completer, + required this.password, }); - final UserEntity user; + final UserEntity? user; final Completer completer; - final String password; - final String idToken; + final String? password; + final String? idToken; } class DisconnectOAuthUserSuccess @@ -192,15 +192,15 @@ class DisconnecOAuthUserFailure implements StopSaving { class DisconnectOAuthMailerRequest implements StartSaving { DisconnectOAuthMailerRequest({ - @required this.completer, - @required this.idToken, - @required this.password, - @required this.user, + required this.completer, + required this.idToken, + required this.password, + required this.user, }); final Completer completer; - final String password; - final String idToken; - final UserEntity user; + final String? password; + final String? idToken; + final UserEntity? user; } class DisconnectOAuthMailerSuccess @@ -218,14 +218,14 @@ class DisconnectOAuthMailerFailure implements StopSaving { class DisableTwoFactorRequest implements StartSaving { DisableTwoFactorRequest({ - @required this.completer, - @required this.idToken, - @required this.password, + required this.completer, + required this.idToken, + required this.password, }); final Completer completer; - final String password; - final String idToken; + final String? password; + final String? idToken; } class DisableTwoFactorSuccess @@ -239,15 +239,15 @@ class DisableTwoFactorFailure implements StopSaving { class ConnecGmailUserRequest implements StartSaving { ConnecGmailUserRequest({ - @required this.serverAuthCode, - @required this.idToken, + required this.serverAuthCode, + required this.idToken, this.completer, this.password, }); - final Completer completer; + final Completer? completer; final String idToken; - final String password; + final String? password; final String serverAuthCode; } diff --git a/lib/redux/settings/settings_middleware.dart b/lib/redux/settings/settings_middleware.dart index 602b2e211..fde49ea8c 100644 --- a/lib/redux/settings/settings_middleware.dart +++ b/lib/redux/settings/settings_middleware.dart @@ -88,10 +88,10 @@ Middleware _viewSettings() { if (store.state.prefState.isMobile) { if (action.section == null) { - navigatorKey.currentState.pushNamedAndRemoveUntil( + navigatorKey.currentState!.pushNamedAndRemoveUntil( SettingsScreen.route, (Route route) => false); } else { - navigatorKey.currentState.pushNamed(route); + navigatorKey.currentState!.pushNamed(route); } } }); @@ -103,15 +103,15 @@ Middleware _saveCompany(SettingsRepository settingsRepository) { final action = dynamicAction as SaveCompanyRequest; settingsRepository - .saveCompany(store.state.credentials, action.company) + .saveCompany(store.state.credentials, action.company!) .then((company) { store.dispatch(SaveCompanySuccess(company)); - action.completer.complete(); + action.completer!.complete(); WidgetUtils.updateData(); }).catchError((Object error) { print(error); store.dispatch(SaveCompanyFailure(error)); - action.completer.completeError(error); + action.completer!.completeError(error); }); next(action); @@ -126,16 +126,16 @@ Middleware _saveEInvoiceCertificate( settingsRepository .saveEInvoiceCertificate( store.state.credentials, - action.company, + action.company!, action.eInvoiceCertificate, ) .then((company) { store.dispatch(SaveEInvoiceCertificateSuccess(company)); - action.completer.complete(); + action.completer!.complete(); }).catchError((Object error) { print(error); store.dispatch(SaveEInvoiceCertificateFailure(error)); - action.completer.completeError(error); + action.completer!.completeError(error); }); next(action); @@ -152,7 +152,7 @@ Middleware _saveAuthUser(SettingsRepository settingsRepository) { .then((user) { store.dispatch(SaveAuthUserSuccess(user)); if (action.completer != null) { - action.completer.complete(); + action.completer!.complete(); } WidgetUtils.updateData(); }).catchError((Object error) { @@ -162,7 +162,7 @@ Middleware _saveAuthUser(SettingsRepository settingsRepository) { store.dispatch(UserUnverifiedPassword()); } if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -185,7 +185,7 @@ Middleware _connectOAuthUser(SettingsRepository settingsRepository) { .then((user) { store.dispatch(ConnectOAuthUserSuccess(user)); if (action.completer != null) { - action.completer.complete(); + action.completer!.complete(); } }).catchError((Object error) { print(error); @@ -194,7 +194,7 @@ Middleware _connectOAuthUser(SettingsRepository settingsRepository) { store.dispatch(UserUnverifiedPassword()); } if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -210,7 +210,7 @@ Middleware _disconnectOAuthUser( settingsRepository .disconnectOAuthUser( store.state.credentials, - action.user, + action.user!, action.password, action.idToken, ) @@ -244,7 +244,7 @@ Middleware _disconnectOAuthMailer( store.state.credentials, action.password, action.idToken, - action.user.id, + action.user!.id, ) .then((user) { store.dispatch(DisconnectOAuthMailerSuccess(user)); @@ -276,7 +276,7 @@ Middleware _connectGmailUser(SettingsRepository settingsRepository) { .then((user) { store.dispatch(ConnecGmailUserSuccess(user)); if (action.completer != null) { - action.completer.complete(); + action.completer!.complete(); } }).catchError((Object error) { print(error); @@ -285,7 +285,7 @@ Middleware _connectGmailUser(SettingsRepository settingsRepository) { store.dispatch(UserUnverifiedPassword()); } if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -345,7 +345,7 @@ Middleware _uploadLogo(SettingsRepository settingsRepository) { final state = store.state; final settingsState = state.uiState.settingsUIState; final entityId = action.type == EntityType.company - ? state.company.id + ? state.company!.id : action.type == EntityType.group ? settingsState.group.id : settingsState.client.id; @@ -361,11 +361,11 @@ Middleware _uploadLogo(SettingsRepository settingsRepository) { store.dispatch(SaveCompanySuccess(entity as CompanyEntity)); } - action.completer.complete(); + action.completer!.complete(); }).catchError((Object error) { print(error); store.dispatch(UploadLogoFailure(error)); - action.completer.completeError(error); + action.completer!.completeError(error); }); next(action); @@ -374,14 +374,14 @@ Middleware _uploadLogo(SettingsRepository settingsRepository) { Middleware _saveDocument(SettingsRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as SaveCompanyDocumentRequest; + final action = dynamicAction as SaveCompanyDocumentRequest?; final state = store.state; if (state.isEnterprisePlan) { repository .uploadDocument( store.state.credentials, - state.company, - action.multipartFiles, + state.company!, + action!.multipartFiles, action.isPrivate, ) .then((company) { @@ -404,7 +404,7 @@ Middleware _saveDocument(SettingsRepository repository) { } else { const error = 'Uploading documents requires an enterprise plan'; store.dispatch(SaveCompanyDocumentFailure(error)); - action.completer.completeError(error); + action!.completer.completeError(error); } next(action); diff --git a/lib/redux/settings/settings_state.dart b/lib/redux/settings/settings_state.dart index 3f55da6dc..a51f66221 100644 --- a/lib/redux/settings/settings_state.dart +++ b/lib/redux/settings/settings_state.dart @@ -12,15 +12,15 @@ part 'settings_state.g.dart'; abstract class SettingsUIState extends Object implements Built { factory SettingsUIState( - {CompanyEntity company, - ClientEntity client, - GroupEntity group, - UserEntity user, - CompanyEntity origCompany, - ClientEntity origClient, - GroupEntity origGroup, - UserEntity origUser, - String section}) { + {CompanyEntity? company, + ClientEntity? client, + GroupEntity? group, + UserEntity? user, + CompanyEntity? origCompany, + ClientEntity? origClient, + GroupEntity? origGroup, + UserEntity? origUser, + String? section}) { return _$SettingsUIState._( company: company ?? CompanyEntity(), client: client ?? ClientEntity(), @@ -80,8 +80,7 @@ abstract class SettingsUIState extends Object EmailTemplate get selectedTemplate; - @nullable - String get filter; + String? get filter; int get filterClearedAt; diff --git a/lib/redux/settings/settings_state.g.dart b/lib/redux/settings/settings_state.g.dart index aed67a6c8..8808e2fc5 100644 --- a/lib/redux/settings/settings_state.g.dart +++ b/lib/redux/settings/settings_state.g.dart @@ -17,9 +17,9 @@ class _$SettingsUIStateSerializer final String wireName = 'SettingsUIState'; @override - Iterable serialize(Serializers serializers, SettingsUIState object, + Iterable serialize(Serializers serializers, SettingsUIState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'company', serializers.serialize(object.company, specifiedType: const FullType(CompanyEntity)), @@ -72,7 +72,7 @@ class _$SettingsUIStateSerializer serializers.serialize(object.showPdfPreview, specifiedType: const FullType(bool)), ]; - Object value; + Object? value; value = object.filter; if (value != null) { result @@ -85,87 +85,87 @@ class _$SettingsUIStateSerializer @override SettingsUIState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new SettingsUIStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'company': result.company.replace(serializers.deserialize(value, - specifiedType: const FullType(CompanyEntity)) as CompanyEntity); + specifiedType: const FullType(CompanyEntity))! as CompanyEntity); break; case 'origCompany': result.origCompany.replace(serializers.deserialize(value, - specifiedType: const FullType(CompanyEntity)) as CompanyEntity); + specifiedType: const FullType(CompanyEntity))! as CompanyEntity); break; case 'client': result.client.replace(serializers.deserialize(value, - specifiedType: const FullType(ClientEntity)) as ClientEntity); + specifiedType: const FullType(ClientEntity))! as ClientEntity); break; case 'origClient': result.origClient.replace(serializers.deserialize(value, - specifiedType: const FullType(ClientEntity)) as ClientEntity); + specifiedType: const FullType(ClientEntity))! as ClientEntity); break; case 'group': result.group.replace(serializers.deserialize(value, - specifiedType: const FullType(GroupEntity)) as GroupEntity); + specifiedType: const FullType(GroupEntity))! as GroupEntity); break; case 'origGroup': result.origGroup.replace(serializers.deserialize(value, - specifiedType: const FullType(GroupEntity)) as GroupEntity); + specifiedType: const FullType(GroupEntity))! as GroupEntity); break; case 'user': result.user.replace(serializers.deserialize(value, - specifiedType: const FullType(UserEntity)) as UserEntity); + specifiedType: const FullType(UserEntity))! as UserEntity); break; case 'origUser': result.origUser.replace(serializers.deserialize(value, - specifiedType: const FullType(UserEntity)) as UserEntity); + specifiedType: const FullType(UserEntity))! as UserEntity); break; case 'entityType': result.entityType = serializers.deserialize(value, - specifiedType: const FullType(EntityType)) as EntityType; + specifiedType: const FullType(EntityType))! as EntityType; break; case 'isChanged': result.isChanged = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'updatedAt': result.updatedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'section': result.section = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'tabIndex': result.tabIndex = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'selectedTemplate': result.selectedTemplate = serializers.deserialize(value, - specifiedType: const FullType(EmailTemplate)) as EmailTemplate; + specifiedType: const FullType(EmailTemplate))! as EmailTemplate; break; case 'filter': result.filter = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'filterClearedAt': result.filterClearedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'showNewSettings': result.showNewSettings = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'showPdfPreview': result.showPdfPreview = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; } } @@ -204,7 +204,7 @@ class _$SettingsUIState extends SettingsUIState { @override final EmailTemplate selectedTemplate; @override - final String filter; + final String? filter; @override final int filterClearedAt; @override @@ -212,28 +212,28 @@ class _$SettingsUIState extends SettingsUIState { @override final bool showPdfPreview; - factory _$SettingsUIState([void Function(SettingsUIStateBuilder) updates]) => + factory _$SettingsUIState([void Function(SettingsUIStateBuilder)? updates]) => (new SettingsUIStateBuilder()..update(updates))._build(); _$SettingsUIState._( - {this.company, - this.origCompany, - this.client, - this.origClient, - this.group, - this.origGroup, - this.user, - this.origUser, - this.entityType, - this.isChanged, - this.updatedAt, - this.section, - this.tabIndex, - this.selectedTemplate, + {required this.company, + required this.origCompany, + required this.client, + required this.origClient, + required this.group, + required this.origGroup, + required this.user, + required this.origUser, + required this.entityType, + required this.isChanged, + required this.updatedAt, + required this.section, + required this.tabIndex, + required this.selectedTemplate, this.filter, - this.filterClearedAt, - this.showNewSettings, - this.showPdfPreview}) + required this.filterClearedAt, + required this.showNewSettings, + required this.showPdfPreview}) : super._() { BuiltValueNullFieldError.checkNotNull( company, r'SettingsUIState', 'company'); @@ -300,10 +300,10 @@ class _$SettingsUIState extends SettingsUIState { showPdfPreview == other.showPdfPreview; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, company.hashCode); _$hash = $jc(_$hash, origCompany.hashCode); @@ -354,90 +354,90 @@ class _$SettingsUIState extends SettingsUIState { class SettingsUIStateBuilder implements Builder { - _$SettingsUIState _$v; + _$SettingsUIState? _$v; - CompanyEntityBuilder _company; + CompanyEntityBuilder? _company; CompanyEntityBuilder get company => _$this._company ??= new CompanyEntityBuilder(); - set company(CompanyEntityBuilder company) => _$this._company = company; + set company(CompanyEntityBuilder? company) => _$this._company = company; - CompanyEntityBuilder _origCompany; + CompanyEntityBuilder? _origCompany; CompanyEntityBuilder get origCompany => _$this._origCompany ??= new CompanyEntityBuilder(); - set origCompany(CompanyEntityBuilder origCompany) => + set origCompany(CompanyEntityBuilder? origCompany) => _$this._origCompany = origCompany; - ClientEntityBuilder _client; + ClientEntityBuilder? _client; ClientEntityBuilder get client => _$this._client ??= new ClientEntityBuilder(); - set client(ClientEntityBuilder client) => _$this._client = client; + set client(ClientEntityBuilder? client) => _$this._client = client; - ClientEntityBuilder _origClient; + ClientEntityBuilder? _origClient; ClientEntityBuilder get origClient => _$this._origClient ??= new ClientEntityBuilder(); - set origClient(ClientEntityBuilder origClient) => + set origClient(ClientEntityBuilder? origClient) => _$this._origClient = origClient; - GroupEntityBuilder _group; + GroupEntityBuilder? _group; GroupEntityBuilder get group => _$this._group ??= new GroupEntityBuilder(); - set group(GroupEntityBuilder group) => _$this._group = group; + set group(GroupEntityBuilder? group) => _$this._group = group; - GroupEntityBuilder _origGroup; + GroupEntityBuilder? _origGroup; GroupEntityBuilder get origGroup => _$this._origGroup ??= new GroupEntityBuilder(); - set origGroup(GroupEntityBuilder origGroup) => _$this._origGroup = origGroup; + set origGroup(GroupEntityBuilder? origGroup) => _$this._origGroup = origGroup; - UserEntityBuilder _user; + UserEntityBuilder? _user; UserEntityBuilder get user => _$this._user ??= new UserEntityBuilder(); - set user(UserEntityBuilder user) => _$this._user = user; + set user(UserEntityBuilder? user) => _$this._user = user; - UserEntityBuilder _origUser; + UserEntityBuilder? _origUser; UserEntityBuilder get origUser => _$this._origUser ??= new UserEntityBuilder(); - set origUser(UserEntityBuilder origUser) => _$this._origUser = origUser; + set origUser(UserEntityBuilder? origUser) => _$this._origUser = origUser; - EntityType _entityType; - EntityType get entityType => _$this._entityType; - set entityType(EntityType entityType) => _$this._entityType = entityType; + EntityType? _entityType; + EntityType? get entityType => _$this._entityType; + set entityType(EntityType? entityType) => _$this._entityType = entityType; - bool _isChanged; - bool get isChanged => _$this._isChanged; - set isChanged(bool isChanged) => _$this._isChanged = isChanged; + bool? _isChanged; + bool? get isChanged => _$this._isChanged; + set isChanged(bool? isChanged) => _$this._isChanged = isChanged; - int _updatedAt; - int get updatedAt => _$this._updatedAt; - set updatedAt(int updatedAt) => _$this._updatedAt = updatedAt; + int? _updatedAt; + int? get updatedAt => _$this._updatedAt; + set updatedAt(int? updatedAt) => _$this._updatedAt = updatedAt; - String _section; - String get section => _$this._section; - set section(String section) => _$this._section = section; + String? _section; + String? get section => _$this._section; + set section(String? section) => _$this._section = section; - int _tabIndex; - int get tabIndex => _$this._tabIndex; - set tabIndex(int tabIndex) => _$this._tabIndex = tabIndex; + int? _tabIndex; + int? get tabIndex => _$this._tabIndex; + set tabIndex(int? tabIndex) => _$this._tabIndex = tabIndex; - EmailTemplate _selectedTemplate; - EmailTemplate get selectedTemplate => _$this._selectedTemplate; - set selectedTemplate(EmailTemplate selectedTemplate) => + EmailTemplate? _selectedTemplate; + EmailTemplate? get selectedTemplate => _$this._selectedTemplate; + set selectedTemplate(EmailTemplate? selectedTemplate) => _$this._selectedTemplate = selectedTemplate; - String _filter; - String get filter => _$this._filter; - set filter(String filter) => _$this._filter = filter; + String? _filter; + String? get filter => _$this._filter; + set filter(String? filter) => _$this._filter = filter; - int _filterClearedAt; - int get filterClearedAt => _$this._filterClearedAt; - set filterClearedAt(int filterClearedAt) => + int? _filterClearedAt; + int? get filterClearedAt => _$this._filterClearedAt; + set filterClearedAt(int? filterClearedAt) => _$this._filterClearedAt = filterClearedAt; - bool _showNewSettings; - bool get showNewSettings => _$this._showNewSettings; - set showNewSettings(bool showNewSettings) => + bool? _showNewSettings; + bool? get showNewSettings => _$this._showNewSettings; + set showNewSettings(bool? showNewSettings) => _$this._showNewSettings = showNewSettings; - bool _showPdfPreview; - bool get showPdfPreview => _$this._showPdfPreview; - set showPdfPreview(bool showPdfPreview) => + bool? _showPdfPreview; + bool? get showPdfPreview => _$this._showPdfPreview; + set showPdfPreview(bool? showPdfPreview) => _$this._showPdfPreview = showPdfPreview; SettingsUIStateBuilder() { @@ -477,7 +477,7 @@ class SettingsUIStateBuilder } @override - void update(void Function(SettingsUIStateBuilder) updates) { + void update(void Function(SettingsUIStateBuilder)? updates) { if (updates != null) updates(this); } @@ -517,7 +517,7 @@ class SettingsUIStateBuilder showPdfPreview: BuiltValueNullFieldError.checkNotNull(showPdfPreview, r'SettingsUIState', 'showPdfPreview')); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'company'; company.build(); diff --git a/lib/redux/static/static_reducer.dart b/lib/redux/static/static_reducer.dart index 5b68d8ebd..e3680f54c 100644 --- a/lib/redux/static/static_reducer.dart +++ b/lib/redux/static/static_reducer.dart @@ -14,7 +14,7 @@ StaticState staticLoadedReducer( final data = action.data; return StaticState().rebuild((b) => b ..updatedAt = DateTime.now().millisecondsSinceEpoch - ..templateMap.replace(data.templates) + ..templateMap.replace(data!.templates) ..currencyMap.addAll(Map.fromIterable( data.currencies, key: (dynamic item) => item.id, diff --git a/lib/redux/static/static_selectors.dart b/lib/redux/static/static_selectors.dart index 4c3152c0d..568492d03 100644 --- a/lib/redux/static/static_selectors.dart +++ b/lib/redux/static/static_selectors.dart @@ -8,150 +8,150 @@ import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/data/models/static/font_model.dart'; var memoizedCountryList = memo1( - (BuiltMap countryMap) => countryList(countryMap)); + (BuiltMap countryMap) => countryList(countryMap)); -List countryList(BuiltMap countryMap) { +List countryList(BuiltMap countryMap) { final list = countryMap.keys.toList(); - list.sort((idA, idB) => countryMap[idA] + list.sort((idA, idB) => countryMap[idA]! .listDisplayName - .compareTo(countryMap[idB].listDisplayName)); + .compareTo(countryMap[idB]!.listDisplayName)); return list; } var memoizedCountryIso2Map = memo1( - (BuiltMap countryMap) => countryIso2Map(countryMap)); + (BuiltMap countryMap) => countryIso2Map(countryMap)); Map countryIso2Map( - BuiltMap countryMap) { + BuiltMap countryMap) { final map = {}; countryMap.keys.forEach((countryId) { - final country = countryMap[countryId]; + final country = countryMap[countryId]!; map[country.iso2] = country; }); return map; } var memoizedGroupList = - memo1((BuiltMap groupMap) => groupList(groupMap)); + memo1((BuiltMap groupMap) => groupList(groupMap)); -List groupList(BuiltMap groupMap) { +List groupList(BuiltMap groupMap) { final list = - groupMap.keys.where((groupId) => groupMap[groupId].isActive).toList(); + groupMap.keys.where((groupId) => groupMap[groupId]!.isActive).toList(); list.sort((idA, idB) => - groupMap[idA].listDisplayName.compareTo(groupMap[idB].listDisplayName)); + groupMap[idA]!.listDisplayName.compareTo(groupMap[idB]!.listDisplayName)); return list; } var memoizedLanguageList = memo1( - (BuiltMap languageMap) => + (BuiltMap languageMap) => languageList(languageMap)); -List languageList(BuiltMap languageMap) { +List languageList(BuiltMap languageMap) { final list = languageMap.keys.toList(); - list.sort((idA, idB) => languageMap[idA] + list.sort((idA, idB) => languageMap[idA]! .listDisplayName - .compareTo(languageMap[idB].listDisplayName)); + .compareTo(languageMap[idB]!.listDisplayName)); return list; } var memoizedCurrencyList = memo1( - (BuiltMap currencyMap) => + (BuiltMap currencyMap) => currencyList(currencyMap)); -List currencyList(BuiltMap currencyMap) { +List currencyList(BuiltMap currencyMap) { final list = currencyMap.keys.toList(); - list.sort((idA, idB) => currencyMap[idA] + list.sort((idA, idB) => currencyMap[idA]! .listDisplayName - .compareTo(currencyMap[idB].listDisplayName)); + .compareTo(currencyMap[idB]!.listDisplayName)); return list; } var memoizedTimezoneList = memo1( - (BuiltMap timezoneMap) => + (BuiltMap timezoneMap) => timezoneList(timezoneMap)); -List timezoneList(BuiltMap timezoneMap) { +List timezoneList(BuiltMap timezoneMap) { final list = timezoneMap.keys.toList(); - list.sort((idA, idB) => timezoneMap[idA] + list.sort((idA, idB) => timezoneMap[idA]! .listDisplayName - .compareTo(timezoneMap[idB].listDisplayName)); + .compareTo(timezoneMap[idB]!.listDisplayName)); return list; } var memoizedDateFormatList = memo1( - (BuiltMap dateFormatMap) => + (BuiltMap dateFormatMap) => dateFormatList(dateFormatMap)); -List dateFormatList(BuiltMap dateFormatMap) { +List dateFormatList(BuiltMap dateFormatMap) { final list = dateFormatMap.keys.toList(); - list.sort((idA, idB) => dateFormatMap[idA] + list.sort((idA, idB) => dateFormatMap[idA]! .listDisplayName - .compareTo(dateFormatMap[idB].listDisplayName)); + .compareTo(dateFormatMap[idB]!.listDisplayName)); return list; } var memoizedIndustryList = memo1( - (BuiltMap industryMap) => + (BuiltMap industryMap) => industryList(industryMap)); -List industryList(BuiltMap industryMap) { +List industryList(BuiltMap industryMap) { final list = industryMap.keys.toList(); - list.sort((idA, idB) => industryMap[idA] + list.sort((idA, idB) => industryMap[idA]! .listDisplayName - .compareTo(industryMap[idB].listDisplayName)); + .compareTo(industryMap[idB]!.listDisplayName)); return list; } var memoizedSizeList = - memo1((BuiltMap sizeMap) => sizeList(sizeMap)); + memo1((BuiltMap sizeMap) => sizeList(sizeMap)); -List sizeList(BuiltMap sizeMap) { +List sizeList(BuiltMap sizeMap) { final list = sizeMap.keys.toList(); - list.sort((idA, idB) => sizeMap[idA].id.compareTo(sizeMap[idB].id)); + list.sort((idA, idB) => sizeMap[idA]!.id.compareTo(sizeMap[idB]!.id)); return list; } var memoizedGatewayList = memo1( - (BuiltMap gatewayMap) => gatewayList(gatewayMap)); + (BuiltMap gatewayMap) => gatewayList(gatewayMap)); -List gatewayList(BuiltMap gatewayMap) { +List gatewayList(BuiltMap gatewayMap) { final list = gatewayMap.keys - .where((gatewayId) => gatewayMap[gatewayId].isVisible) + .where((gatewayId) => gatewayMap[gatewayId]!.isVisible) .toList(); list.sort((idA, idB) => - gatewayMap[idA].sortOrder.compareTo(gatewayMap[idB].sortOrder)); + gatewayMap[idA]!.sortOrder.compareTo(gatewayMap[idB]!.sortOrder)); return list; } var memoizedPaymentTypeList = memo1( - (BuiltMap paymentTypeMap) => + (BuiltMap paymentTypeMap) => paymentTypeList(paymentTypeMap)); -List paymentTypeList( - BuiltMap paymentTypeMap) { +List paymentTypeList( + BuiltMap paymentTypeMap) { final list = paymentTypeMap.keys.toList(); - list.sort((idA, idB) => paymentTypeMap[idA] + list.sort((idA, idB) => paymentTypeMap[idA]! .listDisplayName - .compareTo(paymentTypeMap[idB].listDisplayName)); + .compareTo(paymentTypeMap[idB]!.listDisplayName)); return list; } @@ -160,7 +160,7 @@ var memoizedFontMap = memo1((List fontList) => fontMap(fontList)); BuiltMap fontMap(List fonts) { return BuiltMap.from( - Map.fromIterable(fonts, + Map.fromIterable(fonts, key: (dynamic v) => v['value'], value: (dynamic v) => FontEntity(id: v['value'], name: v['label']))); } diff --git a/lib/redux/static/static_state.dart b/lib/redux/static/static_state.dart index c1e4c4e0f..e8432439a 100644 --- a/lib/redux/static/static_state.dart +++ b/lib/redux/static/static_state.dart @@ -31,37 +31,36 @@ abstract class StaticState implements Built { @memoized int get hashCode; - @nullable - int get updatedAt; + int? get updatedAt; - bool get isLoaded => updatedAt != null && updatedAt > 0; + bool get isLoaded => updatedAt != null && updatedAt! > 0; bool get isStale { if (!isLoaded) { return true; } - return DateTime.now().millisecondsSinceEpoch - updatedAt > + return DateTime.now().millisecondsSinceEpoch - updatedAt! > kMillisecondsToRefreshStaticData; } - BuiltMap get currencyMap; + BuiltMap get currencyMap; - BuiltMap get sizeMap; + BuiltMap get sizeMap; - BuiltMap get gatewayMap; + BuiltMap get gatewayMap; - BuiltMap get industryMap; + BuiltMap get industryMap; - BuiltMap get timezoneMap; + BuiltMap get timezoneMap; - BuiltMap get dateFormatMap; + BuiltMap get dateFormatMap; - BuiltMap get languageMap; + BuiltMap get languageMap; - BuiltMap get paymentTypeMap; + BuiltMap get paymentTypeMap; - BuiltMap get countryMap; + BuiltMap get countryMap; BuiltMap get templateMap; diff --git a/lib/redux/static/static_state.g.dart b/lib/redux/static/static_state.g.dart index 37dfdaadd..92a6dd772 100644 --- a/lib/redux/static/static_state.g.dart +++ b/lib/redux/static/static_state.g.dart @@ -15,55 +15,69 @@ class _$StaticStateSerializer implements StructuredSerializer { final String wireName = 'StaticState'; @override - Iterable serialize(Serializers serializers, StaticState object, + Iterable serialize(Serializers serializers, StaticState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'currencyMap', serializers.serialize(object.currencyMap, - specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(CurrencyEntity)])), + specifiedType: const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(CurrencyEntity) + ])), 'sizeMap', serializers.serialize(object.sizeMap, - specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(SizeEntity)])), + specifiedType: const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(SizeEntity) + ])), 'gatewayMap', serializers.serialize(object.gatewayMap, - specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(GatewayEntity)])), + specifiedType: const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(GatewayEntity) + ])), 'industryMap', serializers.serialize(object.industryMap, - specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(IndustryEntity)])), + specifiedType: const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(IndustryEntity) + ])), 'timezoneMap', serializers.serialize(object.timezoneMap, - specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(TimezoneEntity)])), + specifiedType: const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(TimezoneEntity) + ])), 'dateFormatMap', serializers.serialize(object.dateFormatMap, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(DateFormatEntity) + const FullType.nullable(String), + const FullType.nullable(DateFormatEntity) ])), 'languageMap', serializers.serialize(object.languageMap, - specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(LanguageEntity)])), + specifiedType: const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(LanguageEntity) + ])), 'paymentTypeMap', serializers.serialize(object.paymentTypeMap, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(PaymentTypeEntity) + const FullType.nullable(String), + const FullType.nullable(PaymentTypeEntity) ])), 'countryMap', serializers.serialize(object.countryMap, - specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(CountryEntity)])), + specifiedType: const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(CountryEntity) + ])), 'templateMap', serializers.serialize(object.templateMap, specifiedType: const FullType(BuiltMap, const [const FullType(String), const FullType(TemplateEntity)])), ]; - Object value; + Object? value; value = object.updatedAt; if (value != null) { result @@ -74,87 +88,89 @@ class _$StaticStateSerializer implements StructuredSerializer { } @override - StaticState deserialize(Serializers serializers, Iterable serialized, + StaticState deserialize(Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new StaticStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'updatedAt': result.updatedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int)) as int?; break; case 'currencyMap': result.currencyMap.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(CurrencyEntity) - ]))); + const FullType.nullable(String), + const FullType.nullable(CurrencyEntity) + ]))!); break; case 'sizeMap': result.sizeMap.replace(serializers.deserialize(value, - specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(SizeEntity)]))); + specifiedType: const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(SizeEntity) + ]))!); break; case 'gatewayMap': result.gatewayMap.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(GatewayEntity) - ]))); + const FullType.nullable(String), + const FullType.nullable(GatewayEntity) + ]))!); break; case 'industryMap': result.industryMap.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(IndustryEntity) - ]))); + const FullType.nullable(String), + const FullType.nullable(IndustryEntity) + ]))!); break; case 'timezoneMap': result.timezoneMap.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(TimezoneEntity) - ]))); + const FullType.nullable(String), + const FullType.nullable(TimezoneEntity) + ]))!); break; case 'dateFormatMap': result.dateFormatMap.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(DateFormatEntity) - ]))); + const FullType.nullable(String), + const FullType.nullable(DateFormatEntity) + ]))!); break; case 'languageMap': result.languageMap.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(LanguageEntity) - ]))); + const FullType.nullable(String), + const FullType.nullable(LanguageEntity) + ]))!); break; case 'paymentTypeMap': result.paymentTypeMap.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(PaymentTypeEntity) - ]))); + const FullType.nullable(String), + const FullType.nullable(PaymentTypeEntity) + ]))!); break; case 'countryMap': result.countryMap.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(CountryEntity) - ]))); + const FullType.nullable(String), + const FullType.nullable(CountryEntity) + ]))!); break; case 'templateMap': result.templateMap.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ const FullType(String), const FullType(TemplateEntity) - ]))); + ]))!); break; } } @@ -165,43 +181,43 @@ class _$StaticStateSerializer implements StructuredSerializer { class _$StaticState extends StaticState { @override - final int updatedAt; + final int? updatedAt; @override - final BuiltMap currencyMap; + final BuiltMap currencyMap; @override - final BuiltMap sizeMap; + final BuiltMap sizeMap; @override - final BuiltMap gatewayMap; + final BuiltMap gatewayMap; @override - final BuiltMap industryMap; + final BuiltMap industryMap; @override - final BuiltMap timezoneMap; + final BuiltMap timezoneMap; @override - final BuiltMap dateFormatMap; + final BuiltMap dateFormatMap; @override - final BuiltMap languageMap; + final BuiltMap languageMap; @override - final BuiltMap paymentTypeMap; + final BuiltMap paymentTypeMap; @override - final BuiltMap countryMap; + final BuiltMap countryMap; @override final BuiltMap templateMap; - factory _$StaticState([void Function(StaticStateBuilder) updates]) => + factory _$StaticState([void Function(StaticStateBuilder)? updates]) => (new StaticStateBuilder()..update(updates))._build(); _$StaticState._( {this.updatedAt, - this.currencyMap, - this.sizeMap, - this.gatewayMap, - this.industryMap, - this.timezoneMap, - this.dateFormatMap, - this.languageMap, - this.paymentTypeMap, - this.countryMap, - this.templateMap}) + required this.currencyMap, + required this.sizeMap, + required this.gatewayMap, + required this.industryMap, + required this.timezoneMap, + required this.dateFormatMap, + required this.languageMap, + required this.paymentTypeMap, + required this.countryMap, + required this.templateMap}) : super._() { BuiltValueNullFieldError.checkNotNull( currencyMap, r'StaticState', 'currencyMap'); @@ -248,10 +264,10 @@ class _$StaticState extends StaticState { templateMap == other.templateMap; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, updatedAt.hashCode); _$hash = $jc(_$hash, currencyMap.hashCode); @@ -287,70 +303,70 @@ class _$StaticState extends StaticState { } class StaticStateBuilder implements Builder { - _$StaticState _$v; + _$StaticState? _$v; - int _updatedAt; - int get updatedAt => _$this._updatedAt; - set updatedAt(int updatedAt) => _$this._updatedAt = updatedAt; + int? _updatedAt; + int? get updatedAt => _$this._updatedAt; + set updatedAt(int? updatedAt) => _$this._updatedAt = updatedAt; - MapBuilder _currencyMap; - MapBuilder get currencyMap => - _$this._currencyMap ??= new MapBuilder(); - set currencyMap(MapBuilder currencyMap) => + MapBuilder? _currencyMap; + MapBuilder get currencyMap => + _$this._currencyMap ??= new MapBuilder(); + set currencyMap(MapBuilder? currencyMap) => _$this._currencyMap = currencyMap; - MapBuilder _sizeMap; - MapBuilder get sizeMap => - _$this._sizeMap ??= new MapBuilder(); - set sizeMap(MapBuilder sizeMap) => + MapBuilder? _sizeMap; + MapBuilder get sizeMap => + _$this._sizeMap ??= new MapBuilder(); + set sizeMap(MapBuilder? sizeMap) => _$this._sizeMap = sizeMap; - MapBuilder _gatewayMap; - MapBuilder get gatewayMap => - _$this._gatewayMap ??= new MapBuilder(); - set gatewayMap(MapBuilder gatewayMap) => + MapBuilder? _gatewayMap; + MapBuilder get gatewayMap => + _$this._gatewayMap ??= new MapBuilder(); + set gatewayMap(MapBuilder? gatewayMap) => _$this._gatewayMap = gatewayMap; - MapBuilder _industryMap; - MapBuilder get industryMap => - _$this._industryMap ??= new MapBuilder(); - set industryMap(MapBuilder industryMap) => + MapBuilder? _industryMap; + MapBuilder get industryMap => + _$this._industryMap ??= new MapBuilder(); + set industryMap(MapBuilder? industryMap) => _$this._industryMap = industryMap; - MapBuilder _timezoneMap; - MapBuilder get timezoneMap => - _$this._timezoneMap ??= new MapBuilder(); - set timezoneMap(MapBuilder timezoneMap) => + MapBuilder? _timezoneMap; + MapBuilder get timezoneMap => + _$this._timezoneMap ??= new MapBuilder(); + set timezoneMap(MapBuilder? timezoneMap) => _$this._timezoneMap = timezoneMap; - MapBuilder _dateFormatMap; - MapBuilder get dateFormatMap => - _$this._dateFormatMap ??= new MapBuilder(); - set dateFormatMap(MapBuilder dateFormatMap) => + MapBuilder? _dateFormatMap; + MapBuilder get dateFormatMap => + _$this._dateFormatMap ??= new MapBuilder(); + set dateFormatMap(MapBuilder? dateFormatMap) => _$this._dateFormatMap = dateFormatMap; - MapBuilder _languageMap; - MapBuilder get languageMap => - _$this._languageMap ??= new MapBuilder(); - set languageMap(MapBuilder languageMap) => + MapBuilder? _languageMap; + MapBuilder get languageMap => + _$this._languageMap ??= new MapBuilder(); + set languageMap(MapBuilder? languageMap) => _$this._languageMap = languageMap; - MapBuilder _paymentTypeMap; - MapBuilder get paymentTypeMap => - _$this._paymentTypeMap ??= new MapBuilder(); - set paymentTypeMap(MapBuilder paymentTypeMap) => + MapBuilder? _paymentTypeMap; + MapBuilder get paymentTypeMap => + _$this._paymentTypeMap ??= new MapBuilder(); + set paymentTypeMap(MapBuilder? paymentTypeMap) => _$this._paymentTypeMap = paymentTypeMap; - MapBuilder _countryMap; - MapBuilder get countryMap => - _$this._countryMap ??= new MapBuilder(); - set countryMap(MapBuilder countryMap) => + MapBuilder? _countryMap; + MapBuilder get countryMap => + _$this._countryMap ??= new MapBuilder(); + set countryMap(MapBuilder? countryMap) => _$this._countryMap = countryMap; - MapBuilder _templateMap; + MapBuilder? _templateMap; MapBuilder get templateMap => _$this._templateMap ??= new MapBuilder(); - set templateMap(MapBuilder templateMap) => + set templateMap(MapBuilder? templateMap) => _$this._templateMap = templateMap; StaticStateBuilder(); @@ -381,7 +397,7 @@ class StaticStateBuilder implements Builder { } @override - void update(void Function(StaticStateBuilder) updates) { + void update(void Function(StaticStateBuilder)? updates) { if (updates != null) updates(this); } @@ -405,7 +421,7 @@ class StaticStateBuilder implements Builder { countryMap: countryMap.build(), templateMap: templateMap.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'currencyMap'; currencyMap.build(); diff --git a/lib/redux/subscription/subscription_actions.dart b/lib/redux/subscription/subscription_actions.dart index b96bb16ac..7bfb064d6 100644 --- a/lib/redux/subscription/subscription_actions.dart +++ b/lib/redux/subscription/subscription_actions.dart @@ -26,24 +26,24 @@ class ViewSubscriptionList implements PersistUI { class ViewSubscription implements PersistUI, PersistPrefs { ViewSubscription({ - @required this.subscriptionId, + required this.subscriptionId, this.force = false, }); - final String subscriptionId; + final String? subscriptionId; final bool force; } class EditSubscription implements PersistUI, PersistPrefs { EditSubscription( - {@required this.subscription, + {required this.subscription, this.completer, this.cancelCompleter, this.force = false}); final SubscriptionEntity subscription; - final Completer completer; - final Completer cancelCompleter; + final Completer? completer; + final Completer? cancelCompleter; final bool force; } @@ -56,21 +56,21 @@ class UpdateSubscription implements PersistUI { class LoadSubscription { LoadSubscription({this.completer, this.subscriptionId}); - final Completer completer; - final String subscriptionId; + final Completer? completer; + final String? subscriptionId; } class LoadSubscriptionActivity { LoadSubscriptionActivity({this.completer, this.subscriptionId}); - final Completer completer; - final String subscriptionId; + final Completer? completer; + final String? subscriptionId; } class LoadSubscriptions { LoadSubscriptions({this.completer}); - final Completer completer; + final Completer? completer; } class LoadSubscriptionRequest implements StartLoading {} @@ -124,8 +124,8 @@ class LoadSubscriptionsSuccess implements StopLoading { class SaveSubscriptionRequest implements StartSaving { SaveSubscriptionRequest({this.completer, this.subscription}); - final Completer completer; - final SubscriptionEntity subscription; + final Completer? completer; + final SubscriptionEntity? subscription; } class SaveSubscriptionSuccess implements StopSaving, PersistData, PersistUI { @@ -162,7 +162,7 @@ class ArchiveSubscriptionsSuccess implements StopSaving, PersistData { class ArchiveSubscriptionsFailure implements StopSaving { ArchiveSubscriptionsFailure(this.subscriptions); - final List subscriptions; + final List subscriptions; } class DeleteSubscriptionsRequest implements StartSaving { @@ -181,7 +181,7 @@ class DeleteSubscriptionsSuccess implements StopSaving, PersistData { class DeleteSubscriptionsFailure implements StopSaving { DeleteSubscriptionsFailure(this.subscriptions); - final List subscriptions; + final List subscriptions; } class RestoreSubscriptionsRequest implements StartSaving { @@ -200,7 +200,7 @@ class RestoreSubscriptionsSuccess implements StopSaving, PersistData { class RestoreSubscriptionsFailure implements StopSaving { RestoreSubscriptionsFailure(this.subscriptions); - final List subscriptions; + final List subscriptions; } class FilterSubscriptions implements PersistUI { @@ -250,15 +250,15 @@ class StartSubscriptionMultiselect { } class AddToSubscriptionMultiselect { - AddToSubscriptionMultiselect({@required this.entity}); + AddToSubscriptionMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class RemoveFromSubscriptionMultiselect { - RemoveFromSubscriptionMultiselect({@required this.entity}); + RemoveFromSubscriptionMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class ClearSubscriptionMultiselect { @@ -268,38 +268,38 @@ class ClearSubscriptionMultiselect { class UpdateSubscriptionTab implements PersistUI { UpdateSubscriptionTab({this.tabIndex}); - final int tabIndex; + final int? tabIndex; } void handleSubscriptionAction( - BuildContext context, List subscriptions, EntityAction action) { + BuildContext? context, List subscriptions, EntityAction? action) { if (subscriptions.isEmpty) { return; } - final store = StoreProvider.of(context); + final store = StoreProvider.of(context!); final localization = AppLocalization.of(context); - final subscription = subscriptions.first as SubscriptionEntity; + final subscription = subscriptions.first as SubscriptionEntity?; final subscriptionIds = - subscriptions.map((subscription) => subscription.id).toList(); + subscriptions.map((subscription) => subscription!.id).toList(); switch (action) { case EntityAction.edit: - editEntity(entity: subscription); + editEntity(entity: subscription!); break; case EntityAction.restore: store.dispatch(RestoreSubscriptionsRequest( - snackBarCompleter(context, localization.restoredPaymentLink), + snackBarCompleter(context, localization!.restoredPaymentLink), subscriptionIds)); break; case EntityAction.archive: store.dispatch(ArchiveSubscriptionsRequest( - snackBarCompleter(context, localization.archivedPaymentLink), + snackBarCompleter(context, localization!.archivedPaymentLink), subscriptionIds)); break; case EntityAction.delete: store.dispatch(DeleteSubscriptionsRequest( - snackBarCompleter(context, localization.deletedPaymentLink), + snackBarCompleter(context, localization!.deletedPaymentLink), subscriptionIds)); break; case EntityAction.toggleMultiselect: @@ -312,7 +312,7 @@ void handleSubscriptionAction( } for (final subscription in subscriptions) { - if (!store.state.subscriptionListState.isSelected(subscription.id)) { + if (!store.state.subscriptionListState.isSelected(subscription!.id)) { store.dispatch(AddToSubscriptionMultiselect(entity: subscription)); } else { store.dispatch( diff --git a/lib/redux/subscription/subscription_middleware.dart b/lib/redux/subscription/subscription_middleware.dart index 5b48fcc72..d3c5d03a6 100644 --- a/lib/redux/subscription/subscription_middleware.dart +++ b/lib/redux/subscription/subscription_middleware.dart @@ -45,14 +45,14 @@ List> createStoreSubscriptionsMiddleware([ Middleware _editSubscription() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as EditSubscription; + final action = dynamicAction as EditSubscription?; next(action); store.dispatch(UpdateCurrentRoute(SubscriptionEditScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(SubscriptionEditScreen.route); + navigatorKey.currentState!.pushNamed(SubscriptionEditScreen.route); } }; } @@ -60,21 +60,21 @@ Middleware _editSubscription() { Middleware _viewSubscription() { return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as ViewSubscription; + final action = dynamicAction as ViewSubscription?; next(action); store.dispatch(UpdateCurrentRoute(SubscriptionViewScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(SubscriptionViewScreen.route); + navigatorKey.currentState!.pushNamed(SubscriptionViewScreen.route); } }; } Middleware _viewSubscriptionList() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as ViewSubscriptionList; + final action = dynamicAction as ViewSubscriptionList?; next(action); @@ -85,7 +85,7 @@ Middleware _viewSubscriptionList() { store.dispatch(UpdateCurrentRoute(SubscriptionScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamedAndRemoveUntil( + navigatorKey.currentState!.pushNamedAndRemoveUntil( SubscriptionScreen.route, (Route route) => false); } }; @@ -173,19 +173,19 @@ Middleware _saveSubscription(SubscriptionRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as SaveSubscriptionRequest; repository - .saveData(store.state.credentials, action.subscription) + .saveData(store.state.credentials, action.subscription!) .then((SubscriptionEntity subscription) { - if (action.subscription.isNew) { + if (action.subscription!.isNew) { store.dispatch(AddSubscriptionSuccess(subscription)); } else { store.dispatch(SaveSubscriptionSuccess(subscription)); } - action.completer.complete(subscription); + action.completer!.complete(subscription); }).catchError((Object error) { print(error); store.dispatch(SaveSubscriptionFailure(error)); - action.completer.completeError(error); + action.completer!.completeError(error); }); next(action); @@ -204,13 +204,13 @@ Middleware _loadSubscription(SubscriptionRepository repository) { store.dispatch(LoadSubscriptionSuccess(subscription)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(LoadSubscriptionFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -220,15 +220,15 @@ Middleware _loadSubscription(SubscriptionRepository repository) { Middleware _loadSubscriptions(SubscriptionRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as LoadSubscriptions; + final action = dynamicAction as LoadSubscriptions?; final AppState state = store.state; store.dispatch(LoadSubscriptionsRequest()); repository.loadList(state.credentials).then((data) { store.dispatch(LoadSubscriptionsSuccess(data)); - if (action.completer != null) { - action.completer.complete(null); + if (action!.completer != null) { + action.completer!.complete(null); } /* if (state.productState.isStale) { @@ -238,8 +238,8 @@ Middleware _loadSubscriptions(SubscriptionRepository repository) { }).catchError((Object error) { print(error); store.dispatch(LoadSubscriptionsFailure(error)); - if (action.completer != null) { - action.completer.completeError(error); + if (action!.completer != null) { + action.completer!.completeError(error); } }); diff --git a/lib/redux/subscription/subscription_reducer.dart b/lib/redux/subscription/subscription_reducer.dart index 6b12b7ba1..e3711ac99 100644 --- a/lib/redux/subscription/subscription_reducer.dart +++ b/lib/redux/subscription/subscription_reducer.dart @@ -14,62 +14,62 @@ import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; EntityUIState subscriptionUIReducer(SubscriptionUIState state, dynamic action) { return state.rebuild((b) => b ..listUIState.replace(subscriptionListReducer(state.listUIState, action)) - ..editing.replace(editingReducer(state.editing, action)) + ..editing.replace(editingReducer(state.editing, action)!) ..selectedId = selectedIdReducer(state.selectedId, action) ..forceSelected = forceSelectedReducer(state.forceSelected, action) ..tabIndex = tabIndexReducer(state.tabIndex, action)); } -final forceSelectedReducer = combineReducers([ - TypedReducer((completer, action) => true), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer( +final forceSelectedReducer = combineReducers([ + TypedReducer((completer, action) => true), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer( (completer, action) => false), - TypedReducer( + TypedReducer( (completer, action) => false), - TypedReducer( + TypedReducer( (completer, action) => false), - TypedReducer( + TypedReducer( (completer, action) => false), ]); -final tabIndexReducer = combineReducers([ - TypedReducer((completer, action) { +final int? Function(int, dynamic) tabIndexReducer = combineReducers([ + TypedReducer((completer, action) { return action.tabIndex; }), - TypedReducer((completer, action) { + TypedReducer((completer, action) { return 0; }), ]); -Reducer selectedIdReducer = combineReducers([ - TypedReducer((completer, action) => ''), - TypedReducer((completer, action) => ''), - TypedReducer((selectedId, action) => +Reducer selectedIdReducer = combineReducers([ + TypedReducer((completer, action) => ''), + TypedReducer((completer, action) => ''), + TypedReducer((selectedId, action) => action.entityType == EntityType.subscription ? action.entityId : selectedId), - TypedReducer( - (String selectedId, dynamic action) => action.subscriptionId), - TypedReducer( - (String selectedId, dynamic action) => action.subscription.id), - TypedReducer( + TypedReducer( + (String? selectedId, dynamic action) => action.subscriptionId), + TypedReducer( + (String? selectedId, dynamic action) => action.subscription.id), + TypedReducer( (selectedId, action) => action.clearSelection ? '' : selectedId), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer( + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer( (selectedId, action) => ''), - TypedReducer( + TypedReducer( (selectedId, action) => ''), - TypedReducer( + TypedReducer( (selectedId, action) => ''), - TypedReducer( + TypedReducer( (selectedId, action) => ''), - TypedReducer( + TypedReducer( (selectedId, action) => action.clearSelection ? '' : action.entityType == EntityType.subscription @@ -77,35 +77,35 @@ Reducer selectedIdReducer = combineReducers([ : selectedId), ]); -final editingReducer = combineReducers([ - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer( +final editingReducer = combineReducers([ + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer( (subscriptions, action) { return action.subscriptions[0]; }), - TypedReducer( + TypedReducer( (subscriptions, action) { return action.subscriptions[0]; }), - TypedReducer( + TypedReducer( (subscriptions, action) { return action.subscriptions[0]; }), - TypedReducer(_updateEditing), - TypedReducer((subscription, action) { + TypedReducer(_updateEditing), + TypedReducer((subscription, action) { return action.subscription.rebuild((b) => b..isChanged = true); }), - TypedReducer(_clearEditing), + TypedReducer(_clearEditing), ]); SubscriptionEntity _clearEditing( - SubscriptionEntity subscription, dynamic action) { + SubscriptionEntity? subscription, dynamic action) { return SubscriptionEntity(); } -SubscriptionEntity _updateEditing( - SubscriptionEntity subscription, dynamic action) { +SubscriptionEntity? _updateEditing( + SubscriptionEntity? subscription, dynamic action) { return action.subscription; } @@ -177,7 +177,7 @@ ListUIState _filterSubscriptions( ListUIState _sortSubscriptions( ListUIState subscriptionListState, SortSubscriptions action) { return subscriptionListState.rebuild((b) => b - ..sortAscending = b.sortField != action.field || !b.sortAscending + ..sortAscending = b.sortField != action.field || !b.sortAscending! ..sortField = action.field); } @@ -188,13 +188,13 @@ ListUIState _startListMultiselect( ListUIState _addToListMultiselect( ListUIState productListState, AddToSubscriptionMultiselect action) { - return productListState.rebuild((b) => b..selectedIds.add(action.entity.id)); + return productListState.rebuild((b) => b..selectedIds.add(action.entity!.id)); } ListUIState _removeFromListMultiselect( ListUIState productListState, RemoveFromSubscriptionMultiselect action) { return productListState - .rebuild((b) => b..selectedIds.remove(action.entity.id)); + .rebuild((b) => b..selectedIds.remove(action.entity!.id)); } ListUIState _clearListMultiselect( @@ -270,6 +270,6 @@ SubscriptionState _setLoadedSubscriptions( SubscriptionState _setLoadedCompany( SubscriptionState subscriptionState, LoadCompanySuccess action) { - final company = action.userCompany.company; + final company = action.userCompany.company!; return subscriptionState.loadSubscriptions(company.subscriptions); } diff --git a/lib/redux/subscription/subscription_selectors.dart b/lib/redux/subscription/subscription_selectors.dart index 7341be00c..9b7fbef2e 100644 --- a/lib/redux/subscription/subscription_selectors.dart +++ b/lib/redux/subscription/subscription_selectors.dart @@ -24,7 +24,7 @@ List dropdownSubscriptionsSelector( BuiltMap userMap, String clientId) { final list = subscriptionList.where((subscriptionId) { - final subscription = subscriptionMap[subscriptionId]; + final subscription = subscriptionMap[subscriptionId]!; /* if (clientId != null && clientId > 0 && subscription.clientId != clientId) { return false; @@ -34,7 +34,7 @@ List dropdownSubscriptionsSelector( }).toList(); list.sort((subscriptionAId, subscriptionBId) { - final subscriptionA = subscriptionMap[subscriptionAId]; + final subscriptionA = subscriptionMap[subscriptionAId]!; final subscriptionB = subscriptionMap[subscriptionBId]; return subscriptionA.compareTo( subscriptionB, SubscriptionFields.createdAt, true); @@ -44,7 +44,7 @@ List dropdownSubscriptionsSelector( } var memoizedFilteredSubscriptionList = memo4((SelectionState selectionState, - BuiltMap subscriptionMap, + BuiltMap subscriptionMap, BuiltList subscriptionList, ListUIState subscriptionListState) => filteredSubscriptionsSelector( @@ -56,14 +56,14 @@ var memoizedFilteredSubscriptionList = memo4((SelectionState selectionState, List filteredSubscriptionsSelector( SelectionState selectionState, - BuiltMap subscriptionMap, + BuiltMap subscriptionMap, BuiltList subscriptionList, ListUIState subscriptionListState) { final filterEntityId = selectionState.filterEntityId; //final filterEntityType = selectionState.filterEntityType; final list = subscriptionList.where((subscriptionId) { - final subscription = subscriptionMap[subscriptionId]; + final subscription = subscriptionMap[subscriptionId]!; if (subscription.id == selectionState.selectedId) { return true; } @@ -79,7 +79,7 @@ List filteredSubscriptionsSelector( }).toList(); list.sort((subscriptionAId, subscriptionBId) { - final subscriptionA = subscriptionMap[subscriptionAId]; + final subscriptionA = subscriptionMap[subscriptionAId]!; final subscriptionB = subscriptionMap[subscriptionBId]; return subscriptionA.compareTo(subscriptionB, subscriptionListState.sortField, subscriptionListState.sortAscending); diff --git a/lib/redux/subscription/subscription_state.dart b/lib/redux/subscription/subscription_state.dart index c5b72044d..dff565d42 100644 --- a/lib/redux/subscription/subscription_state.dart +++ b/lib/redux/subscription/subscription_state.dart @@ -29,11 +29,11 @@ abstract class SubscriptionState @memoized int get hashCode; - BuiltMap get map; + BuiltMap get map; BuiltList get list; - SubscriptionEntity get(String subscriptionId) { + SubscriptionEntity? get(String subscriptionId) { if (map.containsKey(subscriptionId)) { return map[subscriptionId]; } else { @@ -42,7 +42,7 @@ abstract class SubscriptionState } SubscriptionState loadSubscriptions(BuiltList clients) { - final map = Map.fromIterable( + final map = Map.fromIterable( clients, key: (dynamic item) => item.id, value: (dynamic item) => item, @@ -60,7 +60,7 @@ abstract class SubscriptionState abstract class SubscriptionUIState extends Object with EntityUIState implements Built { - factory SubscriptionUIState(PrefStateSortField sortField) { + factory SubscriptionUIState(PrefStateSortField? sortField) { return _$SubscriptionUIState._( listUIState: ListUIState(sortField?.field ?? SubscriptionFields.createdAt, sortAscending: sortField?.ascending), @@ -76,14 +76,13 @@ abstract class SubscriptionUIState extends Object @memoized int get hashCode; - @nullable - SubscriptionEntity get editing; + SubscriptionEntity? get editing; @override - bool get isCreatingNew => editing.isNew; + bool get isCreatingNew => editing!.isNew; @override - String get editingId => editing.id; + String get editingId => editing!.id; static Serializer get serializer => _$subscriptionUIStateSerializer; diff --git a/lib/redux/subscription/subscription_state.g.dart b/lib/redux/subscription/subscription_state.g.dart index 390abd58d..35866aa08 100644 --- a/lib/redux/subscription/subscription_state.g.dart +++ b/lib/redux/subscription/subscription_state.g.dart @@ -19,14 +19,14 @@ class _$SubscriptionStateSerializer final String wireName = 'SubscriptionState'; @override - Iterable serialize(Serializers serializers, SubscriptionState object, + Iterable serialize(Serializers serializers, SubscriptionState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'map', serializers.serialize(object.map, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(SubscriptionEntity) + const FullType.nullable(String), + const FullType.nullable(SubscriptionEntity) ])), 'list', serializers.serialize(object.list, @@ -39,28 +39,28 @@ class _$SubscriptionStateSerializer @override SubscriptionState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new SubscriptionStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'map': result.map.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(SubscriptionEntity) - ]))); + const FullType.nullable(String), + const FullType.nullable(SubscriptionEntity) + ]))!); break; case 'list': result.list.replace(serializers.deserialize(value, - specifiedType: - const FullType(BuiltList, const [const FullType(String)])) - as BuiltList); + specifiedType: const FullType( + BuiltList, const [const FullType(String)]))! + as BuiltList); break; } } @@ -80,10 +80,10 @@ class _$SubscriptionUIStateSerializer final String wireName = 'SubscriptionUIState'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, SubscriptionUIState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'listUIState', serializers.serialize(object.listUIState, specifiedType: const FullType(ListUIState)), @@ -91,7 +91,7 @@ class _$SubscriptionUIStateSerializer serializers.serialize(object.tabIndex, specifiedType: const FullType(int)), ]; - Object value; + Object? value; value = object.editing; if (value != null) { result @@ -118,36 +118,36 @@ class _$SubscriptionUIStateSerializer @override SubscriptionUIState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new SubscriptionUIStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'editing': result.editing.replace(serializers.deserialize(value, - specifiedType: const FullType(SubscriptionEntity)) + specifiedType: const FullType(SubscriptionEntity))! as SubscriptionEntity); break; case 'listUIState': result.listUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(ListUIState)) as ListUIState); + specifiedType: const FullType(ListUIState))! as ListUIState); break; case 'selectedId': result.selectedId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'forceSelected': result.forceSelected = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'tabIndex': result.tabIndex = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; } } @@ -158,15 +158,15 @@ class _$SubscriptionUIStateSerializer class _$SubscriptionState extends SubscriptionState { @override - final BuiltMap map; + final BuiltMap map; @override final BuiltList list; factory _$SubscriptionState( - [void Function(SubscriptionStateBuilder) updates]) => + [void Function(SubscriptionStateBuilder)? updates]) => (new SubscriptionStateBuilder()..update(updates))._build(); - _$SubscriptionState._({this.map, this.list}) : super._() { + _$SubscriptionState._({required this.map, required this.list}) : super._() { BuiltValueNullFieldError.checkNotNull(map, r'SubscriptionState', 'map'); BuiltValueNullFieldError.checkNotNull(list, r'SubscriptionState', 'list'); } @@ -185,10 +185,10 @@ class _$SubscriptionState extends SubscriptionState { return other is SubscriptionState && map == other.map && list == other.list; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, map.hashCode); _$hash = $jc(_$hash, list.hashCode); @@ -207,16 +207,16 @@ class _$SubscriptionState extends SubscriptionState { class SubscriptionStateBuilder implements Builder { - _$SubscriptionState _$v; + _$SubscriptionState? _$v; - MapBuilder _map; - MapBuilder get map => - _$this._map ??= new MapBuilder(); - set map(MapBuilder map) => _$this._map = map; + MapBuilder? _map; + MapBuilder get map => + _$this._map ??= new MapBuilder(); + set map(MapBuilder? map) => _$this._map = map; - ListBuilder _list; + ListBuilder? _list; ListBuilder get list => _$this._list ??= new ListBuilder(); - set list(ListBuilder list) => _$this._list = list; + set list(ListBuilder? list) => _$this._list = list; SubscriptionStateBuilder(); @@ -237,7 +237,7 @@ class SubscriptionStateBuilder } @override - void update(void Function(SubscriptionStateBuilder) updates) { + void update(void Function(SubscriptionStateBuilder)? updates) { if (updates != null) updates(this); } @@ -250,7 +250,7 @@ class SubscriptionStateBuilder _$result = _$v ?? new _$SubscriptionState._(map: map.build(), list: list.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'map'; map.build(); @@ -269,30 +269,30 @@ class SubscriptionStateBuilder class _$SubscriptionUIState extends SubscriptionUIState { @override - final SubscriptionEntity editing; + final SubscriptionEntity? editing; @override final ListUIState listUIState; @override - final String selectedId; + final String? selectedId; @override - final bool forceSelected; + final bool? forceSelected; @override final int tabIndex; @override - final Completer saveCompleter; + final Completer? saveCompleter; @override - final Completer cancelCompleter; + final Completer? cancelCompleter; factory _$SubscriptionUIState( - [void Function(SubscriptionUIStateBuilder) updates]) => + [void Function(SubscriptionUIStateBuilder)? updates]) => (new SubscriptionUIStateBuilder()..update(updates))._build(); _$SubscriptionUIState._( {this.editing, - this.listUIState, + required this.listUIState, this.selectedId, this.forceSelected, - this.tabIndex, + required this.tabIndex, this.saveCompleter, this.cancelCompleter}) : super._() { @@ -324,10 +324,10 @@ class _$SubscriptionUIState extends SubscriptionUIState { cancelCompleter == other.cancelCompleter; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, editing.hashCode); _$hash = $jc(_$hash, listUIState.hashCode); @@ -356,40 +356,40 @@ class _$SubscriptionUIState extends SubscriptionUIState { class SubscriptionUIStateBuilder implements Builder { - _$SubscriptionUIState _$v; + _$SubscriptionUIState? _$v; - SubscriptionEntityBuilder _editing; + SubscriptionEntityBuilder? _editing; SubscriptionEntityBuilder get editing => _$this._editing ??= new SubscriptionEntityBuilder(); - set editing(SubscriptionEntityBuilder editing) => _$this._editing = editing; + set editing(SubscriptionEntityBuilder? editing) => _$this._editing = editing; - ListUIStateBuilder _listUIState; + ListUIStateBuilder? _listUIState; ListUIStateBuilder get listUIState => _$this._listUIState ??= new ListUIStateBuilder(); - set listUIState(ListUIStateBuilder listUIState) => + set listUIState(ListUIStateBuilder? listUIState) => _$this._listUIState = listUIState; - String _selectedId; - String get selectedId => _$this._selectedId; - set selectedId(String selectedId) => _$this._selectedId = selectedId; + String? _selectedId; + String? get selectedId => _$this._selectedId; + set selectedId(String? selectedId) => _$this._selectedId = selectedId; - bool _forceSelected; - bool get forceSelected => _$this._forceSelected; - set forceSelected(bool forceSelected) => + bool? _forceSelected; + bool? get forceSelected => _$this._forceSelected; + set forceSelected(bool? forceSelected) => _$this._forceSelected = forceSelected; - int _tabIndex; - int get tabIndex => _$this._tabIndex; - set tabIndex(int tabIndex) => _$this._tabIndex = tabIndex; + int? _tabIndex; + int? get tabIndex => _$this._tabIndex; + set tabIndex(int? tabIndex) => _$this._tabIndex = tabIndex; - Completer _saveCompleter; - Completer get saveCompleter => _$this._saveCompleter; - set saveCompleter(Completer saveCompleter) => + Completer? _saveCompleter; + Completer? get saveCompleter => _$this._saveCompleter; + set saveCompleter(Completer? saveCompleter) => _$this._saveCompleter = saveCompleter; - Completer _cancelCompleter; - Completer get cancelCompleter => _$this._cancelCompleter; - set cancelCompleter(Completer cancelCompleter) => + Completer? _cancelCompleter; + Completer? get cancelCompleter => _$this._cancelCompleter; + set cancelCompleter(Completer? cancelCompleter) => _$this._cancelCompleter = cancelCompleter; SubscriptionUIStateBuilder(); @@ -416,7 +416,7 @@ class SubscriptionUIStateBuilder } @override - void update(void Function(SubscriptionUIStateBuilder) updates) { + void update(void Function(SubscriptionUIStateBuilder)? updates) { if (updates != null) updates(this); } @@ -437,7 +437,7 @@ class SubscriptionUIStateBuilder saveCompleter: saveCompleter, cancelCompleter: cancelCompleter); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'editing'; _editing?.build(); diff --git a/lib/redux/task/task_actions.dart b/lib/redux/task/task_actions.dart index 2686da754..a2963d7c7 100644 --- a/lib/redux/task/task_actions.dart +++ b/lib/redux/task/task_actions.dart @@ -28,16 +28,16 @@ class ViewTaskList implements PersistUI { }); final bool force; - final int page; + final int? page; } class ViewTask implements PersistUI, PersistPrefs { ViewTask({ - @required this.taskId, + required this.taskId, this.force = false, }); - final String taskId; + final String? taskId; final bool force; } @@ -49,10 +49,10 @@ class EditTask implements PersistUI, PersistPrefs { this.force = false, this.taskTimeIndex}); - final int taskTimeIndex; - final TaskEntity task; - final TaskTime taskTime; - final Completer completer; + final int? taskTimeIndex; + final TaskEntity? task; + final TaskTime? taskTime; + final Completer? completer; final bool force; } @@ -65,21 +65,21 @@ class UpdateTask implements PersistUI { class LoadTask { LoadTask({this.completer, this.taskId}); - final Completer completer; - final String taskId; + final Completer? completer; + final String? taskId; } class LoadTaskActivity { LoadTaskActivity({this.completer, this.taskId}); - final Completer completer; - final String taskId; + final Completer? completer; + final String? taskId; } class LoadTasks { LoadTasks({this.completer, this.page = 1}); - final Completer completer; + final Completer? completer; final int page; } @@ -110,7 +110,7 @@ class LoadTaskSuccess implements StopLoading, PersistData { class EditTaskTime implements PersistUI { EditTaskTime([this.taskTimeIndex]); - final int taskTimeIndex; + final int? taskTimeIndex; } class AddTaskTime implements PersistUI { @@ -122,8 +122,8 @@ class AddTaskTime implements PersistUI { class UpdateTaskTime implements PersistUI { UpdateTaskTime({this.index, this.taskTime}); - final int index; - final TaskTime taskTime; + final int? index; + final TaskTime? taskTime; } class DeleteTaskTime implements PersistUI { @@ -160,10 +160,10 @@ class SaveTaskRequest implements StartSaving { SaveTaskRequest( {this.completer, this.task, this.autoSelect = true, this.action}); - final Completer completer; - final TaskEntity task; + final Completer? completer; + final TaskEntity? task; final bool autoSelect; - final EntityAction action; + final EntityAction? action; } class SaveTaskSuccess implements StopSaving, PersistData, PersistUI { @@ -175,7 +175,7 @@ class SaveTaskSuccess implements StopSaving, PersistData, PersistUI { class AddTaskSuccess implements StopSaving, PersistData, PersistUI { AddTaskSuccess({this.task, this.autoSelect = true}); - final TaskEntity task; + final TaskEntity? task; final bool autoSelect; } @@ -201,7 +201,7 @@ class ArchiveTaskSuccess implements StopSaving, PersistData { class ArchiveTaskFailure implements StopSaving { ArchiveTaskFailure(this.tasks); - final List tasks; + final List tasks; } class StartTasksRequest implements StartSaving { @@ -220,7 +220,7 @@ class StartTasksSuccess implements StopSaving, PersistData { class StartTasksFailure implements StopSaving { StartTasksFailure(this.tasks); - final List tasks; + final List tasks; } class StopTasksRequest implements StartSaving { @@ -239,7 +239,7 @@ class StopTasksSuccess implements StopSaving, PersistData { class StopTasksFailure implements StopSaving { StopTasksFailure(this.tasks); - final List tasks; + final List tasks; } class DeleteTaskRequest implements StartSaving { @@ -258,7 +258,7 @@ class DeleteTaskSuccess implements StopSaving, PersistData { class DeleteTaskFailure implements StopSaving { DeleteTaskFailure(this.tasks); - final List tasks; + final List tasks; } class RestoreTaskRequest implements StartSaving { @@ -277,22 +277,22 @@ class RestoreTaskSuccess implements StopSaving, PersistData { class RestoreTaskFailure implements StopSaving { RestoreTaskFailure(this.tasks); - final List tasks; + final List tasks; } class SortTasksRequest implements StartSaving { SortTasksRequest({this.completer, this.statusIds, this.taskIds}); - final Completer completer; - final List statusIds; - final Map> taskIds; + final Completer? completer; + final List? statusIds; + final Map>? taskIds; } class SortTasksSuccess implements StopSaving, PersistData { SortTasksSuccess({this.statusIds, this.taskIds}); - final List statusIds; - final Map> taskIds; + final List? statusIds; + final Map>? taskIds; } class SortTasksFailure implements StopSaving { @@ -352,17 +352,17 @@ class FilterTasksByCustom4 implements PersistUI { class UpdateKanban {} void handleTaskAction( - BuildContext context, List tasks, EntityAction action) { + BuildContext? context, List tasks, EntityAction? action) { if (tasks.isEmpty) { return; } - final store = StoreProvider.of(context); + final store = StoreProvider.of(context!); final state = store.state; final localization = AppLocalization.of(context); final task = tasks.first as TaskEntity; final client = state.clientState.get(task.clientId); - final taskIds = tasks.map((task) => task.id).toList(); + final taskIds = tasks.map((task) => task!.id).toList(); switch (action) { case EntityAction.edit: @@ -371,19 +371,19 @@ void handleTaskAction( case EntityAction.start: case EntityAction.resume: final message = taskIds.length > 1 - ? localization.startedTasks + ? localization!.startedTasks! .replaceFirst(':value', ':count') .replaceFirst(':count', taskIds.length.toString()) - : localization.startedTask; + : localization!.startedTask; store.dispatch(StartTasksRequest( snackBarCompleter(context, message), taskIds)); break; case EntityAction.stop: final message = taskIds.length > 1 - ? localization.stoppedTasks + ? localization!.stoppedTasks! .replaceFirst(':value', ':count') .replaceFirst(':count', taskIds.length.toString()) - : localization.stoppedTask; + : localization!.stoppedTask; store.dispatch( StopTasksRequest(snackBarCompleter(context, message), taskIds)); break; @@ -401,7 +401,7 @@ void handleTaskAction( } }); if (hasMultipleClients) { - showErrorDialog(message: localization.multipleClientError); + showErrorDialog(message: localization!.multipleClientError); return; } @@ -420,10 +420,10 @@ void handleTaskAction( final taskBTimes = taskBEntity.getTaskTimes(); final taskADate = taskATimes.isEmpty ? convertTimestampToDate(taskA.createdAt) - : taskATimes.first.startDate; + : taskATimes.first!.startDate!; final taskBDate = taskBTimes.isEmpty ? convertTimestampToDate(taskB.createdAt) - : taskBTimes.first.startDate; + : taskBTimes.first!.startDate!; return taskADate.compareTo(taskBDate); }); @@ -437,18 +437,18 @@ void handleTaskAction( final company = state.company; final items = []; - TaskEntity lastTask; + TaskEntity? lastTask; tasks.where((entity) { final task = entity as TaskEntity; - return !task.isDeleted && !task.isRunning && !task.isInvoiced; + return !task.isDeleted! && !task.isRunning && !task.isInvoiced; }).forEach((task) { items.add(convertTaskToInvoiceItem( - task: task, + task: task as TaskEntity, context: context, - includeProjectHeader: company.invoiceTaskProject && - !company.hasCustomProductField(localization.project) && - (task as TaskEntity).projectId != lastTask?.projectId)); + includeProjectHeader: company!.invoiceTaskProject && + !company.hasCustomProductField(localization!.project) && + task.projectId != lastTask?.projectId)); lastTask = task; }); @@ -477,28 +477,28 @@ void handleTaskAction( break; case EntityAction.restore: final message = taskIds.length > 1 - ? localization.restoredTasks + ? localization!.restoredTasks .replaceFirst(':value', ':count') .replaceFirst(':count', taskIds.length.toString()) - : localization.restoredTask; + : localization!.restoredTask; store.dispatch(RestoreTaskRequest( snackBarCompleter(context, message), taskIds)); break; case EntityAction.archive: final message = taskIds.length > 1 - ? localization.archivedTasks + ? localization!.archivedTasks .replaceFirst(':value', ':count') .replaceFirst(':count', taskIds.length.toString()) - : localization.archivedTask; + : localization!.archivedTask; store.dispatch(ArchiveTaskRequest( snackBarCompleter(context, message), taskIds)); break; case EntityAction.delete: final message = taskIds.length > 1 - ? localization.deletedTasks + ? localization!.deletedTasks .replaceFirst(':value', ':count') .replaceFirst(':count', taskIds.length.toString()) - : localization.deletedTask; + : localization!.deletedTask; store.dispatch(DeleteTaskRequest( snackBarCompleter(context, message), taskIds)); break; @@ -512,7 +512,7 @@ void handleTaskAction( } for (final task in tasks) { - if (!store.state.taskListState.isSelected(task.id)) { + if (!store.state.taskListState.isSelected(task!.id)) { store.dispatch(AddToTaskMultiselect(entity: task)); } else { store.dispatch(RemoveFromTaskMultiselect(entity: task)); @@ -533,14 +533,14 @@ void handleTaskAction( } if (documentIds.isEmpty) { showMessageDialog( - context: context, message: localization.noDocumentsToDownload); + context: context, message: localization!.noDocumentsToDownload); } else { store.dispatch( DownloadDocumentsRequest( documentIds: documentIds, completer: snackBarCompleter( context, - localization.exportedData, + localization!.exportedData, ), ), ); @@ -555,25 +555,25 @@ void handleTaskAction( class StartTaskMultiselect {} class AddToTaskMultiselect { - AddToTaskMultiselect({@required this.entity}); + AddToTaskMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class RemoveFromTaskMultiselect { - RemoveFromTaskMultiselect({@required this.entity}); + RemoveFromTaskMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class ClearTaskMultiselect {} class SaveTaskDocumentRequest implements StartSaving { SaveTaskDocumentRequest({ - @required this.isPrivate, - @required this.completer, - @required this.multipartFiles, - @required this.task, + required this.isPrivate, + required this.completer, + required this.multipartFiles, + required this.task, }); final bool isPrivate; @@ -597,5 +597,5 @@ class SaveTaskDocumentFailure implements StopSaving { class UpdateTaskTab implements PersistUI { UpdateTaskTab({this.tabIndex}); - final int tabIndex; + final int? tabIndex; } diff --git a/lib/redux/task/task_middleware.dart b/lib/redux/task/task_middleware.dart index 60e3c67ca..76baefdd8 100644 --- a/lib/redux/task/task_middleware.dart +++ b/lib/redux/task/task_middleware.dart @@ -56,14 +56,14 @@ List> createStoreTasksMiddleware([ Middleware _editTask() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as EditTask; + final action = dynamicAction as EditTask?; next(action); store.dispatch(UpdateCurrentRoute(TaskEditScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(TaskEditScreen.route); + navigatorKey.currentState!.pushNamed(TaskEditScreen.route); } }; } @@ -71,21 +71,21 @@ Middleware _editTask() { Middleware _viewTask() { return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as ViewTask; + final action = dynamicAction as ViewTask?; next(action); store.dispatch(UpdateCurrentRoute(TaskViewScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(TaskViewScreen.route); + navigatorKey.currentState!.pushNamed(TaskViewScreen.route); } }; } Middleware _viewTaskList() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as ViewTaskList; + final action = dynamicAction as ViewTaskList?; next(action); @@ -96,7 +96,7 @@ Middleware _viewTaskList() { store.dispatch(UpdateCurrentRoute(TaskScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamedAndRemoveUntil( + navigatorKey.currentState!.pushNamedAndRemoveUntil( TaskScreen.route, (Route route) => false); } }; @@ -234,19 +234,19 @@ Middleware _saveTask(TaskRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as SaveTaskRequest; repository - .saveData(store.state.credentials, action.task, action: action.action) + .saveData(store.state.credentials, action.task!, action: action.action) .then((TaskEntity task) { - if (action.task.isNew) { + if (action.task!.isNew) { store.dispatch( AddTaskSuccess(task: task, autoSelect: action.autoSelect)); } else { store.dispatch(SaveTaskSuccess(task)); } - action.completer.complete(task); + action.completer!.complete(task); }).catchError((Object error) { print(error); store.dispatch(SaveTaskFailure(error)); - action.completer.completeError(error); + action.completer!.completeError(error); }); next(action); @@ -263,13 +263,13 @@ Middleware _loadTask(TaskRepository repository) { store.dispatch(LoadTaskSuccess(task)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(LoadTaskFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -310,7 +310,7 @@ Middleware _loadTasks(TaskRepository repository) { )); } else { if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } store.dispatch(LoadVendors()); } @@ -318,7 +318,7 @@ Middleware _loadTasks(TaskRepository repository) { print(error); store.dispatch(LoadTasksFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -328,12 +328,12 @@ Middleware _loadTasks(TaskRepository repository) { Middleware _saveDocument(TaskRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as SaveTaskDocumentRequest; + final action = dynamicAction as SaveTaskDocumentRequest?; if (store.state.isEnterprisePlan) { repository .uploadDocument( store.state.credentials, - action.task, + action!.task, action.multipartFiles, action.isPrivate, ) @@ -357,7 +357,7 @@ Middleware _saveDocument(TaskRepository repository) { } else { const error = 'Uploading documents requires an enterprise plan'; store.dispatch(SaveTaskDocumentFailure(error)); - action.completer.completeError(error); + action!.completer.completeError(error); } next(action); @@ -376,13 +376,13 @@ Middleware _sortTasks(TaskRepository repository) { taskIds: action.taskIds, )); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(SortTasksFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); diff --git a/lib/redux/task/task_reducer.dart b/lib/redux/task/task_reducer.dart index 32215a7c5..a8ff33a1f 100644 --- a/lib/redux/task/task_reducer.dart +++ b/lib/redux/task/task_reducer.dart @@ -15,7 +15,7 @@ import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; EntityUIState taskUIReducer(TaskUIState state, dynamic action) { return state.rebuild((b) => b ..listUIState.replace(taskListReducer(state.listUIState, action)) - ..editing.replace(editingReducer(state.editing, action)) + ..editing.replace(editingReducer(state.editing, action)!) ..editingTimeIndex = editingTimeReducer(state.editingTimeIndex, action) ..selectedId = selectedIdReducer(state.selectedId, action) ..forceSelected = forceSelectedReducer(state.forceSelected, action) @@ -24,36 +24,36 @@ EntityUIState taskUIReducer(TaskUIState state, dynamic action) { kanbanLastUpdatedReducer(state.kanbanLastUpdated, action)); } -final forceSelectedReducer = combineReducers([ - TypedReducer((completer, action) => true), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), +final forceSelectedReducer = combineReducers([ + TypedReducer((completer, action) => true), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), ]); -final tabIndexReducer = combineReducers([ - TypedReducer((completer, action) { +final int? Function(int, dynamic) tabIndexReducer = combineReducers([ + TypedReducer((completer, action) { return action.tabIndex; }), - TypedReducer((completer, action) { + TypedReducer((completer, action) { return 0; }), ]); -final kanbanLastUpdatedReducer = combineReducers([ - TypedReducer((completer, action) { +final kanbanLastUpdatedReducer = combineReducers([ + TypedReducer((completer, action) { return DateTime.now().millisecondsSinceEpoch; }), ]); -final editingTimeReducer = combineReducers([ - TypedReducer((index, action) => action.taskTimeIndex), - TypedReducer((index, action) => action.taskTimeIndex), +final editingTimeReducer = combineReducers([ + TypedReducer((index, action) => action.taskTimeIndex), + TypedReducer((index, action) => action.taskTimeIndex), /* TypedReducer((index, action) => action.invoiceItemIndex), @@ -69,60 +69,60 @@ TaskTime editTaskTime(TaskTime taskTime, dynamic action) { } */ -Reducer selectedIdReducer = combineReducers([ - TypedReducer((completer, action) => ''), - TypedReducer((completer, action) => ''), - TypedReducer((selectedId, action) => +Reducer selectedIdReducer = combineReducers([ + TypedReducer((completer, action) => ''), + TypedReducer((completer, action) => ''), + TypedReducer((selectedId, action) => action.entityType == EntityType.task ? action.entityId : selectedId), - TypedReducer((selectedId, action) => action.taskId), - TypedReducer((selectedId, action) => - selectedId.isNotEmpty || action.autoSelect ? action.task.id : ''), - TypedReducer( + TypedReducer((selectedId, action) => action.taskId), + TypedReducer((selectedId, action) => + selectedId!.isNotEmpty || action.autoSelect ? action.task!.id : ''), + TypedReducer( (selectedId, action) => action.clearSelection ? '' : selectedId), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), ]); -final editingReducer = combineReducers([ - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer((tasks, action) { +final editingReducer = combineReducers([ + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer((tasks, action) { return action.tasks[0]; }), - TypedReducer((tasks, action) { + TypedReducer((tasks, action) { return action.tasks[0]; }), - TypedReducer((tasks, action) { + TypedReducer((tasks, action) { return action.tasks[0]; }), - TypedReducer((tasks, action) { + TypedReducer((tasks, action) { return action.tasks[0]; }), - TypedReducer((tasks, action) { + TypedReducer((tasks, action) { return action.tasks[0]; }), - TypedReducer(_updateEditing), - TypedReducer((task, action) { + TypedReducer(_updateEditing), + TypedReducer((task, action) { return action.task.rebuild((b) => b..isChanged = true); }), - TypedReducer(_addTaskTime), - TypedReducer(_removeTaskTime), - TypedReducer(_updateTaskTime), - TypedReducer(_clearEditing), + TypedReducer(_addTaskTime), + TypedReducer(_removeTaskTime), + TypedReducer(_updateTaskTime), + TypedReducer(_clearEditing), ]); -TaskEntity _clearEditing(TaskEntity task, dynamic action) { +TaskEntity _clearEditing(TaskEntity? task, dynamic action) { return TaskEntity(); } -TaskEntity _updateEditing(TaskEntity task, dynamic action) { +TaskEntity? _updateEditing(TaskEntity? task, dynamic action) { return action.task; } @@ -198,20 +198,20 @@ ListUIState _filterTasks(ListUIState taskListState, FilterTasks action) { ListUIState _sortTasks(ListUIState taskListState, SortTasks action) { return taskListState.rebuild((b) => b - ..sortAscending = b.sortField != action.field || !b.sortAscending + ..sortAscending = b.sortField != action.field || !b.sortAscending! ..sortField = action.field); } -TaskEntity _addTaskTime(TaskEntity task, AddTaskTime action) { - return task.addTaskTime(action.taskTime); +TaskEntity _addTaskTime(TaskEntity? task, AddTaskTime action) { + return task!.addTaskTime(action.taskTime); } -TaskEntity _removeTaskTime(TaskEntity task, DeleteTaskTime action) { - return task.deleteTaskTime(action.index); +TaskEntity _removeTaskTime(TaskEntity? task, DeleteTaskTime action) { + return task!.deleteTaskTime(action.index); } -TaskEntity _updateTaskTime(TaskEntity task, UpdateTaskTime action) { - return task.updateTaskTime(action.taskTime, action.index); +TaskEntity _updateTaskTime(TaskEntity? task, UpdateTaskTime action) { + return task!.updateTaskTime(action.taskTime!, action.index!); } ListUIState _startListMultiselect( @@ -221,12 +221,12 @@ ListUIState _startListMultiselect( ListUIState _addToListMultiselect( ListUIState taskListState, AddToTaskMultiselect action) { - return taskListState.rebuild((b) => b..selectedIds.add(action.entity.id)); + return taskListState.rebuild((b) => b..selectedIds.add(action.entity!.id)); } ListUIState _removeFromListMultiselect( ListUIState taskListState, RemoveFromTaskMultiselect action) { - return taskListState.rebuild((b) => b..selectedIds.remove(action.entity.id)); + return taskListState.rebuild((b) => b..selectedIds.remove(action.entity!.id)); } ListUIState _clearListMultiselect( @@ -251,8 +251,8 @@ final tasksReducer = combineReducers([ TaskState _purgeClientSuccess(TaskState taskState, PurgeClientSuccess action) { final ids = taskState.map.values - .where((each) => each.clientId == action.clientId) - .map((each) => each.id) + .where((each) => each!.clientId == action.clientId) + .map((each) => each!.id) .toList(); return taskState.rebuild((b) => b @@ -262,11 +262,11 @@ TaskState _purgeClientSuccess(TaskState taskState, PurgeClientSuccess action) { TaskState _sortTasksSuccess(TaskState taskState, SortTasksSuccess action) { return taskState.rebuild((b) { - for (final statusId in action.taskIds.keys) { - for (final taskId in action.taskIds[statusId]) { - b.map[taskId] = taskState.map[taskId].rebuild((b) => b + for (final statusId in action.taskIds!.keys) { + for (final taskId in action.taskIds![statusId]!) { + b.map[taskId] = taskState.map[taskId]!.rebuild((b) => b ..statusId = statusId - ..statusOrder = action.taskIds[statusId].indexOf(taskId)); + ..statusOrder = action.taskIds![statusId]!.indexOf(taskId)); } } }); @@ -314,8 +314,8 @@ TaskState _restoreTaskSuccess(TaskState taskState, RestoreTaskSuccess action) { TaskState _addTask(TaskState taskState, AddTaskSuccess action) { return taskState.rebuild((b) => b - ..map[action.task.id] = action.task - ..list.add(action.task.id)); + ..map[action.task!.id] = action.task + ..list.add(action.task!.id)); } TaskState _updateTask(TaskState taskState, SaveTaskSuccess action) { @@ -330,6 +330,6 @@ TaskState _setLoadedTasks(TaskState taskState, LoadTasksSuccess action) => taskState.loadTasks(action.tasks); TaskState _setLoadedCompany(TaskState taskState, LoadCompanySuccess action) { - final company = action.userCompany.company; + final company = action.userCompany.company!; return taskState.loadTasks(company.tasks); } diff --git a/lib/redux/task/task_selectors.dart b/lib/redux/task/task_selectors.dart index 0c624e283..aa792a6ac 100644 --- a/lib/redux/task/task_selectors.dart +++ b/lib/redux/task/task_selectors.dart @@ -15,16 +15,16 @@ import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; import 'package:invoiceninja_flutter/utils/formatting.dart'; InvoiceItemEntity convertTaskToInvoiceItem({ - BuildContext context, - TaskEntity task, + required BuildContext context, + required TaskEntity task, bool includeProjectHeader = false, }) { final state = StoreProvider.of(context).state; final project = state.projectState.get(task.projectId); - final client = state.clientState.get(task.clientId); + final client = state.clientState.get(task.clientId)!; final group = state.groupState.get(client.groupId); - final localization = AppLocalization.of(context); - final company = state.company; + final localization = AppLocalization.of(context)!; + final company = state.company!; var notes = ''; final dates = {}; @@ -36,9 +36,9 @@ InvoiceItemEntity convertTaskToInvoiceItem({ lineBreak += '\n'; if (company.invoiceTaskProjectHeader && - project.isOld && + project!.isOld && includeProjectHeader) { - if (state.company.markdownEnabled) { + if (state.company!.markdownEnabled) { notes += '## ${project.name}\n'; } else { notes += '
${project.name}
\n'; @@ -58,17 +58,17 @@ InvoiceItemEntity convertTaskToInvoiceItem({ task .getTaskTimes() .where((time) => - time.startDate != null && time.endDate != null && time.isBillable) + time!.startDate != null && time.endDate != null && time.isBillable) .forEach((time) { - final hours = round(time.duration.inSeconds / 3600, 3); + final hours = round(time!.duration.inSeconds / 3600, 3); final hoursStr = hours == 1 ? ' • 1 ${localization.hour}' : ' • $hours ${localization.hours}'; if (company.invoiceTaskDatelog && company.invoiceTaskTimelog) { - final start = formatDate(time.startDate.toIso8601String(), context, + final start = formatDate(time.startDate!.toIso8601String(), context, showTime: true); - final end = formatDate(time.endDate.toIso8601String(), context, + final end = formatDate(time.endDate!.toIso8601String(), context, showTime: true, showDate: false, showSeconds: true); notes += '$start - $end'; if (company.invoiceTaskHours) { @@ -79,7 +79,7 @@ InvoiceItemEntity convertTaskToInvoiceItem({ notes += time.description + lineBreak; } } else if (company.invoiceTaskDatelog) { - final date = formatDate(time.startDate.toIso8601String(), context, + final date = formatDate(time.startDate!.toIso8601String(), context, showTime: false); if (dates.containsKey(date)) { dates[date] += hours; @@ -87,9 +87,9 @@ InvoiceItemEntity convertTaskToInvoiceItem({ dates[date] = hours; } } else if (company.invoiceTaskTimelog) { - final start = formatDate(time.startDate.toIso8601String(), context, + final start = formatDate(time.startDate!.toIso8601String(), context, showTime: true, showDate: false); - final end = formatDate(time.endDate.toIso8601String(), context, + final end = formatDate(time.endDate!.toIso8601String(), context, showTime: true, showDate: false, showSeconds: true); notes += '$start - $end'; if (company.invoiceTaskHours) { @@ -129,10 +129,10 @@ InvoiceItemEntity convertTaskToInvoiceItem({ notes = notes.trim(); } - String customValue1 = ''; - String customValue2 = ''; - String customValue3 = ''; - String customValue4 = ''; + String? customValue1 = ''; + String? customValue2 = ''; + String? customValue3 = ''; + String? customValue4 = ''; final fieldLabel1 = company.getCustomFieldLabel(CustomFieldType.task1); final fieldLabel2 = company.getCustomFieldLabel(CustomFieldType.task2); @@ -144,7 +144,7 @@ InvoiceItemEntity convertTaskToInvoiceItem({ company.getCustomFieldLabel(CustomFieldType.task2): task.customValue2, company.getCustomFieldLabel(CustomFieldType.task3): task.customValue3, company.getCustomFieldLabel(CustomFieldType.task4): task.customValue4, - localization.project: state.projectState.get(task.projectId).name, + localization.project: state.projectState.get(task.projectId)!.name, }; for (var label in customValues.keys) { @@ -165,7 +165,7 @@ InvoiceItemEntity convertTaskToInvoiceItem({ ..taskId = task.id ..productKey = company.invoiceTaskProject && !company.invoiceTaskProjectHeader - ? project.name + ? project!.name : '' ..notes = notes ..cost = taskRateSelector( @@ -183,31 +183,31 @@ InvoiceItemEntity convertTaskToInvoiceItem({ ..customValue4 = customValue4); } -var memoizedTaskList = memo5((BuiltMap taskMap, - String clientId, - BuiltMap userMap, - BuiltMap clientMap, - BuiltMap projectMap) => +var memoizedTaskList = memo5((BuiltMap taskMap, + String? clientId, + BuiltMap userMap, + BuiltMap clientMap, + BuiltMap projectMap) => taskList(taskMap, clientId, userMap, clientMap, projectMap)); -List taskList( - BuiltMap taskMap, - String clientId, - BuiltMap userMap, - BuiltMap clientMap, - BuiltMap projectMap) { +List taskList( + BuiltMap taskMap, + String? clientId, + BuiltMap userMap, + BuiltMap clientMap, + BuiltMap projectMap) { final list = taskMap.keys.where((taskId) { final task = taskMap[taskId]; if ((clientId ?? '').isNotEmpty && - (task.clientId ?? '').isNotEmpty && + (task!.clientId ?? '').isNotEmpty && task.clientId != clientId) { return false; } - return task.isActive && task.isStopped && !task.isInvoiced; + return task!.isActive && task.isStopped && !task.isInvoiced; }).toList(); list.sort((idA, idB) => - taskMap[idA].listDisplayName.compareTo(taskMap[idB].listDisplayName)); + taskMap[idA]!.listDisplayName.compareTo(taskMap[idB]!.listDisplayName)); return list; } @@ -240,10 +240,10 @@ List dropdownTasksSelector( BuiltMap projectMap, BuiltMap taskStatusMap, ) { - final list = taskList.where((taskId) => taskMap[taskId].isActive).toList(); + final list = taskList.where((taskId) => taskMap[taskId]!.isActive).toList(); list.sort((taskAId, taskBId) { - final taskA = taskMap[taskAId]; + final taskA = taskMap[taskAId]!; final taskB = taskMap[taskBId]; return taskA.compareTo( taskB, @@ -261,12 +261,12 @@ List dropdownTasksSelector( } var memoizedKanbanTaskList = memo9((SelectionState selectionState, - BuiltMap taskMap, - BuiltMap clientMap, - BuiltMap userMap, - BuiltMap projectMap, - BuiltMap invoiceMap, - BuiltMap taskStatusMap, + BuiltMap taskMap, + BuiltMap clientMap, + BuiltMap userMap, + BuiltMap projectMap, + BuiltMap invoiceMap, + BuiltMap taskStatusMap, BuiltList taskList, ListUIState taskListState) => kanbanTasksSelector(selectionState, taskMap, clientMap, userMap, projectMap, @@ -274,19 +274,19 @@ var memoizedKanbanTaskList = memo9((SelectionState selectionState, List kanbanTasksSelector( SelectionState selectionState, - BuiltMap taskMap, - BuiltMap clientMap, - BuiltMap userMap, - BuiltMap projectMap, - BuiltMap invoiceMap, - BuiltMap taskStatusMap, + BuiltMap taskMap, + BuiltMap clientMap, + BuiltMap userMap, + BuiltMap projectMap, + BuiltMap invoiceMap, + BuiltMap taskStatusMap, BuiltList taskList, ListUIState taskListState) { final filterEntityId = selectionState.filterEntityId; final filterEntityType = selectionState.filterEntityType; final list = taskList.where((taskId) { - final task = taskMap[taskId]; + final task = taskMap[taskId]!; final client = clientMap[task.clientId] ?? ClientEntity(id: task.clientId); if (!client.isActive && @@ -302,7 +302,7 @@ List kanbanTasksSelector( }).toList(); list.sort((taskAId, taskBId) { - final taskA = taskMap[taskAId]; + final taskA = taskMap[taskAId]!; final taskB = taskMap[taskBId]; return taskA.compareTo( taskB, @@ -321,12 +321,12 @@ List kanbanTasksSelector( var memoizedFilteredTaskList = memo9(( SelectionState selectionState, - BuiltMap taskMap, - BuiltMap clientMap, - BuiltMap userMap, - BuiltMap projectMap, - BuiltMap invoiceMap, - BuiltMap taskStatusMap, + BuiltMap taskMap, + BuiltMap clientMap, + BuiltMap userMap, + BuiltMap projectMap, + BuiltMap invoiceMap, + BuiltMap taskStatusMap, BuiltList taskList, ListUIState taskListState, ) => @@ -344,19 +344,19 @@ var memoizedFilteredTaskList = memo9(( List filteredTasksSelector( SelectionState selectionState, - BuiltMap taskMap, - BuiltMap clientMap, - BuiltMap userMap, - BuiltMap projectMap, - BuiltMap invoiceMap, - BuiltMap taskStatusMap, + BuiltMap taskMap, + BuiltMap clientMap, + BuiltMap userMap, + BuiltMap projectMap, + BuiltMap invoiceMap, + BuiltMap taskStatusMap, BuiltList taskList, ListUIState taskListState) { final filterEntityId = selectionState.filterEntityId; final filterEntityType = selectionState.filterEntityType; final list = taskList.where((taskId) { - final task = taskMap[taskId]; + final task = taskMap[taskId]!; final client = clientMap[task.clientId] ?? ClientEntity(id: task.clientId); final project = projectMap[task.projectId] ?? ProjectEntity(id: task.projectId); @@ -372,7 +372,7 @@ List filteredTasksSelector( if (!task.matchesFilter(taskListState.filter) && !client.matchesNameOrEmail(taskListState.filter) && - !project.matchesName(taskListState.filter)) { + !project.matchesName(taskListState.filter!)) { return false; } @@ -425,7 +425,7 @@ List filteredTasksSelector( }).toList(); list.sort((taskAId, taskBId) { - final taskA = taskMap[taskAId]; + final taskA = taskMap[taskAId]!; final taskB = taskMap[taskBId]; return taskA.compareTo( taskB, @@ -442,12 +442,12 @@ List filteredTasksSelector( return list; } -double taskRateSelector({ - @required CompanyEntity company, - @required ProjectEntity project, - @required ClientEntity client, - @required TaskEntity task, - @required GroupEntity group, +double? taskRateSelector({ + required CompanyEntity? company, + required ProjectEntity? project, + required ClientEntity? client, + required TaskEntity? task, + required GroupEntity? group, }) { if (task != null && task.rate > 0) { return task.rate; @@ -465,15 +465,15 @@ double taskRateSelector({ } var memoizedTaskStatsForClient = memo2( - (String clientId, BuiltMap taskMap) => + (String clientId, BuiltMap taskMap) => taskStatsForClient(clientId, taskMap)); EntityStats taskStatsForClient( - String clientId, BuiltMap taskMap) { + String clientId, BuiltMap taskMap) { int countActive = 0; int countArchived = 0; taskMap.forEach((taskId, task) { - if (task.clientId == clientId) { + if (task!.clientId == clientId) { if (task.isActive) { countActive++; } else if (task.isArchived) { @@ -487,16 +487,16 @@ EntityStats taskStatsForClient( var memoizedTaskStatsForProject = memo2(( String projectId, - BuiltMap taskMap, + BuiltMap taskMap, ) => taskStatsForProject(projectId, taskMap)); EntityStats taskStatsForProject( - String projectId, BuiltMap taskMap) { + String projectId, BuiltMap taskMap) { int countActive = 0; int countArchived = 0; taskMap.forEach((taskId, task) { - if (task.projectId == projectId) { + if (task!.projectId == projectId) { if (task.isActive) { countActive++; } else if (task.isArchived) { @@ -510,7 +510,7 @@ EntityStats taskStatsForProject( var memoizedTaskStatsForUser = memo2(( String userId, - BuiltMap taskMap, + BuiltMap taskMap, ) => taskStatsForProject(userId, taskMap)); diff --git a/lib/redux/task/task_state.dart b/lib/redux/task/task_state.dart index 53d017405..8fb62ccbe 100644 --- a/lib/redux/task/task_state.dart +++ b/lib/redux/task/task_state.dart @@ -29,7 +29,7 @@ abstract class TaskState implements Built { @memoized int get hashCode; - TaskEntity get(String taskId) { + TaskEntity? get(String taskId) { if (map.containsKey(taskId)) { return map[taskId]; } else { @@ -37,12 +37,12 @@ abstract class TaskState implements Built { } } - BuiltMap get map; + BuiltMap get map; BuiltList get list; TaskState loadTasks(BuiltList clients) { - final map = Map.fromIterable( + final map = Map.fromIterable( clients, key: (dynamic item) => item.id, value: (dynamic item) => item, @@ -59,7 +59,7 @@ abstract class TaskState implements Built { abstract class TaskUIState extends Object with EntityUIState implements Built { - factory TaskUIState(PrefStateSortField sortField) { + factory TaskUIState(PrefStateSortField? sortField) { return _$TaskUIState._( listUIState: ListUIState(sortField?.field ?? TaskFields.number, sortAscending: sortField?.ascending ?? false), @@ -76,21 +76,18 @@ abstract class TaskUIState extends Object @memoized int get hashCode; - @nullable - TaskEntity get editing; + TaskEntity? get editing; - @nullable @BuiltValueField(serialize: false) - int get editingTimeIndex; + int? get editingTimeIndex; @override - bool get isCreatingNew => editing.isNew; + bool get isCreatingNew => editing!.isNew; @override - String get editingId => editing.id; + String get editingId => editing!.id; - @nullable - int get kanbanLastUpdated; + int? get kanbanLastUpdated; static Serializer get serializer => _$taskUIStateSerializer; } diff --git a/lib/redux/task/task_state.g.dart b/lib/redux/task/task_state.g.dart index 969bb8904..f975038e5 100644 --- a/lib/redux/task/task_state.g.dart +++ b/lib/redux/task/task_state.g.dart @@ -16,13 +16,15 @@ class _$TaskStateSerializer implements StructuredSerializer { final String wireName = 'TaskState'; @override - Iterable serialize(Serializers serializers, TaskState object, + Iterable serialize(Serializers serializers, TaskState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'map', serializers.serialize(object.map, - specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(TaskEntity)])), + specifiedType: const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(TaskEntity) + ])), 'list', serializers.serialize(object.list, specifiedType: @@ -33,26 +35,28 @@ class _$TaskStateSerializer implements StructuredSerializer { } @override - TaskState deserialize(Serializers serializers, Iterable serialized, + TaskState deserialize(Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TaskStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'map': result.map.replace(serializers.deserialize(value, - specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(TaskEntity)]))); + specifiedType: const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(TaskEntity) + ]))!); break; case 'list': result.list.replace(serializers.deserialize(value, - specifiedType: - const FullType(BuiltList, const [const FullType(String)])) - as BuiltList); + specifiedType: const FullType( + BuiltList, const [const FullType(String)]))! + as BuiltList); break; } } @@ -68,9 +72,9 @@ class _$TaskUIStateSerializer implements StructuredSerializer { final String wireName = 'TaskUIState'; @override - Iterable serialize(Serializers serializers, TaskUIState object, + Iterable serialize(Serializers serializers, TaskUIState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'listUIState', serializers.serialize(object.listUIState, specifiedType: const FullType(ListUIState)), @@ -78,7 +82,7 @@ class _$TaskUIStateSerializer implements StructuredSerializer { serializers.serialize(object.tabIndex, specifiedType: const FullType(int)), ]; - Object value; + Object? value; value = object.editing; if (value != null) { result @@ -110,39 +114,39 @@ class _$TaskUIStateSerializer implements StructuredSerializer { } @override - TaskUIState deserialize(Serializers serializers, Iterable serialized, + TaskUIState deserialize(Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TaskUIStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'editing': result.editing.replace(serializers.deserialize(value, - specifiedType: const FullType(TaskEntity)) as TaskEntity); + specifiedType: const FullType(TaskEntity))! as TaskEntity); break; case 'kanbanLastUpdated': result.kanbanLastUpdated = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int)) as int?; break; case 'listUIState': result.listUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(ListUIState)) as ListUIState); + specifiedType: const FullType(ListUIState))! as ListUIState); break; case 'selectedId': result.selectedId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'forceSelected': result.forceSelected = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'tabIndex': result.tabIndex = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; } } @@ -153,14 +157,14 @@ class _$TaskUIStateSerializer implements StructuredSerializer { class _$TaskState extends TaskState { @override - final BuiltMap map; + final BuiltMap map; @override final BuiltList list; - factory _$TaskState([void Function(TaskStateBuilder) updates]) => + factory _$TaskState([void Function(TaskStateBuilder)? updates]) => (new TaskStateBuilder()..update(updates))._build(); - _$TaskState._({this.map, this.list}) : super._() { + _$TaskState._({required this.map, required this.list}) : super._() { BuiltValueNullFieldError.checkNotNull(map, r'TaskState', 'map'); BuiltValueNullFieldError.checkNotNull(list, r'TaskState', 'list'); } @@ -178,10 +182,10 @@ class _$TaskState extends TaskState { return other is TaskState && map == other.map && list == other.list; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, map.hashCode); _$hash = $jc(_$hash, list.hashCode); @@ -199,16 +203,16 @@ class _$TaskState extends TaskState { } class TaskStateBuilder implements Builder { - _$TaskState _$v; + _$TaskState? _$v; - MapBuilder _map; - MapBuilder get map => - _$this._map ??= new MapBuilder(); - set map(MapBuilder map) => _$this._map = map; + MapBuilder? _map; + MapBuilder get map => + _$this._map ??= new MapBuilder(); + set map(MapBuilder? map) => _$this._map = map; - ListBuilder _list; + ListBuilder? _list; ListBuilder get list => _$this._list ??= new ListBuilder(); - set list(ListBuilder list) => _$this._list = list; + set list(ListBuilder? list) => _$this._list = list; TaskStateBuilder(); @@ -229,7 +233,7 @@ class TaskStateBuilder implements Builder { } @override - void update(void Function(TaskStateBuilder) updates) { + void update(void Function(TaskStateBuilder)? updates) { if (updates != null) updates(this); } @@ -241,7 +245,7 @@ class TaskStateBuilder implements Builder { try { _$result = _$v ?? new _$TaskState._(map: map.build(), list: list.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'map'; map.build(); @@ -260,35 +264,35 @@ class TaskStateBuilder implements Builder { class _$TaskUIState extends TaskUIState { @override - final TaskEntity editing; + final TaskEntity? editing; @override - final int editingTimeIndex; + final int? editingTimeIndex; @override - final int kanbanLastUpdated; + final int? kanbanLastUpdated; @override final ListUIState listUIState; @override - final String selectedId; + final String? selectedId; @override - final bool forceSelected; + final bool? forceSelected; @override final int tabIndex; @override - final Completer saveCompleter; + final Completer? saveCompleter; @override - final Completer cancelCompleter; + final Completer? cancelCompleter; - factory _$TaskUIState([void Function(TaskUIStateBuilder) updates]) => + factory _$TaskUIState([void Function(TaskUIStateBuilder)? updates]) => (new TaskUIStateBuilder()..update(updates))._build(); _$TaskUIState._( {this.editing, this.editingTimeIndex, this.kanbanLastUpdated, - this.listUIState, + required this.listUIState, this.selectedId, this.forceSelected, - this.tabIndex, + required this.tabIndex, this.saveCompleter, this.cancelCompleter}) : super._() { @@ -319,10 +323,10 @@ class _$TaskUIState extends TaskUIState { cancelCompleter == other.cancelCompleter; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, editing.hashCode); _$hash = $jc(_$hash, editingTimeIndex.hashCode); @@ -354,49 +358,49 @@ class _$TaskUIState extends TaskUIState { } class TaskUIStateBuilder implements Builder { - _$TaskUIState _$v; + _$TaskUIState? _$v; - TaskEntityBuilder _editing; + TaskEntityBuilder? _editing; TaskEntityBuilder get editing => _$this._editing ??= new TaskEntityBuilder(); - set editing(TaskEntityBuilder editing) => _$this._editing = editing; + set editing(TaskEntityBuilder? editing) => _$this._editing = editing; - int _editingTimeIndex; - int get editingTimeIndex => _$this._editingTimeIndex; - set editingTimeIndex(int editingTimeIndex) => + int? _editingTimeIndex; + int? get editingTimeIndex => _$this._editingTimeIndex; + set editingTimeIndex(int? editingTimeIndex) => _$this._editingTimeIndex = editingTimeIndex; - int _kanbanLastUpdated; - int get kanbanLastUpdated => _$this._kanbanLastUpdated; - set kanbanLastUpdated(int kanbanLastUpdated) => + int? _kanbanLastUpdated; + int? get kanbanLastUpdated => _$this._kanbanLastUpdated; + set kanbanLastUpdated(int? kanbanLastUpdated) => _$this._kanbanLastUpdated = kanbanLastUpdated; - ListUIStateBuilder _listUIState; + ListUIStateBuilder? _listUIState; ListUIStateBuilder get listUIState => _$this._listUIState ??= new ListUIStateBuilder(); - set listUIState(ListUIStateBuilder listUIState) => + set listUIState(ListUIStateBuilder? listUIState) => _$this._listUIState = listUIState; - String _selectedId; - String get selectedId => _$this._selectedId; - set selectedId(String selectedId) => _$this._selectedId = selectedId; + String? _selectedId; + String? get selectedId => _$this._selectedId; + set selectedId(String? selectedId) => _$this._selectedId = selectedId; - bool _forceSelected; - bool get forceSelected => _$this._forceSelected; - set forceSelected(bool forceSelected) => + bool? _forceSelected; + bool? get forceSelected => _$this._forceSelected; + set forceSelected(bool? forceSelected) => _$this._forceSelected = forceSelected; - int _tabIndex; - int get tabIndex => _$this._tabIndex; - set tabIndex(int tabIndex) => _$this._tabIndex = tabIndex; + int? _tabIndex; + int? get tabIndex => _$this._tabIndex; + set tabIndex(int? tabIndex) => _$this._tabIndex = tabIndex; - Completer _saveCompleter; - Completer get saveCompleter => _$this._saveCompleter; - set saveCompleter(Completer saveCompleter) => + Completer? _saveCompleter; + Completer? get saveCompleter => _$this._saveCompleter; + set saveCompleter(Completer? saveCompleter) => _$this._saveCompleter = saveCompleter; - Completer _cancelCompleter; - Completer get cancelCompleter => _$this._cancelCompleter; - set cancelCompleter(Completer cancelCompleter) => + Completer? _cancelCompleter; + Completer? get cancelCompleter => _$this._cancelCompleter; + set cancelCompleter(Completer? cancelCompleter) => _$this._cancelCompleter = cancelCompleter; TaskUIStateBuilder(); @@ -425,7 +429,7 @@ class TaskUIStateBuilder implements Builder { } @override - void update(void Function(TaskUIStateBuilder) updates) { + void update(void Function(TaskUIStateBuilder)? updates) { if (updates != null) updates(this); } @@ -448,7 +452,7 @@ class TaskUIStateBuilder implements Builder { saveCompleter: saveCompleter, cancelCompleter: cancelCompleter); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'editing'; _editing?.build(); diff --git a/lib/redux/task_status/task_status_actions.dart b/lib/redux/task_status/task_status_actions.dart index 8c93d867b..90151beb9 100644 --- a/lib/redux/task_status/task_status_actions.dart +++ b/lib/redux/task_status/task_status_actions.dart @@ -26,24 +26,24 @@ class ViewTaskStatusList implements PersistUI { class ViewTaskStatus implements PersistUI, PersistPrefs { ViewTaskStatus({ - @required this.taskStatusId, + required this.taskStatusId, this.force = false, }); - final String taskStatusId; + final String? taskStatusId; final bool force; } class EditTaskStatus implements PersistUI, PersistPrefs { EditTaskStatus( - {@required this.taskStatus, + {required this.taskStatus, this.completer, this.cancelCompleter, this.force = false}); final TaskStatusEntity taskStatus; - final Completer completer; - final Completer cancelCompleter; + final Completer? completer; + final Completer? cancelCompleter; final bool force; } @@ -56,21 +56,21 @@ class UpdateTaskStatus implements PersistUI { class LoadTaskStatus { LoadTaskStatus({this.completer, this.taskStatusId}); - final Completer completer; - final String taskStatusId; + final Completer? completer; + final String? taskStatusId; } class LoadTaskStatusActivity { LoadTaskStatusActivity({this.completer, this.taskStatusId}); - final Completer completer; - final String taskStatusId; + final Completer? completer; + final String? taskStatusId; } class LoadTaskStatuses { LoadTaskStatuses({this.completer}); - final Completer completer; + final Completer? completer; } class LoadTaskStatusRequest implements StartLoading {} @@ -124,8 +124,8 @@ class LoadTaskStatusesSuccess implements StopLoading { class SaveTaskStatusRequest implements StartSaving { SaveTaskStatusRequest({this.completer, this.taskStatus}); - final Completer completer; - final TaskStatusEntity taskStatus; + final Completer? completer; + final TaskStatusEntity? taskStatus; } class SaveTaskStatusSuccess implements StopSaving, PersistData, PersistUI { @@ -162,7 +162,7 @@ class ArchiveTaskStatusesSuccess implements StopSaving, PersistData { class ArchiveTaskStatusesFailure implements StopSaving { ArchiveTaskStatusesFailure(this.taskStatuses); - final List taskStatuses; + final List taskStatuses; } class DeleteTaskStatusesRequest implements StartSaving { @@ -181,7 +181,7 @@ class DeleteTaskStatusesSuccess implements StopSaving, PersistData { class DeleteTaskStatusesFailure implements StopSaving { DeleteTaskStatusesFailure(this.taskStatuses); - final List taskStatuses; + final List taskStatuses; } class RestoreTaskStatusesRequest implements StartSaving { @@ -200,7 +200,7 @@ class RestoreTaskStatusesSuccess implements StopSaving, PersistData { class RestoreTaskStatusesFailure implements StopSaving { RestoreTaskStatusesFailure(this.taskStatuses); - final List taskStatuses; + final List taskStatuses; } class FilterTaskStatuses implements PersistUI { @@ -250,15 +250,15 @@ class StartTaskStatusMultiselect { } class AddToTaskStatusMultiselect { - AddToTaskStatusMultiselect({@required this.entity}); + AddToTaskStatusMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class RemoveFromTaskStatusMultiselect { - RemoveFromTaskStatusMultiselect({@required this.entity}); + RemoveFromTaskStatusMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class ClearTaskStatusMultiselect { @@ -266,46 +266,46 @@ class ClearTaskStatusMultiselect { } void handleTaskStatusAction( - BuildContext context, List taskStatuses, EntityAction action) { + BuildContext? context, List taskStatuses, EntityAction? action) { if (taskStatuses.isEmpty) { return; } - final store = StoreProvider.of(context); + final store = StoreProvider.of(context!); final state = store.state; final localization = AppLocalization.of(context); - final taskStatus = taskStatuses.first as TaskStatusEntity; + final taskStatus = taskStatuses.first as TaskStatusEntity?; final taskStatusIds = - taskStatuses.map((taskStatus) => taskStatus.id).toList(); + taskStatuses.map((taskStatus) => taskStatus!.id).toList(); switch (action) { case EntityAction.edit: - editEntity(entity: taskStatus); + editEntity(entity: taskStatus!); break; case EntityAction.restore: final message = taskStatusIds.length > 1 - ? localization.restoredTaskStatuses + ? localization!.restoredTaskStatuses .replaceFirst(':value', ':count') .replaceFirst(':count', taskStatusIds.length.toString()) - : localization.restoredTaskStatus; + : localization!.restoredTaskStatus; store.dispatch(RestoreTaskStatusesRequest( snackBarCompleter(context, message), taskStatusIds)); break; case EntityAction.archive: final message = taskStatusIds.length > 1 - ? localization.archivedTaskStatuses + ? localization!.archivedTaskStatuses .replaceFirst(':value', ':count') .replaceFirst(':count', taskStatusIds.length.toString()) - : localization.archivedTaskStatus; + : localization!.archivedTaskStatus; store.dispatch(ArchiveTaskStatusesRequest( snackBarCompleter(context, message), taskStatusIds)); break; case EntityAction.delete: final message = taskStatusIds.length > 1 - ? localization.deletedTaskStatuses + ? localization!.deletedTaskStatuses .replaceFirst(':value', ':count') .replaceFirst(':count', taskStatusIds.length.toString()) - : localization.deletedTaskStatus; + : localization!.deletedTaskStatus; store.dispatch(DeleteTaskStatusesRequest( snackBarCompleter(context, message), taskStatusIds)); break; @@ -313,7 +313,7 @@ void handleTaskStatusAction( createEntity( context: context, entity: TaskEntity(state: state) - .rebuild((b) => b..statusId = taskStatus.id)); + .rebuild((b) => b..statusId = taskStatus!.id)); break; case EntityAction.toggleMultiselect: if (!store.state.taskStatusListState.isInMultiselect()) { @@ -325,7 +325,7 @@ void handleTaskStatusAction( } for (final taskStatus in taskStatuses) { - if (!store.state.taskStatusListState.isSelected(taskStatus.id)) { + if (!store.state.taskStatusListState.isSelected(taskStatus!.id)) { store.dispatch(AddToTaskStatusMultiselect(entity: taskStatus)); } else { store.dispatch(RemoveFromTaskStatusMultiselect(entity: taskStatus)); diff --git a/lib/redux/task_status/task_status_middleware.dart b/lib/redux/task_status/task_status_middleware.dart index 90aab3ea2..42966450d 100644 --- a/lib/redux/task_status/task_status_middleware.dart +++ b/lib/redux/task_status/task_status_middleware.dart @@ -45,14 +45,14 @@ List> createStoreTaskStatusesMiddleware([ Middleware _editTaskStatus() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as EditTaskStatus; + final action = dynamicAction as EditTaskStatus?; next(action); store.dispatch(UpdateCurrentRoute(TaskStatusEditScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(TaskStatusEditScreen.route); + navigatorKey.currentState!.pushNamed(TaskStatusEditScreen.route); } }; } @@ -60,21 +60,21 @@ Middleware _editTaskStatus() { Middleware _viewTaskStatus() { return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as ViewTaskStatus; + final action = dynamicAction as ViewTaskStatus?; next(action); store.dispatch(UpdateCurrentRoute(TaskStatusViewScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(TaskStatusViewScreen.route); + navigatorKey.currentState!.pushNamed(TaskStatusViewScreen.route); } }; } Middleware _viewTaskStatusList() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as ViewTaskStatusList; + final action = dynamicAction as ViewTaskStatusList?; next(action); @@ -85,7 +85,7 @@ Middleware _viewTaskStatusList() { store.dispatch(UpdateCurrentRoute(TaskStatusScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamedAndRemoveUntil( + navigatorKey.currentState!.pushNamedAndRemoveUntil( TaskStatusScreen.route, (Route route) => false); } }; @@ -173,20 +173,20 @@ Middleware _saveTaskStatus(TaskStatusRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as SaveTaskStatusRequest; repository - .saveData(store.state.credentials, action.taskStatus) + .saveData(store.state.credentials, action.taskStatus!) .then((TaskStatusEntity taskStatus) { - if (action.taskStatus.isNew) { + if (action.taskStatus!.isNew) { store.dispatch(AddTaskStatusSuccess(taskStatus)); } else { store.dispatch(SaveTaskStatusSuccess(taskStatus)); } store.dispatch(RefreshData()); - action.completer.complete(taskStatus); + action.completer!.complete(taskStatus); }).catchError((Object error) { print(error); store.dispatch(SaveTaskStatusFailure(error)); - action.completer.completeError(error); + action.completer!.completeError(error); }); next(action); @@ -205,13 +205,13 @@ Middleware _loadTaskStatus(TaskStatusRepository repository) { store.dispatch(LoadTaskStatusSuccess(taskStatus)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(LoadTaskStatusFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -221,15 +221,15 @@ Middleware _loadTaskStatus(TaskStatusRepository repository) { Middleware _loadTaskStatuses(TaskStatusRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as LoadTaskStatuses; + final action = dynamicAction as LoadTaskStatuses?; final AppState state = store.state; store.dispatch(LoadTaskStatusesRequest()); repository.loadList(state.credentials).then((data) { store.dispatch(LoadTaskStatusesSuccess(data)); - if (action.completer != null) { - action.completer.complete(null); + if (action!.completer != null) { + action.completer!.complete(null); } /* if (state.productState.isStale) { @@ -239,8 +239,8 @@ Middleware _loadTaskStatuses(TaskStatusRepository repository) { }).catchError((Object error) { print(error); store.dispatch(LoadTaskStatusesFailure(error)); - if (action.completer != null) { - action.completer.completeError(error); + if (action!.completer != null) { + action.completer!.completeError(error); } }); diff --git a/lib/redux/task_status/task_status_reducer.dart b/lib/redux/task_status/task_status_reducer.dart index 1e9a7eb59..094e7de95 100644 --- a/lib/redux/task_status/task_status_reducer.dart +++ b/lib/redux/task_status/task_status_reducer.dart @@ -15,44 +15,44 @@ import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; EntityUIState taskStatusUIReducer(TaskStatusUIState state, dynamic action) { return state.rebuild((b) => b ..listUIState.replace(taskStatusListReducer(state.listUIState, action)) - ..editing.replace(editingReducer(state.editing, action)) + ..editing.replace(editingReducer(state.editing, action)!) ..selectedId = selectedIdReducer(state.selectedId, action) ..forceSelected = forceSelectedReducer(state.forceSelected, action)); } -final forceSelectedReducer = combineReducers([ - TypedReducer((completer, action) => true), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), +final forceSelectedReducer = combineReducers([ + TypedReducer((completer, action) => true), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), ]); -Reducer selectedIdReducer = combineReducers([ - TypedReducer((completer, action) => ''), - TypedReducer((completer, action) => ''), - TypedReducer((selectedId, action) => +Reducer selectedIdReducer = combineReducers([ + TypedReducer((completer, action) => ''), + TypedReducer((completer, action) => ''), + TypedReducer((selectedId, action) => action.entityType == EntityType.taskStatus ? action.entityId : selectedId), - TypedReducer( - (String selectedId, dynamic action) => action.taskStatusId), - TypedReducer( - (String selectedId, dynamic action) => action.taskStatus.id), - TypedReducer( + TypedReducer( + (String? selectedId, dynamic action) => action.taskStatusId), + TypedReducer( + (String? selectedId, dynamic action) => action.taskStatus.id), + TypedReducer( (selectedId, action) => action.clearSelection ? '' : selectedId), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer( + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer( (selectedId, action) => action.clearSelection ? '' : action.entityType == EntityType.taskStatus @@ -60,33 +60,33 @@ Reducer selectedIdReducer = combineReducers([ : selectedId), ]); -final editingReducer = combineReducers([ - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer( +final editingReducer = combineReducers([ + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer( (taskStatuses, action) { return action.taskStatuses[0]; }), - TypedReducer( + TypedReducer( (taskStatuses, action) { return action.taskStatuses[0]; }), - TypedReducer( + TypedReducer( (taskStatuses, action) { return action.taskStatuses[0]; }), - TypedReducer(_updateEditing), - TypedReducer((taskStatus, action) { + TypedReducer(_updateEditing), + TypedReducer((taskStatus, action) { return action.taskStatus.rebuild((b) => b..isChanged = true); }), - TypedReducer(_clearEditing), + TypedReducer(_clearEditing), ]); -TaskStatusEntity _clearEditing(TaskStatusEntity taskStatus, dynamic action) { +TaskStatusEntity _clearEditing(TaskStatusEntity? taskStatus, dynamic action) { return TaskStatusEntity(); } -TaskStatusEntity _updateEditing(TaskStatusEntity taskStatus, dynamic action) { +TaskStatusEntity? _updateEditing(TaskStatusEntity? taskStatus, dynamic action) { return action.taskStatus; } @@ -164,7 +164,7 @@ ListUIState _filterTaskStatuses( ListUIState _sortTaskStatuses( ListUIState taskStatusListState, SortTaskStatuses action) { return taskStatusListState.rebuild((b) => b - ..sortAscending = b.sortField != action.field || !b.sortAscending + ..sortAscending = b.sortField != action.field || !b.sortAscending! ..sortField = action.field); } @@ -175,13 +175,13 @@ ListUIState _startListMultiselect( ListUIState _addToListMultiselect( ListUIState productListState, AddToTaskStatusMultiselect action) { - return productListState.rebuild((b) => b..selectedIds.add(action.entity.id)); + return productListState.rebuild((b) => b..selectedIds.add(action.entity!.id)); } ListUIState _removeFromListMultiselect( ListUIState productListState, RemoveFromTaskStatusMultiselect action) { return productListState - .rebuild((b) => b..selectedIds.remove(action.entity.id)); + .rebuild((b) => b..selectedIds.remove(action.entity!.id)); } ListUIState _clearListMultiselect( @@ -208,9 +208,9 @@ final taskStatusesReducer = combineReducers([ TaskStatusState _sortTaskStatusSuccess( TaskStatusState taskStatusState, SortTasksSuccess action) { return taskStatusState.rebuild((b) { - for (final statusId in action.statusIds) { - b.map[statusId] = taskStatusState.map[statusId] - .rebuild((b) => b..statusOrder = action.statusIds.indexOf(statusId)); + for (final statusId in action.statusIds!) { + b.map[statusId] = taskStatusState.map[statusId]! + .rebuild((b) => b..statusOrder = action.statusIds!.indexOf(statusId)); } }); } @@ -267,6 +267,6 @@ TaskStatusState _setLoadedTaskStatuses( TaskStatusState _setLoadedCompany( TaskStatusState taskStatusState, LoadCompanySuccess action) { - final company = action.userCompany.company; + final company = action.userCompany.company!; return taskStatusState.loadTaskStatuses(company.taskStatuses); } diff --git a/lib/redux/task_status/task_status_selectors.dart b/lib/redux/task_status/task_status_selectors.dart index fa223bfbc..bac352a09 100644 --- a/lib/redux/task_status/task_status_selectors.dart +++ b/lib/redux/task_status/task_status_selectors.dart @@ -10,7 +10,7 @@ import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; var memoizedSortedActiveTaskStatusIds = memo2(( BuiltList taskStatusList, - BuiltMap taskStatusMap, + BuiltMap taskStatusMap, ) => sortedActiveTaskStatusIds( taskStatusList: taskStatusList, @@ -18,18 +18,18 @@ var memoizedSortedActiveTaskStatusIds = memo2(( )); List sortedActiveTaskStatusIds({ - BuiltMap taskStatusMap, - BuiltList taskStatusList, + BuiltMap? taskStatusMap, + required BuiltList taskStatusList, }) { final statuses = taskStatusList .where((statusId) => - taskStatusMap.containsKey(statusId) && - taskStatusMap[statusId].isActive) + taskStatusMap!.containsKey(statusId) && + taskStatusMap[statusId]!.isActive) .toList(); statuses.sort((statusIdA, statusIdB) { - final statusA = taskStatusMap[statusIdA]; - final statusB = taskStatusMap[statusIdB]; + final statusA = taskStatusMap![statusIdA]!; + final statusB = taskStatusMap[statusIdB]!; if (statusA.statusOrder == statusB.statusOrder) { return statusB.updatedAt.compareTo(statusA.updatedAt); } else { @@ -42,25 +42,25 @@ List sortedActiveTaskStatusIds({ } var memoizedDropdownTaskStatusList = memo4( - (BuiltMap taskStatusMap, + (BuiltMap taskStatusMap, BuiltList taskStatusList, StaticState staticState, - BuiltMap userMap) => + BuiltMap userMap) => dropdownTaskStatusesSelector( taskStatusMap, taskStatusList, staticState, userMap)); List dropdownTaskStatusesSelector( - BuiltMap taskStatusMap, + BuiltMap taskStatusMap, BuiltList taskStatusList, StaticState staticState, - BuiltMap userMap) { + BuiltMap userMap) { final list = taskStatusList.where((taskStatusId) { - final taskStatus = taskStatusMap[taskStatusId]; + final taskStatus = taskStatusMap[taskStatusId]!; return taskStatus.isActive; }).toList(); list.sort((taskStatusAId, taskStatusBId) { - final taskStatusA = taskStatusMap[taskStatusAId]; + final taskStatusA = taskStatusMap[taskStatusAId]!; final taskStatusB = taskStatusMap[taskStatusBId]; return taskStatusA.compareTo( sortAscending: true, @@ -73,7 +73,7 @@ List dropdownTaskStatusesSelector( } var memoizedFilteredTaskStatusList = memo4((SelectionState selectionState, - BuiltMap taskStatusMap, + BuiltMap taskStatusMap, BuiltList taskStatusList, ListUIState taskStatusListState) => filteredTaskStatusesSelector( @@ -81,11 +81,11 @@ var memoizedFilteredTaskStatusList = memo4((SelectionState selectionState, List filteredTaskStatusesSelector( SelectionState selectionState, - BuiltMap taskStatusMap, + BuiltMap taskStatusMap, BuiltList taskStatusList, ListUIState taskStatusListState) { final list = taskStatusList.where((taskStatusId) { - final taskStatus = taskStatusMap[taskStatusId]; + final taskStatus = taskStatusMap[taskStatusId]!; if (taskStatus.id == selectionState.selectedId) { return true; @@ -101,7 +101,7 @@ List filteredTaskStatusesSelector( }).toList(); list.sort((taskStatusAId, taskStatusBId) { - return taskStatusMap[taskStatusAId].compareTo( + return taskStatusMap[taskStatusAId]!.compareTo( taskStatus: taskStatusMap[taskStatusBId], //sortField: taskStatusListState.sortField, //sortAscending: taskStatusListState.sortAscending, @@ -114,17 +114,17 @@ List filteredTaskStatusesSelector( } var memoizedCalculateTaskStatusAmount = memo2((String taskStatusId, - BuiltMap taskMap) => + BuiltMap taskMap) => calculateTaskStatusAmount(taskStatusId: taskStatusId, taskMap: taskMap)); int calculateTaskStatusAmount({ - String taskStatusId, - BuiltMap taskMap, + String? taskStatusId, + required BuiltMap taskMap, }) { int total = 0; taskMap.forEach((taskId, task) { - if (task.statusId == taskStatusId) { + if (task!.statusId == taskStatusId) { total += task.calculateDuration().inSeconds; } }); @@ -133,17 +133,17 @@ int calculateTaskStatusAmount({ } var memoizedTaskStatsForTaskStatus = memo2( - (String companyGatewayId, BuiltMap taskMap) => + (String companyGatewayId, BuiltMap taskMap) => taskStatsForTaskStatus(companyGatewayId, taskMap)); EntityStats taskStatsForTaskStatus( String statusId, - BuiltMap taskMap, + BuiltMap taskMap, ) { int countActive = 0; int countArchived = 0; taskMap.forEach((taskId, task) { - if (task.statusId == statusId) { + if (task!.statusId == statusId) { if (task.isActive) { countActive++; } else if (task.isArchived) { @@ -155,15 +155,15 @@ EntityStats taskStatsForTaskStatus( return EntityStats(countActive: countActive, countArchived: countArchived); } -String defaultTaskStatusId(BuiltMap taskStatusMap) { +String? defaultTaskStatusId(BuiltMap taskStatusMap) { final statusIds = taskStatusMap.keys.where((statusId) { - final status = taskStatusMap[statusId]; + final status = taskStatusMap[statusId]!; return status.isActive; }).toList(); statusIds.sort((statusIdA, statusIdB) { - final statusA = taskStatusMap[statusIdA]; - final statusB = taskStatusMap[statusIdB]; + final statusA = taskStatusMap[statusIdA]!; + final statusB = taskStatusMap[statusIdB]!; return (statusA.statusOrder ?? 9999).compareTo(statusB.statusOrder ?? 9999); }); diff --git a/lib/redux/task_status/task_status_state.dart b/lib/redux/task_status/task_status_state.dart index 697b59b2f..f1bf3f001 100644 --- a/lib/redux/task_status/task_status_state.dart +++ b/lib/redux/task_status/task_status_state.dart @@ -29,9 +29,9 @@ abstract class TaskStatusState @memoized int get hashCode; - BuiltMap get map; + BuiltMap get map; - TaskStatusEntity get(String statusId) { + TaskStatusEntity? get(String statusId) { if (map.containsKey(statusId)) { return map[statusId]; } else { @@ -42,7 +42,7 @@ abstract class TaskStatusState BuiltList get list; TaskStatusState loadTaskStatuses(BuiltList clients) { - final map = Map.fromIterable( + final map = Map.fromIterable( clients, key: (dynamic item) => item.id, value: (dynamic item) => item, @@ -60,7 +60,7 @@ abstract class TaskStatusState abstract class TaskStatusUIState extends Object with EntityUIState implements Built { - factory TaskStatusUIState(PrefStateSortField sortField) { + factory TaskStatusUIState(PrefStateSortField? sortField) { return _$TaskStatusUIState._( listUIState: ListUIState(sortField?.field ?? TaskStatusFields.order, sortAscending: sortField?.ascending), @@ -76,14 +76,13 @@ abstract class TaskStatusUIState extends Object @memoized int get hashCode; - @nullable - TaskStatusEntity get editing; + TaskStatusEntity? get editing; @override - bool get isCreatingNew => editing.isNew; + bool get isCreatingNew => editing!.isNew; @override - String get editingId => editing.id; + String get editingId => editing!.id; static Serializer get serializer => _$taskStatusUIStateSerializer; diff --git a/lib/redux/task_status/task_status_state.g.dart b/lib/redux/task_status/task_status_state.g.dart index 34c147f59..617ad043e 100644 --- a/lib/redux/task_status/task_status_state.g.dart +++ b/lib/redux/task_status/task_status_state.g.dart @@ -19,14 +19,14 @@ class _$TaskStatusStateSerializer final String wireName = 'TaskStatusState'; @override - Iterable serialize(Serializers serializers, TaskStatusState object, + Iterable serialize(Serializers serializers, TaskStatusState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'map', serializers.serialize(object.map, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(TaskStatusEntity) + const FullType.nullable(String), + const FullType.nullable(TaskStatusEntity) ])), 'list', serializers.serialize(object.list, @@ -39,28 +39,28 @@ class _$TaskStatusStateSerializer @override TaskStatusState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TaskStatusStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'map': result.map.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(TaskStatusEntity) - ]))); + const FullType.nullable(String), + const FullType.nullable(TaskStatusEntity) + ]))!); break; case 'list': result.list.replace(serializers.deserialize(value, - specifiedType: - const FullType(BuiltList, const [const FullType(String)])) - as BuiltList); + specifiedType: const FullType( + BuiltList, const [const FullType(String)]))! + as BuiltList); break; } } @@ -77,9 +77,9 @@ class _$TaskStatusUIStateSerializer final String wireName = 'TaskStatusUIState'; @override - Iterable serialize(Serializers serializers, TaskStatusUIState object, + Iterable serialize(Serializers serializers, TaskStatusUIState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'listUIState', serializers.serialize(object.listUIState, specifiedType: const FullType(ListUIState)), @@ -87,7 +87,7 @@ class _$TaskStatusUIStateSerializer serializers.serialize(object.tabIndex, specifiedType: const FullType(int)), ]; - Object value; + Object? value; value = object.editing; if (value != null) { result @@ -114,36 +114,36 @@ class _$TaskStatusUIStateSerializer @override TaskStatusUIState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TaskStatusUIStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'editing': result.editing.replace(serializers.deserialize(value, - specifiedType: const FullType(TaskStatusEntity)) + specifiedType: const FullType(TaskStatusEntity))! as TaskStatusEntity); break; case 'listUIState': result.listUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(ListUIState)) as ListUIState); + specifiedType: const FullType(ListUIState))! as ListUIState); break; case 'selectedId': result.selectedId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'forceSelected': result.forceSelected = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'tabIndex': result.tabIndex = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; } } @@ -154,14 +154,14 @@ class _$TaskStatusUIStateSerializer class _$TaskStatusState extends TaskStatusState { @override - final BuiltMap map; + final BuiltMap map; @override final BuiltList list; - factory _$TaskStatusState([void Function(TaskStatusStateBuilder) updates]) => + factory _$TaskStatusState([void Function(TaskStatusStateBuilder)? updates]) => (new TaskStatusStateBuilder()..update(updates))._build(); - _$TaskStatusState._({this.map, this.list}) : super._() { + _$TaskStatusState._({required this.map, required this.list}) : super._() { BuiltValueNullFieldError.checkNotNull(map, r'TaskStatusState', 'map'); BuiltValueNullFieldError.checkNotNull(list, r'TaskStatusState', 'list'); } @@ -180,10 +180,10 @@ class _$TaskStatusState extends TaskStatusState { return other is TaskStatusState && map == other.map && list == other.list; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, map.hashCode); _$hash = $jc(_$hash, list.hashCode); @@ -202,16 +202,16 @@ class _$TaskStatusState extends TaskStatusState { class TaskStatusStateBuilder implements Builder { - _$TaskStatusState _$v; + _$TaskStatusState? _$v; - MapBuilder _map; - MapBuilder get map => - _$this._map ??= new MapBuilder(); - set map(MapBuilder map) => _$this._map = map; + MapBuilder? _map; + MapBuilder get map => + _$this._map ??= new MapBuilder(); + set map(MapBuilder? map) => _$this._map = map; - ListBuilder _list; + ListBuilder? _list; ListBuilder get list => _$this._list ??= new ListBuilder(); - set list(ListBuilder list) => _$this._list = list; + set list(ListBuilder? list) => _$this._list = list; TaskStatusStateBuilder(); @@ -232,7 +232,7 @@ class TaskStatusStateBuilder } @override - void update(void Function(TaskStatusStateBuilder) updates) { + void update(void Function(TaskStatusStateBuilder)? updates) { if (updates != null) updates(this); } @@ -245,7 +245,7 @@ class TaskStatusStateBuilder _$result = _$v ?? new _$TaskStatusState._(map: map.build(), list: list.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'map'; map.build(); @@ -264,30 +264,30 @@ class TaskStatusStateBuilder class _$TaskStatusUIState extends TaskStatusUIState { @override - final TaskStatusEntity editing; + final TaskStatusEntity? editing; @override final ListUIState listUIState; @override - final String selectedId; + final String? selectedId; @override - final bool forceSelected; + final bool? forceSelected; @override final int tabIndex; @override - final Completer saveCompleter; + final Completer? saveCompleter; @override - final Completer cancelCompleter; + final Completer? cancelCompleter; factory _$TaskStatusUIState( - [void Function(TaskStatusUIStateBuilder) updates]) => + [void Function(TaskStatusUIStateBuilder)? updates]) => (new TaskStatusUIStateBuilder()..update(updates))._build(); _$TaskStatusUIState._( {this.editing, - this.listUIState, + required this.listUIState, this.selectedId, this.forceSelected, - this.tabIndex, + required this.tabIndex, this.saveCompleter, this.cancelCompleter}) : super._() { @@ -318,10 +318,10 @@ class _$TaskStatusUIState extends TaskStatusUIState { cancelCompleter == other.cancelCompleter; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, editing.hashCode); _$hash = $jc(_$hash, listUIState.hashCode); @@ -350,40 +350,40 @@ class _$TaskStatusUIState extends TaskStatusUIState { class TaskStatusUIStateBuilder implements Builder { - _$TaskStatusUIState _$v; + _$TaskStatusUIState? _$v; - TaskStatusEntityBuilder _editing; + TaskStatusEntityBuilder? _editing; TaskStatusEntityBuilder get editing => _$this._editing ??= new TaskStatusEntityBuilder(); - set editing(TaskStatusEntityBuilder editing) => _$this._editing = editing; + set editing(TaskStatusEntityBuilder? editing) => _$this._editing = editing; - ListUIStateBuilder _listUIState; + ListUIStateBuilder? _listUIState; ListUIStateBuilder get listUIState => _$this._listUIState ??= new ListUIStateBuilder(); - set listUIState(ListUIStateBuilder listUIState) => + set listUIState(ListUIStateBuilder? listUIState) => _$this._listUIState = listUIState; - String _selectedId; - String get selectedId => _$this._selectedId; - set selectedId(String selectedId) => _$this._selectedId = selectedId; + String? _selectedId; + String? get selectedId => _$this._selectedId; + set selectedId(String? selectedId) => _$this._selectedId = selectedId; - bool _forceSelected; - bool get forceSelected => _$this._forceSelected; - set forceSelected(bool forceSelected) => + bool? _forceSelected; + bool? get forceSelected => _$this._forceSelected; + set forceSelected(bool? forceSelected) => _$this._forceSelected = forceSelected; - int _tabIndex; - int get tabIndex => _$this._tabIndex; - set tabIndex(int tabIndex) => _$this._tabIndex = tabIndex; + int? _tabIndex; + int? get tabIndex => _$this._tabIndex; + set tabIndex(int? tabIndex) => _$this._tabIndex = tabIndex; - Completer _saveCompleter; - Completer get saveCompleter => _$this._saveCompleter; - set saveCompleter(Completer saveCompleter) => + Completer? _saveCompleter; + Completer? get saveCompleter => _$this._saveCompleter; + set saveCompleter(Completer? saveCompleter) => _$this._saveCompleter = saveCompleter; - Completer _cancelCompleter; - Completer get cancelCompleter => _$this._cancelCompleter; - set cancelCompleter(Completer cancelCompleter) => + Completer? _cancelCompleter; + Completer? get cancelCompleter => _$this._cancelCompleter; + set cancelCompleter(Completer? cancelCompleter) => _$this._cancelCompleter = cancelCompleter; TaskStatusUIStateBuilder(); @@ -410,7 +410,7 @@ class TaskStatusUIStateBuilder } @override - void update(void Function(TaskStatusUIStateBuilder) updates) { + void update(void Function(TaskStatusUIStateBuilder)? updates) { if (updates != null) updates(this); } @@ -431,7 +431,7 @@ class TaskStatusUIStateBuilder saveCompleter: saveCompleter, cancelCompleter: cancelCompleter); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'editing'; _editing?.build(); diff --git a/lib/redux/tax_rate/tax_rate_actions.dart b/lib/redux/tax_rate/tax_rate_actions.dart index 7f44982f5..4cbd20e4d 100644 --- a/lib/redux/tax_rate/tax_rate_actions.dart +++ b/lib/redux/tax_rate/tax_rate_actions.dart @@ -24,19 +24,19 @@ class ViewTaxRateList implements PersistUI { class ViewTaxRate implements PersistUI { ViewTaxRate({ - @required this.taxRateId, + required this.taxRateId, this.force = false, }); - final String taxRateId; + final String? taxRateId; final bool force; } class EditTaxRate implements PersistUI { - EditTaxRate({@required this.taxRate, this.completer, this.force = false}); + EditTaxRate({required this.taxRate, this.completer, this.force = false}); final TaxRateEntity taxRate; - final Completer completer; + final Completer? completer; final bool force; } @@ -49,21 +49,21 @@ class UpdateTaxRate implements PersistUI { class LoadTaxRate { LoadTaxRate({this.completer, this.taxRateId}); - final Completer completer; - final String taxRateId; + final Completer? completer; + final String? taxRateId; } class LoadTaxRateActivity { LoadTaxRateActivity({this.completer, this.taxRateId}); - final Completer completer; - final String taxRateId; + final Completer? completer; + final String? taxRateId; } class LoadTaxRates { LoadTaxRates({this.completer}); - final Completer completer; + final Completer? completer; } class LoadTaxRateRequest implements StartLoading {} @@ -117,8 +117,8 @@ class LoadTaxRatesSuccess implements StopLoading { class SaveTaxRateRequest implements StartSaving { SaveTaxRateRequest({this.completer, this.taxRate}); - final Completer completer; - final TaxRateEntity taxRate; + final Completer? completer; + final TaxRateEntity? taxRate; } class SaveTaxRateSuccess implements StopSaving, PersistData, PersistUI { @@ -155,7 +155,7 @@ class ArchiveTaxRatesSuccess implements StopSaving, PersistData { class ArchiveTaxRateFailure implements StopSaving { ArchiveTaxRateFailure(this.taxRates); - final List taxRates; + final List taxRates; } class DeleteTaxRateRequest implements StartSaving { @@ -174,7 +174,7 @@ class DeleteTaxRatesSuccess implements StopSaving, PersistData { class DeleteTaxRateFailure implements StopSaving { DeleteTaxRateFailure(this.taxRates); - final List taxRates; + final List taxRates; } class RestoreTaxRateRequest implements StartSaving { @@ -193,7 +193,7 @@ class RestoreTaxRatesSuccess implements StopSaving, PersistData { class RestoreTaxRateFailure implements StopSaving { RestoreTaxRateFailure(this.taxRates); - final List taxRates; + final List taxRates; } class FilterTaxRates implements PersistUI { @@ -215,44 +215,44 @@ class FilterTaxRatesByState implements PersistUI { } void handleTaxRateAction( - BuildContext context, List taxRates, EntityAction action) { + BuildContext? context, List taxRates, EntityAction? action) { if (taxRates.isEmpty) { return; } - final store = StoreProvider.of(context); + final store = StoreProvider.of(context!); final localization = AppLocalization.of(context); final taxRate = taxRates.first; - final taxRateIds = taxRates.map((taxRate) => taxRate.id).toList(); + final taxRateIds = taxRates.map((taxRate) => taxRate!.id).toList(); switch (action) { case EntityAction.edit: - editEntity(entity: taxRate); + editEntity(entity: taxRate!); break; case EntityAction.restore: final message = taxRateIds.length > 1 - ? localization.restoredTaxRates + ? localization!.restoredTaxRates .replaceFirst(':value', ':count') .replaceFirst(':count', taxRateIds.length.toString()) - : localization.restoredTaxRate; + : localization!.restoredTaxRate; store.dispatch(RestoreTaxRateRequest( snackBarCompleter(context, message), taxRateIds)); break; case EntityAction.archive: final message = taxRateIds.length > 1 - ? localization.archivedTaxRates + ? localization!.archivedTaxRates .replaceFirst(':value', ':count') .replaceFirst(':count', taxRateIds.length.toString()) - : localization.archivedTaxRate; + : localization!.archivedTaxRate; store.dispatch(ArchiveTaxRateRequest( snackBarCompleter(context, message), taxRateIds)); break; case EntityAction.delete: final message = taxRateIds.length > 1 - ? localization.deletedTaxRates + ? localization!.deletedTaxRates .replaceFirst(':value', ':count') .replaceFirst(':count', taxRateIds.length.toString()) - : localization.deletedTaxRate; + : localization!.deletedTaxRate; store.dispatch(DeleteTaxRateRequest( snackBarCompleter(context, message), taxRateIds)); break; @@ -266,7 +266,7 @@ void handleTaxRateAction( } for (final taxRate in taxRates) { - if (!store.state.taxRateListState.isSelected(taxRate.id)) { + if (!store.state.taxRateListState.isSelected(taxRate!.id)) { store.dispatch(AddToTaxRateMultiselect(entity: taxRate)); } else { store.dispatch(RemoveFromTaxRateMultiselect(entity: taxRate)); @@ -284,15 +284,15 @@ void handleTaxRateAction( class StartTaxRateMultiselect {} class AddToTaxRateMultiselect { - AddToTaxRateMultiselect({@required this.entity}); + AddToTaxRateMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class RemoveFromTaxRateMultiselect { - RemoveFromTaxRateMultiselect({@required this.entity}); + RemoveFromTaxRateMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class ClearTaxRateMultiselect {} diff --git a/lib/redux/tax_rate/tax_rate_middleware.dart b/lib/redux/tax_rate/tax_rate_middleware.dart index b764fe301..a860dc567 100644 --- a/lib/redux/tax_rate/tax_rate_middleware.dart +++ b/lib/redux/tax_rate/tax_rate_middleware.dart @@ -45,14 +45,14 @@ List> createStoreTaxRatesMiddleware([ Middleware _editTaxRate() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as EditTaxRate; + final action = dynamicAction as EditTaxRate?; next(action); store.dispatch(UpdateCurrentRoute(TaxRateEditScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(TaxRateEditScreen.route); + navigatorKey.currentState!.pushNamed(TaxRateEditScreen.route); } }; } @@ -60,21 +60,21 @@ Middleware _editTaxRate() { Middleware _viewTaxRate() { return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as ViewTaxRate; + final action = dynamicAction as ViewTaxRate?; next(action); store.dispatch(UpdateCurrentRoute(TaxRateViewScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(TaxRateViewScreen.route); + navigatorKey.currentState!.pushNamed(TaxRateViewScreen.route); } }; } Middleware _viewTaxRateList() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as ViewTaxRateList; + final action = dynamicAction as ViewTaxRateList?; next(action); @@ -85,7 +85,7 @@ Middleware _viewTaxRateList() { store.dispatch(UpdateCurrentRoute(TaxRateSettingsScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamedAndRemoveUntil( + navigatorKey.currentState!.pushNamedAndRemoveUntil( TaxRateSettingsScreen.route, (Route route) => false); } }; @@ -176,18 +176,18 @@ Middleware _saveTaxRate(TaxRateRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as SaveTaxRateRequest; repository - .saveData(store.state.credentials, action.taxRate) + .saveData(store.state.credentials, action.taxRate!) .then((TaxRateEntity taxRate) { - if (action.taxRate.isNew) { + if (action.taxRate!.isNew) { store.dispatch(AddTaxRateSuccess(taxRate)); } else { store.dispatch(SaveTaxRateSuccess(taxRate)); } - action.completer.complete(taxRate); + action.completer!.complete(taxRate); }).catchError((Object error) { print(error); store.dispatch(SaveTaxRateFailure(error)); - action.completer.completeError(error); + action.completer!.completeError(error); }); next(action); @@ -204,13 +204,13 @@ Middleware _loadTaxRate(TaxRateRepository repository) { store.dispatch(LoadTaxRateSuccess(taxRate)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(LoadTaxRateFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -220,15 +220,15 @@ Middleware _loadTaxRate(TaxRateRepository repository) { Middleware _loadTaxRates(TaxRateRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as LoadTaxRates; + final action = dynamicAction as LoadTaxRates?; final AppState state = store.state; store.dispatch(LoadTaxRatesRequest()); repository.loadList(state.credentials).then((data) { store.dispatch(LoadTaxRatesSuccess(data)); - if (action.completer != null) { - action.completer.complete(null); + if (action!.completer != null) { + action.completer!.complete(null); } /* if (state.taxRateState.isStale) { @@ -238,8 +238,8 @@ Middleware _loadTaxRates(TaxRateRepository repository) { }).catchError((Object error) { print(error); store.dispatch(LoadTaxRatesFailure(error)); - if (action.completer != null) { - action.completer.completeError(error); + if (action!.completer != null) { + action.completer!.completeError(error); } }); diff --git a/lib/redux/tax_rate/tax_rate_reducer.dart b/lib/redux/tax_rate/tax_rate_reducer.dart index 8842173e9..d4deb6e2e 100644 --- a/lib/redux/tax_rate/tax_rate_reducer.dart +++ b/lib/redux/tax_rate/tax_rate_reducer.dart @@ -14,59 +14,59 @@ import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; EntityUIState taxRateUIReducer(TaxRateUIState state, dynamic action) { return state.rebuild((b) => b ..listUIState.replace(taxRateListReducer(state.listUIState, action)) - ..editing.replace(editingReducer(state.editing, action)) + ..editing.replace(editingReducer(state.editing, action)!) ..selectedId = selectedIdReducer(state.selectedId, action) ..forceSelected = forceSelectedReducer(state.forceSelected, action)); } -final forceSelectedReducer = combineReducers([ - TypedReducer((completer, action) => true), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), +final forceSelectedReducer = combineReducers([ + TypedReducer((completer, action) => true), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), ]); -Reducer selectedIdReducer = combineReducers([ - TypedReducer((completer, action) => ''), - TypedReducer((completer, action) => ''), - TypedReducer((selectedId, action) => +Reducer selectedIdReducer = combineReducers([ + TypedReducer((completer, action) => ''), + TypedReducer((completer, action) => ''), + TypedReducer((selectedId, action) => action.entityType == EntityType.taxRate ? action.entityId : selectedId), - TypedReducer( - (String selectedId, action) => action.taxRateId), - TypedReducer( - (String selectedId, action) => action.taxRate.id), - TypedReducer( + TypedReducer( + (String? selectedId, action) => action.taxRateId), + TypedReducer( + (String? selectedId, action) => action.taxRate.id), + TypedReducer( (selectedId, action) => action.clearSelection ? '' : selectedId), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), ]); -final editingReducer = combineReducers([ - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer((taxRates, action) { +final editingReducer = combineReducers([ + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer((taxRates, action) { return action.taxRates[0]; }), - TypedReducer((taxRates, action) { + TypedReducer((taxRates, action) { return action.taxRates[0]; }), - TypedReducer((taxRates, action) { + TypedReducer((taxRates, action) { return action.taxRates[0]; }), - TypedReducer(_updateEditing), - TypedReducer((taxRate, action) { + TypedReducer(_updateEditing), + TypedReducer((taxRate, action) { return action.taxRate.rebuild((b) => b..isChanged = true); }), - TypedReducer(_clearEditing), + TypedReducer(_clearEditing), ]); -TaxRateEntity _clearEditing(TaxRateEntity taxRate, dynamic action) { +TaxRateEntity _clearEditing(TaxRateEntity? taxRate, dynamic action) { return TaxRateEntity(); } -TaxRateEntity _updateEditing(TaxRateEntity taxRate, dynamic action) { +TaxRateEntity? _updateEditing(TaxRateEntity? taxRate, dynamic action) { return action.taxRate; } @@ -115,7 +115,7 @@ ListUIState _filterTaxRates( ListUIState _sortTaxRates(ListUIState taxRateListState, SortTaxRates action) { return taxRateListState.rebuild((b) => b - ..sortAscending = b.sortField != action.field || !b.sortAscending + ..sortAscending = b.sortField != action.field || !b.sortAscending! ..sortField = action.field); } @@ -126,13 +126,13 @@ ListUIState _startListMultiselect( ListUIState _addToListMultiselect( ListUIState taxRateListState, AddToTaxRateMultiselect action) { - return taxRateListState.rebuild((b) => b..selectedIds.add(action.entity.id)); + return taxRateListState.rebuild((b) => b..selectedIds.add(action.entity!.id)); } ListUIState _removeFromListMultiselect( ListUIState taxRateListState, RemoveFromTaxRateMultiselect action) { return taxRateListState - .rebuild((b) => b..selectedIds.remove(action.entity.id)); + .rebuild((b) => b..selectedIds.remove(action.entity!.id)); } ListUIState _clearListMultiselect( @@ -212,7 +212,7 @@ TaxRateState _setLoadedCompany( TaxRateState taxRateState, LoadCompanySuccess action) { final state = taxRateState.rebuild((b) => b ..map.addAll(Map.fromIterable( - action.userCompany.company.taxRates, + action.userCompany.company!.taxRates, key: (dynamic item) => item.id, value: (dynamic item) => item, ))); diff --git a/lib/redux/tax_rate/tax_rate_selectors.dart b/lib/redux/tax_rate/tax_rate_selectors.dart index 9c431b79c..954c94f54 100644 --- a/lib/redux/tax_rate/tax_rate_selectors.dart +++ b/lib/redux/tax_rate/tax_rate_selectors.dart @@ -17,7 +17,7 @@ List dropdownTaxRatesSelector( BuiltList taxRateList, String clientId) { final list = taxRateList.where((taxRateId) { - final taxRate = taxRateMap[taxRateId]; + final taxRate = taxRateMap[taxRateId]!; /* if (clientId != null && clientId > 0 && taxRate.clientId != clientId) { return false; @@ -27,7 +27,7 @@ List dropdownTaxRatesSelector( }).toList(); list.sort((taxRateAId, taxRateBId) { - final taxRateA = taxRateMap[taxRateAId]; + final taxRateA = taxRateMap[taxRateAId]!; final taxRateB = taxRateMap[taxRateBId]; return taxRateA.compareTo(taxRateB, TaxRateFields.name, true); }); @@ -36,7 +36,7 @@ List dropdownTaxRatesSelector( } var memoizedFilteredTaxRateList = memo4((SelectionState selectionState, - BuiltMap taxRateMap, + BuiltMap taxRateMap, BuiltList taxRateList, ListUIState taxRateListState) => filteredTaxRatesSelector( @@ -44,11 +44,11 @@ var memoizedFilteredTaxRateList = memo4((SelectionState selectionState, List filteredTaxRatesSelector( SelectionState selectionState, - BuiltMap taxRateMap, + BuiltMap taxRateMap, BuiltList taxRateList, ListUIState taxRateListState) { final list = taxRateList.where((taxRateId) { - final taxRate = taxRateMap[taxRateId]; + final taxRate = taxRateMap[taxRateId]!; if (taxRate.id == selectionState.selectedId) { return true; @@ -61,7 +61,7 @@ List filteredTaxRatesSelector( }).toList(); list.sort((taxRateAId, taxRateBId) { - final taxRateA = taxRateMap[taxRateAId]; + final taxRateA = taxRateMap[taxRateAId]!; final taxRateB = taxRateMap[taxRateBId]; return taxRateA.compareTo( taxRateB, taxRateListState.sortField, taxRateListState.sortAscending); diff --git a/lib/redux/tax_rate/tax_rate_state.dart b/lib/redux/tax_rate/tax_rate_state.dart index 64ce8991f..45a929bd5 100644 --- a/lib/redux/tax_rate/tax_rate_state.dart +++ b/lib/redux/tax_rate/tax_rate_state.dart @@ -29,7 +29,7 @@ abstract class TaxRateState @memoized int get hashCode; - BuiltMap get map; + BuiltMap get map; BuiltList get list; @@ -39,7 +39,7 @@ abstract class TaxRateState abstract class TaxRateUIState extends Object with EntityUIState implements Built { - factory TaxRateUIState(PrefStateSortField sortField) { + factory TaxRateUIState(PrefStateSortField? sortField) { return _$TaxRateUIState._( listUIState: ListUIState(sortField?.field ?? TaxRateFields.name, sortAscending: sortField?.ascending), @@ -55,14 +55,13 @@ abstract class TaxRateUIState extends Object @memoized int get hashCode; - @nullable - TaxRateEntity get editing; + TaxRateEntity? get editing; @override - bool get isCreatingNew => editing.isNew; + bool get isCreatingNew => editing!.isNew; @override - String get editingId => editing.id; + String get editingId => editing!.id; static Serializer get serializer => _$taxRateUIStateSerializer; diff --git a/lib/redux/tax_rate/tax_rate_state.g.dart b/lib/redux/tax_rate/tax_rate_state.g.dart index 47209657e..c1a20bbe1 100644 --- a/lib/redux/tax_rate/tax_rate_state.g.dart +++ b/lib/redux/tax_rate/tax_rate_state.g.dart @@ -18,13 +18,15 @@ class _$TaxRateStateSerializer implements StructuredSerializer { final String wireName = 'TaxRateState'; @override - Iterable serialize(Serializers serializers, TaxRateState object, + Iterable serialize(Serializers serializers, TaxRateState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'map', serializers.serialize(object.map, - specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(TaxRateEntity)])), + specifiedType: const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(TaxRateEntity) + ])), 'list', serializers.serialize(object.list, specifiedType: @@ -35,28 +37,29 @@ class _$TaxRateStateSerializer implements StructuredSerializer { } @override - TaxRateState deserialize(Serializers serializers, Iterable serialized, + TaxRateState deserialize( + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TaxRateStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'map': result.map.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(TaxRateEntity) - ]))); + const FullType.nullable(String), + const FullType.nullable(TaxRateEntity) + ]))!); break; case 'list': result.list.replace(serializers.deserialize(value, - specifiedType: - const FullType(BuiltList, const [const FullType(String)])) - as BuiltList); + specifiedType: const FullType( + BuiltList, const [const FullType(String)]))! + as BuiltList); break; } } @@ -73,9 +76,9 @@ class _$TaxRateUIStateSerializer final String wireName = 'TaxRateUIState'; @override - Iterable serialize(Serializers serializers, TaxRateUIState object, + Iterable serialize(Serializers serializers, TaxRateUIState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'listUIState', serializers.serialize(object.listUIState, specifiedType: const FullType(ListUIState)), @@ -83,7 +86,7 @@ class _$TaxRateUIStateSerializer serializers.serialize(object.tabIndex, specifiedType: const FullType(int)), ]; - Object value; + Object? value; value = object.editing; if (value != null) { result @@ -110,35 +113,35 @@ class _$TaxRateUIStateSerializer @override TaxRateUIState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TaxRateUIStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'editing': result.editing.replace(serializers.deserialize(value, - specifiedType: const FullType(TaxRateEntity)) as TaxRateEntity); + specifiedType: const FullType(TaxRateEntity))! as TaxRateEntity); break; case 'listUIState': result.listUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(ListUIState)) as ListUIState); + specifiedType: const FullType(ListUIState))! as ListUIState); break; case 'selectedId': result.selectedId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'forceSelected': result.forceSelected = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'tabIndex': result.tabIndex = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; } } @@ -149,14 +152,14 @@ class _$TaxRateUIStateSerializer class _$TaxRateState extends TaxRateState { @override - final BuiltMap map; + final BuiltMap map; @override final BuiltList list; - factory _$TaxRateState([void Function(TaxRateStateBuilder) updates]) => + factory _$TaxRateState([void Function(TaxRateStateBuilder)? updates]) => (new TaxRateStateBuilder()..update(updates))._build(); - _$TaxRateState._({this.map, this.list}) : super._() { + _$TaxRateState._({required this.map, required this.list}) : super._() { BuiltValueNullFieldError.checkNotNull(map, r'TaxRateState', 'map'); BuiltValueNullFieldError.checkNotNull(list, r'TaxRateState', 'list'); } @@ -174,10 +177,10 @@ class _$TaxRateState extends TaxRateState { return other is TaxRateState && map == other.map && list == other.list; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, map.hashCode); _$hash = $jc(_$hash, list.hashCode); @@ -196,16 +199,16 @@ class _$TaxRateState extends TaxRateState { class TaxRateStateBuilder implements Builder { - _$TaxRateState _$v; + _$TaxRateState? _$v; - MapBuilder _map; - MapBuilder get map => - _$this._map ??= new MapBuilder(); - set map(MapBuilder map) => _$this._map = map; + MapBuilder? _map; + MapBuilder get map => + _$this._map ??= new MapBuilder(); + set map(MapBuilder? map) => _$this._map = map; - ListBuilder _list; + ListBuilder? _list; ListBuilder get list => _$this._list ??= new ListBuilder(); - set list(ListBuilder list) => _$this._list = list; + set list(ListBuilder? list) => _$this._list = list; TaxRateStateBuilder(); @@ -226,7 +229,7 @@ class TaxRateStateBuilder } @override - void update(void Function(TaxRateStateBuilder) updates) { + void update(void Function(TaxRateStateBuilder)? updates) { if (updates != null) updates(this); } @@ -239,7 +242,7 @@ class TaxRateStateBuilder _$result = _$v ?? new _$TaxRateState._(map: map.build(), list: list.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'map'; map.build(); @@ -258,29 +261,29 @@ class TaxRateStateBuilder class _$TaxRateUIState extends TaxRateUIState { @override - final TaxRateEntity editing; + final TaxRateEntity? editing; @override final ListUIState listUIState; @override - final String selectedId; + final String? selectedId; @override - final bool forceSelected; + final bool? forceSelected; @override final int tabIndex; @override - final Completer saveCompleter; + final Completer? saveCompleter; @override - final Completer cancelCompleter; + final Completer? cancelCompleter; - factory _$TaxRateUIState([void Function(TaxRateUIStateBuilder) updates]) => + factory _$TaxRateUIState([void Function(TaxRateUIStateBuilder)? updates]) => (new TaxRateUIStateBuilder()..update(updates))._build(); _$TaxRateUIState._( {this.editing, - this.listUIState, + required this.listUIState, this.selectedId, this.forceSelected, - this.tabIndex, + required this.tabIndex, this.saveCompleter, this.cancelCompleter}) : super._() { @@ -311,10 +314,10 @@ class _$TaxRateUIState extends TaxRateUIState { cancelCompleter == other.cancelCompleter; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, editing.hashCode); _$hash = $jc(_$hash, listUIState.hashCode); @@ -343,40 +346,40 @@ class _$TaxRateUIState extends TaxRateUIState { class TaxRateUIStateBuilder implements Builder { - _$TaxRateUIState _$v; + _$TaxRateUIState? _$v; - TaxRateEntityBuilder _editing; + TaxRateEntityBuilder? _editing; TaxRateEntityBuilder get editing => _$this._editing ??= new TaxRateEntityBuilder(); - set editing(TaxRateEntityBuilder editing) => _$this._editing = editing; + set editing(TaxRateEntityBuilder? editing) => _$this._editing = editing; - ListUIStateBuilder _listUIState; + ListUIStateBuilder? _listUIState; ListUIStateBuilder get listUIState => _$this._listUIState ??= new ListUIStateBuilder(); - set listUIState(ListUIStateBuilder listUIState) => + set listUIState(ListUIStateBuilder? listUIState) => _$this._listUIState = listUIState; - String _selectedId; - String get selectedId => _$this._selectedId; - set selectedId(String selectedId) => _$this._selectedId = selectedId; + String? _selectedId; + String? get selectedId => _$this._selectedId; + set selectedId(String? selectedId) => _$this._selectedId = selectedId; - bool _forceSelected; - bool get forceSelected => _$this._forceSelected; - set forceSelected(bool forceSelected) => + bool? _forceSelected; + bool? get forceSelected => _$this._forceSelected; + set forceSelected(bool? forceSelected) => _$this._forceSelected = forceSelected; - int _tabIndex; - int get tabIndex => _$this._tabIndex; - set tabIndex(int tabIndex) => _$this._tabIndex = tabIndex; + int? _tabIndex; + int? get tabIndex => _$this._tabIndex; + set tabIndex(int? tabIndex) => _$this._tabIndex = tabIndex; - Completer _saveCompleter; - Completer get saveCompleter => _$this._saveCompleter; - set saveCompleter(Completer saveCompleter) => + Completer? _saveCompleter; + Completer? get saveCompleter => _$this._saveCompleter; + set saveCompleter(Completer? saveCompleter) => _$this._saveCompleter = saveCompleter; - Completer _cancelCompleter; - Completer get cancelCompleter => _$this._cancelCompleter; - set cancelCompleter(Completer cancelCompleter) => + Completer? _cancelCompleter; + Completer? get cancelCompleter => _$this._cancelCompleter; + set cancelCompleter(Completer? cancelCompleter) => _$this._cancelCompleter = cancelCompleter; TaxRateUIStateBuilder(); @@ -403,7 +406,7 @@ class TaxRateUIStateBuilder } @override - void update(void Function(TaxRateUIStateBuilder) updates) { + void update(void Function(TaxRateUIStateBuilder)? updates) { if (updates != null) updates(this); } @@ -424,7 +427,7 @@ class TaxRateUIStateBuilder saveCompleter: saveCompleter, cancelCompleter: cancelCompleter); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'editing'; _editing?.build(); diff --git a/lib/redux/token/token_actions.dart b/lib/redux/token/token_actions.dart index a2bc6227e..b66d307de 100644 --- a/lib/redux/token/token_actions.dart +++ b/lib/redux/token/token_actions.dart @@ -30,24 +30,24 @@ class ViewTokenList implements PersistUI { class ViewToken implements PersistUI, PersistPrefs { ViewToken({ - @required this.tokenId, + required this.tokenId, this.force = false, }); - final String tokenId; + final String? tokenId; final bool force; } class EditToken implements PersistUI, PersistPrefs { EditToken( - {@required this.token, + {required this.token, this.completer, this.cancelCompleter, this.force = false}); final TokenEntity token; - final Completer completer; - final Completer cancelCompleter; + final Completer? completer; + final Completer? cancelCompleter; final bool force; } @@ -60,21 +60,21 @@ class UpdateToken implements PersistUI { class LoadToken { LoadToken({this.completer, this.tokenId}); - final Completer completer; - final String tokenId; + final Completer? completer; + final String? tokenId; } class LoadTokenActivity { LoadTokenActivity({this.completer, this.tokenId}); - final Completer completer; - final String tokenId; + final Completer? completer; + final String? tokenId; } class LoadTokens { LoadTokens({this.completer}); - final Completer completer; + final Completer? completer; } class LoadTokenRequest implements StartLoading {} @@ -127,16 +127,16 @@ class LoadTokensSuccess implements StopLoading { class SaveTokenRequest implements StartSaving { SaveTokenRequest({ - @required this.completer, - @required this.token, - @required this.password, - @required this.idToken, + required this.completer, + required this.token, + required this.password, + required this.idToken, }); final Completer completer; - final TokenEntity token; - final String password; - final String idToken; + final TokenEntity? token; + final String? password; + final String? idToken; } class SaveTokenSuccess @@ -175,7 +175,7 @@ class ArchiveTokensSuccess implements StopSaving, PersistData { class ArchiveTokensFailure implements StopSaving { ArchiveTokensFailure(this.tokens); - final List tokens; + final List tokens; } class DeleteTokensRequest implements StartSaving { @@ -194,7 +194,7 @@ class DeleteTokensSuccess implements StopSaving, PersistData { class DeleteTokensFailure implements StopSaving { DeleteTokensFailure(this.tokens); - final List tokens; + final List tokens; } class RestoreTokensRequest implements StartSaving { @@ -213,7 +213,7 @@ class RestoreTokensSuccess implements StopSaving, PersistData { class RestoreTokensFailure implements StopSaving { RestoreTokensFailure(this.tokens); - final List tokens; + final List tokens; } class FilterTokens implements PersistUI { @@ -259,48 +259,48 @@ class FilterTokensByCustom4 implements PersistUI { } void handleTokenAction( - BuildContext context, List tokens, EntityAction action) { + BuildContext? context, List tokens, EntityAction? action) { if (tokens.isEmpty) { return; } - final store = StoreProvider.of(context); + final store = StoreProvider.of(context!); final localization = AppLocalization.of(context); - final token = tokens.first as TokenEntity; - final tokenIds = tokens.map((token) => token.id).toList(); + final token = tokens.first as TokenEntity?; + final tokenIds = tokens.map((token) => token!.id).toList(); switch (action) { case EntityAction.copy: - Clipboard.setData(ClipboardData(text: token.token)); - showToast(localization.copiedToClipboard.replaceFirst(':value ', '')); + Clipboard.setData(ClipboardData(text: token!.token)); + showToast(localization!.copiedToClipboard.replaceFirst(':value ', '')); break; case EntityAction.edit: - editEntity(entity: token); + editEntity(entity: token!); break; case EntityAction.restore: final message = tokenIds.length > 1 - ? localization.restoredTokens + ? localization!.restoredTokens .replaceFirst(':value', ':count') .replaceFirst(':count', tokenIds.length.toString()) - : localization.restoredToken; + : localization!.restoredToken; store.dispatch(RestoreTokensRequest( snackBarCompleter(context, message), tokenIds)); break; case EntityAction.archive: final message = tokenIds.length > 1 - ? localization.archivedTokens + ? localization!.archivedTokens .replaceFirst(':value', ':count') .replaceFirst(':count', tokenIds.length.toString()) - : localization.archivedToken; + : localization!.archivedToken; store.dispatch(ArchiveTokensRequest( snackBarCompleter(context, message), tokenIds)); break; case EntityAction.delete: final message = tokenIds.length > 1 - ? localization.deletedTokens + ? localization!.deletedTokens .replaceFirst(':value', ':count') .replaceFirst(':count', tokenIds.length.toString()) - : localization.deletedToken; + : localization!.deletedToken; store.dispatch(DeleteTokensRequest( snackBarCompleter(context, message), tokenIds)); break; @@ -314,7 +314,7 @@ void handleTokenAction( } for (final token in tokens) { - if (!store.state.tokenListState.isSelected(token.id)) { + if (!store.state.tokenListState.isSelected(token!.id)) { store.dispatch(AddToTokenMultiselect(entity: token)); } else { store.dispatch(RemoveFromTokenMultiselect(entity: token)); @@ -334,15 +334,15 @@ class StartTokenMultiselect { } class AddToTokenMultiselect { - AddToTokenMultiselect({@required this.entity}); + AddToTokenMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class RemoveFromTokenMultiselect { - RemoveFromTokenMultiselect({@required this.entity}); + RemoveFromTokenMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class ClearTokenMultiselect { diff --git a/lib/redux/token/token_middleware.dart b/lib/redux/token/token_middleware.dart index 34753a902..51c652dfa 100644 --- a/lib/redux/token/token_middleware.dart +++ b/lib/redux/token/token_middleware.dart @@ -46,14 +46,14 @@ List> createStoreTokensMiddleware([ Middleware _editToken() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as EditToken; + final action = dynamicAction as EditToken?; next(action); store.dispatch(UpdateCurrentRoute(TokenEditScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(TokenEditScreen.route); + navigatorKey.currentState!.pushNamed(TokenEditScreen.route); } }; } @@ -61,21 +61,21 @@ Middleware _editToken() { Middleware _viewToken() { return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as ViewToken; + final action = dynamicAction as ViewToken?; next(action); store.dispatch(UpdateCurrentRoute(TokenViewScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(TokenViewScreen.route); + navigatorKey.currentState!.pushNamed(TokenViewScreen.route); } }; } Middleware _viewTokenList() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as ViewTokenList; + final action = dynamicAction as ViewTokenList?; next(action); @@ -86,7 +86,7 @@ Middleware _viewTokenList() { store.dispatch(UpdateCurrentRoute(TokenScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamedAndRemoveUntil( + navigatorKey.currentState!.pushNamedAndRemoveUntil( TokenScreen.route, (Route route) => false); } }; @@ -171,10 +171,10 @@ Middleware _saveToken(TokenRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as SaveTokenRequest; repository - .saveData(store.state.credentials, action.token, action.password, + .saveData(store.state.credentials, action.token!, action.password, action.idToken) .then((TokenEntity token) { - if (action.token.isNew) { + if (action.token!.isNew) { store.dispatch(AddTokenSuccess(token)); } else { store.dispatch(SaveTokenSuccess(token)); @@ -203,13 +203,13 @@ Middleware _loadToken(TokenRepository repository) { store.dispatch(LoadTokenSuccess(token)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(LoadTokenFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -219,15 +219,15 @@ Middleware _loadToken(TokenRepository repository) { Middleware _loadTokens(TokenRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as LoadTokens; + final action = dynamicAction as LoadTokens?; final AppState state = store.state; store.dispatch(LoadTokensRequest()); repository.loadList(state.credentials).then((data) { store.dispatch(LoadTokensSuccess(data)); - if (action.completer != null) { - action.completer.complete(null); + if (action!.completer != null) { + action.completer!.complete(null); } /* if (state.productState.isStale) { @@ -237,8 +237,8 @@ Middleware _loadTokens(TokenRepository repository) { }).catchError((Object error) { print(error); store.dispatch(LoadTokensFailure(error)); - if (action.completer != null) { - action.completer.completeError(error); + if (action!.completer != null) { + action.completer!.completeError(error); } }); diff --git a/lib/redux/token/token_reducer.dart b/lib/redux/token/token_reducer.dart index 300c0acda..dbf718c0f 100644 --- a/lib/redux/token/token_reducer.dart +++ b/lib/redux/token/token_reducer.dart @@ -14,42 +14,42 @@ import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; EntityUIState tokenUIReducer(TokenUIState state, dynamic action) { return state.rebuild((b) => b ..listUIState.replace(tokenListReducer(state.listUIState, action)) - ..editing.replace(editingReducer(state.editing, action)) + ..editing.replace(editingReducer(state.editing, action)!) ..selectedId = selectedIdReducer(state.selectedId, action) ..forceSelected = forceSelectedReducer(state.forceSelected, action)); } -final forceSelectedReducer = combineReducers([ - TypedReducer((completer, action) => true), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), +final forceSelectedReducer = combineReducers([ + TypedReducer((completer, action) => true), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), ]); -Reducer selectedIdReducer = combineReducers([ - TypedReducer((completer, action) => ''), - TypedReducer((completer, action) => ''), - TypedReducer((selectedId, action) => +Reducer selectedIdReducer = combineReducers([ + TypedReducer((completer, action) => ''), + TypedReducer((completer, action) => ''), + TypedReducer((selectedId, action) => action.entityType == EntityType.token ? action.entityId : selectedId), - TypedReducer( - (String selectedId, dynamic action) => action.tokenId), - TypedReducer( - (String selectedId, dynamic action) => action.token.id), - TypedReducer( + TypedReducer( + (String? selectedId, dynamic action) => action.tokenId), + TypedReducer( + (String? selectedId, dynamic action) => action.token.id), + TypedReducer( (selectedId, action) => action.clearSelection ? '' : selectedId), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer( + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer( (selectedId, action) => action.clearSelection ? '' : action.entityType == EntityType.token @@ -57,30 +57,30 @@ Reducer selectedIdReducer = combineReducers([ : selectedId), ]); -final editingReducer = combineReducers([ - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer((tokens, action) { +final editingReducer = combineReducers([ + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer((tokens, action) { return action.tokens[0]; }), - TypedReducer((tokens, action) { + TypedReducer((tokens, action) { return action.tokens[0]; }), - TypedReducer((tokens, action) { + TypedReducer((tokens, action) { return action.tokens[0]; }), - TypedReducer(_updateEditing), - TypedReducer((token, action) { + TypedReducer(_updateEditing), + TypedReducer((token, action) { return action.token.rebuild((b) => b..isChanged = true); }), - TypedReducer(_clearEditing), + TypedReducer(_clearEditing), ]); -TokenEntity _clearEditing(TokenEntity token, dynamic action) { +TokenEntity _clearEditing(TokenEntity? token, dynamic action) { return TokenEntity(); } -TokenEntity _updateEditing(TokenEntity token, dynamic action) { +TokenEntity? _updateEditing(TokenEntity? token, dynamic action) { return action.token; } @@ -148,7 +148,7 @@ ListUIState _filterTokens(ListUIState tokenListState, FilterTokens action) { ListUIState _sortTokens(ListUIState tokenListState, SortTokens action) { return tokenListState.rebuild((b) => b - ..sortAscending = b.sortField != action.field || !b.sortAscending + ..sortAscending = b.sortField != action.field || !b.sortAscending! ..sortField = action.field); } @@ -159,13 +159,13 @@ ListUIState _startListMultiselect( ListUIState _addToListMultiselect( ListUIState productListState, AddToTokenMultiselect action) { - return productListState.rebuild((b) => b..selectedIds.add(action.entity.id)); + return productListState.rebuild((b) => b..selectedIds.add(action.entity!.id)); } ListUIState _removeFromListMultiselect( ListUIState productListState, RemoveFromTokenMultiselect action) { return productListState - .rebuild((b) => b..selectedIds.remove(action.entity.id)); + .rebuild((b) => b..selectedIds.remove(action.entity!.id)); } ListUIState _clearListMultiselect( @@ -229,6 +229,6 @@ TokenState _setLoadedTokens(TokenState tokenState, LoadTokensSuccess action) => tokenState.loadTokens(action.tokens); TokenState _setLoadedCompany(TokenState tokenState, LoadCompanySuccess action) { - final company = action.userCompany.company; + final company = action.userCompany.company!; return tokenState.loadTokens(company.tokens); } diff --git a/lib/redux/token/token_selectors.dart b/lib/redux/token/token_selectors.dart index 76a7fb121..74fa96198 100644 --- a/lib/redux/token/token_selectors.dart +++ b/lib/redux/token/token_selectors.dart @@ -15,12 +15,12 @@ var memoizedDropdownTokenList = memo3((BuiltMap tokenMap, List dropdownTokensSelector(BuiltMap tokenMap, BuiltList tokenList, String clientId) { final list = tokenList.where((tokenId) { - final token = tokenMap[tokenId]; + final token = tokenMap[tokenId]!; return token.isActive; }).toList(); list.sort((tokenAId, tokenBId) { - final tokenA = tokenMap[tokenAId]; + final tokenA = tokenMap[tokenAId]!; final tokenB = tokenMap[tokenBId]; return tokenA.compareTo(tokenB, TokenFields.name, true); }); @@ -30,7 +30,7 @@ List dropdownTokensSelector(BuiltMap tokenMap, var memoizedFilteredTokenList = memo4(( SelectionState selectionState, - BuiltMap tokenMap, + BuiltMap tokenMap, BuiltList tokenList, ListUIState tokenListState, ) => @@ -43,14 +43,14 @@ var memoizedFilteredTokenList = memo4(( List filteredTokensSelector( SelectionState selectionState, - BuiltMap tokenMap, + BuiltMap tokenMap, BuiltList tokenList, ListUIState tokenListState, ) { //final filterEntityId = selectionState.filterEntityId; final list = tokenList.where((tokenId) { - final token = tokenMap[tokenId]; + final token = tokenMap[tokenId]!; if (token.id == selectionState.selectedId) { return true; @@ -68,7 +68,7 @@ List filteredTokensSelector( }).toList(); list.sort((tokenAId, tokenBId) { - final tokenA = tokenMap[tokenAId]; + final tokenA = tokenMap[tokenAId]!; final tokenB = tokenMap[tokenBId]; return tokenA.compareTo( tokenB, tokenListState.sortField, tokenListState.sortAscending); diff --git a/lib/redux/token/token_state.dart b/lib/redux/token/token_state.dart index 004b35a41..26d0b5b87 100644 --- a/lib/redux/token/token_state.dart +++ b/lib/redux/token/token_state.dart @@ -28,12 +28,12 @@ abstract class TokenState implements Built { @memoized int get hashCode; - BuiltMap get map; + BuiltMap get map; BuiltList get list; TokenState loadTokens(BuiltList clients) { - final map = Map.fromIterable( + final map = Map.fromIterable( clients, key: (dynamic item) => item.id, value: (dynamic item) => item, @@ -50,7 +50,7 @@ abstract class TokenState implements Built { abstract class TokenUIState extends Object with EntityUIState implements Built { - factory TokenUIState(PrefStateSortField sortField) { + factory TokenUIState(PrefStateSortField? sortField) { return _$TokenUIState._( listUIState: ListUIState(sortField?.field ?? TokenFields.name, sortAscending: sortField?.ascending), @@ -66,14 +66,13 @@ abstract class TokenUIState extends Object @memoized int get hashCode; - @nullable - TokenEntity get editing; + TokenEntity? get editing; @override - bool get isCreatingNew => editing.isNew; + bool get isCreatingNew => editing!.isNew; @override - String get editingId => editing.id; + String get editingId => editing!.id; static Serializer get serializer => _$tokenUIStateSerializer; } diff --git a/lib/redux/token/token_state.g.dart b/lib/redux/token/token_state.g.dart index ec29cdbd8..67c5e00e9 100644 --- a/lib/redux/token/token_state.g.dart +++ b/lib/redux/token/token_state.g.dart @@ -17,13 +17,15 @@ class _$TokenStateSerializer implements StructuredSerializer { final String wireName = 'TokenState'; @override - Iterable serialize(Serializers serializers, TokenState object, + Iterable serialize(Serializers serializers, TokenState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'map', serializers.serialize(object.map, - specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(TokenEntity)])), + specifiedType: const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(TokenEntity) + ])), 'list', serializers.serialize(object.list, specifiedType: @@ -34,28 +36,28 @@ class _$TokenStateSerializer implements StructuredSerializer { } @override - TokenState deserialize(Serializers serializers, Iterable serialized, + TokenState deserialize(Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TokenStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'map': result.map.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(TokenEntity) - ]))); + const FullType.nullable(String), + const FullType.nullable(TokenEntity) + ]))!); break; case 'list': result.list.replace(serializers.deserialize(value, - specifiedType: - const FullType(BuiltList, const [const FullType(String)])) - as BuiltList); + specifiedType: const FullType( + BuiltList, const [const FullType(String)]))! + as BuiltList); break; } } @@ -71,9 +73,9 @@ class _$TokenUIStateSerializer implements StructuredSerializer { final String wireName = 'TokenUIState'; @override - Iterable serialize(Serializers serializers, TokenUIState object, + Iterable serialize(Serializers serializers, TokenUIState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'listUIState', serializers.serialize(object.listUIState, specifiedType: const FullType(ListUIState)), @@ -81,7 +83,7 @@ class _$TokenUIStateSerializer implements StructuredSerializer { serializers.serialize(object.tabIndex, specifiedType: const FullType(int)), ]; - Object value; + Object? value; value = object.editing; if (value != null) { result @@ -107,35 +109,36 @@ class _$TokenUIStateSerializer implements StructuredSerializer { } @override - TokenUIState deserialize(Serializers serializers, Iterable serialized, + TokenUIState deserialize( + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TokenUIStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'editing': result.editing.replace(serializers.deserialize(value, - specifiedType: const FullType(TokenEntity)) as TokenEntity); + specifiedType: const FullType(TokenEntity))! as TokenEntity); break; case 'listUIState': result.listUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(ListUIState)) as ListUIState); + specifiedType: const FullType(ListUIState))! as ListUIState); break; case 'selectedId': result.selectedId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'forceSelected': result.forceSelected = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'tabIndex': result.tabIndex = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; } } @@ -146,14 +149,14 @@ class _$TokenUIStateSerializer implements StructuredSerializer { class _$TokenState extends TokenState { @override - final BuiltMap map; + final BuiltMap map; @override final BuiltList list; - factory _$TokenState([void Function(TokenStateBuilder) updates]) => + factory _$TokenState([void Function(TokenStateBuilder)? updates]) => (new TokenStateBuilder()..update(updates))._build(); - _$TokenState._({this.map, this.list}) : super._() { + _$TokenState._({required this.map, required this.list}) : super._() { BuiltValueNullFieldError.checkNotNull(map, r'TokenState', 'map'); BuiltValueNullFieldError.checkNotNull(list, r'TokenState', 'list'); } @@ -171,10 +174,10 @@ class _$TokenState extends TokenState { return other is TokenState && map == other.map && list == other.list; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, map.hashCode); _$hash = $jc(_$hash, list.hashCode); @@ -192,16 +195,16 @@ class _$TokenState extends TokenState { } class TokenStateBuilder implements Builder { - _$TokenState _$v; + _$TokenState? _$v; - MapBuilder _map; - MapBuilder get map => - _$this._map ??= new MapBuilder(); - set map(MapBuilder map) => _$this._map = map; + MapBuilder? _map; + MapBuilder get map => + _$this._map ??= new MapBuilder(); + set map(MapBuilder? map) => _$this._map = map; - ListBuilder _list; + ListBuilder? _list; ListBuilder get list => _$this._list ??= new ListBuilder(); - set list(ListBuilder list) => _$this._list = list; + set list(ListBuilder? list) => _$this._list = list; TokenStateBuilder(); @@ -222,7 +225,7 @@ class TokenStateBuilder implements Builder { } @override - void update(void Function(TokenStateBuilder) updates) { + void update(void Function(TokenStateBuilder)? updates) { if (updates != null) updates(this); } @@ -235,7 +238,7 @@ class TokenStateBuilder implements Builder { _$result = _$v ?? new _$TokenState._(map: map.build(), list: list.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'map'; map.build(); @@ -254,29 +257,29 @@ class TokenStateBuilder implements Builder { class _$TokenUIState extends TokenUIState { @override - final TokenEntity editing; + final TokenEntity? editing; @override final ListUIState listUIState; @override - final String selectedId; + final String? selectedId; @override - final bool forceSelected; + final bool? forceSelected; @override final int tabIndex; @override - final Completer saveCompleter; + final Completer? saveCompleter; @override - final Completer cancelCompleter; + final Completer? cancelCompleter; - factory _$TokenUIState([void Function(TokenUIStateBuilder) updates]) => + factory _$TokenUIState([void Function(TokenUIStateBuilder)? updates]) => (new TokenUIStateBuilder()..update(updates))._build(); _$TokenUIState._( {this.editing, - this.listUIState, + required this.listUIState, this.selectedId, this.forceSelected, - this.tabIndex, + required this.tabIndex, this.saveCompleter, this.cancelCompleter}) : super._() { @@ -306,10 +309,10 @@ class _$TokenUIState extends TokenUIState { cancelCompleter == other.cancelCompleter; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, editing.hashCode); _$hash = $jc(_$hash, listUIState.hashCode); @@ -338,40 +341,40 @@ class _$TokenUIState extends TokenUIState { class TokenUIStateBuilder implements Builder { - _$TokenUIState _$v; + _$TokenUIState? _$v; - TokenEntityBuilder _editing; + TokenEntityBuilder? _editing; TokenEntityBuilder get editing => _$this._editing ??= new TokenEntityBuilder(); - set editing(TokenEntityBuilder editing) => _$this._editing = editing; + set editing(TokenEntityBuilder? editing) => _$this._editing = editing; - ListUIStateBuilder _listUIState; + ListUIStateBuilder? _listUIState; ListUIStateBuilder get listUIState => _$this._listUIState ??= new ListUIStateBuilder(); - set listUIState(ListUIStateBuilder listUIState) => + set listUIState(ListUIStateBuilder? listUIState) => _$this._listUIState = listUIState; - String _selectedId; - String get selectedId => _$this._selectedId; - set selectedId(String selectedId) => _$this._selectedId = selectedId; + String? _selectedId; + String? get selectedId => _$this._selectedId; + set selectedId(String? selectedId) => _$this._selectedId = selectedId; - bool _forceSelected; - bool get forceSelected => _$this._forceSelected; - set forceSelected(bool forceSelected) => + bool? _forceSelected; + bool? get forceSelected => _$this._forceSelected; + set forceSelected(bool? forceSelected) => _$this._forceSelected = forceSelected; - int _tabIndex; - int get tabIndex => _$this._tabIndex; - set tabIndex(int tabIndex) => _$this._tabIndex = tabIndex; + int? _tabIndex; + int? get tabIndex => _$this._tabIndex; + set tabIndex(int? tabIndex) => _$this._tabIndex = tabIndex; - Completer _saveCompleter; - Completer get saveCompleter => _$this._saveCompleter; - set saveCompleter(Completer saveCompleter) => + Completer? _saveCompleter; + Completer? get saveCompleter => _$this._saveCompleter; + set saveCompleter(Completer? saveCompleter) => _$this._saveCompleter = saveCompleter; - Completer _cancelCompleter; - Completer get cancelCompleter => _$this._cancelCompleter; - set cancelCompleter(Completer cancelCompleter) => + Completer? _cancelCompleter; + Completer? get cancelCompleter => _$this._cancelCompleter; + set cancelCompleter(Completer? cancelCompleter) => _$this._cancelCompleter = cancelCompleter; TokenUIStateBuilder(); @@ -398,7 +401,7 @@ class TokenUIStateBuilder } @override - void update(void Function(TokenUIStateBuilder) updates) { + void update(void Function(TokenUIStateBuilder)? updates) { if (updates != null) updates(this); } @@ -419,7 +422,7 @@ class TokenUIStateBuilder saveCompleter: saveCompleter, cancelCompleter: cancelCompleter); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'editing'; _editing?.build(); diff --git a/lib/redux/transaction/transaction_actions.dart b/lib/redux/transaction/transaction_actions.dart index 611ee4476..39137edd8 100644 --- a/lib/redux/transaction/transaction_actions.dart +++ b/lib/redux/transaction/transaction_actions.dart @@ -16,29 +16,29 @@ class ViewTransactionList implements PersistUI { }); final bool force; - final int page; + final int? page; } class ViewTransaction implements PersistUI, PersistPrefs { ViewTransaction({ - @required this.transactionId, + required this.transactionId, this.force = false, }); - final String transactionId; + final String? transactionId; final bool force; } class EditTransaction implements PersistUI, PersistPrefs { EditTransaction( - {@required this.transaction, + {required this.transaction, this.completer, this.cancelCompleter, this.force = false}); final TransactionEntity transaction; - final Completer completer; - final Completer cancelCompleter; + final Completer? completer; + final Completer? cancelCompleter; final bool force; } @@ -51,21 +51,21 @@ class UpdateTransaction implements PersistUI { class LoadTransaction { LoadTransaction({this.completer, this.transactionId}); - final Completer completer; - final String transactionId; + final Completer? completer; + final String? transactionId; } class LoadTransactionActivity { LoadTransactionActivity({this.completer, this.transactionId}); - final Completer completer; - final String transactionId; + final Completer? completer; + final String? transactionId; } class LoadTransactions { LoadTransactions({this.completer, this.page = 1}); - final Completer completer; + final Completer? completer; final int page; } @@ -120,8 +120,8 @@ class LoadTransactionsSuccess implements StopLoading { class SaveTransactionRequest implements StartSaving { SaveTransactionRequest({this.completer, this.transaction}); - final Completer completer; - final TransactionEntity transaction; + final Completer? completer; + final TransactionEntity? transaction; } class SaveTransactionSuccess implements StopSaving, PersistData, PersistUI { @@ -158,7 +158,7 @@ class ArchiveTransactionsSuccess implements StopSaving, PersistData { class ArchiveTransactionsFailure implements StopSaving { ArchiveTransactionsFailure(this.transactions); - final List transactions; + final List transactions; } class DeleteTransactionsRequest implements StartSaving { @@ -177,7 +177,7 @@ class DeleteTransactionsSuccess implements StopSaving, PersistData { class DeleteTransactionsFailure implements StopSaving { DeleteTransactionsFailure(this.transactions); - final List transactions; + final List transactions; } class RestoreTransactionsRequest implements StartSaving { @@ -196,7 +196,7 @@ class RestoreTransactionsSuccess implements StopSaving, PersistData { class RestoreTransactionsFailure implements StopSaving { RestoreTransactionsFailure(this.transactions); - final List transactions; + final List transactions; } class ConvertTransactionToPaymentRequest implements StartSaving { @@ -207,7 +207,7 @@ class ConvertTransactionToPaymentRequest implements StartSaving { ); final Completer completer; - final String transactionId; + final String? transactionId; final List invoiceIds; } @@ -231,7 +231,7 @@ class LinkTransactionToPaymentRequest implements StartSaving { ); final Completer completer; - final String transactionId; + final String? transactionId; final String paymentId; } @@ -277,7 +277,7 @@ class LinkTransactionToExpenseRequest implements StartSaving { ); final Completer completer; - final String transactionId; + final String? transactionId; final String expenseId; } @@ -302,7 +302,7 @@ class ConvertTransactionsToExpensesRequest implements StartSaving { ); final Completer completer; - final List transactionIds; + final List transactionIds; final String vendorId; final String categoryId; } @@ -391,15 +391,15 @@ class StartTransactionMultiselect { } class AddToTransactionMultiselect { - AddToTransactionMultiselect({@required this.entity}); + AddToTransactionMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class RemoveFromTransactionMultiselect { - RemoveFromTransactionMultiselect({@required this.entity}); + RemoveFromTransactionMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class ClearTransactionMultiselect { @@ -409,43 +409,43 @@ class ClearTransactionMultiselect { class UpdateTransactionTab implements PersistUI { UpdateTransactionTab({this.tabIndex}); - final int tabIndex; + final int? tabIndex; } void handleTransactionAction( - BuildContext context, List transactions, EntityAction action) { + BuildContext? context, List transactions, EntityAction? action) { if (transactions.isEmpty) { return; } - final store = StoreProvider.of(context); + final store = StoreProvider.of(context!); final localization = AppLocalization.of(context); - final transaction = transactions.first as TransactionEntity; + final transaction = transactions.first as TransactionEntity?; final transactionIds = - transactions.map((transaction) => transaction.id).toList(); + transactions.map((transaction) => transaction!.id).toList(); switch (action) { case EntityAction.edit: - editEntity(entity: transaction); + editEntity(entity: transaction!); break; case EntityAction.restore: store.dispatch(RestoreTransactionsRequest( - snackBarCompleter(context, localization.restoredTransaction), + snackBarCompleter(context, localization!.restoredTransaction), transactionIds)); break; case EntityAction.archive: store.dispatch(ArchiveTransactionsRequest( - snackBarCompleter(context, localization.archivedTransaction), + snackBarCompleter(context, localization!.archivedTransaction), transactionIds)); break; case EntityAction.delete: store.dispatch(DeleteTransactionsRequest( - snackBarCompleter(context, localization.deletedTransaction), + snackBarCompleter(context, localization!.deletedTransaction), transactionIds)); break; case EntityAction.convertMatched: store.dispatch(ConvertTransactionsRequest( - snackBarCompleter(context, localization.convertedTransactions), + snackBarCompleter(context, localization!.convertedTransactions), transactionIds)); break; case EntityAction.unlink: @@ -453,8 +453,8 @@ void handleTransactionAction( snackBarCompleter( context, transactionIds.length == 1 - ? localization.unlinkedTransaction - : localization.unlinkedTransactions + ? localization!.unlinkedTransaction + : localization!.unlinkedTransactions! .replaceFirst(':count', '${transactionIds.length}')), transactionIds)); break; @@ -468,7 +468,7 @@ void handleTransactionAction( } for (final transaction in transactions) { - if (!store.state.transactionListState.isSelected(transaction.id)) { + if (!store.state.transactionListState.isSelected(transaction!.id)) { store.dispatch(AddToTransactionMultiselect(entity: transaction)); } else { store.dispatch(RemoveFromTransactionMultiselect(entity: transaction)); diff --git a/lib/redux/transaction/transaction_middleware.dart b/lib/redux/transaction/transaction_middleware.dart index 8ab789eac..ef09e8ec2 100644 --- a/lib/redux/transaction/transaction_middleware.dart +++ b/lib/redux/transaction/transaction_middleware.dart @@ -56,14 +56,14 @@ List> createStoreTransactionsMiddleware([ Middleware _editTransaction() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as EditTransaction; + final action = dynamicAction as EditTransaction?; next(action); store.dispatch(UpdateCurrentRoute(TransactionEditScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(TransactionEditScreen.route); + navigatorKey.currentState!.pushNamed(TransactionEditScreen.route); } }; } @@ -71,21 +71,21 @@ Middleware _editTransaction() { Middleware _viewTransaction() { return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as ViewTransaction; + final action = dynamicAction as ViewTransaction?; next(action); store.dispatch(UpdateCurrentRoute(TransactionViewScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(TransactionViewScreen.route); + navigatorKey.currentState!.pushNamed(TransactionViewScreen.route); } }; } Middleware _viewTransactionList() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as ViewTransactionList; + final action = dynamicAction as ViewTransactionList?; next(action); @@ -96,7 +96,7 @@ Middleware _viewTransactionList() { store.dispatch(UpdateCurrentRoute(TransactionScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamedAndRemoveUntil( + navigatorKey.currentState!.pushNamedAndRemoveUntil( TransactionScreen.route, (Route route) => false); } }; @@ -343,20 +343,20 @@ Middleware _saveTransaction(TransactionRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as SaveTransactionRequest; repository - .saveData(store.state.credentials, action.transaction) + .saveData(store.state.credentials, action.transaction!) .then((TransactionEntity transaction) { - if (action.transaction.isNew) { + if (action.transaction!.isNew) { store.dispatch(AddTransactionSuccess(transaction)); } else { store.dispatch(SaveTransactionSuccess(transaction)); } store.dispatch(RefreshData()); - action.completer.complete(transaction); + action.completer!.complete(transaction); }).catchError((Object error) { //store.dispatch(AddTransactionSuccess(action.transaction.rebuild((b) => b..id = '1'))); print(error); store.dispatch(SaveTransactionFailure(error)); - action.completer.completeError(error); + action.completer!.completeError(error); }); next(action); @@ -375,13 +375,13 @@ Middleware _loadTransaction(TransactionRepository repository) { store.dispatch(LoadTransactionSuccess(transaction)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(LoadTransactionFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -411,7 +411,7 @@ Middleware _loadTransactions(TransactionRepository repository) { )); } else { if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } store.dispatch(PersistData()); } @@ -419,7 +419,7 @@ Middleware _loadTransactions(TransactionRepository repository) { print(error); store.dispatch(LoadTransactionsFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); diff --git a/lib/redux/transaction/transaction_reducer.dart b/lib/redux/transaction/transaction_reducer.dart index 6d6f39d4c..5fd2b3330 100644 --- a/lib/redux/transaction/transaction_reducer.dart +++ b/lib/redux/transaction/transaction_reducer.dart @@ -11,56 +11,56 @@ import 'package:invoiceninja_flutter/redux/transaction/transaction_state.dart'; EntityUIState transactionUIReducer(TransactionUIState state, dynamic action) { return state.rebuild((b) => b ..listUIState.replace(transactionListReducer(state.listUIState, action)) - ..editing.replace(editingReducer(state.editing, action)) + ..editing.replace(editingReducer(state.editing, action)!) ..selectedId = selectedIdReducer(state.selectedId, action) ..forceSelected = forceSelectedReducer(state.forceSelected, action) ..tabIndex = tabIndexReducer(state.tabIndex, action)); } -final forceSelectedReducer = combineReducers([ - TypedReducer((completer, action) => true), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), +final forceSelectedReducer = combineReducers([ + TypedReducer((completer, action) => true), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), ]); -final tabIndexReducer = combineReducers([ - TypedReducer((completer, action) { +final int? Function(int, dynamic) tabIndexReducer = combineReducers([ + TypedReducer((completer, action) { return action.tabIndex; }), - TypedReducer((completer, action) { + TypedReducer((completer, action) { return 0; }), ]); -Reducer selectedIdReducer = combineReducers([ - TypedReducer((completer, action) => ''), - TypedReducer((completer, action) => ''), - TypedReducer((selectedId, action) => +Reducer selectedIdReducer = combineReducers([ + TypedReducer((completer, action) => ''), + TypedReducer((completer, action) => ''), + TypedReducer((selectedId, action) => action.entityType == EntityType.transaction ? action.entityId : selectedId), - TypedReducer( - (String selectedId, dynamic action) => action.transactionId), - TypedReducer( - (String selectedId, dynamic action) => action.transaction.id), - TypedReducer( + TypedReducer( + (String? selectedId, dynamic action) => action.transactionId), + TypedReducer( + (String? selectedId, dynamic action) => action.transaction.id), + TypedReducer( (selectedId, action) => action.clearSelection ? '' : selectedId), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer( + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer( (selectedId, action) => action.clearSelection ? '' : action.entityType == EntityType.transaction @@ -68,34 +68,34 @@ Reducer selectedIdReducer = combineReducers([ : selectedId), ]); -final editingReducer = combineReducers([ - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer( +final editingReducer = combineReducers([ + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer( (transactions, action) { return action.transactions[0]; }), - TypedReducer( + TypedReducer( (transactions, action) { return action.transactions[0]; }), - TypedReducer( + TypedReducer( (transactions, action) { return action.transactions[0]; }), - TypedReducer(_updateEditing), - TypedReducer((transaction, action) { + TypedReducer(_updateEditing), + TypedReducer((transaction, action) { return action.transaction.rebuild((b) => b..isChanged = true); }), - TypedReducer(_clearEditing), + TypedReducer(_clearEditing), ]); -TransactionEntity _clearEditing(TransactionEntity transaction, dynamic action) { +TransactionEntity _clearEditing(TransactionEntity? transaction, dynamic action) { return TransactionEntity(); } -TransactionEntity _updateEditing( - TransactionEntity transaction, dynamic action) { +TransactionEntity? _updateEditing( + TransactionEntity? transaction, dynamic action) { return action.transaction; } @@ -186,7 +186,7 @@ ListUIState _filterTransactions( ListUIState _sortTransactions( ListUIState transactionListState, SortTransactions action) { return transactionListState.rebuild((b) => b - ..sortAscending = b.sortField != action.field || !b.sortAscending + ..sortAscending = b.sortField != action.field || !b.sortAscending! ..sortField = action.field); } @@ -197,13 +197,13 @@ ListUIState _startListMultiselect( ListUIState _addToListMultiselect( ListUIState productListState, AddToTransactionMultiselect action) { - return productListState.rebuild((b) => b..selectedIds.add(action.entity.id)); + return productListState.rebuild((b) => b..selectedIds.add(action.entity!.id)); } ListUIState _removeFromListMultiselect( ListUIState productListState, RemoveFromTransactionMultiselect action) { return productListState - .rebuild((b) => b..selectedIds.remove(action.entity.id)); + .rebuild((b) => b..selectedIds.remove(action.entity!.id)); } ListUIState _clearListMultiselect( @@ -316,6 +316,6 @@ TransactionState _setLoadedTransactions( TransactionState _setLoadedCompany( TransactionState transactionState, LoadCompanySuccess action) { - final company = action.userCompany.company; + final company = action.userCompany.company!; return transactionState.loadTransactions(company.transactions); } diff --git a/lib/redux/transaction/transaction_selectors.dart b/lib/redux/transaction/transaction_selectors.dart index 983763ece..0d4e5c39b 100644 --- a/lib/redux/transaction/transaction_selectors.dart +++ b/lib/redux/transaction/transaction_selectors.dart @@ -40,7 +40,7 @@ List dropdownTransactionsSelector( BuiltMap bankAccountMap, String clientId) { final list = transactionList.where((transactionId) { - final transaction = transactionMap[transactionId]; + final transaction = transactionMap[transactionId]!; /* if (clientId != null && clientId > 0 && transaction.clientId != clientId) { return false; @@ -50,7 +50,7 @@ List dropdownTransactionsSelector( }).toList(); list.sort((transactionAId, transactionBId) { - final transactionA = transactionMap[transactionAId]; + final transactionA = transactionMap[transactionAId]!; final transactionB = transactionMap[transactionBId]; return transactionA.compareTo(transactionB, TransactionFields.date, true, vendorMap, invoiceMap, expenseMap, expenseCategoryMap, bankAccountMap); @@ -60,13 +60,13 @@ List dropdownTransactionsSelector( } var memoizedFilteredTransactionList = memo9((SelectionState selectionState, - BuiltMap transactionMap, + BuiltMap transactionMap, BuiltList transactionList, - BuiltMap invoiceMap, - BuiltMap vendorMap, - BuiltMap expenseMap, - BuiltMap expenseCategoryMap, - BuiltMap bankAccountMap, + BuiltMap invoiceMap, + BuiltMap vendorMap, + BuiltMap expenseMap, + BuiltMap expenseCategoryMap, + BuiltMap bankAccountMap, ListUIState transactionListState) => filteredTransactionsSelector( selectionState, @@ -81,19 +81,19 @@ var memoizedFilteredTransactionList = memo9((SelectionState selectionState, List filteredTransactionsSelector( SelectionState selectionState, - BuiltMap transactionMap, + BuiltMap transactionMap, BuiltList transactionList, - BuiltMap invoiceMap, - BuiltMap vendorMap, - BuiltMap expenseMap, - BuiltMap expenseCategoryMap, - BuiltMap bankAccountMap, + BuiltMap invoiceMap, + BuiltMap vendorMap, + BuiltMap expenseMap, + BuiltMap expenseCategoryMap, + BuiltMap bankAccountMap, ListUIState transactionListState) { final filterEntityId = selectionState.filterEntityId; final filterEntityType = selectionState.filterEntityType; final list = transactionList.where((transactionId) { - final transaction = transactionMap[transactionId]; + final transaction = transactionMap[transactionId]!; if (transaction.id == selectionState.selectedId) { return true; @@ -136,7 +136,7 @@ List filteredTransactionsSelector( }).toList(); list.sort((transactionAId, transactionBId) { - final transactionA = transactionMap[transactionAId]; + final transactionA = transactionMap[transactionAId]!; final transactionB = transactionMap[transactionBId]; return transactionA.compareTo( transactionB, @@ -153,15 +153,15 @@ List filteredTransactionsSelector( } var memoizedTransactionStatsForBankAccount = memo2((String bankAccountId, - BuiltMap transactionMap) => + BuiltMap transactionMap) => transactionStatsForBankAccount(bankAccountId, transactionMap)); EntityStats transactionStatsForBankAccount( - String bankAccountId, BuiltMap transactionMap) { + String bankAccountId, BuiltMap transactionMap) { int countActive = 0; int countArchived = 0; transactionMap.forEach((transactionId, transaction) { - if (transaction.bankAccountId == bankAccountId) { + if (transaction!.bankAccountId == bankAccountId) { if (transaction.isActive) { countActive++; } else if (transaction.isArchived) { diff --git a/lib/redux/transaction/transaction_state.dart b/lib/redux/transaction/transaction_state.dart index 4ca85713d..9e964a150 100644 --- a/lib/redux/transaction/transaction_state.dart +++ b/lib/redux/transaction/transaction_state.dart @@ -23,10 +23,10 @@ abstract class TransactionState @memoized int get hashCode; - BuiltMap get map; + BuiltMap get map; BuiltList get list; - TransactionEntity get(String transactionId) { + TransactionEntity? get(String transactionId) { if (map.containsKey(transactionId)) { return map[transactionId]; } else { @@ -35,7 +35,7 @@ abstract class TransactionState } TransactionState loadTransactions(BuiltList transactions) { - final map = Map.fromIterable( + final map = Map.fromIterable( transactions, key: (dynamic item) => item.id, value: (dynamic item) => item, @@ -53,7 +53,7 @@ abstract class TransactionState abstract class TransactionUIState extends Object with EntityUIState implements Built { - factory TransactionUIState(PrefStateSortField sortField) { + factory TransactionUIState(PrefStateSortField? sortField) { return _$TransactionUIState._( listUIState: ListUIState( sortField?.field ?? TransactionFields.date, @@ -70,14 +70,13 @@ abstract class TransactionUIState extends Object @memoized int get hashCode; - @nullable - TransactionEntity get editing; + TransactionEntity? get editing; @override - bool get isCreatingNew => editing.isNew; + bool get isCreatingNew => editing!.isNew; @override - String get editingId => editing.id; + String get editingId => editing!.id; static Serializer get serializer => _$transactionUIStateSerializer; diff --git a/lib/redux/transaction/transaction_state.g.dart b/lib/redux/transaction/transaction_state.g.dart index 305ca6de0..b4e374428 100644 --- a/lib/redux/transaction/transaction_state.g.dart +++ b/lib/redux/transaction/transaction_state.g.dart @@ -19,14 +19,14 @@ class _$TransactionStateSerializer final String wireName = 'TransactionState'; @override - Iterable serialize(Serializers serializers, TransactionState object, + Iterable serialize(Serializers serializers, TransactionState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'map', serializers.serialize(object.map, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(TransactionEntity) + const FullType.nullable(String), + const FullType.nullable(TransactionEntity) ])), 'list', serializers.serialize(object.list, @@ -39,28 +39,28 @@ class _$TransactionStateSerializer @override TransactionState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TransactionStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'map': result.map.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(TransactionEntity) - ]))); + const FullType.nullable(String), + const FullType.nullable(TransactionEntity) + ]))!); break; case 'list': result.list.replace(serializers.deserialize(value, - specifiedType: - const FullType(BuiltList, const [const FullType(String)])) - as BuiltList); + specifiedType: const FullType( + BuiltList, const [const FullType(String)]))! + as BuiltList); break; } } @@ -77,9 +77,10 @@ class _$TransactionUIStateSerializer final String wireName = 'TransactionUIState'; @override - Iterable serialize(Serializers serializers, TransactionUIState object, + Iterable serialize( + Serializers serializers, TransactionUIState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'listUIState', serializers.serialize(object.listUIState, specifiedType: const FullType(ListUIState)), @@ -87,7 +88,7 @@ class _$TransactionUIStateSerializer serializers.serialize(object.tabIndex, specifiedType: const FullType(int)), ]; - Object value; + Object? value; value = object.editing; if (value != null) { result @@ -114,36 +115,36 @@ class _$TransactionUIStateSerializer @override TransactionUIState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TransactionUIStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'editing': result.editing.replace(serializers.deserialize(value, - specifiedType: const FullType(TransactionEntity)) + specifiedType: const FullType(TransactionEntity))! as TransactionEntity); break; case 'listUIState': result.listUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(ListUIState)) as ListUIState); + specifiedType: const FullType(ListUIState))! as ListUIState); break; case 'selectedId': result.selectedId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'forceSelected': result.forceSelected = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'tabIndex': result.tabIndex = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; } } @@ -154,15 +155,15 @@ class _$TransactionUIStateSerializer class _$TransactionState extends TransactionState { @override - final BuiltMap map; + final BuiltMap map; @override final BuiltList list; factory _$TransactionState( - [void Function(TransactionStateBuilder) updates]) => + [void Function(TransactionStateBuilder)? updates]) => (new TransactionStateBuilder()..update(updates))._build(); - _$TransactionState._({this.map, this.list}) : super._() { + _$TransactionState._({required this.map, required this.list}) : super._() { BuiltValueNullFieldError.checkNotNull(map, r'TransactionState', 'map'); BuiltValueNullFieldError.checkNotNull(list, r'TransactionState', 'list'); } @@ -181,10 +182,10 @@ class _$TransactionState extends TransactionState { return other is TransactionState && map == other.map && list == other.list; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, map.hashCode); _$hash = $jc(_$hash, list.hashCode); @@ -203,16 +204,16 @@ class _$TransactionState extends TransactionState { class TransactionStateBuilder implements Builder { - _$TransactionState _$v; + _$TransactionState? _$v; - MapBuilder _map; - MapBuilder get map => - _$this._map ??= new MapBuilder(); - set map(MapBuilder map) => _$this._map = map; + MapBuilder? _map; + MapBuilder get map => + _$this._map ??= new MapBuilder(); + set map(MapBuilder? map) => _$this._map = map; - ListBuilder _list; + ListBuilder? _list; ListBuilder get list => _$this._list ??= new ListBuilder(); - set list(ListBuilder list) => _$this._list = list; + set list(ListBuilder? list) => _$this._list = list; TransactionStateBuilder(); @@ -233,7 +234,7 @@ class TransactionStateBuilder } @override - void update(void Function(TransactionStateBuilder) updates) { + void update(void Function(TransactionStateBuilder)? updates) { if (updates != null) updates(this); } @@ -246,7 +247,7 @@ class TransactionStateBuilder _$result = _$v ?? new _$TransactionState._(map: map.build(), list: list.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'map'; map.build(); @@ -265,30 +266,30 @@ class TransactionStateBuilder class _$TransactionUIState extends TransactionUIState { @override - final TransactionEntity editing; + final TransactionEntity? editing; @override final ListUIState listUIState; @override - final String selectedId; + final String? selectedId; @override - final bool forceSelected; + final bool? forceSelected; @override final int tabIndex; @override - final Completer saveCompleter; + final Completer? saveCompleter; @override - final Completer cancelCompleter; + final Completer? cancelCompleter; factory _$TransactionUIState( - [void Function(TransactionUIStateBuilder) updates]) => + [void Function(TransactionUIStateBuilder)? updates]) => (new TransactionUIStateBuilder()..update(updates))._build(); _$TransactionUIState._( {this.editing, - this.listUIState, + required this.listUIState, this.selectedId, this.forceSelected, - this.tabIndex, + required this.tabIndex, this.saveCompleter, this.cancelCompleter}) : super._() { @@ -320,10 +321,10 @@ class _$TransactionUIState extends TransactionUIState { cancelCompleter == other.cancelCompleter; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, editing.hashCode); _$hash = $jc(_$hash, listUIState.hashCode); @@ -352,40 +353,40 @@ class _$TransactionUIState extends TransactionUIState { class TransactionUIStateBuilder implements Builder { - _$TransactionUIState _$v; + _$TransactionUIState? _$v; - TransactionEntityBuilder _editing; + TransactionEntityBuilder? _editing; TransactionEntityBuilder get editing => _$this._editing ??= new TransactionEntityBuilder(); - set editing(TransactionEntityBuilder editing) => _$this._editing = editing; + set editing(TransactionEntityBuilder? editing) => _$this._editing = editing; - ListUIStateBuilder _listUIState; + ListUIStateBuilder? _listUIState; ListUIStateBuilder get listUIState => _$this._listUIState ??= new ListUIStateBuilder(); - set listUIState(ListUIStateBuilder listUIState) => + set listUIState(ListUIStateBuilder? listUIState) => _$this._listUIState = listUIState; - String _selectedId; - String get selectedId => _$this._selectedId; - set selectedId(String selectedId) => _$this._selectedId = selectedId; + String? _selectedId; + String? get selectedId => _$this._selectedId; + set selectedId(String? selectedId) => _$this._selectedId = selectedId; - bool _forceSelected; - bool get forceSelected => _$this._forceSelected; - set forceSelected(bool forceSelected) => + bool? _forceSelected; + bool? get forceSelected => _$this._forceSelected; + set forceSelected(bool? forceSelected) => _$this._forceSelected = forceSelected; - int _tabIndex; - int get tabIndex => _$this._tabIndex; - set tabIndex(int tabIndex) => _$this._tabIndex = tabIndex; + int? _tabIndex; + int? get tabIndex => _$this._tabIndex; + set tabIndex(int? tabIndex) => _$this._tabIndex = tabIndex; - Completer _saveCompleter; - Completer get saveCompleter => _$this._saveCompleter; - set saveCompleter(Completer saveCompleter) => + Completer? _saveCompleter; + Completer? get saveCompleter => _$this._saveCompleter; + set saveCompleter(Completer? saveCompleter) => _$this._saveCompleter = saveCompleter; - Completer _cancelCompleter; - Completer get cancelCompleter => _$this._cancelCompleter; - set cancelCompleter(Completer cancelCompleter) => + Completer? _cancelCompleter; + Completer? get cancelCompleter => _$this._cancelCompleter; + set cancelCompleter(Completer? cancelCompleter) => _$this._cancelCompleter = cancelCompleter; TransactionUIStateBuilder(); @@ -412,7 +413,7 @@ class TransactionUIStateBuilder } @override - void update(void Function(TransactionUIStateBuilder) updates) { + void update(void Function(TransactionUIStateBuilder)? updates) { if (updates != null) updates(this); } @@ -433,7 +434,7 @@ class TransactionUIStateBuilder saveCompleter: saveCompleter, cancelCompleter: cancelCompleter); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'editing'; _editing?.build(); diff --git a/lib/redux/transaction_rule/transaction_rule_actions.dart b/lib/redux/transaction_rule/transaction_rule_actions.dart index 861abe63a..7bc176f40 100644 --- a/lib/redux/transaction_rule/transaction_rule_actions.dart +++ b/lib/redux/transaction_rule/transaction_rule_actions.dart @@ -17,24 +17,24 @@ class ViewTransactionRuleList implements PersistUI { class ViewTransactionRule implements PersistUI, PersistPrefs { ViewTransactionRule({ - @required this.transactionRuleId, + required this.transactionRuleId, this.force = false, }); - final String transactionRuleId; + final String? transactionRuleId; final bool force; } class EditTransactionRule implements PersistUI, PersistPrefs { EditTransactionRule( - {@required this.transactionRule, + {required this.transactionRule, this.completer, this.cancelCompleter, this.force = false}); final TransactionRuleEntity transactionRule; - final Completer completer; - final Completer cancelCompleter; + final Completer? completer; + final Completer? cancelCompleter; final bool force; } @@ -47,21 +47,21 @@ class UpdateTransactionRule implements PersistUI { class LoadTransactionRule { LoadTransactionRule({this.completer, this.transactionRuleId}); - final Completer completer; - final String transactionRuleId; + final Completer? completer; + final String? transactionRuleId; } class LoadTransactionRuleActivity { LoadTransactionRuleActivity({this.completer, this.transactionRuleId}); - final Completer completer; - final String transactionRuleId; + final Completer? completer; + final String? transactionRuleId; } class LoadTransactionRules { LoadTransactionRules({this.completer}); - final Completer completer; + final Completer? completer; } class LoadTransactionRuleRequest implements StartLoading {} @@ -115,8 +115,8 @@ class LoadTransactionRulesSuccess implements StopLoading { class SaveTransactionRuleRequest implements StartSaving { SaveTransactionRuleRequest({this.completer, this.transactionRule}); - final Completer completer; - final TransactionRuleEntity transactionRule; + final Completer? completer; + final TransactionRuleEntity? transactionRule; } class SaveTransactionRuleSuccess implements StopSaving, PersistData, PersistUI { @@ -153,7 +153,7 @@ class ArchiveTransactionRulesSuccess implements StopSaving, PersistData { class ArchiveTransactionRulesFailure implements StopSaving { ArchiveTransactionRulesFailure(this.transactionRules); - final List transactionRules; + final List transactionRules; } class DeleteTransactionRulesRequest implements StartSaving { @@ -172,7 +172,7 @@ class DeleteTransactionRulesSuccess implements StopSaving, PersistData { class DeleteTransactionRulesFailure implements StopSaving { DeleteTransactionRulesFailure(this.transactionRules); - final List transactionRules; + final List transactionRules; } class RestoreTransactionRulesRequest implements StartSaving { @@ -191,7 +191,7 @@ class RestoreTransactionRulesSuccess implements StopSaving, PersistData { class RestoreTransactionRulesFailure implements StopSaving { RestoreTransactionRulesFailure(this.transactionRules); - final List transactionRules; + final List transactionRules; } class FilterTransactionRules implements PersistUI { @@ -241,15 +241,15 @@ class StartTransactionRuleMultiselect { } class AddToTransactionRuleMultiselect { - AddToTransactionRuleMultiselect({@required this.entity}); + AddToTransactionRuleMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class RemoveFromTransactionRuleMultiselect { - RemoveFromTransactionRuleMultiselect({@required this.entity}); + RemoveFromTransactionRuleMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class ClearTransactionRuleMultiselect { @@ -259,40 +259,40 @@ class ClearTransactionRuleMultiselect { class UpdateTransactionRuleTab implements PersistUI { UpdateTransactionRuleTab({this.tabIndex}); - final int tabIndex; + final int? tabIndex; } -void handleTransactionRuleAction(BuildContext context, - List transactionRules, EntityAction action) { +void handleTransactionRuleAction(BuildContext? context, + List transactionRules, EntityAction? action) { if (transactionRules.isEmpty) { return; } - final store = StoreProvider.of(context); + final store = StoreProvider.of(context!); final localization = AppLocalization.of(context); - final transactionRule = transactionRules.first as TransactionRuleEntity; + final transactionRule = transactionRules.first as TransactionRuleEntity?; final transactionRuleIds = - transactionRules.map((transactionRule) => transactionRule.id).toList(); + transactionRules.map((transactionRule) => transactionRule!.id).toList(); switch (action) { case EntityAction.edit: - editEntity(entity: transactionRule); + editEntity(entity: transactionRule!); break; case EntityAction.restore: store.dispatch(RestoreTransactionRulesRequest( snackBarCompleter( - context, localization.restoredTransactionRule), + context, localization!.restoredTransactionRule), transactionRuleIds)); break; case EntityAction.archive: store.dispatch(ArchiveTransactionRulesRequest( snackBarCompleter( - context, localization.archivedTransactionRule), + context, localization!.archivedTransactionRule), transactionRuleIds)); break; case EntityAction.delete: store.dispatch(DeleteTransactionRulesRequest( - snackBarCompleter(context, localization.deletedTransactionRule), + snackBarCompleter(context, localization!.deletedTransactionRule), transactionRuleIds)); break; case EntityAction.toggleMultiselect: @@ -306,7 +306,7 @@ void handleTransactionRuleAction(BuildContext context, for (final transactionRule in transactionRules) { if (!store.state.transactionRuleListState - .isSelected(transactionRule.id)) { + .isSelected(transactionRule!.id)) { store.dispatch( AddToTransactionRuleMultiselect(entity: transactionRule)); } else { diff --git a/lib/redux/transaction_rule/transaction_rule_middleware.dart b/lib/redux/transaction_rule/transaction_rule_middleware.dart index f9915f34e..1618bb99a 100644 --- a/lib/redux/transaction_rule/transaction_rule_middleware.dart +++ b/lib/redux/transaction_rule/transaction_rule_middleware.dart @@ -43,14 +43,14 @@ List> createStoreTransactionRulesMiddleware([ Middleware _editTransactionRule() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as EditTransactionRule; + final action = dynamicAction as EditTransactionRule?; next(action); store.dispatch(UpdateCurrentRoute(TransactionRuleEditScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(TransactionRuleEditScreen.route); + navigatorKey.currentState!.pushNamed(TransactionRuleEditScreen.route); } }; } @@ -58,21 +58,21 @@ Middleware _editTransactionRule() { Middleware _viewTransactionRule() { return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as ViewTransactionRule; + final action = dynamicAction as ViewTransactionRule?; next(action); store.dispatch(UpdateCurrentRoute(TransactionRuleViewScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(TransactionRuleViewScreen.route); + navigatorKey.currentState!.pushNamed(TransactionRuleViewScreen.route); } }; } Middleware _viewTransactionRuleList() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as ViewTransactionRuleList; + final action = dynamicAction as ViewTransactionRuleList?; next(action); @@ -83,7 +83,7 @@ Middleware _viewTransactionRuleList() { store.dispatch(UpdateCurrentRoute(TransactionRuleScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamedAndRemoveUntil( + navigatorKey.currentState!.pushNamedAndRemoveUntil( TransactionRuleScreen.route, (Route route) => false); } }; @@ -175,19 +175,19 @@ Middleware _saveTransactionRule( return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as SaveTransactionRuleRequest; repository - .saveData(store.state.credentials, action.transactionRule) + .saveData(store.state.credentials, action.transactionRule!) .then((TransactionRuleEntity transactionRule) { - if (action.transactionRule.isNew) { + if (action.transactionRule!.isNew) { store.dispatch(AddTransactionRuleSuccess(transactionRule)); } else { store.dispatch(SaveTransactionRuleSuccess(transactionRule)); } - action.completer.complete(transactionRule); + action.completer!.complete(transactionRule); }).catchError((Object error) { print(error); store.dispatch(SaveTransactionRuleFailure(error)); - action.completer.completeError(error); + action.completer!.completeError(error); }); next(action); @@ -207,13 +207,13 @@ Middleware _loadTransactionRule( store.dispatch(LoadTransactionRuleSuccess(transactionRule)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(LoadTransactionRuleFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -224,21 +224,21 @@ Middleware _loadTransactionRule( Middleware _loadTransactionRules( TransactionRuleRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as LoadTransactionRules; + final action = dynamicAction as LoadTransactionRules?; final AppState state = store.state; store.dispatch(LoadTransactionRulesRequest()); repository.loadList(state.credentials).then((data) { store.dispatch(LoadTransactionRulesSuccess(data)); - if (action.completer != null) { - action.completer.complete(null); + if (action!.completer != null) { + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(LoadTransactionRulesFailure(error)); - if (action.completer != null) { - action.completer.completeError(error); + if (action!.completer != null) { + action.completer!.completeError(error); } }); diff --git a/lib/redux/transaction_rule/transaction_rule_reducer.dart b/lib/redux/transaction_rule/transaction_rule_reducer.dart index c82edfb80..0f88d8729 100644 --- a/lib/redux/transaction_rule/transaction_rule_reducer.dart +++ b/lib/redux/transaction_rule/transaction_rule_reducer.dart @@ -12,66 +12,66 @@ EntityUIState transactionRuleUIReducer( TransactionRuleUIState state, dynamic action) { return state.rebuild((b) => b ..listUIState.replace(transactionRuleListReducer(state.listUIState, action)) - ..editing.replace(editingReducer(state.editing, action)) + ..editing.replace(editingReducer(state.editing, action)!) ..selectedId = selectedIdReducer(state.selectedId, action) ..forceSelected = forceSelectedReducer(state.forceSelected, action) ..tabIndex = tabIndexReducer(state.tabIndex, action)); } -final forceSelectedReducer = combineReducers([ - TypedReducer((completer, action) => true), - TypedReducer((completer, action) => false), - TypedReducer( +final forceSelectedReducer = combineReducers([ + TypedReducer((completer, action) => true), + TypedReducer((completer, action) => false), + TypedReducer( (completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer( + TypedReducer((completer, action) => false), + TypedReducer( (completer, action) => false), - TypedReducer( + TypedReducer( (completer, action) => false), - TypedReducer( + TypedReducer( (completer, action) => false), - TypedReducer( + TypedReducer( (completer, action) => false), ]); -final tabIndexReducer = combineReducers([ - TypedReducer((completer, action) { +final int? Function(int, dynamic) tabIndexReducer = combineReducers([ + TypedReducer((completer, action) { return action.tabIndex; }), - TypedReducer((completer, action) { + TypedReducer((completer, action) { return 0; }), ]); -Reducer selectedIdReducer = combineReducers([ - TypedReducer( +Reducer selectedIdReducer = combineReducers([ + TypedReducer( (completer, action) => ''), - TypedReducer( + TypedReducer( (completer, action) => ''), - TypedReducer((selectedId, action) => + TypedReducer((selectedId, action) => action.entityType == EntityType.transactionRule ? action.entityId : selectedId), - TypedReducer( - (String selectedId, dynamic action) => action.transactionRuleId), - TypedReducer( - (String selectedId, dynamic action) => action.transactionRule.id), - TypedReducer( + TypedReducer( + (String? selectedId, dynamic action) => action.transactionRuleId), + TypedReducer( + (String? selectedId, dynamic action) => action.transactionRule.id), + TypedReducer( (selectedId, action) => action.clearSelection ? '' : selectedId), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer( + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer( (selectedId, action) => ''), - TypedReducer( + TypedReducer( (selectedId, action) => ''), - TypedReducer( + TypedReducer( (selectedId, action) => ''), - TypedReducer( + TypedReducer( (selectedId, action) => ''), - TypedReducer( + TypedReducer( (selectedId, action) => ''), - TypedReducer( + TypedReducer( (selectedId, action) => action.clearSelection ? '' : action.entityType == EntityType.transactionRule @@ -79,38 +79,38 @@ Reducer selectedIdReducer = combineReducers([ : selectedId), ]); -final editingReducer = combineReducers([ - TypedReducer( +final editingReducer = combineReducers([ + TypedReducer( _updateEditing), - TypedReducer( + TypedReducer( _updateEditing), - TypedReducer( + TypedReducer( (transactionRules, action) { return action.transactionRules[0]; }), - TypedReducer( + TypedReducer( (transactionRules, action) { return action.transactionRules[0]; }), - TypedReducer( + TypedReducer( (transactionRules, action) { return action.transactionRules[0]; }), - TypedReducer(_updateEditing), - TypedReducer( + TypedReducer(_updateEditing), + TypedReducer( (transactionRule, action) { return action.transactionRule.rebuild((b) => b..isChanged = true); }), - TypedReducer(_clearEditing), + TypedReducer(_clearEditing), ]); TransactionRuleEntity _clearEditing( - TransactionRuleEntity transactionRule, dynamic action) { + TransactionRuleEntity? transactionRule, dynamic action) { return TransactionRuleEntity(); } -TransactionRuleEntity _updateEditing( - TransactionRuleEntity transactionRule, dynamic action) { +TransactionRuleEntity? _updateEditing( + TransactionRuleEntity? transactionRule, dynamic action) { return action.transactionRule; } @@ -193,7 +193,7 @@ ListUIState _filterTransactionRules( ListUIState _sortTransactionRules( ListUIState transactionRuleListState, SortTransactionRules action) { return transactionRuleListState.rebuild((b) => b - ..sortAscending = b.sortField != action.field || !b.sortAscending + ..sortAscending = b.sortField != action.field || !b.sortAscending! ..sortField = action.field); } @@ -204,13 +204,13 @@ ListUIState _startListMultiselect( ListUIState _addToListMultiselect( ListUIState productListState, AddToTransactionRuleMultiselect action) { - return productListState.rebuild((b) => b..selectedIds.add(action.entity.id)); + return productListState.rebuild((b) => b..selectedIds.add(action.entity!.id)); } ListUIState _removeFromListMultiselect( ListUIState productListState, RemoveFromTransactionRuleMultiselect action) { return productListState - .rebuild((b) => b..selectedIds.remove(action.entity.id)); + .rebuild((b) => b..selectedIds.remove(action.entity!.id)); } ListUIState _clearListMultiselect( @@ -295,6 +295,6 @@ TransactionRuleState _setLoadedTransactionRules( TransactionRuleState _setLoadedCompany( TransactionRuleState transactionRuleState, LoadCompanySuccess action) { - final company = action.userCompany.company; + final company = action.userCompany.company!; return transactionRuleState.loadTransactionRules(company.transactionRules); } diff --git a/lib/redux/transaction_rule/transaction_rule_selectors.dart b/lib/redux/transaction_rule/transaction_rule_selectors.dart index 67264b1d2..0e47274a9 100644 --- a/lib/redux/transaction_rule/transaction_rule_selectors.dart +++ b/lib/redux/transaction_rule/transaction_rule_selectors.dart @@ -21,7 +21,7 @@ List dropdownTransactionRulesSelector( BuiltMap userMap, String clientId) { final list = transactionRuleList.where((transactionRuleId) { - final transactionRule = transactionRuleMap[transactionRuleId]; + final transactionRule = transactionRuleMap[transactionRuleId]!; /* if (clientId != null && clientId > 0 && transactionRule.clientId != clientId) { return false; @@ -31,7 +31,7 @@ List dropdownTransactionRulesSelector( }).toList(); list.sort((transactionRuleAId, transactionRuleBId) { - final transactionRuleA = transactionRuleMap[transactionRuleAId]; + final transactionRuleA = transactionRuleMap[transactionRuleAId]!; final transactionRuleB = transactionRuleMap[transactionRuleBId]; return transactionRuleA.compareTo( transactionRuleB, TransactionRuleFields.name, true); @@ -41,7 +41,7 @@ List dropdownTransactionRulesSelector( } var memoizedFilteredTransactionRuleList = memo4((SelectionState selectionState, - BuiltMap transactionRuleMap, + BuiltMap transactionRuleMap, BuiltList transactionRuleList, ListUIState transactionRuleListState) => filteredTransactionRulesSelector(selectionState, transactionRuleMap, @@ -49,7 +49,7 @@ var memoizedFilteredTransactionRuleList = memo4((SelectionState selectionState, List filteredTransactionRulesSelector( SelectionState selectionState, - BuiltMap transactionRuleMap, + BuiltMap transactionRuleMap, BuiltList transactionRuleList, ListUIState transactionRuleListState) { final filterEntityId = selectionState.filterEntityId; @@ -57,11 +57,11 @@ List filteredTransactionRulesSelector( final list = transactionRuleList.where((transactionRuleId) { final transactionRule = transactionRuleMap[transactionRuleId]; - if (filterEntityId != null && transactionRule.id != filterEntityId) { + if (filterEntityId != null && transactionRule!.id != filterEntityId) { return false; } else {} - if (!transactionRule.matchesStates(transactionRuleListState.stateFilters)) { + if (!transactionRule!.matchesStates(transactionRuleListState.stateFilters)) { return false; } @@ -69,7 +69,7 @@ List filteredTransactionRulesSelector( }).toList(); list.sort((transactionRuleAId, transactionRuleBId) { - final transactionRuleA = transactionRuleMap[transactionRuleAId]; + final transactionRuleA = transactionRuleMap[transactionRuleAId]!; final transactionRuleB = transactionRuleMap[transactionRuleBId]; return transactionRuleA.compareTo( transactionRuleB, @@ -81,23 +81,23 @@ List filteredTransactionRulesSelector( } var memoizedTransactionStatsForTransactionRule = memo2( - (String userId, BuiltMap transactionMap) => + (String userId, BuiltMap transactionMap) => transactionStatsForTransactionRule(userId, transactionMap)); EntityStats transactionStatsForTransactionRule( String transactionRuleId, - BuiltMap transactionMap, + BuiltMap transactionMap, ) { int countActive = 0; int countArchived = 0; double total = 0; - String currencyId; + String? currencyId; transactionMap.forEach((transactionId, transaction) { - if (transaction.transactionRuleId == transactionRuleId) { + if (transaction!.transactionRuleId == transactionRuleId) { if (transaction.isActive) { countActive++; - } else if (transaction.isDeleted) { + } else if (transaction.isDeleted!) { countArchived++; } diff --git a/lib/redux/transaction_rule/transaction_rule_state.dart b/lib/redux/transaction_rule/transaction_rule_state.dart index 7b0a604df..fa554096a 100644 --- a/lib/redux/transaction_rule/transaction_rule_state.dart +++ b/lib/redux/transaction_rule/transaction_rule_state.dart @@ -23,10 +23,10 @@ abstract class TransactionRuleState @memoized int get hashCode; - BuiltMap get map; + BuiltMap get map; BuiltList get list; - TransactionRuleEntity get(String transactionRuleId) { + TransactionRuleEntity? get(String transactionRuleId) { if (map.containsKey(transactionRuleId)) { return map[transactionRuleId]; } else { @@ -36,7 +36,7 @@ abstract class TransactionRuleState TransactionRuleState loadTransactionRules( BuiltList clients) { - final map = Map.fromIterable( + final map = Map.fromIterable( clients, key: (dynamic item) => item.id, value: (dynamic item) => item, @@ -54,7 +54,7 @@ abstract class TransactionRuleState abstract class TransactionRuleUIState extends Object with EntityUIState implements Built { - factory TransactionRuleUIState(PrefStateSortField sortField) { + factory TransactionRuleUIState(PrefStateSortField? sortField) { return _$TransactionRuleUIState._( listUIState: ListUIState(sortField?.field ?? TransactionRuleFields.name, sortAscending: sortField?.ascending), @@ -69,14 +69,13 @@ abstract class TransactionRuleUIState extends Object @memoized int get hashCode; - @nullable - TransactionRuleEntity get editing; + TransactionRuleEntity? get editing; @override - bool get isCreatingNew => editing.isNew; + bool get isCreatingNew => editing!.isNew; @override - String get editingId => editing.id; + String get editingId => editing!.id; static Serializer get serializer => _$transactionRuleUIStateSerializer; diff --git a/lib/redux/transaction_rule/transaction_rule_state.g.dart b/lib/redux/transaction_rule/transaction_rule_state.g.dart index e98b1fafa..ad681e8f4 100644 --- a/lib/redux/transaction_rule/transaction_rule_state.g.dart +++ b/lib/redux/transaction_rule/transaction_rule_state.g.dart @@ -22,15 +22,15 @@ class _$TransactionRuleStateSerializer final String wireName = 'TransactionRuleState'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, TransactionRuleState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'map', serializers.serialize(object.map, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(TransactionRuleEntity) + const FullType.nullable(String), + const FullType.nullable(TransactionRuleEntity) ])), 'list', serializers.serialize(object.list, @@ -43,28 +43,28 @@ class _$TransactionRuleStateSerializer @override TransactionRuleState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TransactionRuleStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'map': result.map.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(TransactionRuleEntity) - ]))); + const FullType.nullable(String), + const FullType.nullable(TransactionRuleEntity) + ]))!); break; case 'list': result.list.replace(serializers.deserialize(value, - specifiedType: - const FullType(BuiltList, const [const FullType(String)])) - as BuiltList); + specifiedType: const FullType( + BuiltList, const [const FullType(String)]))! + as BuiltList); break; } } @@ -84,10 +84,10 @@ class _$TransactionRuleUIStateSerializer final String wireName = 'TransactionRuleUIState'; @override - Iterable serialize( + Iterable serialize( Serializers serializers, TransactionRuleUIState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'listUIState', serializers.serialize(object.listUIState, specifiedType: const FullType(ListUIState)), @@ -95,7 +95,7 @@ class _$TransactionRuleUIStateSerializer serializers.serialize(object.tabIndex, specifiedType: const FullType(int)), ]; - Object value; + Object? value; value = object.editing; if (value != null) { result @@ -122,36 +122,36 @@ class _$TransactionRuleUIStateSerializer @override TransactionRuleUIState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new TransactionRuleUIStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'editing': result.editing.replace(serializers.deserialize(value, - specifiedType: const FullType(TransactionRuleEntity)) + specifiedType: const FullType(TransactionRuleEntity))! as TransactionRuleEntity); break; case 'listUIState': result.listUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(ListUIState)) as ListUIState); + specifiedType: const FullType(ListUIState))! as ListUIState); break; case 'selectedId': result.selectedId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'forceSelected': result.forceSelected = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'tabIndex': result.tabIndex = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; } } @@ -162,15 +162,16 @@ class _$TransactionRuleUIStateSerializer class _$TransactionRuleState extends TransactionRuleState { @override - final BuiltMap map; + final BuiltMap map; @override final BuiltList list; factory _$TransactionRuleState( - [void Function(TransactionRuleStateBuilder) updates]) => + [void Function(TransactionRuleStateBuilder)? updates]) => (new TransactionRuleStateBuilder()..update(updates))._build(); - _$TransactionRuleState._({this.map, this.list}) : super._() { + _$TransactionRuleState._({required this.map, required this.list}) + : super._() { BuiltValueNullFieldError.checkNotNull(map, r'TransactionRuleState', 'map'); BuiltValueNullFieldError.checkNotNull( list, r'TransactionRuleState', 'list'); @@ -193,10 +194,10 @@ class _$TransactionRuleState extends TransactionRuleState { list == other.list; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, map.hashCode); _$hash = $jc(_$hash, list.hashCode); @@ -215,16 +216,17 @@ class _$TransactionRuleState extends TransactionRuleState { class TransactionRuleStateBuilder implements Builder { - _$TransactionRuleState _$v; + _$TransactionRuleState? _$v; - MapBuilder _map; - MapBuilder get map => - _$this._map ??= new MapBuilder(); - set map(MapBuilder map) => _$this._map = map; + MapBuilder? _map; + MapBuilder get map => + _$this._map ??= new MapBuilder(); + set map(MapBuilder? map) => + _$this._map = map; - ListBuilder _list; + ListBuilder? _list; ListBuilder get list => _$this._list ??= new ListBuilder(); - set list(ListBuilder list) => _$this._list = list; + set list(ListBuilder? list) => _$this._list = list; TransactionRuleStateBuilder(); @@ -245,7 +247,7 @@ class TransactionRuleStateBuilder } @override - void update(void Function(TransactionRuleStateBuilder) updates) { + void update(void Function(TransactionRuleStateBuilder)? updates) { if (updates != null) updates(this); } @@ -258,7 +260,7 @@ class TransactionRuleStateBuilder _$result = _$v ?? new _$TransactionRuleState._(map: map.build(), list: list.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'map'; map.build(); @@ -277,30 +279,30 @@ class TransactionRuleStateBuilder class _$TransactionRuleUIState extends TransactionRuleUIState { @override - final TransactionRuleEntity editing; + final TransactionRuleEntity? editing; @override final ListUIState listUIState; @override - final String selectedId; + final String? selectedId; @override - final bool forceSelected; + final bool? forceSelected; @override final int tabIndex; @override - final Completer saveCompleter; + final Completer? saveCompleter; @override - final Completer cancelCompleter; + final Completer? cancelCompleter; factory _$TransactionRuleUIState( - [void Function(TransactionRuleUIStateBuilder) updates]) => + [void Function(TransactionRuleUIStateBuilder)? updates]) => (new TransactionRuleUIStateBuilder()..update(updates))._build(); _$TransactionRuleUIState._( {this.editing, - this.listUIState, + required this.listUIState, this.selectedId, this.forceSelected, - this.tabIndex, + required this.tabIndex, this.saveCompleter, this.cancelCompleter}) : super._() { @@ -332,10 +334,10 @@ class _$TransactionRuleUIState extends TransactionRuleUIState { cancelCompleter == other.cancelCompleter; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, editing.hashCode); _$hash = $jc(_$hash, listUIState.hashCode); @@ -364,41 +366,41 @@ class _$TransactionRuleUIState extends TransactionRuleUIState { class TransactionRuleUIStateBuilder implements Builder { - _$TransactionRuleUIState _$v; + _$TransactionRuleUIState? _$v; - TransactionRuleEntityBuilder _editing; + TransactionRuleEntityBuilder? _editing; TransactionRuleEntityBuilder get editing => _$this._editing ??= new TransactionRuleEntityBuilder(); - set editing(TransactionRuleEntityBuilder editing) => + set editing(TransactionRuleEntityBuilder? editing) => _$this._editing = editing; - ListUIStateBuilder _listUIState; + ListUIStateBuilder? _listUIState; ListUIStateBuilder get listUIState => _$this._listUIState ??= new ListUIStateBuilder(); - set listUIState(ListUIStateBuilder listUIState) => + set listUIState(ListUIStateBuilder? listUIState) => _$this._listUIState = listUIState; - String _selectedId; - String get selectedId => _$this._selectedId; - set selectedId(String selectedId) => _$this._selectedId = selectedId; + String? _selectedId; + String? get selectedId => _$this._selectedId; + set selectedId(String? selectedId) => _$this._selectedId = selectedId; - bool _forceSelected; - bool get forceSelected => _$this._forceSelected; - set forceSelected(bool forceSelected) => + bool? _forceSelected; + bool? get forceSelected => _$this._forceSelected; + set forceSelected(bool? forceSelected) => _$this._forceSelected = forceSelected; - int _tabIndex; - int get tabIndex => _$this._tabIndex; - set tabIndex(int tabIndex) => _$this._tabIndex = tabIndex; + int? _tabIndex; + int? get tabIndex => _$this._tabIndex; + set tabIndex(int? tabIndex) => _$this._tabIndex = tabIndex; - Completer _saveCompleter; - Completer get saveCompleter => _$this._saveCompleter; - set saveCompleter(Completer saveCompleter) => + Completer? _saveCompleter; + Completer? get saveCompleter => _$this._saveCompleter; + set saveCompleter(Completer? saveCompleter) => _$this._saveCompleter = saveCompleter; - Completer _cancelCompleter; - Completer get cancelCompleter => _$this._cancelCompleter; - set cancelCompleter(Completer cancelCompleter) => + Completer? _cancelCompleter; + Completer? get cancelCompleter => _$this._cancelCompleter; + set cancelCompleter(Completer? cancelCompleter) => _$this._cancelCompleter = cancelCompleter; TransactionRuleUIStateBuilder(); @@ -425,7 +427,7 @@ class TransactionRuleUIStateBuilder } @override - void update(void Function(TransactionRuleUIStateBuilder) updates) { + void update(void Function(TransactionRuleUIStateBuilder)? updates) { if (updates != null) updates(this); } @@ -446,7 +448,7 @@ class TransactionRuleUIStateBuilder saveCompleter: saveCompleter, cancelCompleter: cancelCompleter); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'editing'; _editing?.build(); diff --git a/lib/redux/ui/entity_ui_state.dart b/lib/redux/ui/entity_ui_state.dart index d0ed88a4f..d2f97e976 100644 --- a/lib/redux/ui/entity_ui_state.dart +++ b/lib/redux/ui/entity_ui_state.dart @@ -15,19 +15,15 @@ abstract class EntityUIState { ListUIState get listUIState; - @nullable - String get selectedId; + String? get selectedId; - @nullable - bool get forceSelected; + bool? get forceSelected; int get tabIndex; - @nullable @BuiltValueField(serialize: false) - Completer get saveCompleter; + Completer? get saveCompleter; - @nullable @BuiltValueField(serialize: false) - Completer get cancelCompleter; + Completer? get cancelCompleter; } diff --git a/lib/redux/ui/list_ui_state.dart b/lib/redux/ui/list_ui_state.dart index 7b5d28fc5..e0dde580c 100644 --- a/lib/redux/ui/list_ui_state.dart +++ b/lib/redux/ui/list_ui_state.dart @@ -9,7 +9,7 @@ import 'package:invoiceninja_flutter/data/models/models.dart'; part 'list_ui_state.g.dart'; abstract class ListUIState implements Built { - factory ListUIState(String sortField, {bool sortAscending}) { + factory ListUIState(String sortField, {bool? sortAscending}) { return _$ListUIState._( filterClearedAt: 0, sortField: sortField, @@ -43,8 +43,7 @@ abstract class ListUIState implements Built { sortAscending.hashCode ^ sortField.hashCode; - @nullable - String get filter; + String? get filter; int get filterClearedAt; @@ -56,7 +55,7 @@ abstract class ListUIState implements Built { BuiltList get statusFilters; - BuiltList getCustomFilters(int fieldNumber) { + BuiltList? getCustomFilters(int fieldNumber) { switch (fieldNumber) { case 1: return custom1Filters; @@ -92,15 +91,14 @@ abstract class ListUIState implements Built { bool get hasCustom4Filters => custom4Filters.isNotEmpty; - @nullable - BuiltList get selectedIds; + BuiltList? get selectedIds; bool isInMultiselect() { return selectedIds != null; } bool isSelected(String id) { - return selectedIds != null && selectedIds.contains(id); + return selectedIds != null && selectedIds!.contains(id); } //factory EntityUIState([void updates(EntityUIStateBuilder b)]) = _$listUIState; diff --git a/lib/redux/ui/list_ui_state.g.dart b/lib/redux/ui/list_ui_state.g.dart index eecdc1c9d..de23daa2f 100644 --- a/lib/redux/ui/list_ui_state.g.dart +++ b/lib/redux/ui/list_ui_state.g.dart @@ -15,9 +15,9 @@ class _$ListUIStateSerializer implements StructuredSerializer { final String wireName = 'ListUIState'; @override - Iterable serialize(Serializers serializers, ListUIState object, + Iterable serialize(Serializers serializers, ListUIState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'filterClearedAt', serializers.serialize(object.filterClearedAt, specifiedType: const FullType(int)), @@ -52,7 +52,7 @@ class _$ListUIStateSerializer implements StructuredSerializer { specifiedType: const FullType(BuiltList, const [const FullType(String)])), ]; - Object value; + Object? value; value = object.filter; if (value != null) { result @@ -72,73 +72,73 @@ class _$ListUIStateSerializer implements StructuredSerializer { } @override - ListUIState deserialize(Serializers serializers, Iterable serialized, + ListUIState deserialize(Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new ListUIStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'filter': result.filter = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'filterClearedAt': result.filterClearedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'sortField': result.sortField = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'sortAscending': result.sortAscending = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'stateFilters': result.stateFilters.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(EntityState)])) - as BuiltList); + BuiltList, const [const FullType(EntityState)]))! + as BuiltList); break; case 'statusFilters': result.statusFilters.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(EntityStatus)])) - as BuiltList); + BuiltList, const [const FullType(EntityStatus)]))! + as BuiltList); break; case 'custom1Filters': result.custom1Filters.replace(serializers.deserialize(value, - specifiedType: - const FullType(BuiltList, const [const FullType(String)])) - as BuiltList); + specifiedType: const FullType( + BuiltList, const [const FullType(String)]))! + as BuiltList); break; case 'custom2Filters': result.custom2Filters.replace(serializers.deserialize(value, - specifiedType: - const FullType(BuiltList, const [const FullType(String)])) - as BuiltList); + specifiedType: const FullType( + BuiltList, const [const FullType(String)]))! + as BuiltList); break; case 'custom3Filters': result.custom3Filters.replace(serializers.deserialize(value, - specifiedType: - const FullType(BuiltList, const [const FullType(String)])) - as BuiltList); + specifiedType: const FullType( + BuiltList, const [const FullType(String)]))! + as BuiltList); break; case 'custom4Filters': result.custom4Filters.replace(serializers.deserialize(value, - specifiedType: - const FullType(BuiltList, const [const FullType(String)])) - as BuiltList); + specifiedType: const FullType( + BuiltList, const [const FullType(String)]))! + as BuiltList); break; case 'selectedIds': result.selectedIds.replace(serializers.deserialize(value, - specifiedType: - const FullType(BuiltList, const [const FullType(String)])) - as BuiltList); + specifiedType: const FullType( + BuiltList, const [const FullType(String)]))! + as BuiltList); break; } } @@ -149,7 +149,7 @@ class _$ListUIStateSerializer implements StructuredSerializer { class _$ListUIState extends ListUIState { @override - final String filter; + final String? filter; @override final int filterClearedAt; @override @@ -169,22 +169,22 @@ class _$ListUIState extends ListUIState { @override final BuiltList custom4Filters; @override - final BuiltList selectedIds; + final BuiltList? selectedIds; - factory _$ListUIState([void Function(ListUIStateBuilder) updates]) => + factory _$ListUIState([void Function(ListUIStateBuilder)? updates]) => (new ListUIStateBuilder()..update(updates))._build(); _$ListUIState._( {this.filter, - this.filterClearedAt, - this.sortField, - this.sortAscending, - this.stateFilters, - this.statusFilters, - this.custom1Filters, - this.custom2Filters, - this.custom3Filters, - this.custom4Filters, + required this.filterClearedAt, + required this.sortField, + required this.sortAscending, + required this.stateFilters, + required this.statusFilters, + required this.custom1Filters, + required this.custom2Filters, + required this.custom3Filters, + required this.custom4Filters, this.selectedIds}) : super._() { BuiltValueNullFieldError.checkNotNull( @@ -231,10 +231,10 @@ class _$ListUIState extends ListUIState { selectedIds == other.selectedIds; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, filter.hashCode); _$hash = $jc(_$hash, filterClearedAt.hashCode); @@ -270,66 +270,66 @@ class _$ListUIState extends ListUIState { } class ListUIStateBuilder implements Builder { - _$ListUIState _$v; + _$ListUIState? _$v; - String _filter; - String get filter => _$this._filter; - set filter(String filter) => _$this._filter = filter; + String? _filter; + String? get filter => _$this._filter; + set filter(String? filter) => _$this._filter = filter; - int _filterClearedAt; - int get filterClearedAt => _$this._filterClearedAt; - set filterClearedAt(int filterClearedAt) => + int? _filterClearedAt; + int? get filterClearedAt => _$this._filterClearedAt; + set filterClearedAt(int? filterClearedAt) => _$this._filterClearedAt = filterClearedAt; - String _sortField; - String get sortField => _$this._sortField; - set sortField(String sortField) => _$this._sortField = sortField; + String? _sortField; + String? get sortField => _$this._sortField; + set sortField(String? sortField) => _$this._sortField = sortField; - bool _sortAscending; - bool get sortAscending => _$this._sortAscending; - set sortAscending(bool sortAscending) => + bool? _sortAscending; + bool? get sortAscending => _$this._sortAscending; + set sortAscending(bool? sortAscending) => _$this._sortAscending = sortAscending; - ListBuilder _stateFilters; + ListBuilder? _stateFilters; ListBuilder get stateFilters => _$this._stateFilters ??= new ListBuilder(); - set stateFilters(ListBuilder stateFilters) => + set stateFilters(ListBuilder? stateFilters) => _$this._stateFilters = stateFilters; - ListBuilder _statusFilters; + ListBuilder? _statusFilters; ListBuilder get statusFilters => _$this._statusFilters ??= new ListBuilder(); - set statusFilters(ListBuilder statusFilters) => + set statusFilters(ListBuilder? statusFilters) => _$this._statusFilters = statusFilters; - ListBuilder _custom1Filters; + ListBuilder? _custom1Filters; ListBuilder get custom1Filters => _$this._custom1Filters ??= new ListBuilder(); - set custom1Filters(ListBuilder custom1Filters) => + set custom1Filters(ListBuilder? custom1Filters) => _$this._custom1Filters = custom1Filters; - ListBuilder _custom2Filters; + ListBuilder? _custom2Filters; ListBuilder get custom2Filters => _$this._custom2Filters ??= new ListBuilder(); - set custom2Filters(ListBuilder custom2Filters) => + set custom2Filters(ListBuilder? custom2Filters) => _$this._custom2Filters = custom2Filters; - ListBuilder _custom3Filters; + ListBuilder? _custom3Filters; ListBuilder get custom3Filters => _$this._custom3Filters ??= new ListBuilder(); - set custom3Filters(ListBuilder custom3Filters) => + set custom3Filters(ListBuilder? custom3Filters) => _$this._custom3Filters = custom3Filters; - ListBuilder _custom4Filters; + ListBuilder? _custom4Filters; ListBuilder get custom4Filters => _$this._custom4Filters ??= new ListBuilder(); - set custom4Filters(ListBuilder custom4Filters) => + set custom4Filters(ListBuilder? custom4Filters) => _$this._custom4Filters = custom4Filters; - ListBuilder _selectedIds; + ListBuilder? _selectedIds; ListBuilder get selectedIds => _$this._selectedIds ??= new ListBuilder(); - set selectedIds(ListBuilder selectedIds) => + set selectedIds(ListBuilder? selectedIds) => _$this._selectedIds = selectedIds; ListUIStateBuilder(); @@ -360,7 +360,7 @@ class ListUIStateBuilder implements Builder { } @override - void update(void Function(ListUIStateBuilder) updates) { + void update(void Function(ListUIStateBuilder)? updates) { if (updates != null) updates(this); } @@ -387,7 +387,7 @@ class ListUIStateBuilder implements Builder { custom4Filters: custom4Filters.build(), selectedIds: _selectedIds?.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'stateFilters'; stateFilters.build(); diff --git a/lib/redux/ui/pref_reducer.dart b/lib/redux/ui/pref_reducer.dart index 4409044e4..e71de4f58 100644 --- a/lib/redux/ui/pref_reducer.dart +++ b/lib/redux/ui/pref_reducer.dart @@ -3,6 +3,7 @@ import 'dart:math'; // Package imports: import 'package:built_collection/built_collection.dart'; +import 'package:collection/collection.dart' show IterableExtension; import 'package:invoiceninja_flutter/redux/document/document_actions.dart'; import 'package:redux/redux.dart'; @@ -188,9 +189,9 @@ Reducer> sortFieldsReducer = Reducer> sidebarEditorReducer = combineReducers([ TypedReducer, ToggleEditorLayout>((value, action) { - final entityType = action.entityType.baseType; + final entityType = action.entityType!.baseType; if (value.containsKey(entityType)) { - return value.rebuild((b) => b..[entityType] = !value[entityType]); + return value.rebuild((b) => b..[entityType] = !value[entityType]!); } else { return value.rebuild((b) => b..[entityType] = true); } @@ -199,9 +200,9 @@ Reducer> sidebarEditorReducer = combineReducers([ Reducer> sidebarViewerReducer = combineReducers([ TypedReducer, ToggleViewerLayout>((value, action) { - final entityType = action.entityType.baseType; + final entityType = action.entityType!.baseType; if (value.containsKey(entityType)) { - return value.rebuild((b) => b..[entityType] = !value[entityType]); + return value.rebuild((b) => b..[entityType] = !value[entityType]!); } else { return value.rebuild((b) => b..[entityType] = true); } @@ -303,8 +304,8 @@ Reducer layoutReducer = combineReducers([ }), ]); -Reducer moduleLayoutReducer = combineReducers([ - TypedReducer((moduleLayout, action) { +Reducer moduleLayoutReducer = combineReducers([ + TypedReducer((moduleLayout, action) { if (action.moduleLayout != null) { return action.moduleLayout; } else if (action.appLayout != null) { @@ -315,7 +316,7 @@ Reducer moduleLayoutReducer = combineReducers([ return moduleLayout; }), - TypedReducer((moduleLayout, action) { + TypedReducer((moduleLayout, action) { if (moduleLayout == ModuleLayout.list) { return ModuleLayout.table; } else { @@ -509,11 +510,11 @@ Reducer selectedCompanyIndexReducer = combineReducers([ }), ]); -CompanyPrefState companyPrefReducer(CompanyPrefState state, dynamic action) { +CompanyPrefState companyPrefReducer(CompanyPrefState? state, dynamic action) { state ??= CompanyPrefState(); return state.rebuild( - (b) => b..historyList.replace(historyReducer(state.historyList, action))); + (b) => b..historyList.replace(historyReducer(state!.historyList, action))); } Reducer> historyReducer = combineReducers([ @@ -584,7 +585,7 @@ Reducer> historyReducer = combineReducers([ _addToHistory( historyList, HistoryRecord( - id: action.invoice.id, entityType: EntityType.invoice))), + id: action.invoice!.id, entityType: EntityType.invoice))), TypedReducer, ViewPayment>((historyList, action) => _addToHistory(historyList, HistoryRecord(id: action.paymentId, entityType: EntityType.payment))), @@ -604,7 +605,7 @@ Reducer> historyReducer = combineReducers([ HistoryRecord(entityType: EntityType.quote, page: action.page))), TypedReducer, EditQuote>((historyList, action) => _addToHistory(historyList, - HistoryRecord(id: action.quote.id, entityType: EntityType.quote))), + HistoryRecord(id: action.quote!.id, entityType: EntityType.quote))), TypedReducer, ViewTask>((historyList, action) => _addToHistory(historyList, HistoryRecord(id: action.taskId, entityType: EntityType.task))), @@ -613,7 +614,7 @@ Reducer> historyReducer = combineReducers([ HistoryRecord(entityType: EntityType.task, page: action.page))), TypedReducer, EditTask>((historyList, action) => _addToHistory(historyList, - HistoryRecord(id: action.task.id, entityType: EntityType.task))), + HistoryRecord(id: action.task!.id, entityType: EntityType.task))), TypedReducer, ViewProject>((historyList, action) => _addToHistory(historyList, HistoryRecord(id: action.projectId, entityType: EntityType.project))), @@ -870,7 +871,7 @@ Reducer> historyReducer = combineReducers([ HistoryRecord(entityType: EntityType.credit, page: action.page))), TypedReducer, EditCredit>((historyList, action) => _addToHistory(historyList, - HistoryRecord(id: action.credit.id, entityType: EntityType.credit))), + HistoryRecord(id: action.credit!.id, entityType: EntityType.credit))), TypedReducer, ViewDocument>((historyList, action) => _addToHistory( historyList, @@ -883,20 +884,20 @@ Reducer> historyReducer = combineReducers([ _addToHistory( historyList, HistoryRecord( - id: action.document.id, entityType: EntityType.document))), + id: action.document!.id, entityType: EntityType.document))), TypedReducer, FilterByEntity>((historyList, action) { if (action.clearSelection) { return historyList; } return _addToHistory(historyList, - HistoryRecord(id: action.entityId, entityType: action.entityType)); + HistoryRecord(id: action.entityId, entityType: action.entityType!)); }), ]); BuiltList _addToHistory( BuiltList list, HistoryRecord record) { // don't track new records - if (record.id != null && record.id.startsWith('-')) { + if (record.id != null && record.id!.startsWith('-')) { return list; } @@ -907,7 +908,7 @@ BuiltList _addToHistory( } final old = - list.firstWhere((item) => item.matchesRecord(record), orElse: () => null); + list.firstWhereOrNull((item) => item.matchesRecord(record)); if (old != null) { return list.rebuild((b) => b diff --git a/lib/redux/ui/pref_state.dart b/lib/redux/ui/pref_state.dart index d11f3ce2d..9ed4e2bdb 100644 --- a/lib/redux/ui/pref_state.dart +++ b/lib/redux/ui/pref_state.dart @@ -182,7 +182,7 @@ abstract class PrefState implements Built { ? enableDarkModeSystem : darkModeType == kBrightnessDark; - ColorTheme get colorThemeModel { + ColorTheme? get colorThemeModel { final theme = enableDarkMode ? darkColorTheme : colorTheme; if (colorThemesMap.containsKey(theme)) { @@ -201,7 +201,7 @@ abstract class PrefState implements Built { bool get isDesktop => appLayout == AppLayout.desktop; - bool isEditorFullScreen(EntityType entityType) { + bool isEditorFullScreen(EntityType? entityType) { if (!isDesktop) { return false; } @@ -211,10 +211,10 @@ abstract class PrefState implements Built { return false; } - return !(useSidebarEditor[entityType.baseType] ?? false); + return !(useSidebarEditor[entityType!.baseType] ?? false); } - bool isViewerFullScreen(EntityType entityType) { + bool isViewerFullScreen(EntityType? entityType) { if (!isDesktop || entityType == null) { return false; } @@ -316,7 +316,7 @@ abstract class PrefStateSortField abstract class CompanyPrefState implements Built { factory CompanyPrefState({ - String accentColor, + String? accentColor, }) { return _$CompanyPrefState._( historyList: BuiltList(), @@ -391,9 +391,9 @@ class AppSidebarMode extends EnumClass { abstract class HistoryRecord implements Built { factory HistoryRecord({ - @required EntityType entityType, - String id, - int page, + required EntityType entityType, + String? id, + int? page, }) { return _$HistoryRecord._( id: id, @@ -409,13 +409,11 @@ abstract class HistoryRecord @memoized int get hashCode; - @nullable - String get id; + String? get id; EntityType get entityType; - @nullable - int get page; + int? get page; int get timestamp; @@ -424,7 +422,7 @@ abstract class HistoryRecord bool matchesRecord(HistoryRecord record) => isEqualTo(entityId: record.id, entityType: record.entityType); - bool isEqualTo({EntityType entityType, String entityId}) => + bool isEqualTo({EntityType? entityType, String? entityId}) => entityType == this.entityType && (entityId ?? '') == (id ?? ''); static Serializer get serializer => _$historyRecordSerializer; diff --git a/lib/redux/ui/pref_state.g.dart b/lib/redux/ui/pref_state.g.dart index 4b1db9d2e..891103286 100644 --- a/lib/redux/ui/pref_state.g.dart +++ b/lib/redux/ui/pref_state.g.dart @@ -110,9 +110,9 @@ class _$PrefStateSerializer implements StructuredSerializer { final String wireName = 'PrefState'; @override - Iterable serialize(Serializers serializers, PrefState object, + Iterable serialize(Serializers serializers, PrefState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'appLayout', serializers.serialize(object.appLayout, specifiedType: const FullType(AppLayout)), @@ -247,183 +247,183 @@ class _$PrefStateSerializer implements StructuredSerializer { } @override - PrefState deserialize(Serializers serializers, Iterable serialized, + PrefState deserialize(Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new PrefStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'appLayout': result.appLayout = serializers.deserialize(value, - specifiedType: const FullType(AppLayout)) as AppLayout; + specifiedType: const FullType(AppLayout))! as AppLayout; break; case 'moduleLayout': result.moduleLayout = serializers.deserialize(value, - specifiedType: const FullType(ModuleLayout)) as ModuleLayout; + specifiedType: const FullType(ModuleLayout))! as ModuleLayout; break; case 'menuSidebarMode': result.menuSidebarMode = serializers.deserialize(value, - specifiedType: const FullType(AppSidebarMode)) as AppSidebarMode; + specifiedType: const FullType(AppSidebarMode))! as AppSidebarMode; break; case 'historySidebarMode': result.historySidebarMode = serializers.deserialize(value, - specifiedType: const FullType(AppSidebarMode)) as AppSidebarMode; + specifiedType: const FullType(AppSidebarMode))! as AppSidebarMode; break; case 'useSidebarEditor': result.useSidebarEditor.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, - const [const FullType(EntityType), const FullType(bool)]))); + const [const FullType(EntityType), const FullType(bool)]))!); break; case 'useSidebarViewer': result.useSidebarViewer.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, - const [const FullType(EntityType), const FullType(bool)]))); + const [const FullType(EntityType), const FullType(bool)]))!); break; case 'customColors': result.customColors.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(String)]))); + const [const FullType(String), const FullType(String)]))!); break; case 'darkCustomColors': result.darkCustomColors.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(String)]))); + const [const FullType(String), const FullType(String)]))!); break; case 'statementIncludes': result.statementIncludes.replace(serializers.deserialize(value, - specifiedType: - const FullType(BuiltList, const [const FullType(String)])) - as BuiltList); + specifiedType: const FullType( + BuiltList, const [const FullType(String)]))! + as BuiltList); break; case 'isPreviewVisible': result.isPreviewVisible = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'isMenuVisible': result.isMenuVisible = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'showKanban': result.showKanban = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'showPdfPreview': result.showPdfPreview = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'showPdfPreviewSideBySide': result.showPdfPreviewSideBySide = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'enableTouchEvents': result.enableTouchEvents = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'enableFlexibleSearch': result.enableFlexibleSearch = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'isHistoryVisible': result.isHistoryVisible = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'darkModeType': result.darkModeType = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'enableDarkModeSystem': result.enableDarkModeSystem = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'isFilterVisible': result.isFilterVisible = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'persistData': result.persistData = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'persistUI': result.persistUI = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'longPressSelectionIsDefault': result.longPressSelectionIsDefault = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'requireAuthentication': result.requireAuthentication = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'tapSelectedToEdit': result.tapSelectedToEdit = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'rowsPerPage': result.rowsPerPage = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'enableTooltips': result.enableTooltips = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'colorTheme': result.colorTheme = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'darkColorTheme': result.darkColorTheme = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'hideDesktopWarning': result.hideDesktopWarning = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'hideGatewayWarning': result.hideGatewayWarning = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'hideReviewApp': result.hideReviewApp = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'hideOneYearReviewApp': result.hideOneYearReviewApp = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'hideTwoYearReviewApp': result.hideTwoYearReviewApp = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'editAfterSaving': result.editAfterSaving = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'enableNativeBrowser': result.enableNativeBrowser = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; case 'textScaleFactor': result.textScaleFactor = serializers.deserialize(value, - specifiedType: const FullType(double)) as double; + specifiedType: const FullType(double))! as double; break; case 'sortFields': result.sortFields.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ const FullType(EntityType), const FullType(PrefStateSortField) - ]))); + ]))!); break; case 'companyPrefs': result.companyPrefs.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ const FullType(String), const FullType(CompanyPrefState) - ]))); + ]))!); break; } } @@ -440,9 +440,10 @@ class _$PrefStateSortFieldSerializer final String wireName = 'PrefStateSortField'; @override - Iterable serialize(Serializers serializers, PrefStateSortField object, + Iterable serialize( + Serializers serializers, PrefStateSortField object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'field', serializers.serialize(object.field, specifiedType: const FullType(String)), @@ -456,23 +457,23 @@ class _$PrefStateSortFieldSerializer @override PrefStateSortField deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new PrefStateSortFieldBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'field': result.field = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'ascending': result.ascending = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool))! as bool; break; } } @@ -489,9 +490,9 @@ class _$CompanyPrefStateSerializer final String wireName = 'CompanyPrefState'; @override - Iterable serialize(Serializers serializers, CompanyPrefState object, + Iterable serialize(Serializers serializers, CompanyPrefState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'historyList', serializers.serialize(object.historyList, specifiedType: @@ -503,21 +504,21 @@ class _$CompanyPrefStateSerializer @override CompanyPrefState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new CompanyPrefStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'historyList': result.historyList.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(HistoryRecord)])) - as BuiltList); + BuiltList, const [const FullType(HistoryRecord)]))! + as BuiltList); break; } } @@ -602,9 +603,9 @@ class _$HistoryRecordSerializer implements StructuredSerializer { final String wireName = 'HistoryRecord'; @override - Iterable serialize(Serializers serializers, HistoryRecord object, + Iterable serialize(Serializers serializers, HistoryRecord object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'entityType', serializers.serialize(object.entityType, specifiedType: const FullType(EntityType)), @@ -612,7 +613,7 @@ class _$HistoryRecordSerializer implements StructuredSerializer { serializers.serialize(object.timestamp, specifiedType: const FullType(int)), ]; - Object value; + Object? value; value = object.id; if (value != null) { result @@ -631,31 +632,31 @@ class _$HistoryRecordSerializer implements StructuredSerializer { @override HistoryRecord deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new HistoryRecordBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'id': result.id = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'entityType': result.entityType = serializers.deserialize(value, - specifiedType: const FullType(EntityType)) as EntityType; + specifiedType: const FullType(EntityType))! as EntityType; break; case 'page': result.page = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int)) as int?; break; case 'timestamp': result.timestamp = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; } } @@ -744,49 +745,49 @@ class _$PrefState extends PrefState { @override final BuiltMap companyPrefs; - factory _$PrefState([void Function(PrefStateBuilder) updates]) => + factory _$PrefState([void Function(PrefStateBuilder)? updates]) => (new PrefStateBuilder()..update(updates))._build(); _$PrefState._( - {this.appLayout, - this.moduleLayout, - this.menuSidebarMode, - this.historySidebarMode, - this.useSidebarEditor, - this.useSidebarViewer, - this.customColors, - this.darkCustomColors, - this.statementIncludes, - this.isPreviewVisible, - this.isMenuVisible, - this.showKanban, - this.showPdfPreview, - this.showPdfPreviewSideBySide, - this.enableTouchEvents, - this.enableFlexibleSearch, - this.isHistoryVisible, - this.darkModeType, - this.enableDarkModeSystem, - this.isFilterVisible, - this.persistData, - this.persistUI, - this.longPressSelectionIsDefault, - this.requireAuthentication, - this.tapSelectedToEdit, - this.rowsPerPage, - this.enableTooltips, - this.colorTheme, - this.darkColorTheme, - this.hideDesktopWarning, - this.hideGatewayWarning, - this.hideReviewApp, - this.hideOneYearReviewApp, - this.hideTwoYearReviewApp, - this.editAfterSaving, - this.enableNativeBrowser, - this.textScaleFactor, - this.sortFields, - this.companyPrefs}) + {required this.appLayout, + required this.moduleLayout, + required this.menuSidebarMode, + required this.historySidebarMode, + required this.useSidebarEditor, + required this.useSidebarViewer, + required this.customColors, + required this.darkCustomColors, + required this.statementIncludes, + required this.isPreviewVisible, + required this.isMenuVisible, + required this.showKanban, + required this.showPdfPreview, + required this.showPdfPreviewSideBySide, + required this.enableTouchEvents, + required this.enableFlexibleSearch, + required this.isHistoryVisible, + required this.darkModeType, + required this.enableDarkModeSystem, + required this.isFilterVisible, + required this.persistData, + required this.persistUI, + required this.longPressSelectionIsDefault, + required this.requireAuthentication, + required this.tapSelectedToEdit, + required this.rowsPerPage, + required this.enableTooltips, + required this.colorTheme, + required this.darkColorTheme, + required this.hideDesktopWarning, + required this.hideGatewayWarning, + required this.hideReviewApp, + required this.hideOneYearReviewApp, + required this.hideTwoYearReviewApp, + required this.editAfterSaving, + required this.enableNativeBrowser, + required this.textScaleFactor, + required this.sortFields, + required this.companyPrefs}) : super._() { BuiltValueNullFieldError.checkNotNull(appLayout, r'PrefState', 'appLayout'); BuiltValueNullFieldError.checkNotNull( @@ -918,10 +919,10 @@ class _$PrefState extends PrefState { companyPrefs == other.companyPrefs; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, appLayout.hashCode); _$hash = $jc(_$hash, moduleLayout.hashCode); @@ -1013,201 +1014,201 @@ class _$PrefState extends PrefState { } class PrefStateBuilder implements Builder { - _$PrefState _$v; + _$PrefState? _$v; - AppLayout _appLayout; - AppLayout get appLayout => _$this._appLayout; - set appLayout(AppLayout appLayout) => _$this._appLayout = appLayout; + AppLayout? _appLayout; + AppLayout? get appLayout => _$this._appLayout; + set appLayout(AppLayout? appLayout) => _$this._appLayout = appLayout; - ModuleLayout _moduleLayout; - ModuleLayout get moduleLayout => _$this._moduleLayout; - set moduleLayout(ModuleLayout moduleLayout) => + ModuleLayout? _moduleLayout; + ModuleLayout? get moduleLayout => _$this._moduleLayout; + set moduleLayout(ModuleLayout? moduleLayout) => _$this._moduleLayout = moduleLayout; - AppSidebarMode _menuSidebarMode; - AppSidebarMode get menuSidebarMode => _$this._menuSidebarMode; - set menuSidebarMode(AppSidebarMode menuSidebarMode) => + AppSidebarMode? _menuSidebarMode; + AppSidebarMode? get menuSidebarMode => _$this._menuSidebarMode; + set menuSidebarMode(AppSidebarMode? menuSidebarMode) => _$this._menuSidebarMode = menuSidebarMode; - AppSidebarMode _historySidebarMode; - AppSidebarMode get historySidebarMode => _$this._historySidebarMode; - set historySidebarMode(AppSidebarMode historySidebarMode) => + AppSidebarMode? _historySidebarMode; + AppSidebarMode? get historySidebarMode => _$this._historySidebarMode; + set historySidebarMode(AppSidebarMode? historySidebarMode) => _$this._historySidebarMode = historySidebarMode; - MapBuilder _useSidebarEditor; + MapBuilder? _useSidebarEditor; MapBuilder get useSidebarEditor => _$this._useSidebarEditor ??= new MapBuilder(); - set useSidebarEditor(MapBuilder useSidebarEditor) => + set useSidebarEditor(MapBuilder? useSidebarEditor) => _$this._useSidebarEditor = useSidebarEditor; - MapBuilder _useSidebarViewer; + MapBuilder? _useSidebarViewer; MapBuilder get useSidebarViewer => _$this._useSidebarViewer ??= new MapBuilder(); - set useSidebarViewer(MapBuilder useSidebarViewer) => + set useSidebarViewer(MapBuilder? useSidebarViewer) => _$this._useSidebarViewer = useSidebarViewer; - MapBuilder _customColors; + MapBuilder? _customColors; MapBuilder get customColors => _$this._customColors ??= new MapBuilder(); - set customColors(MapBuilder customColors) => + set customColors(MapBuilder? customColors) => _$this._customColors = customColors; - MapBuilder _darkCustomColors; + MapBuilder? _darkCustomColors; MapBuilder get darkCustomColors => _$this._darkCustomColors ??= new MapBuilder(); - set darkCustomColors(MapBuilder darkCustomColors) => + set darkCustomColors(MapBuilder? darkCustomColors) => _$this._darkCustomColors = darkCustomColors; - ListBuilder _statementIncludes; + ListBuilder? _statementIncludes; ListBuilder get statementIncludes => _$this._statementIncludes ??= new ListBuilder(); - set statementIncludes(ListBuilder statementIncludes) => + set statementIncludes(ListBuilder? statementIncludes) => _$this._statementIncludes = statementIncludes; - bool _isPreviewVisible; - bool get isPreviewVisible => _$this._isPreviewVisible; - set isPreviewVisible(bool isPreviewVisible) => + bool? _isPreviewVisible; + bool? get isPreviewVisible => _$this._isPreviewVisible; + set isPreviewVisible(bool? isPreviewVisible) => _$this._isPreviewVisible = isPreviewVisible; - bool _isMenuVisible; - bool get isMenuVisible => _$this._isMenuVisible; - set isMenuVisible(bool isMenuVisible) => + bool? _isMenuVisible; + bool? get isMenuVisible => _$this._isMenuVisible; + set isMenuVisible(bool? isMenuVisible) => _$this._isMenuVisible = isMenuVisible; - bool _showKanban; - bool get showKanban => _$this._showKanban; - set showKanban(bool showKanban) => _$this._showKanban = showKanban; + bool? _showKanban; + bool? get showKanban => _$this._showKanban; + set showKanban(bool? showKanban) => _$this._showKanban = showKanban; - bool _showPdfPreview; - bool get showPdfPreview => _$this._showPdfPreview; - set showPdfPreview(bool showPdfPreview) => + bool? _showPdfPreview; + bool? get showPdfPreview => _$this._showPdfPreview; + set showPdfPreview(bool? showPdfPreview) => _$this._showPdfPreview = showPdfPreview; - bool _showPdfPreviewSideBySide; - bool get showPdfPreviewSideBySide => _$this._showPdfPreviewSideBySide; - set showPdfPreviewSideBySide(bool showPdfPreviewSideBySide) => + bool? _showPdfPreviewSideBySide; + bool? get showPdfPreviewSideBySide => _$this._showPdfPreviewSideBySide; + set showPdfPreviewSideBySide(bool? showPdfPreviewSideBySide) => _$this._showPdfPreviewSideBySide = showPdfPreviewSideBySide; - bool _enableTouchEvents; - bool get enableTouchEvents => _$this._enableTouchEvents; - set enableTouchEvents(bool enableTouchEvents) => + bool? _enableTouchEvents; + bool? get enableTouchEvents => _$this._enableTouchEvents; + set enableTouchEvents(bool? enableTouchEvents) => _$this._enableTouchEvents = enableTouchEvents; - bool _enableFlexibleSearch; - bool get enableFlexibleSearch => _$this._enableFlexibleSearch; - set enableFlexibleSearch(bool enableFlexibleSearch) => + bool? _enableFlexibleSearch; + bool? get enableFlexibleSearch => _$this._enableFlexibleSearch; + set enableFlexibleSearch(bool? enableFlexibleSearch) => _$this._enableFlexibleSearch = enableFlexibleSearch; - bool _isHistoryVisible; - bool get isHistoryVisible => _$this._isHistoryVisible; - set isHistoryVisible(bool isHistoryVisible) => + bool? _isHistoryVisible; + bool? get isHistoryVisible => _$this._isHistoryVisible; + set isHistoryVisible(bool? isHistoryVisible) => _$this._isHistoryVisible = isHistoryVisible; - String _darkModeType; - String get darkModeType => _$this._darkModeType; - set darkModeType(String darkModeType) => _$this._darkModeType = darkModeType; + String? _darkModeType; + String? get darkModeType => _$this._darkModeType; + set darkModeType(String? darkModeType) => _$this._darkModeType = darkModeType; - bool _enableDarkModeSystem; - bool get enableDarkModeSystem => _$this._enableDarkModeSystem; - set enableDarkModeSystem(bool enableDarkModeSystem) => + bool? _enableDarkModeSystem; + bool? get enableDarkModeSystem => _$this._enableDarkModeSystem; + set enableDarkModeSystem(bool? enableDarkModeSystem) => _$this._enableDarkModeSystem = enableDarkModeSystem; - bool _isFilterVisible; - bool get isFilterVisible => _$this._isFilterVisible; - set isFilterVisible(bool isFilterVisible) => + bool? _isFilterVisible; + bool? get isFilterVisible => _$this._isFilterVisible; + set isFilterVisible(bool? isFilterVisible) => _$this._isFilterVisible = isFilterVisible; - bool _persistData; - bool get persistData => _$this._persistData; - set persistData(bool persistData) => _$this._persistData = persistData; + bool? _persistData; + bool? get persistData => _$this._persistData; + set persistData(bool? persistData) => _$this._persistData = persistData; - bool _persistUI; - bool get persistUI => _$this._persistUI; - set persistUI(bool persistUI) => _$this._persistUI = persistUI; + bool? _persistUI; + bool? get persistUI => _$this._persistUI; + set persistUI(bool? persistUI) => _$this._persistUI = persistUI; - bool _longPressSelectionIsDefault; - bool get longPressSelectionIsDefault => _$this._longPressSelectionIsDefault; - set longPressSelectionIsDefault(bool longPressSelectionIsDefault) => + bool? _longPressSelectionIsDefault; + bool? get longPressSelectionIsDefault => _$this._longPressSelectionIsDefault; + set longPressSelectionIsDefault(bool? longPressSelectionIsDefault) => _$this._longPressSelectionIsDefault = longPressSelectionIsDefault; - bool _requireAuthentication; - bool get requireAuthentication => _$this._requireAuthentication; - set requireAuthentication(bool requireAuthentication) => + bool? _requireAuthentication; + bool? get requireAuthentication => _$this._requireAuthentication; + set requireAuthentication(bool? requireAuthentication) => _$this._requireAuthentication = requireAuthentication; - bool _tapSelectedToEdit; - bool get tapSelectedToEdit => _$this._tapSelectedToEdit; - set tapSelectedToEdit(bool tapSelectedToEdit) => + bool? _tapSelectedToEdit; + bool? get tapSelectedToEdit => _$this._tapSelectedToEdit; + set tapSelectedToEdit(bool? tapSelectedToEdit) => _$this._tapSelectedToEdit = tapSelectedToEdit; - int _rowsPerPage; - int get rowsPerPage => _$this._rowsPerPage; - set rowsPerPage(int rowsPerPage) => _$this._rowsPerPage = rowsPerPage; + int? _rowsPerPage; + int? get rowsPerPage => _$this._rowsPerPage; + set rowsPerPage(int? rowsPerPage) => _$this._rowsPerPage = rowsPerPage; - bool _enableTooltips; - bool get enableTooltips => _$this._enableTooltips; - set enableTooltips(bool enableTooltips) => + bool? _enableTooltips; + bool? get enableTooltips => _$this._enableTooltips; + set enableTooltips(bool? enableTooltips) => _$this._enableTooltips = enableTooltips; - String _colorTheme; - String get colorTheme => _$this._colorTheme; - set colorTheme(String colorTheme) => _$this._colorTheme = colorTheme; + String? _colorTheme; + String? get colorTheme => _$this._colorTheme; + set colorTheme(String? colorTheme) => _$this._colorTheme = colorTheme; - String _darkColorTheme; - String get darkColorTheme => _$this._darkColorTheme; - set darkColorTheme(String darkColorTheme) => + String? _darkColorTheme; + String? get darkColorTheme => _$this._darkColorTheme; + set darkColorTheme(String? darkColorTheme) => _$this._darkColorTheme = darkColorTheme; - bool _hideDesktopWarning; - bool get hideDesktopWarning => _$this._hideDesktopWarning; - set hideDesktopWarning(bool hideDesktopWarning) => + bool? _hideDesktopWarning; + bool? get hideDesktopWarning => _$this._hideDesktopWarning; + set hideDesktopWarning(bool? hideDesktopWarning) => _$this._hideDesktopWarning = hideDesktopWarning; - bool _hideGatewayWarning; - bool get hideGatewayWarning => _$this._hideGatewayWarning; - set hideGatewayWarning(bool hideGatewayWarning) => + bool? _hideGatewayWarning; + bool? get hideGatewayWarning => _$this._hideGatewayWarning; + set hideGatewayWarning(bool? hideGatewayWarning) => _$this._hideGatewayWarning = hideGatewayWarning; - bool _hideReviewApp; - bool get hideReviewApp => _$this._hideReviewApp; - set hideReviewApp(bool hideReviewApp) => + bool? _hideReviewApp; + bool? get hideReviewApp => _$this._hideReviewApp; + set hideReviewApp(bool? hideReviewApp) => _$this._hideReviewApp = hideReviewApp; - bool _hideOneYearReviewApp; - bool get hideOneYearReviewApp => _$this._hideOneYearReviewApp; - set hideOneYearReviewApp(bool hideOneYearReviewApp) => + bool? _hideOneYearReviewApp; + bool? get hideOneYearReviewApp => _$this._hideOneYearReviewApp; + set hideOneYearReviewApp(bool? hideOneYearReviewApp) => _$this._hideOneYearReviewApp = hideOneYearReviewApp; - bool _hideTwoYearReviewApp; - bool get hideTwoYearReviewApp => _$this._hideTwoYearReviewApp; - set hideTwoYearReviewApp(bool hideTwoYearReviewApp) => + bool? _hideTwoYearReviewApp; + bool? get hideTwoYearReviewApp => _$this._hideTwoYearReviewApp; + set hideTwoYearReviewApp(bool? hideTwoYearReviewApp) => _$this._hideTwoYearReviewApp = hideTwoYearReviewApp; - bool _editAfterSaving; - bool get editAfterSaving => _$this._editAfterSaving; - set editAfterSaving(bool editAfterSaving) => + bool? _editAfterSaving; + bool? get editAfterSaving => _$this._editAfterSaving; + set editAfterSaving(bool? editAfterSaving) => _$this._editAfterSaving = editAfterSaving; - bool _enableNativeBrowser; - bool get enableNativeBrowser => _$this._enableNativeBrowser; - set enableNativeBrowser(bool enableNativeBrowser) => + bool? _enableNativeBrowser; + bool? get enableNativeBrowser => _$this._enableNativeBrowser; + set enableNativeBrowser(bool? enableNativeBrowser) => _$this._enableNativeBrowser = enableNativeBrowser; - double _textScaleFactor; - double get textScaleFactor => _$this._textScaleFactor; - set textScaleFactor(double textScaleFactor) => + double? _textScaleFactor; + double? get textScaleFactor => _$this._textScaleFactor; + set textScaleFactor(double? textScaleFactor) => _$this._textScaleFactor = textScaleFactor; - MapBuilder _sortFields; + MapBuilder? _sortFields; MapBuilder get sortFields => _$this._sortFields ??= new MapBuilder(); - set sortFields(MapBuilder sortFields) => + set sortFields(MapBuilder? sortFields) => _$this._sortFields = sortFields; - MapBuilder _companyPrefs; + MapBuilder? _companyPrefs; MapBuilder get companyPrefs => _$this._companyPrefs ??= new MapBuilder(); - set companyPrefs(MapBuilder companyPrefs) => + set companyPrefs(MapBuilder? companyPrefs) => _$this._companyPrefs = companyPrefs; PrefStateBuilder() { @@ -1268,7 +1269,7 @@ class PrefStateBuilder implements Builder { } @override - void update(void Function(PrefStateBuilder) updates) { + void update(void Function(PrefStateBuilder)? updates) { if (updates != null) updates(this); } @@ -1328,7 +1329,7 @@ class PrefStateBuilder implements Builder { sortFields: sortFields.build(), companyPrefs: companyPrefs.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'useSidebarEditor'; useSidebarEditor.build(); @@ -1363,10 +1364,11 @@ class _$PrefStateSortField extends PrefStateSortField { final bool ascending; factory _$PrefStateSortField( - [void Function(PrefStateSortFieldBuilder) updates]) => + [void Function(PrefStateSortFieldBuilder)? updates]) => (new PrefStateSortFieldBuilder()..update(updates))._build(); - _$PrefStateSortField._({this.field, this.ascending}) : super._() { + _$PrefStateSortField._({required this.field, required this.ascending}) + : super._() { BuiltValueNullFieldError.checkNotNull( field, r'PrefStateSortField', 'field'); BuiltValueNullFieldError.checkNotNull( @@ -1390,10 +1392,10 @@ class _$PrefStateSortField extends PrefStateSortField { ascending == other.ascending; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, field.hashCode); _$hash = $jc(_$hash, ascending.hashCode); @@ -1412,15 +1414,15 @@ class _$PrefStateSortField extends PrefStateSortField { class PrefStateSortFieldBuilder implements Builder { - _$PrefStateSortField _$v; + _$PrefStateSortField? _$v; - String _field; - String get field => _$this._field; - set field(String field) => _$this._field = field; + String? _field; + String? get field => _$this._field; + set field(String? field) => _$this._field = field; - bool _ascending; - bool get ascending => _$this._ascending; - set ascending(bool ascending) => _$this._ascending = ascending; + bool? _ascending; + bool? get ascending => _$this._ascending; + set ascending(bool? ascending) => _$this._ascending = ascending; PrefStateSortFieldBuilder(); @@ -1441,7 +1443,7 @@ class PrefStateSortFieldBuilder } @override - void update(void Function(PrefStateSortFieldBuilder) updates) { + void update(void Function(PrefStateSortFieldBuilder)? updates) { if (updates != null) updates(this); } @@ -1465,10 +1467,10 @@ class _$CompanyPrefState extends CompanyPrefState { final BuiltList historyList; factory _$CompanyPrefState( - [void Function(CompanyPrefStateBuilder) updates]) => + [void Function(CompanyPrefStateBuilder)? updates]) => (new CompanyPrefStateBuilder()..update(updates))._build(); - _$CompanyPrefState._({this.historyList}) : super._() { + _$CompanyPrefState._({required this.historyList}) : super._() { BuiltValueNullFieldError.checkNotNull( historyList, r'CompanyPrefState', 'historyList'); } @@ -1487,10 +1489,10 @@ class _$CompanyPrefState extends CompanyPrefState { return other is CompanyPrefState && historyList == other.historyList; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, historyList.hashCode); _$hash = $jf(_$hash); @@ -1507,12 +1509,12 @@ class _$CompanyPrefState extends CompanyPrefState { class CompanyPrefStateBuilder implements Builder { - _$CompanyPrefState _$v; + _$CompanyPrefState? _$v; - ListBuilder _historyList; + ListBuilder? _historyList; ListBuilder get historyList => _$this._historyList ??= new ListBuilder(); - set historyList(ListBuilder historyList) => + set historyList(ListBuilder? historyList) => _$this._historyList = historyList; CompanyPrefStateBuilder(); @@ -1533,7 +1535,7 @@ class CompanyPrefStateBuilder } @override - void update(void Function(CompanyPrefStateBuilder) updates) { + void update(void Function(CompanyPrefStateBuilder)? updates) { if (updates != null) updates(this); } @@ -1546,7 +1548,7 @@ class CompanyPrefStateBuilder _$result = _$v ?? new _$CompanyPrefState._(historyList: historyList.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'historyList'; historyList.build(); @@ -1563,18 +1565,19 @@ class CompanyPrefStateBuilder class _$HistoryRecord extends HistoryRecord { @override - final String id; + final String? id; @override final EntityType entityType; @override - final int page; + final int? page; @override final int timestamp; - factory _$HistoryRecord([void Function(HistoryRecordBuilder) updates]) => + factory _$HistoryRecord([void Function(HistoryRecordBuilder)? updates]) => (new HistoryRecordBuilder()..update(updates))._build(); - _$HistoryRecord._({this.id, this.entityType, this.page, this.timestamp}) + _$HistoryRecord._( + {this.id, required this.entityType, this.page, required this.timestamp}) : super._() { BuiltValueNullFieldError.checkNotNull( entityType, r'HistoryRecord', 'entityType'); @@ -1599,10 +1602,10 @@ class _$HistoryRecord extends HistoryRecord { timestamp == other.timestamp; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, id.hashCode); _$hash = $jc(_$hash, entityType.hashCode); @@ -1625,23 +1628,23 @@ class _$HistoryRecord extends HistoryRecord { class HistoryRecordBuilder implements Builder { - _$HistoryRecord _$v; + _$HistoryRecord? _$v; - String _id; - String get id => _$this._id; - set id(String id) => _$this._id = id; + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; - EntityType _entityType; - EntityType get entityType => _$this._entityType; - set entityType(EntityType entityType) => _$this._entityType = entityType; + EntityType? _entityType; + EntityType? get entityType => _$this._entityType; + set entityType(EntityType? entityType) => _$this._entityType = entityType; - int _page; - int get page => _$this._page; - set page(int page) => _$this._page = page; + int? _page; + int? get page => _$this._page; + set page(int? page) => _$this._page = page; - int _timestamp; - int get timestamp => _$this._timestamp; - set timestamp(int timestamp) => _$this._timestamp = timestamp; + int? _timestamp; + int? get timestamp => _$this._timestamp; + set timestamp(int? timestamp) => _$this._timestamp = timestamp; HistoryRecordBuilder(); @@ -1664,7 +1667,7 @@ class HistoryRecordBuilder } @override - void update(void Function(HistoryRecordBuilder) updates) { + void update(void Function(HistoryRecordBuilder)? updates) { if (updates != null) updates(this); } diff --git a/lib/redux/ui/ui_reducer.dart b/lib/redux/ui/ui_reducer.dart index 0f3437c5d..38c80e67d 100644 --- a/lib/redux/ui/ui_reducer.dart +++ b/lib/redux/ui/ui_reducer.dart @@ -80,50 +80,50 @@ UIState uiReducer(UIState state, dynamic action) { ..currentRoute = currentRoute ..previewStack.replace(previewStackReducer(state.previewStack, action)) ..filterStack.replace(filterStackReducer(state.filterStack, action)) - ..productUIState.replace(productUIReducer(state.productUIState, action)) - ..clientUIState.replace(clientUIReducer(state.clientUIState, action)) - ..invoiceUIState.replace(invoiceUIReducer(state.invoiceUIState, action)) + ..productUIState.replace(productUIReducer(state.productUIState, action) as ProductUIState) + ..clientUIState.replace(clientUIReducer(state.clientUIState, action) as ClientUIState) + ..invoiceUIState.replace(invoiceUIReducer(state.invoiceUIState, action) as InvoiceUIState) ..dashboardUIState .replace(dashboardUIReducer(state.dashboardUIState, action)) ..reportsUIState.replace(reportsUIReducer(state.reportsUIState, action)) // STARTER: reducer - do not remove comment - ..scheduleUIState.replace(scheduleUIReducer(state.scheduleUIState, action)) + ..scheduleUIState.replace(scheduleUIReducer(state.scheduleUIState, action) as ScheduleUIState) ..transactionRuleUIState - .replace(transactionRuleUIReducer(state.transactionRuleUIState, action)) + .replace(transactionRuleUIReducer(state.transactionRuleUIState, action) as TransactionRuleUIState) ..transactionUIState - .replace(transactionUIReducer(state.transactionUIState, action)) + .replace(transactionUIReducer(state.transactionUIState, action) as TransactionUIState) ..bankAccountUIState - .replace(bankAccountUIReducer(state.bankAccountUIState, action)) + .replace(bankAccountUIReducer(state.bankAccountUIState, action) as BankAccountUIState) ..purchaseOrderUIState - .replace(purchaseOrderUIReducer(state.purchaseOrderUIState, action)) + .replace(purchaseOrderUIReducer(state.purchaseOrderUIState, action) as PurchaseOrderUIState) ..recurringExpenseUIState.replace( - recurringExpenseUIReducer(state.recurringExpenseUIState, action)) + recurringExpenseUIReducer(state.recurringExpenseUIState, action) as RecurringExpenseUIState) ..subscriptionUIState - .replace(subscriptionUIReducer(state.subscriptionUIState, action)) + .replace(subscriptionUIReducer(state.subscriptionUIState, action) as SubscriptionUIState) ..taskStatusUIState - .replace(taskStatusUIReducer(state.taskStatusUIState, action)) + .replace(taskStatusUIReducer(state.taskStatusUIState, action) as TaskStatusUIState) ..expenseCategoryUIState - .replace(expenseCategoryUIReducer(state.expenseCategoryUIState, action)) + .replace(expenseCategoryUIReducer(state.expenseCategoryUIState, action) as ExpenseCategoryUIState) ..recurringInvoiceUIState.replace( - recurringInvoiceUIReducer(state.recurringInvoiceUIState, action)) - ..webhookUIState.replace(webhookUIReducer(state.webhookUIState, action)) - ..tokenUIState.replace(tokenUIReducer(state.tokenUIState, action)) + recurringInvoiceUIReducer(state.recurringInvoiceUIState, action) as RecurringInvoiceUIState) + ..webhookUIState.replace(webhookUIReducer(state.webhookUIState, action) as WebhookUIState) + ..tokenUIState.replace(tokenUIReducer(state.tokenUIState, action) as TokenUIState) ..paymentTermUIState - .replace(paymentTermUIReducer(state.paymentTermUIState, action)) - ..designUIState.replace(designUIReducer(state.designUIState, action)) - ..creditUIState.replace(creditUIReducer(state.creditUIState, action)) - ..userUIState.replace(userUIReducer(state.userUIState, action)) - ..taxRateUIState.replace(taxRateUIReducer(state.taxRateUIState, action)) + .replace(paymentTermUIReducer(state.paymentTermUIState, action) as PaymentTermUIState) + ..designUIState.replace(designUIReducer(state.designUIState, action) as DesignUIState) + ..creditUIState.replace(creditUIReducer(state.creditUIState, action) as CreditUIState) + ..userUIState.replace(userUIReducer(state.userUIState, action) as UserUIState) + ..taxRateUIState.replace(taxRateUIReducer(state.taxRateUIState, action) as TaxRateUIState) ..companyGatewayUIState - .replace(companyGatewayUIReducer(state.companyGatewayUIState, action)) - ..groupUIState.replace(groupUIReducer(state.groupUIState, action)) - ..documentUIState.replace(documentUIReducer(state.documentUIState, action)) - ..expenseUIState.replace(expenseUIReducer(state.expenseUIState, action)) - ..vendorUIState.replace(vendorUIReducer(state.vendorUIState, action)) - ..taskUIState.replace(taskUIReducer(state.taskUIState, action)) - ..projectUIState.replace(projectUIReducer(state.projectUIState, action)) - ..paymentUIState.replace(paymentUIReducer(state.paymentUIState, action)) - ..quoteUIState.replace(quoteUIReducer(state.quoteUIState, action)) + .replace(companyGatewayUIReducer(state.companyGatewayUIState, action) as CompanyGatewayUIState) + ..groupUIState.replace(groupUIReducer(state.groupUIState, action) as GroupUIState) + ..documentUIState.replace(documentUIReducer(state.documentUIState, action) as DocumentUIState) + ..expenseUIState.replace(expenseUIReducer(state.expenseUIState, action) as ExpenseUIState) + ..vendorUIState.replace(vendorUIReducer(state.vendorUIState, action) as VendorUIState) + ..taskUIState.replace(taskUIReducer(state.taskUIState, action) as TaskUIState) + ..projectUIState.replace(projectUIReducer(state.projectUIState, action) as ProjectUIState) + ..paymentUIState.replace(paymentUIReducer(state.paymentUIState, action) as PaymentUIState) + ..quoteUIState.replace(quoteUIReducer(state.quoteUIState, action) as QuoteUIState) ..settingsUIState .replace(settingsUIReducer(state.settingsUIState, action))); } @@ -134,59 +134,59 @@ Reducer lastActivityReducer = combineReducers([ }), ]); -Reducer filterReducer = combineReducers([ - TypedReducer((filter, action) { +Reducer filterReducer = combineReducers([ + TypedReducer((filter, action) { return action.filter; }), - TypedReducer((state, action) { + TypedReducer((state, action) { return action.filter; }), ]); -Reducer loadingEntityTypeReducer = combineReducers([ - TypedReducer((state, action) { +Reducer loadingEntityTypeReducer = combineReducers([ + TypedReducer((state, action) { return null; }), - TypedReducer((state, action) { + TypedReducer((state, action) { return EntityType.client; }), - TypedReducer((state, action) { + TypedReducer((state, action) { return EntityType.product; }), - TypedReducer((state, action) { + TypedReducer((state, action) { return EntityType.invoice; }), - TypedReducer((state, action) { + TypedReducer((state, action) { return EntityType.recurringInvoice; }), - TypedReducer((state, action) { + TypedReducer((state, action) { return EntityType.payment; }), - TypedReducer((state, action) { + TypedReducer((state, action) { return EntityType.quote; }), - TypedReducer((state, action) { + TypedReducer((state, action) { return EntityType.credit; }), - TypedReducer((state, action) { + TypedReducer((state, action) { return EntityType.project; }), - TypedReducer((state, action) { + TypedReducer((state, action) { return EntityType.task; }), - TypedReducer((state, action) { + TypedReducer((state, action) { return EntityType.vendor; }), - TypedReducer((state, action) { + TypedReducer((state, action) { return EntityType.purchaseOrder; }), - TypedReducer((state, action) { + TypedReducer((state, action) { return EntityType.expense; }), - TypedReducer((state, action) { + TypedReducer((state, action) { return EntityType.recurringExpense; }), - TypedReducer((state, action) { + TypedReducer((state, action) { return EntityType.transaction; }), ]); @@ -230,7 +230,7 @@ Reducer> previewStackReducer = combineReducers([ return BuiltList([]); } - return BuiltList([ + return BuiltList([ ...previewStack.where((entityType) => entityType != action.entityType), action.entityType ]); @@ -256,7 +256,7 @@ Reducer> filterStackReducer = combineReducers([ return BuiltList(); } } - return BuiltList([ + return BuiltList([ ...filterStack.where((entity) => entity.entityType != action.entityType), action.entity ]); diff --git a/lib/redux/ui/ui_state.dart b/lib/redux/ui/ui_state.dart index cf79091f3..08fc95aeb 100644 --- a/lib/redux/ui/ui_state.dart +++ b/lib/redux/ui/ui_state.dart @@ -52,8 +52,8 @@ part 'ui_state.g.dart'; abstract class UIState implements Built { factory UIState({ - String currentRoute, - BuiltMap sortFields, + String? currentRoute, + required BuiltMap sortFields, }) { return _$UIState._( selectedCompanyIndex: 0, @@ -126,8 +126,7 @@ abstract class UIState implements Built { String get previousRoute; - @nullable - EntityType get loadingEntityType; + EntityType? get loadingEntityType; BuiltList get previewStack; @@ -135,13 +134,12 @@ abstract class UIState implements Built { BaseEntity get filterEntity => filterStack.last; - String get filterEntityId => filterStack.isEmpty ? null : filterEntity.id; + String? get filterEntityId => filterStack.isEmpty ? null : filterEntity.id; - EntityType get filterEntityType => + EntityType? get filterEntityType => filterStack.isEmpty ? null : filterEntity.entityType; - @nullable - String get filter; + String? get filter; int get filterClearedAt; diff --git a/lib/redux/ui/ui_state.g.dart b/lib/redux/ui/ui_state.g.dart index e8a384a94..b5c831e35 100644 --- a/lib/redux/ui/ui_state.g.dart +++ b/lib/redux/ui/ui_state.g.dart @@ -15,9 +15,9 @@ class _$UIStateSerializer implements StructuredSerializer { final String wireName = 'UIState'; @override - Iterable serialize(Serializers serializers, UIState object, + Iterable serialize(Serializers serializers, UIState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'selectedCompanyIndex', serializers.serialize(object.selectedCompanyIndex, specifiedType: const FullType(int)), @@ -138,7 +138,7 @@ class _$UIStateSerializer implements StructuredSerializer { serializers.serialize(object.reportsUIState, specifiedType: const FullType(ReportsUIState)), ]; - Object value; + Object? value; value = object.loadingEntityType; if (value != null) { result @@ -157,198 +157,206 @@ class _$UIStateSerializer implements StructuredSerializer { } @override - UIState deserialize(Serializers serializers, Iterable serialized, + UIState deserialize(Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new UIStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'selectedCompanyIndex': result.selectedCompanyIndex = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'currentRoute': result.currentRoute = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'previousRoute': result.previousRoute = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String))! as String; break; case 'loadingEntityType': result.loadingEntityType = serializers.deserialize(value, - specifiedType: const FullType(EntityType)) as EntityType; + specifiedType: const FullType(EntityType)) as EntityType?; break; case 'previewStack': result.previewStack.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(EntityType)])) - as BuiltList); + BuiltList, const [const FullType(EntityType)]))! + as BuiltList); break; case 'filterStack': result.filterStack.replace(serializers.deserialize(value, specifiedType: const FullType( - BuiltList, const [const FullType(BaseEntity)])) - as BuiltList); + BuiltList, const [const FullType(BaseEntity)]))! + as BuiltList); break; case 'filter': result.filter = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'filterClearedAt': result.filterClearedAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'lastActivityAt': result.lastActivityAt = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; case 'dashboardUIState': result.dashboardUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(DashboardUIState)) + specifiedType: const FullType(DashboardUIState))! as DashboardUIState); break; case 'productUIState': result.productUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(ProductUIState)) as ProductUIState); + specifiedType: const FullType(ProductUIState))! + as ProductUIState); break; case 'clientUIState': result.clientUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(ClientUIState)) as ClientUIState); + specifiedType: const FullType(ClientUIState))! as ClientUIState); break; case 'invoiceUIState': result.invoiceUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(InvoiceUIState)) as InvoiceUIState); + specifiedType: const FullType(InvoiceUIState))! + as InvoiceUIState); break; case 'scheduleUIState': result.scheduleUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(ScheduleUIState)) + specifiedType: const FullType(ScheduleUIState))! as ScheduleUIState); break; case 'transactionRuleUIState': result.transactionRuleUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(TransactionRuleUIState)) + specifiedType: const FullType(TransactionRuleUIState))! as TransactionRuleUIState); break; case 'transactionUIState': result.transactionUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(TransactionUIState)) + specifiedType: const FullType(TransactionUIState))! as TransactionUIState); break; case 'bankAccountUIState': result.bankAccountUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(BankAccountUIState)) + specifiedType: const FullType(BankAccountUIState))! as BankAccountUIState); break; case 'purchaseOrderUIState': result.purchaseOrderUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(PurchaseOrderUIState)) + specifiedType: const FullType(PurchaseOrderUIState))! as PurchaseOrderUIState); break; case 'recurringExpenseUIState': result.recurringExpenseUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(RecurringExpenseUIState)) + specifiedType: const FullType(RecurringExpenseUIState))! as RecurringExpenseUIState); break; case 'subscriptionUIState': result.subscriptionUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(SubscriptionUIState)) + specifiedType: const FullType(SubscriptionUIState))! as SubscriptionUIState); break; case 'taskStatusUIState': result.taskStatusUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(TaskStatusUIState)) + specifiedType: const FullType(TaskStatusUIState))! as TaskStatusUIState); break; case 'expenseCategoryUIState': result.expenseCategoryUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(ExpenseCategoryUIState)) + specifiedType: const FullType(ExpenseCategoryUIState))! as ExpenseCategoryUIState); break; case 'recurringInvoiceUIState': result.recurringInvoiceUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(RecurringInvoiceUIState)) + specifiedType: const FullType(RecurringInvoiceUIState))! as RecurringInvoiceUIState); break; case 'webhookUIState': result.webhookUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(WebhookUIState)) as WebhookUIState); + specifiedType: const FullType(WebhookUIState))! + as WebhookUIState); break; case 'tokenUIState': result.tokenUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(TokenUIState)) as TokenUIState); + specifiedType: const FullType(TokenUIState))! as TokenUIState); break; case 'paymentTermUIState': result.paymentTermUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(PaymentTermUIState)) + specifiedType: const FullType(PaymentTermUIState))! as PaymentTermUIState); break; case 'designUIState': result.designUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(DesignUIState)) as DesignUIState); + specifiedType: const FullType(DesignUIState))! as DesignUIState); break; case 'creditUIState': result.creditUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(CreditUIState)) as CreditUIState); + specifiedType: const FullType(CreditUIState))! as CreditUIState); break; case 'userUIState': result.userUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(UserUIState)) as UserUIState); + specifiedType: const FullType(UserUIState))! as UserUIState); break; case 'taxRateUIState': result.taxRateUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(TaxRateUIState)) as TaxRateUIState); + specifiedType: const FullType(TaxRateUIState))! + as TaxRateUIState); break; case 'companyGatewayUIState': result.companyGatewayUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(CompanyGatewayUIState)) + specifiedType: const FullType(CompanyGatewayUIState))! as CompanyGatewayUIState); break; case 'groupUIState': result.groupUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(GroupUIState)) as GroupUIState); + specifiedType: const FullType(GroupUIState))! as GroupUIState); break; case 'documentUIState': result.documentUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(DocumentUIState)) + specifiedType: const FullType(DocumentUIState))! as DocumentUIState); break; case 'expenseUIState': result.expenseUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(ExpenseUIState)) as ExpenseUIState); + specifiedType: const FullType(ExpenseUIState))! + as ExpenseUIState); break; case 'vendorUIState': result.vendorUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(VendorUIState)) as VendorUIState); + specifiedType: const FullType(VendorUIState))! as VendorUIState); break; case 'taskUIState': result.taskUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(TaskUIState)) as TaskUIState); + specifiedType: const FullType(TaskUIState))! as TaskUIState); break; case 'projectUIState': result.projectUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(ProjectUIState)) as ProjectUIState); + specifiedType: const FullType(ProjectUIState))! + as ProjectUIState); break; case 'paymentUIState': result.paymentUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(PaymentUIState)) as PaymentUIState); + specifiedType: const FullType(PaymentUIState))! + as PaymentUIState); break; case 'quoteUIState': result.quoteUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(QuoteUIState)) as QuoteUIState); + specifiedType: const FullType(QuoteUIState))! as QuoteUIState); break; case 'settingsUIState': result.settingsUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(SettingsUIState)) + specifiedType: const FullType(SettingsUIState))! as SettingsUIState); break; case 'reportsUIState': result.reportsUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(ReportsUIState)) as ReportsUIState); + specifiedType: const FullType(ReportsUIState))! + as ReportsUIState); break; } } @@ -365,13 +373,13 @@ class _$UIState extends UIState { @override final String previousRoute; @override - final EntityType loadingEntityType; + final EntityType? loadingEntityType; @override final BuiltList previewStack; @override final BuiltList filterStack; @override - final String filter; + final String? filter; @override final int filterClearedAt; @override @@ -441,51 +449,51 @@ class _$UIState extends UIState { @override final ReportsUIState reportsUIState; - factory _$UIState([void Function(UIStateBuilder) updates]) => + factory _$UIState([void Function(UIStateBuilder)? updates]) => (new UIStateBuilder()..update(updates))._build(); _$UIState._( - {this.selectedCompanyIndex, - this.currentRoute, - this.previousRoute, + {required this.selectedCompanyIndex, + required this.currentRoute, + required this.previousRoute, this.loadingEntityType, - this.previewStack, - this.filterStack, + required this.previewStack, + required this.filterStack, this.filter, - this.filterClearedAt, - this.lastActivityAt, - this.dashboardUIState, - this.productUIState, - this.clientUIState, - this.invoiceUIState, - this.scheduleUIState, - this.transactionRuleUIState, - this.transactionUIState, - this.bankAccountUIState, - this.purchaseOrderUIState, - this.recurringExpenseUIState, - this.subscriptionUIState, - this.taskStatusUIState, - this.expenseCategoryUIState, - this.recurringInvoiceUIState, - this.webhookUIState, - this.tokenUIState, - this.paymentTermUIState, - this.designUIState, - this.creditUIState, - this.userUIState, - this.taxRateUIState, - this.companyGatewayUIState, - this.groupUIState, - this.documentUIState, - this.expenseUIState, - this.vendorUIState, - this.taskUIState, - this.projectUIState, - this.paymentUIState, - this.quoteUIState, - this.settingsUIState, - this.reportsUIState}) + required this.filterClearedAt, + required this.lastActivityAt, + required this.dashboardUIState, + required this.productUIState, + required this.clientUIState, + required this.invoiceUIState, + required this.scheduleUIState, + required this.transactionRuleUIState, + required this.transactionUIState, + required this.bankAccountUIState, + required this.purchaseOrderUIState, + required this.recurringExpenseUIState, + required this.subscriptionUIState, + required this.taskStatusUIState, + required this.expenseCategoryUIState, + required this.recurringInvoiceUIState, + required this.webhookUIState, + required this.tokenUIState, + required this.paymentTermUIState, + required this.designUIState, + required this.creditUIState, + required this.userUIState, + required this.taxRateUIState, + required this.companyGatewayUIState, + required this.groupUIState, + required this.documentUIState, + required this.expenseUIState, + required this.vendorUIState, + required this.taskUIState, + required this.projectUIState, + required this.paymentUIState, + required this.quoteUIState, + required this.settingsUIState, + required this.reportsUIState}) : super._() { BuiltValueNullFieldError.checkNotNull( selectedCompanyIndex, r'UIState', 'selectedCompanyIndex'); @@ -621,10 +629,10 @@ class _$UIState extends UIState { reportsUIState == other.reportsUIState; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, selectedCompanyIndex.hashCode); _$hash = $jc(_$hash, currentRoute.hashCode); @@ -720,248 +728,248 @@ class _$UIState extends UIState { } class UIStateBuilder implements Builder { - _$UIState _$v; + _$UIState? _$v; - int _selectedCompanyIndex; - int get selectedCompanyIndex => _$this._selectedCompanyIndex; - set selectedCompanyIndex(int selectedCompanyIndex) => + int? _selectedCompanyIndex; + int? get selectedCompanyIndex => _$this._selectedCompanyIndex; + set selectedCompanyIndex(int? selectedCompanyIndex) => _$this._selectedCompanyIndex = selectedCompanyIndex; - String _currentRoute; - String get currentRoute => _$this._currentRoute; - set currentRoute(String currentRoute) => _$this._currentRoute = currentRoute; + String? _currentRoute; + String? get currentRoute => _$this._currentRoute; + set currentRoute(String? currentRoute) => _$this._currentRoute = currentRoute; - String _previousRoute; - String get previousRoute => _$this._previousRoute; - set previousRoute(String previousRoute) => + String? _previousRoute; + String? get previousRoute => _$this._previousRoute; + set previousRoute(String? previousRoute) => _$this._previousRoute = previousRoute; - EntityType _loadingEntityType; - EntityType get loadingEntityType => _$this._loadingEntityType; - set loadingEntityType(EntityType loadingEntityType) => + EntityType? _loadingEntityType; + EntityType? get loadingEntityType => _$this._loadingEntityType; + set loadingEntityType(EntityType? loadingEntityType) => _$this._loadingEntityType = loadingEntityType; - ListBuilder _previewStack; + ListBuilder? _previewStack; ListBuilder get previewStack => _$this._previewStack ??= new ListBuilder(); - set previewStack(ListBuilder previewStack) => + set previewStack(ListBuilder? previewStack) => _$this._previewStack = previewStack; - ListBuilder _filterStack; + ListBuilder? _filterStack; ListBuilder get filterStack => _$this._filterStack ??= new ListBuilder(); - set filterStack(ListBuilder filterStack) => + set filterStack(ListBuilder? filterStack) => _$this._filterStack = filterStack; - String _filter; - String get filter => _$this._filter; - set filter(String filter) => _$this._filter = filter; + String? _filter; + String? get filter => _$this._filter; + set filter(String? filter) => _$this._filter = filter; - int _filterClearedAt; - int get filterClearedAt => _$this._filterClearedAt; - set filterClearedAt(int filterClearedAt) => + int? _filterClearedAt; + int? get filterClearedAt => _$this._filterClearedAt; + set filterClearedAt(int? filterClearedAt) => _$this._filterClearedAt = filterClearedAt; - int _lastActivityAt; - int get lastActivityAt => _$this._lastActivityAt; - set lastActivityAt(int lastActivityAt) => + int? _lastActivityAt; + int? get lastActivityAt => _$this._lastActivityAt; + set lastActivityAt(int? lastActivityAt) => _$this._lastActivityAt = lastActivityAt; - DashboardUIStateBuilder _dashboardUIState; + DashboardUIStateBuilder? _dashboardUIState; DashboardUIStateBuilder get dashboardUIState => _$this._dashboardUIState ??= new DashboardUIStateBuilder(); - set dashboardUIState(DashboardUIStateBuilder dashboardUIState) => + set dashboardUIState(DashboardUIStateBuilder? dashboardUIState) => _$this._dashboardUIState = dashboardUIState; - ProductUIStateBuilder _productUIState; + ProductUIStateBuilder? _productUIState; ProductUIStateBuilder get productUIState => _$this._productUIState ??= new ProductUIStateBuilder(); - set productUIState(ProductUIStateBuilder productUIState) => + set productUIState(ProductUIStateBuilder? productUIState) => _$this._productUIState = productUIState; - ClientUIStateBuilder _clientUIState; + ClientUIStateBuilder? _clientUIState; ClientUIStateBuilder get clientUIState => _$this._clientUIState ??= new ClientUIStateBuilder(); - set clientUIState(ClientUIStateBuilder clientUIState) => + set clientUIState(ClientUIStateBuilder? clientUIState) => _$this._clientUIState = clientUIState; - InvoiceUIStateBuilder _invoiceUIState; + InvoiceUIStateBuilder? _invoiceUIState; InvoiceUIStateBuilder get invoiceUIState => _$this._invoiceUIState ??= new InvoiceUIStateBuilder(); - set invoiceUIState(InvoiceUIStateBuilder invoiceUIState) => + set invoiceUIState(InvoiceUIStateBuilder? invoiceUIState) => _$this._invoiceUIState = invoiceUIState; - ScheduleUIStateBuilder _scheduleUIState; + ScheduleUIStateBuilder? _scheduleUIState; ScheduleUIStateBuilder get scheduleUIState => _$this._scheduleUIState ??= new ScheduleUIStateBuilder(); - set scheduleUIState(ScheduleUIStateBuilder scheduleUIState) => + set scheduleUIState(ScheduleUIStateBuilder? scheduleUIState) => _$this._scheduleUIState = scheduleUIState; - TransactionRuleUIStateBuilder _transactionRuleUIState; + TransactionRuleUIStateBuilder? _transactionRuleUIState; TransactionRuleUIStateBuilder get transactionRuleUIState => _$this._transactionRuleUIState ??= new TransactionRuleUIStateBuilder(); set transactionRuleUIState( - TransactionRuleUIStateBuilder transactionRuleUIState) => + TransactionRuleUIStateBuilder? transactionRuleUIState) => _$this._transactionRuleUIState = transactionRuleUIState; - TransactionUIStateBuilder _transactionUIState; + TransactionUIStateBuilder? _transactionUIState; TransactionUIStateBuilder get transactionUIState => _$this._transactionUIState ??= new TransactionUIStateBuilder(); - set transactionUIState(TransactionUIStateBuilder transactionUIState) => + set transactionUIState(TransactionUIStateBuilder? transactionUIState) => _$this._transactionUIState = transactionUIState; - BankAccountUIStateBuilder _bankAccountUIState; + BankAccountUIStateBuilder? _bankAccountUIState; BankAccountUIStateBuilder get bankAccountUIState => _$this._bankAccountUIState ??= new BankAccountUIStateBuilder(); - set bankAccountUIState(BankAccountUIStateBuilder bankAccountUIState) => + set bankAccountUIState(BankAccountUIStateBuilder? bankAccountUIState) => _$this._bankAccountUIState = bankAccountUIState; - PurchaseOrderUIStateBuilder _purchaseOrderUIState; + PurchaseOrderUIStateBuilder? _purchaseOrderUIState; PurchaseOrderUIStateBuilder get purchaseOrderUIState => _$this._purchaseOrderUIState ??= new PurchaseOrderUIStateBuilder(); - set purchaseOrderUIState(PurchaseOrderUIStateBuilder purchaseOrderUIState) => + set purchaseOrderUIState(PurchaseOrderUIStateBuilder? purchaseOrderUIState) => _$this._purchaseOrderUIState = purchaseOrderUIState; - RecurringExpenseUIStateBuilder _recurringExpenseUIState; + RecurringExpenseUIStateBuilder? _recurringExpenseUIState; RecurringExpenseUIStateBuilder get recurringExpenseUIState => _$this._recurringExpenseUIState ??= new RecurringExpenseUIStateBuilder(); set recurringExpenseUIState( - RecurringExpenseUIStateBuilder recurringExpenseUIState) => + RecurringExpenseUIStateBuilder? recurringExpenseUIState) => _$this._recurringExpenseUIState = recurringExpenseUIState; - SubscriptionUIStateBuilder _subscriptionUIState; + SubscriptionUIStateBuilder? _subscriptionUIState; SubscriptionUIStateBuilder get subscriptionUIState => _$this._subscriptionUIState ??= new SubscriptionUIStateBuilder(); - set subscriptionUIState(SubscriptionUIStateBuilder subscriptionUIState) => + set subscriptionUIState(SubscriptionUIStateBuilder? subscriptionUIState) => _$this._subscriptionUIState = subscriptionUIState; - TaskStatusUIStateBuilder _taskStatusUIState; + TaskStatusUIStateBuilder? _taskStatusUIState; TaskStatusUIStateBuilder get taskStatusUIState => _$this._taskStatusUIState ??= new TaskStatusUIStateBuilder(); - set taskStatusUIState(TaskStatusUIStateBuilder taskStatusUIState) => + set taskStatusUIState(TaskStatusUIStateBuilder? taskStatusUIState) => _$this._taskStatusUIState = taskStatusUIState; - ExpenseCategoryUIStateBuilder _expenseCategoryUIState; + ExpenseCategoryUIStateBuilder? _expenseCategoryUIState; ExpenseCategoryUIStateBuilder get expenseCategoryUIState => _$this._expenseCategoryUIState ??= new ExpenseCategoryUIStateBuilder(); set expenseCategoryUIState( - ExpenseCategoryUIStateBuilder expenseCategoryUIState) => + ExpenseCategoryUIStateBuilder? expenseCategoryUIState) => _$this._expenseCategoryUIState = expenseCategoryUIState; - RecurringInvoiceUIStateBuilder _recurringInvoiceUIState; + RecurringInvoiceUIStateBuilder? _recurringInvoiceUIState; RecurringInvoiceUIStateBuilder get recurringInvoiceUIState => _$this._recurringInvoiceUIState ??= new RecurringInvoiceUIStateBuilder(); set recurringInvoiceUIState( - RecurringInvoiceUIStateBuilder recurringInvoiceUIState) => + RecurringInvoiceUIStateBuilder? recurringInvoiceUIState) => _$this._recurringInvoiceUIState = recurringInvoiceUIState; - WebhookUIStateBuilder _webhookUIState; + WebhookUIStateBuilder? _webhookUIState; WebhookUIStateBuilder get webhookUIState => _$this._webhookUIState ??= new WebhookUIStateBuilder(); - set webhookUIState(WebhookUIStateBuilder webhookUIState) => + set webhookUIState(WebhookUIStateBuilder? webhookUIState) => _$this._webhookUIState = webhookUIState; - TokenUIStateBuilder _tokenUIState; + TokenUIStateBuilder? _tokenUIState; TokenUIStateBuilder get tokenUIState => _$this._tokenUIState ??= new TokenUIStateBuilder(); - set tokenUIState(TokenUIStateBuilder tokenUIState) => + set tokenUIState(TokenUIStateBuilder? tokenUIState) => _$this._tokenUIState = tokenUIState; - PaymentTermUIStateBuilder _paymentTermUIState; + PaymentTermUIStateBuilder? _paymentTermUIState; PaymentTermUIStateBuilder get paymentTermUIState => _$this._paymentTermUIState ??= new PaymentTermUIStateBuilder(); - set paymentTermUIState(PaymentTermUIStateBuilder paymentTermUIState) => + set paymentTermUIState(PaymentTermUIStateBuilder? paymentTermUIState) => _$this._paymentTermUIState = paymentTermUIState; - DesignUIStateBuilder _designUIState; + DesignUIStateBuilder? _designUIState; DesignUIStateBuilder get designUIState => _$this._designUIState ??= new DesignUIStateBuilder(); - set designUIState(DesignUIStateBuilder designUIState) => + set designUIState(DesignUIStateBuilder? designUIState) => _$this._designUIState = designUIState; - CreditUIStateBuilder _creditUIState; + CreditUIStateBuilder? _creditUIState; CreditUIStateBuilder get creditUIState => _$this._creditUIState ??= new CreditUIStateBuilder(); - set creditUIState(CreditUIStateBuilder creditUIState) => + set creditUIState(CreditUIStateBuilder? creditUIState) => _$this._creditUIState = creditUIState; - UserUIStateBuilder _userUIState; + UserUIStateBuilder? _userUIState; UserUIStateBuilder get userUIState => _$this._userUIState ??= new UserUIStateBuilder(); - set userUIState(UserUIStateBuilder userUIState) => + set userUIState(UserUIStateBuilder? userUIState) => _$this._userUIState = userUIState; - TaxRateUIStateBuilder _taxRateUIState; + TaxRateUIStateBuilder? _taxRateUIState; TaxRateUIStateBuilder get taxRateUIState => _$this._taxRateUIState ??= new TaxRateUIStateBuilder(); - set taxRateUIState(TaxRateUIStateBuilder taxRateUIState) => + set taxRateUIState(TaxRateUIStateBuilder? taxRateUIState) => _$this._taxRateUIState = taxRateUIState; - CompanyGatewayUIStateBuilder _companyGatewayUIState; + CompanyGatewayUIStateBuilder? _companyGatewayUIState; CompanyGatewayUIStateBuilder get companyGatewayUIState => _$this._companyGatewayUIState ??= new CompanyGatewayUIStateBuilder(); set companyGatewayUIState( - CompanyGatewayUIStateBuilder companyGatewayUIState) => + CompanyGatewayUIStateBuilder? companyGatewayUIState) => _$this._companyGatewayUIState = companyGatewayUIState; - GroupUIStateBuilder _groupUIState; + GroupUIStateBuilder? _groupUIState; GroupUIStateBuilder get groupUIState => _$this._groupUIState ??= new GroupUIStateBuilder(); - set groupUIState(GroupUIStateBuilder groupUIState) => + set groupUIState(GroupUIStateBuilder? groupUIState) => _$this._groupUIState = groupUIState; - DocumentUIStateBuilder _documentUIState; + DocumentUIStateBuilder? _documentUIState; DocumentUIStateBuilder get documentUIState => _$this._documentUIState ??= new DocumentUIStateBuilder(); - set documentUIState(DocumentUIStateBuilder documentUIState) => + set documentUIState(DocumentUIStateBuilder? documentUIState) => _$this._documentUIState = documentUIState; - ExpenseUIStateBuilder _expenseUIState; + ExpenseUIStateBuilder? _expenseUIState; ExpenseUIStateBuilder get expenseUIState => _$this._expenseUIState ??= new ExpenseUIStateBuilder(); - set expenseUIState(ExpenseUIStateBuilder expenseUIState) => + set expenseUIState(ExpenseUIStateBuilder? expenseUIState) => _$this._expenseUIState = expenseUIState; - VendorUIStateBuilder _vendorUIState; + VendorUIStateBuilder? _vendorUIState; VendorUIStateBuilder get vendorUIState => _$this._vendorUIState ??= new VendorUIStateBuilder(); - set vendorUIState(VendorUIStateBuilder vendorUIState) => + set vendorUIState(VendorUIStateBuilder? vendorUIState) => _$this._vendorUIState = vendorUIState; - TaskUIStateBuilder _taskUIState; + TaskUIStateBuilder? _taskUIState; TaskUIStateBuilder get taskUIState => _$this._taskUIState ??= new TaskUIStateBuilder(); - set taskUIState(TaskUIStateBuilder taskUIState) => + set taskUIState(TaskUIStateBuilder? taskUIState) => _$this._taskUIState = taskUIState; - ProjectUIStateBuilder _projectUIState; + ProjectUIStateBuilder? _projectUIState; ProjectUIStateBuilder get projectUIState => _$this._projectUIState ??= new ProjectUIStateBuilder(); - set projectUIState(ProjectUIStateBuilder projectUIState) => + set projectUIState(ProjectUIStateBuilder? projectUIState) => _$this._projectUIState = projectUIState; - PaymentUIStateBuilder _paymentUIState; + PaymentUIStateBuilder? _paymentUIState; PaymentUIStateBuilder get paymentUIState => _$this._paymentUIState ??= new PaymentUIStateBuilder(); - set paymentUIState(PaymentUIStateBuilder paymentUIState) => + set paymentUIState(PaymentUIStateBuilder? paymentUIState) => _$this._paymentUIState = paymentUIState; - QuoteUIStateBuilder _quoteUIState; + QuoteUIStateBuilder? _quoteUIState; QuoteUIStateBuilder get quoteUIState => _$this._quoteUIState ??= new QuoteUIStateBuilder(); - set quoteUIState(QuoteUIStateBuilder quoteUIState) => + set quoteUIState(QuoteUIStateBuilder? quoteUIState) => _$this._quoteUIState = quoteUIState; - SettingsUIStateBuilder _settingsUIState; + SettingsUIStateBuilder? _settingsUIState; SettingsUIStateBuilder get settingsUIState => _$this._settingsUIState ??= new SettingsUIStateBuilder(); - set settingsUIState(SettingsUIStateBuilder settingsUIState) => + set settingsUIState(SettingsUIStateBuilder? settingsUIState) => _$this._settingsUIState = settingsUIState; - ReportsUIStateBuilder _reportsUIState; + ReportsUIStateBuilder? _reportsUIState; ReportsUIStateBuilder get reportsUIState => _$this._reportsUIState ??= new ReportsUIStateBuilder(); - set reportsUIState(ReportsUIStateBuilder reportsUIState) => + set reportsUIState(ReportsUIStateBuilder? reportsUIState) => _$this._reportsUIState = reportsUIState; UIStateBuilder() { @@ -1024,7 +1032,7 @@ class UIStateBuilder implements Builder { } @override - void update(void Function(UIStateBuilder) updates) { + void update(void Function(UIStateBuilder)? updates) { if (updates != null) updates(this); } @@ -1083,7 +1091,7 @@ class UIStateBuilder implements Builder { settingsUIState: settingsUIState.build(), reportsUIState: reportsUIState.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'previewStack'; previewStack.build(); diff --git a/lib/redux/user/user_actions.dart b/lib/redux/user/user_actions.dart index 7b07f6443..041dcbab7 100644 --- a/lib/redux/user/user_actions.dart +++ b/lib/redux/user/user_actions.dart @@ -26,19 +26,19 @@ class ViewUserList implements PersistUI { class ViewUser implements PersistUI, PersistPrefs { ViewUser({ - @required this.userId, + required this.userId, this.force = false, }); - final String userId; + final String? userId; final bool force; } class EditUser implements PersistUI, PersistPrefs { - EditUser({@required this.user, this.completer, this.force = false}); + EditUser({required this.user, this.completer, this.force = false}); final UserEntity user; - final Completer completer; + final Completer? completer; final bool force; } @@ -58,21 +58,21 @@ class UpdateUserCompany implements PersistUI { class LoadUser { LoadUser({this.completer, this.userId}); - final Completer completer; - final String userId; + final Completer? completer; + final String? userId; } class LoadUserActivity { LoadUserActivity({this.completer, this.userId}); - final Completer completer; - final String userId; + final Completer? completer; + final String? userId; } class LoadUsers { LoadUsers({this.completer}); - final Completer completer; + final Completer? completer; } class LoadUserRequest implements StartLoading {} @@ -125,16 +125,16 @@ class LoadUsersSuccess implements StopLoading { class SaveUserRequest implements StartSaving { SaveUserRequest({ - @required this.completer, - @required this.user, + required this.completer, + required this.user, this.password, this.idToken, }); final Completer completer; - final UserEntity user; - final String password; - final String idToken; + final UserEntity? user; + final String? password; + final String? idToken; } class SaveUserSuccess @@ -165,10 +165,10 @@ class ArchiveUserRequest implements StartSaving { this.idToken, }); - final Completer completer; - final List userIds; - final String password; - final String idToken; + final Completer? completer; + final List? userIds; + final String? password; + final String? idToken; } class ArchiveUserSuccess @@ -181,7 +181,7 @@ class ArchiveUserSuccess class ArchiveUserFailure implements StopSaving { ArchiveUserFailure(this.users); - final List users; + final List users; } class DeleteUserRequest implements StartSaving { @@ -192,10 +192,10 @@ class DeleteUserRequest implements StartSaving { this.idToken, }); - final Completer completer; - final List userIds; - final String password; - final String idToken; + final Completer? completer; + final List? userIds; + final String? password; + final String? idToken; } class DeleteUserSuccess @@ -208,7 +208,7 @@ class DeleteUserSuccess class DeleteUserFailure implements StopSaving { DeleteUserFailure(this.users); - final List users; + final List users; } class RestoreUserRequest implements StartSaving { @@ -219,10 +219,10 @@ class RestoreUserRequest implements StartSaving { this.idToken, }); - final Completer completer; - final List userIds; - final String password; - final String idToken; + final Completer? completer; + final List? userIds; + final String? password; + final String? idToken; } class RestoreUserSuccess @@ -235,7 +235,7 @@ class RestoreUserSuccess class RestoreUserFailure implements StopSaving { RestoreUserFailure(this.users); - final List users; + final List users; } class RemoveUserRequest implements StartSaving { @@ -246,16 +246,16 @@ class RemoveUserRequest implements StartSaving { this.idToken, }); - final Completer completer; - final String userId; - final String password; - final String idToken; + final Completer? completer; + final String? userId; + final String? password; + final String? idToken; } class RemoveUserSuccess implements StopSaving, PersistData { RemoveUserSuccess(this.userId); - final String userId; + final String? userId; } class RemoveUserFailure implements StopSaving { @@ -272,16 +272,16 @@ class ResendInviteRequest implements StartSaving { this.idToken, }); - final Completer completer; - final String userId; - final String password; - final String idToken; + final Completer? completer; + final String? userId; + final String? password; + final String? idToken; } class ResendInviteSuccess implements StopSaving, PersistData { ResendInviteSuccess(this.userId); - final String userId; + final String? userId; } class ResendInviteFailure implements StopSaving { @@ -333,39 +333,39 @@ class FilterUsersByCustom4 implements PersistUI { } void handleUserAction( - BuildContext context, List users, EntityAction action) { + BuildContext? context, List users, EntityAction? action) { if (users.isEmpty) { return; } - final store = StoreProvider.of(context); + final store = StoreProvider.of(context!); final state = store.state; final localization = AppLocalization.of(context); - final user = users.first as UserEntity; - final userIds = users.map((user) => user.id).toList(); + final user = users.first as UserEntity?; + final userIds = users.map((user) => user!.id).toList(); switch (action) { case EntityAction.edit: - editEntity(entity: user); + editEntity(entity: user!); break; case EntityAction.newClient: createEntity( context: context, entity: ClientEntity(state: state) - .rebuild((b) => b.assignedUserId = user.id)); + .rebuild((b) => b.assignedUserId = user!.id)); break; case EntityAction.newInvoice: createEntity( context: context, entity: InvoiceEntity(state: state) - .rebuild((b) => b.assignedUserId = user.id)); + .rebuild((b) => b.assignedUserId = user!.id)); break; case EntityAction.newRecurringInvoice: createEntity( context: context, entity: InvoiceEntity( state: state, entityType: EntityType.recurringInvoice) - .rebuild((b) => b.assignedUserId = user.id)); + .rebuild((b) => b.assignedUserId = user!.id)); break; case EntityAction.newQuote: createEntity( @@ -373,7 +373,7 @@ void handleUserAction( entity: InvoiceEntity( state: state, entityType: EntityType.quote, - ).rebuild((b) => b.assignedUserId = user.id), + ).rebuild((b) => b.assignedUserId = user!.id), ); break; case EntityAction.newCredit: @@ -382,51 +382,51 @@ void handleUserAction( entity: InvoiceEntity( state: state, entityType: EntityType.credit, - ).rebuild((b) => b.assignedUserId = user.id), + ).rebuild((b) => b.assignedUserId = user!.id), ); break; case EntityAction.newExpense: createEntity( context: context, entity: ExpenseEntity(state: state) - .rebuild((b) => b.assignedUserId = user.id), + .rebuild((b) => b.assignedUserId = user!.id), ); break; case EntityAction.newPayment: createEntity( context: context, entity: PaymentEntity(state: state) - .rebuild((b) => b.assignedUserId = user.id), + .rebuild((b) => b.assignedUserId = user!.id), ); break; case EntityAction.newProject: createEntity( context: context, entity: ProjectEntity(state: state) - .rebuild((b) => b.assignedUserId = user.id), + .rebuild((b) => b.assignedUserId = user!.id), ); break; case EntityAction.newTask: createEntity( context: context, entity: - TaskEntity(state: state).rebuild((b) => b.assignedUserId = user.id), + TaskEntity(state: state).rebuild((b) => b.assignedUserId = user!.id), ); break; case EntityAction.newVendor: createEntity( context: context, entity: VendorEntity(state: state) - .rebuild((b) => b.assignedUserId = user.id), + .rebuild((b) => b.assignedUserId = user!.id), ); break; case EntityAction.restore: final message = userIds.length > 1 - ? localization.restoredUsers + ? localization!.restoredUsers .replaceFirst(':value', ':count') .replaceFirst(':count', userIds.length.toString()) - : localization.restoredUser; - final dispatch = ([String password, String idToken]) => + : localization!.restoredUser; + final dispatch = ([String? password, String? idToken]) => store.dispatch(RestoreUserRequest( completer: snackBarCompleter(context, message), userIds: userIds, @@ -441,11 +441,11 @@ void handleUserAction( break; case EntityAction.archive: final message = userIds.length > 1 - ? localization.archivedUsers + ? localization!.archivedUsers .replaceFirst(':value', ':count') .replaceFirst(':count', userIds.length.toString()) - : localization.archivedUser; - final dispatch = ([String password, String idToken]) => + : localization!.archivedUser; + final dispatch = ([String? password, String? idToken]) => store.dispatch(ArchiveUserRequest( completer: snackBarCompleter(context, message), userIds: userIds, @@ -460,13 +460,13 @@ void handleUserAction( break; case EntityAction.delete: final message = userIds.length > 1 - ? localization.deletedUsers + ? localization!.deletedUsers .replaceFirst(':value', ':count') .replaceFirst(':count', userIds.length.toString()) - : localization.deletedUser; + : localization!.deletedUser; final dispatch = ([ - String password, - String idToken, + String? password, + String? idToken, ]) => store.dispatch(DeleteUserRequest( completer: snackBarCompleter(context, message), @@ -490,17 +490,17 @@ void handleUserAction( break; case EntityAction.remove: final message = userIds.length > 1 - ? localization.removedUsers + ? localization!.removedUsers .replaceFirst(':value', ':count') .replaceFirst(':count', userIds.length.toString()) - : localization.removedUser; + : localization!.removedUser; final dispatch = ([ - String password, - String idToken, + String? password, + String? idToken, ]) => store.dispatch(RemoveUserRequest( completer: snackBarCompleter(context, message), - userId: user.id, + userId: user!.id, password: password, idToken: idToken, )); @@ -524,7 +524,7 @@ void handleUserAction( } for (final user in users) { - if (!store.state.userListState.isSelected(user.id)) { + if (!store.state.userListState.isSelected(user!.id)) { store.dispatch(AddToUserMultiselect(entity: user)); } else { store.dispatch(RemoveFromUserMultiselect(entity: user)); @@ -536,11 +536,11 @@ void handleUserAction( context: context, callback: (password, idToken) { store.dispatch(ResendInviteRequest( - userId: user.id, + userId: user!.id, password: password, idToken: idToken, completer: snackBarCompleter( - context, localization.emailSentToConfirmEmail), + context, localization!.emailSentToConfirmEmail), )); }); break; @@ -555,15 +555,15 @@ void handleUserAction( class StartUserMultiselect {} class AddToUserMultiselect { - AddToUserMultiselect({@required this.entity}); + AddToUserMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class RemoveFromUserMultiselect { - RemoveFromUserMultiselect({@required this.entity}); + RemoveFromUserMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class ClearUserMultiselect {} diff --git a/lib/redux/user/user_middleware.dart b/lib/redux/user/user_middleware.dart index 2826eb052..eb0baf90c 100644 --- a/lib/redux/user/user_middleware.dart +++ b/lib/redux/user/user_middleware.dart @@ -50,14 +50,14 @@ List> createStoreUsersMiddleware([ Middleware _editUser() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as EditUser; + final action = dynamicAction as EditUser?; next(action); store.dispatch(UpdateCurrentRoute(UserEditScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(UserEditScreen.route); + navigatorKey.currentState!.pushNamed(UserEditScreen.route); } }; } @@ -65,21 +65,21 @@ Middleware _editUser() { Middleware _viewUser() { return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as ViewUser; + final action = dynamicAction as ViewUser?; next(action); store.dispatch(UpdateCurrentRoute(UserViewScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(UserViewScreen.route); + navigatorKey.currentState!.pushNamed(UserViewScreen.route); } }; } Middleware _viewUserList() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as ViewUserList; + final action = dynamicAction as ViewUserList?; next(action); @@ -90,7 +90,7 @@ Middleware _viewUserList() { store.dispatch(UpdateCurrentRoute(UserScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamedAndRemoveUntil( + navigatorKey.currentState!.pushNamedAndRemoveUntil( UserScreen.route, (Route route) => false); } }; @@ -100,15 +100,15 @@ Middleware _archiveUser(UserRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as ArchiveUserRequest; final prevUsers = - action.userIds.map((id) => store.state.userState.map[id]).toList(); + action.userIds!.map((id) => store.state.userState.map[id]).toList(); repository - .bulkAction(store.state.credentials, action.userIds, + .bulkAction(store.state.credentials, action.userIds!, EntityAction.archive, action.password, action.idToken) .then((List users) { store.dispatch(ArchiveUserSuccess(users)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); @@ -117,7 +117,7 @@ Middleware _archiveUser(UserRepository repository) { store.dispatch(UserUnverifiedPassword()); } if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -129,15 +129,15 @@ Middleware _deleteUser(UserRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as DeleteUserRequest; final prevUsers = - action.userIds.map((id) => store.state.userState.map[id]).toList(); + action.userIds!.map((id) => store.state.userState.map[id]).toList(); repository - .bulkAction(store.state.credentials, action.userIds, + .bulkAction(store.state.credentials, action.userIds!, EntityAction.delete, action.password, action.idToken) .then((List users) { store.dispatch(DeleteUserSuccess(users)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); @@ -146,7 +146,7 @@ Middleware _deleteUser(UserRepository repository) { store.dispatch(UserUnverifiedPassword()); } if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -158,15 +158,15 @@ Middleware _restoreUser(UserRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as RestoreUserRequest; final prevUsers = - action.userIds.map((id) => store.state.userState.map[id]).toList(); + action.userIds!.map((id) => store.state.userState.map[id]).toList(); repository - .bulkAction(store.state.credentials, action.userIds, + .bulkAction(store.state.credentials, action.userIds!, EntityAction.restore, action.password, action.idToken) .then((List users) { store.dispatch(RestoreUserSuccess(users)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); @@ -175,7 +175,7 @@ Middleware _restoreUser(UserRepository repository) { store.dispatch(UserUnverifiedPassword()); } if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -197,13 +197,13 @@ Middleware _removeUser(UserRepository repository) { .then((_) { store.dispatch(RemoveUserSuccess(action.userId)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(RemoveUserFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -225,13 +225,13 @@ Middleware _resendInvite(UserRepository repository) { .then((_) { store.dispatch(ResendInviteSuccess(action.userId)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(ResendInviteFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -243,10 +243,10 @@ Middleware _saveUser(UserRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as SaveUserRequest; repository - .saveData(store.state.credentials, action.user, action.password, + .saveData(store.state.credentials, action.user!, action.password, action.idToken) .then((UserEntity user) { - if (action.user.isNew) { + if (action.user!.isNew) { store.dispatch(AddUserSuccess(user)); } else { store.dispatch(SaveUserSuccess(user)); @@ -275,13 +275,13 @@ Middleware _loadUser(UserRepository repository) { store.dispatch(LoadUserSuccess(user)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(LoadUserFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -291,15 +291,15 @@ Middleware _loadUser(UserRepository repository) { Middleware _loadUsers(UserRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as LoadUsers; + final action = dynamicAction as LoadUsers?; final AppState state = store.state; store.dispatch(LoadUsersRequest()); repository.loadList(state.credentials).then((data) { store.dispatch(LoadUsersSuccess(data)); - if (action.completer != null) { - action.completer.complete(null); + if (action!.completer != null) { + action.completer!.complete(null); } /* if (state.userState.isStale) { @@ -309,8 +309,8 @@ Middleware _loadUsers(UserRepository repository) { }).catchError((Object error) { print(error); store.dispatch(LoadUsersFailure(error)); - if (action.completer != null) { - action.completer.completeError(error); + if (action!.completer != null) { + action.completer!.completeError(error); } }); diff --git a/lib/redux/user/user_reducer.dart b/lib/redux/user/user_reducer.dart index 172de2963..016d77739 100644 --- a/lib/redux/user/user_reducer.dart +++ b/lib/redux/user/user_reducer.dart @@ -15,43 +15,43 @@ import 'package:invoiceninja_flutter/redux/user/user_state.dart'; EntityUIState userUIReducer(UserUIState state, dynamic action) { return state.rebuild((b) => b ..listUIState.replace(userListReducer(state.listUIState, action)) - ..editing.replace(editingReducer(state.editing, action)) + ..editing.replace(editingReducer(state.editing, action)!) ..selectedId = selectedIdReducer(state.selectedId, action) ..forceSelected = forceSelectedReducer(state.forceSelected, action)); } -final forceSelectedReducer = combineReducers([ - TypedReducer((completer, action) => true), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), +final forceSelectedReducer = combineReducers([ + TypedReducer((completer, action) => true), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), ]); -Reducer selectedIdReducer = combineReducers([ - TypedReducer((completer, action) => ''), - TypedReducer((completer, action) => ''), - TypedReducer((selectedId, action) => +Reducer selectedIdReducer = combineReducers([ + TypedReducer((completer, action) => ''), + TypedReducer((completer, action) => ''), + TypedReducer((selectedId, action) => action.entityType == EntityType.user ? action.entityId : selectedId), - TypedReducer((String selectedId, action) => action.userId), - TypedReducer( - (String selectedId, action) => action.user.id), - TypedReducer( + TypedReducer((String? selectedId, action) => action.userId), + TypedReducer( + (String? selectedId, action) => action.user.id), + TypedReducer( (selectedId, action) => action.clearSelection ? '' : selectedId), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => action.entityType == EntityType.user ? '' : selectedId), - TypedReducer( + TypedReducer( (selectedId, action) => action.clearSelection ? '' : action.entityType == EntityType.user @@ -59,30 +59,30 @@ Reducer selectedIdReducer = combineReducers([ : selectedId), ]); -final editingReducer = combineReducers([ - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer((users, action) { +final editingReducer = combineReducers([ + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer((users, action) { return action.users[0]; }), - TypedReducer((users, action) { + TypedReducer((users, action) { return action.users[0]; }), - TypedReducer((users, action) { + TypedReducer((users, action) { return action.users[0]; }), - TypedReducer(_updateEditing), - TypedReducer((user, action) { + TypedReducer(_updateEditing), + TypedReducer((user, action) { return action.user.rebuild((b) => b..isChanged = true); }), - TypedReducer(_clearEditing), + TypedReducer(_clearEditing), ]); -UserEntity _clearEditing(UserEntity user, dynamic action) { +UserEntity _clearEditing(UserEntity? user, dynamic action) { return UserEntity(); } -UserEntity _updateEditing(UserEntity user, dynamic action) { +UserEntity? _updateEditing(UserEntity? user, dynamic action) { return action.user; } @@ -168,7 +168,7 @@ ListUIState _filterUsers(ListUIState userListState, FilterUsers action) { ListUIState _sortUsers(ListUIState userListState, SortUsers action) { return userListState.rebuild((b) => b - ..sortAscending = b.sortField != action.field || !b.sortAscending + ..sortAscending = b.sortField != action.field || !b.sortAscending! ..sortField = action.field); } @@ -179,12 +179,12 @@ ListUIState _startListMultiselect( ListUIState _addToListMultiselect( ListUIState userListState, AddToUserMultiselect action) { - return userListState.rebuild((b) => b..selectedIds.add(action.entity.id)); + return userListState.rebuild((b) => b..selectedIds.add(action.entity!.id)); } ListUIState _removeFromListMultiselect( ListUIState userListState, RemoveFromUserMultiselect action) { - return userListState.rebuild((b) => b..selectedIds.remove(action.entity.id)); + return userListState.rebuild((b) => b..selectedIds.remove(action.entity!.id)); } ListUIState _clearListMultiselect( @@ -291,7 +291,7 @@ UserState _setLoadedUsers(UserState userState, LoadUsersSuccess action) { UserState _setLoadedCompany(UserState userState, LoadCompanySuccess action) { final state = userState.rebuild((b) => b ..map.addAll(Map.fromIterable( - action.userCompany.company.users, + action.userCompany.company!.users, key: (dynamic item) => item.id, value: (dynamic item) => item, ))); diff --git a/lib/redux/user/user_selectors.dart b/lib/redux/user/user_selectors.dart index 1bef3722c..70497c698 100644 --- a/lib/redux/user/user_selectors.dart +++ b/lib/redux/user/user_selectors.dart @@ -15,7 +15,7 @@ var memoizedDropdownUserList = memo3((BuiltMap userMap, List dropdownUsersSelector(BuiltMap userMap, BuiltList userList, String clientId) { final list = userList.where((userId) { - final user = userMap[userId]; + final user = userMap[userId]!; /* if (clientId != null && clientId > 0 && user.clientId != clientId) { return false; @@ -25,7 +25,7 @@ List dropdownUsersSelector(BuiltMap userMap, }).toList(); list.sort((userAId, userBId) { - final userA = userMap[userAId]; + final userA = userMap[userAId]!; final userB = userMap[userBId]; return userA.compareTo(userB, UserFields.firstName, true); }); @@ -34,7 +34,7 @@ List dropdownUsersSelector(BuiltMap userMap, } var memoizedFilteredUserList = memo5((SelectionState selectionState, - BuiltMap userMap, + BuiltMap userMap, BuiltList userList, ListUIState userListState, String authUserId) => @@ -43,12 +43,12 @@ var memoizedFilteredUserList = memo5((SelectionState selectionState, List filteredUsersSelector( SelectionState selectionState, - BuiltMap userMap, + BuiltMap userMap, BuiltList userList, ListUIState userListState, String authUserId) { final list = userList.where((userId) { - final user = userMap[userId]; + final user = userMap[userId]!; if (user.id == selectionState.selectedId) { return true; @@ -64,7 +64,7 @@ List filteredUsersSelector( }).toList(); list.sort((userAId, userBId) { - final userA = userMap[userAId]; + final userA = userMap[userAId]!; final userB = userMap[userBId]; return userA.compareTo( userB, userListState.sortField, userListState.sortAscending); @@ -74,24 +74,24 @@ List filteredUsersSelector( } var memoizedUserList = - memo1((BuiltMap userMap) => userList(userMap)); + memo1((BuiltMap userMap) => userList(userMap)); -List userList(BuiltMap userMap) { +List userList(BuiltMap userMap) { final list = - userMap.keys.where((userId) => userMap[userId].isActive).toList(); + userMap.keys.where((userId) => userMap[userId]!.isActive).toList(); - list.sort((idA, idB) => userMap[idA] + list.sort((idA, idB) => userMap[idA]! .fullName .toLowerCase() - .compareTo(userMap[idB].fullName.toLowerCase())); + .compareTo(userMap[idB]!.fullName.toLowerCase())); return list; } var memoizedGmailUserList = - memo1((BuiltMap userMap) => gmailUserList(userMap)); + memo1((BuiltMap userMap) => gmailUserList(userMap)); -List gmailUserList(BuiltMap userMap) { +List gmailUserList(BuiltMap userMap) { return userList(userMap).where((userId) { final user = (userMap[userId] ?? UserEntity) as UserEntity; @@ -100,9 +100,9 @@ List gmailUserList(BuiltMap userMap) { } var memoizedMicrosoftUserList = - memo1((BuiltMap userMap) => microsoftUserList(userMap)); + memo1((BuiltMap userMap) => microsoftUserList(userMap)); -List microsoftUserList(BuiltMap userMap) { +List microsoftUserList(BuiltMap userMap) { return userList(userMap).where((userId) { final user = (userMap[userId] ?? UserEntity) as UserEntity; @@ -112,5 +112,5 @@ List microsoftUserList(BuiltMap userMap) { }).toList(); } -bool hasUserChanges(UserEntity user, BuiltMap userMap) => +bool? hasUserChanges(UserEntity user, BuiltMap userMap) => user.isNew ? user.isChanged : user != userMap[user.id]; diff --git a/lib/redux/user/user_state.dart b/lib/redux/user/user_state.dart index 24c5ae156..21f4eb554 100644 --- a/lib/redux/user/user_state.dart +++ b/lib/redux/user/user_state.dart @@ -24,7 +24,7 @@ abstract class UserState implements Built { UserState._(); - UserEntity get(String userId) { + UserEntity? get(String userId) { if (map.containsKey(userId)) { return map[userId]; } else { @@ -36,7 +36,7 @@ abstract class UserState implements Built { @memoized int get hashCode; - BuiltMap get map; + BuiltMap get map; BuiltList get list; @@ -46,7 +46,7 @@ abstract class UserState implements Built { abstract class UserUIState extends Object with EntityUIState implements Built { - factory UserUIState(PrefStateSortField sortField) { + factory UserUIState(PrefStateSortField? sortField) { return _$UserUIState._( listUIState: ListUIState(sortField?.field ?? UserFields.firstName, sortAscending: sortField?.ascending), @@ -62,14 +62,13 @@ abstract class UserUIState extends Object @memoized int get hashCode; - @nullable - UserEntity get editing; + UserEntity? get editing; @override - bool get isCreatingNew => editing.isNew; + bool get isCreatingNew => editing!.isNew; @override - String get editingId => editing.id; + String get editingId => editing!.id; static Serializer get serializer => _$userUIStateSerializer; } diff --git a/lib/redux/user/user_state.g.dart b/lib/redux/user/user_state.g.dart index eedce27ed..a4ee7e77a 100644 --- a/lib/redux/user/user_state.g.dart +++ b/lib/redux/user/user_state.g.dart @@ -16,13 +16,15 @@ class _$UserStateSerializer implements StructuredSerializer { final String wireName = 'UserState'; @override - Iterable serialize(Serializers serializers, UserState object, + Iterable serialize(Serializers serializers, UserState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'map', serializers.serialize(object.map, - specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(UserEntity)])), + specifiedType: const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(UserEntity) + ])), 'list', serializers.serialize(object.list, specifiedType: @@ -33,26 +35,28 @@ class _$UserStateSerializer implements StructuredSerializer { } @override - UserState deserialize(Serializers serializers, Iterable serialized, + UserState deserialize(Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new UserStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'map': result.map.replace(serializers.deserialize(value, - specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(UserEntity)]))); + specifiedType: const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(UserEntity) + ]))!); break; case 'list': result.list.replace(serializers.deserialize(value, - specifiedType: - const FullType(BuiltList, const [const FullType(String)])) - as BuiltList); + specifiedType: const FullType( + BuiltList, const [const FullType(String)]))! + as BuiltList); break; } } @@ -68,9 +72,9 @@ class _$UserUIStateSerializer implements StructuredSerializer { final String wireName = 'UserUIState'; @override - Iterable serialize(Serializers serializers, UserUIState object, + Iterable serialize(Serializers serializers, UserUIState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'listUIState', serializers.serialize(object.listUIState, specifiedType: const FullType(ListUIState)), @@ -78,7 +82,7 @@ class _$UserUIStateSerializer implements StructuredSerializer { serializers.serialize(object.tabIndex, specifiedType: const FullType(int)), ]; - Object value; + Object? value; value = object.editing; if (value != null) { result @@ -104,35 +108,35 @@ class _$UserUIStateSerializer implements StructuredSerializer { } @override - UserUIState deserialize(Serializers serializers, Iterable serialized, + UserUIState deserialize(Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new UserUIStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'editing': result.editing.replace(serializers.deserialize(value, - specifiedType: const FullType(UserEntity)) as UserEntity); + specifiedType: const FullType(UserEntity))! as UserEntity); break; case 'listUIState': result.listUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(ListUIState)) as ListUIState); + specifiedType: const FullType(ListUIState))! as ListUIState); break; case 'selectedId': result.selectedId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'forceSelected': result.forceSelected = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'tabIndex': result.tabIndex = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; } } @@ -143,14 +147,14 @@ class _$UserUIStateSerializer implements StructuredSerializer { class _$UserState extends UserState { @override - final BuiltMap map; + final BuiltMap map; @override final BuiltList list; - factory _$UserState([void Function(UserStateBuilder) updates]) => + factory _$UserState([void Function(UserStateBuilder)? updates]) => (new UserStateBuilder()..update(updates))._build(); - _$UserState._({this.map, this.list}) : super._() { + _$UserState._({required this.map, required this.list}) : super._() { BuiltValueNullFieldError.checkNotNull(map, r'UserState', 'map'); BuiltValueNullFieldError.checkNotNull(list, r'UserState', 'list'); } @@ -168,10 +172,10 @@ class _$UserState extends UserState { return other is UserState && map == other.map && list == other.list; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, map.hashCode); _$hash = $jc(_$hash, list.hashCode); @@ -189,16 +193,16 @@ class _$UserState extends UserState { } class UserStateBuilder implements Builder { - _$UserState _$v; + _$UserState? _$v; - MapBuilder _map; - MapBuilder get map => - _$this._map ??= new MapBuilder(); - set map(MapBuilder map) => _$this._map = map; + MapBuilder? _map; + MapBuilder get map => + _$this._map ??= new MapBuilder(); + set map(MapBuilder? map) => _$this._map = map; - ListBuilder _list; + ListBuilder? _list; ListBuilder get list => _$this._list ??= new ListBuilder(); - set list(ListBuilder list) => _$this._list = list; + set list(ListBuilder? list) => _$this._list = list; UserStateBuilder(); @@ -219,7 +223,7 @@ class UserStateBuilder implements Builder { } @override - void update(void Function(UserStateBuilder) updates) { + void update(void Function(UserStateBuilder)? updates) { if (updates != null) updates(this); } @@ -231,7 +235,7 @@ class UserStateBuilder implements Builder { try { _$result = _$v ?? new _$UserState._(map: map.build(), list: list.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'map'; map.build(); @@ -250,29 +254,29 @@ class UserStateBuilder implements Builder { class _$UserUIState extends UserUIState { @override - final UserEntity editing; + final UserEntity? editing; @override final ListUIState listUIState; @override - final String selectedId; + final String? selectedId; @override - final bool forceSelected; + final bool? forceSelected; @override final int tabIndex; @override - final Completer saveCompleter; + final Completer? saveCompleter; @override - final Completer cancelCompleter; + final Completer? cancelCompleter; - factory _$UserUIState([void Function(UserUIStateBuilder) updates]) => + factory _$UserUIState([void Function(UserUIStateBuilder)? updates]) => (new UserUIStateBuilder()..update(updates))._build(); _$UserUIState._( {this.editing, - this.listUIState, + required this.listUIState, this.selectedId, this.forceSelected, - this.tabIndex, + required this.tabIndex, this.saveCompleter, this.cancelCompleter}) : super._() { @@ -301,10 +305,10 @@ class _$UserUIState extends UserUIState { cancelCompleter == other.cancelCompleter; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, editing.hashCode); _$hash = $jc(_$hash, listUIState.hashCode); @@ -332,39 +336,39 @@ class _$UserUIState extends UserUIState { } class UserUIStateBuilder implements Builder { - _$UserUIState _$v; + _$UserUIState? _$v; - UserEntityBuilder _editing; + UserEntityBuilder? _editing; UserEntityBuilder get editing => _$this._editing ??= new UserEntityBuilder(); - set editing(UserEntityBuilder editing) => _$this._editing = editing; + set editing(UserEntityBuilder? editing) => _$this._editing = editing; - ListUIStateBuilder _listUIState; + ListUIStateBuilder? _listUIState; ListUIStateBuilder get listUIState => _$this._listUIState ??= new ListUIStateBuilder(); - set listUIState(ListUIStateBuilder listUIState) => + set listUIState(ListUIStateBuilder? listUIState) => _$this._listUIState = listUIState; - String _selectedId; - String get selectedId => _$this._selectedId; - set selectedId(String selectedId) => _$this._selectedId = selectedId; + String? _selectedId; + String? get selectedId => _$this._selectedId; + set selectedId(String? selectedId) => _$this._selectedId = selectedId; - bool _forceSelected; - bool get forceSelected => _$this._forceSelected; - set forceSelected(bool forceSelected) => + bool? _forceSelected; + bool? get forceSelected => _$this._forceSelected; + set forceSelected(bool? forceSelected) => _$this._forceSelected = forceSelected; - int _tabIndex; - int get tabIndex => _$this._tabIndex; - set tabIndex(int tabIndex) => _$this._tabIndex = tabIndex; + int? _tabIndex; + int? get tabIndex => _$this._tabIndex; + set tabIndex(int? tabIndex) => _$this._tabIndex = tabIndex; - Completer _saveCompleter; - Completer get saveCompleter => _$this._saveCompleter; - set saveCompleter(Completer saveCompleter) => + Completer? _saveCompleter; + Completer? get saveCompleter => _$this._saveCompleter; + set saveCompleter(Completer? saveCompleter) => _$this._saveCompleter = saveCompleter; - Completer _cancelCompleter; - Completer get cancelCompleter => _$this._cancelCompleter; - set cancelCompleter(Completer cancelCompleter) => + Completer? _cancelCompleter; + Completer? get cancelCompleter => _$this._cancelCompleter; + set cancelCompleter(Completer? cancelCompleter) => _$this._cancelCompleter = cancelCompleter; UserUIStateBuilder(); @@ -391,7 +395,7 @@ class UserUIStateBuilder implements Builder { } @override - void update(void Function(UserUIStateBuilder) updates) { + void update(void Function(UserUIStateBuilder)? updates) { if (updates != null) updates(this); } @@ -412,7 +416,7 @@ class UserUIStateBuilder implements Builder { saveCompleter: saveCompleter, cancelCompleter: cancelCompleter); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'editing'; _editing?.build(); diff --git a/lib/redux/vendor/vendor_actions.dart b/lib/redux/vendor/vendor_actions.dart index 3fca1e4fe..1573e2450 100644 --- a/lib/redux/vendor/vendor_actions.dart +++ b/lib/redux/vendor/vendor_actions.dart @@ -27,31 +27,31 @@ class ViewVendorList implements PersistUI { }); final bool force; - final int page; + final int? page; } class ViewVendor implements PersistUI, PersistPrefs { ViewVendor({ - @required this.vendorId, + required this.vendorId, this.force = false, }); - final String vendorId; + final String? vendorId; final bool force; } class EditVendor implements PersistUI, PersistPrefs { EditVendor( - {@required this.vendor, + {required this.vendor, this.contact, this.completer, this.cancelCompleter, this.force = false}); final VendorEntity vendor; - final VendorContactEntity contact; - final Completer completer; - final Completer cancelCompleter; + final VendorContactEntity? contact; + final Completer? completer; + final Completer? cancelCompleter; final bool force; } @@ -64,21 +64,21 @@ class UpdateVendor implements PersistUI { class LoadVendor { LoadVendor({this.completer, this.vendorId}); - final Completer completer; - final String vendorId; + final Completer? completer; + final String? vendorId; } class LoadVendorActivity { LoadVendorActivity({this.completer, this.vendorId}); - final Completer completer; - final String vendorId; + final Completer? completer; + final String? vendorId; } class LoadVendors { LoadVendors({this.completer, this.page = 1}); - final Completer completer; + final Completer? completer; final int page; } @@ -133,8 +133,8 @@ class LoadVendorsSuccess implements StopLoading { class SaveVendorRequest implements StartSaving { SaveVendorRequest({this.completer, this.vendor}); - final Completer completer; - final VendorEntity vendor; + final Completer? completer; + final VendorEntity? vendor; } class SaveVendorSuccess implements StopSaving, PersistData, PersistUI { @@ -171,7 +171,7 @@ class ArchiveVendorSuccess implements StopSaving, PersistData { class ArchiveVendorFailure implements StopSaving { ArchiveVendorFailure(this.vendors); - final List vendors; + final List vendors; } class DeleteVendorRequest implements StartSaving { @@ -190,7 +190,7 @@ class DeleteVendorSuccess implements StopSaving, PersistData { class DeleteVendorFailure implements StopSaving { DeleteVendorFailure(this.vendors); - final List vendors; + final List vendors; } class RestoreVendorRequest implements StartSaving { @@ -209,26 +209,26 @@ class RestoreVendorSuccess implements StopSaving, PersistData { class RestoreVendorFailure implements StopSaving { RestoreVendorFailure(this.vendors); - final List vendors; + final List vendors; } class EditVendorContact implements PersistUI { EditVendorContact([this.contact]); - final VendorContactEntity contact; + final VendorContactEntity? contact; } class AddVendorContact implements PersistUI { AddVendorContact([this.contact]); - final VendorContactEntity contact; + final VendorContactEntity? contact; } class UpdateVendorContact implements PersistUI { UpdateVendorContact({this.index, this.contact}); - final int index; - final VendorContactEntity contact; + final int? index; + final VendorContactEntity? contact; } class DeleteVendorContact implements PersistUI { @@ -280,24 +280,24 @@ class FilterVendorsByCustom4 implements PersistUI { } void handleVendorAction( - BuildContext context, List vendors, EntityAction action) { + BuildContext? context, List vendors, EntityAction? action) { if (vendors.isEmpty) { return; } - final store = StoreProvider.of(context); + final store = StoreProvider.of(context!); final state = store.state; final localization = AppLocalization.of(context); - final vendor = vendors.first as VendorEntity; - final vendorIds = vendors.map((vendor) => vendor.id).toList(); + final vendor = vendors.first as VendorEntity?; + final vendorIds = vendors.map((vendor) => vendor!.id).toList(); switch (action) { case EntityAction.edit: - editEntity(entity: vendor); + editEntity(entity: vendor!); break; case EntityAction.vendorPortal: - final contact = vendor.contacts.firstWhere((contact) { - return (contact.link ?? '').isNotEmpty; + final contact = vendor!.contacts.firstWhere((contact) { + return (contact!.link ?? '').isNotEmpty; }, orElse: null); if (contact != null) { launchUrl(Uri.parse(contact.silentLink)); @@ -330,28 +330,28 @@ void handleVendorAction( break; case EntityAction.restore: final message = vendorIds.length > 1 - ? localization.restoredVendors + ? localization!.restoredVendors .replaceFirst(':value', ':count') .replaceFirst(':count', vendorIds.length.toString()) - : localization.restoredVendor; + : localization!.restoredVendor; store.dispatch(RestoreVendorRequest( snackBarCompleter(context, message), vendorIds)); break; case EntityAction.archive: final message = vendorIds.length > 1 - ? localization.archivedVendors + ? localization!.archivedVendors .replaceFirst(':value', ':count') .replaceFirst(':count', vendorIds.length.toString()) - : localization.archivedVendor; + : localization!.archivedVendor; store.dispatch(ArchiveVendorRequest( snackBarCompleter(context, message), vendorIds)); break; case EntityAction.delete: final message = vendorIds.length > 1 - ? localization.deletedVendors + ? localization!.deletedVendors .replaceFirst(':value', ':count') .replaceFirst(':count', vendorIds.length.toString()) - : localization.deletedVendor; + : localization!.deletedVendor; store.dispatch(DeleteVendorRequest( snackBarCompleter(context, message), vendorIds)); break; @@ -365,7 +365,7 @@ void handleVendorAction( } for (final vendor in vendors) { - if (!store.state.vendorListState.isSelected(vendor.id)) { + if (!store.state.vendorListState.isSelected(vendor!.id)) { store.dispatch(AddToVendorMultiselect(entity: vendor)); } else { store.dispatch(RemoveFromVendorMultiselect(entity: vendor)); @@ -386,14 +386,14 @@ void handleVendorAction( } if (documentIds.isEmpty) { showMessageDialog( - context: context, message: localization.noDocumentsToDownload); + context: context, message: localization!.noDocumentsToDownload); } else { store.dispatch( DownloadDocumentsRequest( documentIds: documentIds, completer: snackBarCompleter( context, - localization.exportedData, + localization!.exportedData, ), ), ); @@ -408,25 +408,25 @@ void handleVendorAction( class StartVendorMultiselect {} class AddToVendorMultiselect { - AddToVendorMultiselect({@required this.entity}); + AddToVendorMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class RemoveFromVendorMultiselect { - RemoveFromVendorMultiselect({@required this.entity}); + RemoveFromVendorMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class ClearVendorMultiselect {} class SaveVendorDocumentRequest implements StartSaving { SaveVendorDocumentRequest({ - @required this.isPrivate, - @required this.completer, - @required this.multipartFiles, - @required this.vendor, + required this.isPrivate, + required this.completer, + required this.multipartFiles, + required this.vendor, }); final bool isPrivate; @@ -450,5 +450,5 @@ class SaveVendorDocumentFailure implements StopSaving { class UpdateVendorTab implements PersistUI { UpdateVendorTab({this.tabIndex}); - final int tabIndex; + final int? tabIndex; } diff --git a/lib/redux/vendor/vendor_middleware.dart b/lib/redux/vendor/vendor_middleware.dart index c8395efff..84f4b4184 100644 --- a/lib/redux/vendor/vendor_middleware.dart +++ b/lib/redux/vendor/vendor_middleware.dart @@ -50,14 +50,14 @@ List> createStoreVendorsMiddleware([ Middleware _editVendor() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as EditVendor; + final action = dynamicAction as EditVendor?; next(action); store.dispatch(UpdateCurrentRoute(VendorEditScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(VendorEditScreen.route); + navigatorKey.currentState!.pushNamed(VendorEditScreen.route); } }; } @@ -65,21 +65,21 @@ Middleware _editVendor() { Middleware _viewVendor() { return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as ViewVendor; + final action = dynamicAction as ViewVendor?; next(action); store.dispatch(UpdateCurrentRoute(VendorViewScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(VendorViewScreen.route); + navigatorKey.currentState!.pushNamed(VendorViewScreen.route); } }; } Middleware _viewVendorList() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as ViewVendorList; + final action = dynamicAction as ViewVendorList?; next(action); @@ -90,7 +90,7 @@ Middleware _viewVendorList() { store.dispatch(UpdateCurrentRoute(VendorScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamedAndRemoveUntil( + navigatorKey.currentState!.pushNamedAndRemoveUntil( VendorScreen.route, (Route route) => false); } }; @@ -178,24 +178,24 @@ Middleware _saveVendor(VendorRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as SaveVendorRequest; repository - .saveData(store.state.credentials, action.vendor) + .saveData(store.state.credentials, action.vendor!) .then((VendorEntity vendor) { - if (action.vendor.isNew) { + if (action.vendor!.isNew) { store.dispatch(AddVendorSuccess(vendor)); } else { store.dispatch(SaveVendorSuccess(vendor)); } - action.completer.complete(vendor); + action.completer!.complete(vendor); final vendorUIState = store.state.vendorUIState; if (vendorUIState.saveCompleter != null) { - vendorUIState.saveCompleter.complete(vendor); + vendorUIState.saveCompleter!.complete(vendor); } }).catchError((Object error) { print(error); store.dispatch(SaveVendorFailure(error)); - action.completer.completeError(error); + action.completer!.completeError(error); }); next(action); @@ -213,13 +213,13 @@ Middleware _loadVendor(VendorRepository repository) { store.dispatch(LoadVendorSuccess(vendor)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(LoadVendorFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -252,7 +252,7 @@ Middleware _loadVendors(VendorRepository repository) { )); } else { if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } store.dispatch(LoadPurchaseOrders()); } @@ -260,7 +260,7 @@ Middleware _loadVendors(VendorRepository repository) { print(error); store.dispatch(LoadVendorsFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -270,12 +270,12 @@ Middleware _loadVendors(VendorRepository repository) { Middleware _saveDocument(VendorRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as SaveVendorDocumentRequest; + final action = dynamicAction as SaveVendorDocumentRequest?; if (store.state.isEnterprisePlan) { repository .uploadDocument( store.state.credentials, - action.vendor, + action!.vendor, action.multipartFiles, action.isPrivate, ) @@ -299,7 +299,7 @@ Middleware _saveDocument(VendorRepository repository) { } else { const error = 'Uploading documents requires an enterprise plan'; store.dispatch(SaveVendorDocumentFailure(error)); - action.completer.completeError(error); + action!.completer.completeError(error); } next(action); diff --git a/lib/redux/vendor/vendor_reducer.dart b/lib/redux/vendor/vendor_reducer.dart index 796d99c7f..646eda021 100644 --- a/lib/redux/vendor/vendor_reducer.dart +++ b/lib/redux/vendor/vendor_reducer.dart @@ -17,77 +17,77 @@ import 'package:invoiceninja_flutter/redux/vendor/vendor_state.dart'; EntityUIState vendorUIReducer(VendorUIState state, dynamic action) { return state.rebuild((b) => b ..listUIState.replace(vendorListReducer(state.listUIState, action)) - ..editing.replace(editingReducer(state.editing, action)) + ..editing.replace(editingReducer(state.editing, action)!) ..editingContact - .replace(editingVendorContactReducer(state.editingContact, action)) + .replace(editingVendorContactReducer(state.editingContact, action)!) ..selectedId = selectedIdReducer(state.selectedId, action) ..forceSelected = forceSelectedReducer(state.forceSelected, action) ..tabIndex = tabIndexReducer(state.tabIndex, action) ..saveCompleter = saveCompleterReducer(state.saveCompleter, action) - ..cancelCompleter = cancelCompleterReducer(state.cancelCompleter, action)); + ..cancelCompleter = cancelCompleterReducer(state.cancelCompleter as Completer?, action) as Completer?); } -final forceSelectedReducer = combineReducers([ - TypedReducer((completer, action) => true), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), +final forceSelectedReducer = combineReducers([ + TypedReducer((completer, action) => true), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), ]); -final tabIndexReducer = combineReducers([ - TypedReducer((completer, action) { +final int? Function(int, dynamic) tabIndexReducer = combineReducers([ + TypedReducer((completer, action) { return action.tabIndex; }), - TypedReducer((completer, action) { + TypedReducer((completer, action) { return 0; }), ]); -final saveCompleterReducer = combineReducers>([ - TypedReducer, EditVendor>((completer, action) { - return action.completer; +final saveCompleterReducer = combineReducers?>([ + TypedReducer?, EditVendor>((completer, action) { + return action.completer as Completer?; }), ]); -final cancelCompleterReducer = combineReducers>([ - TypedReducer, EditVendor>((completer, action) { - return action.cancelCompleter; +final cancelCompleterReducer = combineReducers?>([ + TypedReducer?, EditVendor>((completer, action) { + return action.cancelCompleter as Completer?; }), ]); -final editingVendorContactReducer = combineReducers([ - TypedReducer(editVendorContact), - TypedReducer(editVendorContact), +final editingVendorContactReducer = combineReducers([ + TypedReducer(editVendorContact), + TypedReducer(editVendorContact), ]); VendorContactEntity editVendorContact( - VendorContactEntity contact, dynamic action) { + VendorContactEntity? contact, dynamic action) { return action.contact ?? VendorContactEntity(); } -Reducer selectedIdReducer = combineReducers([ - TypedReducer((completer, action) => ''), - TypedReducer((completer, action) => ''), - TypedReducer((selectedId, action) => +Reducer selectedIdReducer = combineReducers([ + TypedReducer((completer, action) => ''), + TypedReducer((completer, action) => ''), + TypedReducer((selectedId, action) => action.entityType == EntityType.vendor ? action.entityId : selectedId), - TypedReducer((selectedId, action) => action.vendorId), - TypedReducer( + TypedReducer((selectedId, action) => action.vendorId), + TypedReducer( (selectedId, action) => action.vendor.id), - TypedReducer( + TypedReducer( (selectedId, action) => action.clearSelection ? '' : selectedId), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer( + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer( (selectedId, action) => action.clearSelection ? '' : action.entityType == EntityType.vendor @@ -95,51 +95,51 @@ Reducer selectedIdReducer = combineReducers([ : selectedId), ]); -final editingReducer = combineReducers([ - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer((vendors, action) { +final editingReducer = combineReducers([ + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer((vendors, action) { return action.vendors[0]; }), - TypedReducer((vendors, action) { + TypedReducer((vendors, action) { return action.vendors[0]; }), - TypedReducer((vendors, action) { + TypedReducer((vendors, action) { return action.vendors[0]; }), - TypedReducer(_updateEditing), - TypedReducer((vendor, action) { + TypedReducer(_updateEditing), + TypedReducer((vendor, action) { return action.vendor.rebuild((b) => b..isChanged = true); }), - TypedReducer(_addContact), - TypedReducer(_removeContact), - TypedReducer(_updateContact), - TypedReducer(_clearEditing), + TypedReducer(_addContact), + TypedReducer(_removeContact), + TypedReducer(_updateContact), + TypedReducer(_clearEditing), ]); -VendorEntity _clearEditing(VendorEntity vendor, dynamic action) { +VendorEntity _clearEditing(VendorEntity? vendor, dynamic action) { return VendorEntity(); } -VendorEntity _updateEditing(VendorEntity vendor, dynamic action) { +VendorEntity? _updateEditing(VendorEntity? vendor, dynamic action) { return action.vendor; } -VendorEntity _addContact(VendorEntity vendor, AddVendorContact action) { - return vendor.rebuild((b) => b +VendorEntity _addContact(VendorEntity? vendor, AddVendorContact action) { + return vendor!.rebuild((b) => b ..contacts.add(action.contact ?? VendorContactEntity()) ..isChanged = true); } -VendorEntity _removeContact(VendorEntity vendor, DeleteVendorContact action) { - return vendor.rebuild((b) => b +VendorEntity _removeContact(VendorEntity? vendor, DeleteVendorContact action) { + return vendor!.rebuild((b) => b ..contacts.removeAt(action.index) ..isChanged = true); } -VendorEntity _updateContact(VendorEntity vendor, UpdateVendorContact action) { - return vendor.rebuild((b) => b - ..contacts[action.index] = action.contact +VendorEntity _updateContact(VendorEntity? vendor, UpdateVendorContact action) { + return vendor!.rebuild((b) => b + ..contacts[action.index!] = action.contact ..isChanged = true); } @@ -230,7 +230,7 @@ ListUIState _filterVendors(ListUIState vendorListState, FilterVendors action) { ListUIState _sortVendors(ListUIState vendorListState, SortVendors action) { return vendorListState.rebuild((b) => b - ..sortAscending = b.sortField != action.field || !b.sortAscending + ..sortAscending = b.sortField != action.field || !b.sortAscending! ..sortField = action.field); } @@ -241,13 +241,13 @@ ListUIState _startListMultiselect( ListUIState _addToListMultiselect( ListUIState vendorListState, AddToVendorMultiselect action) { - return vendorListState.rebuild((b) => b..selectedIds.add(action.entity.id)); + return vendorListState.rebuild((b) => b..selectedIds.add(action.entity!.id)); } ListUIState _removeFromListMultiselect( ListUIState vendorListState, RemoveFromVendorMultiselect action) { return vendorListState - .rebuild((b) => b..selectedIds.remove(action.entity.id)); + .rebuild((b) => b..selectedIds.remove(action.entity!.id)); } ListUIState _clearListMultiselect( @@ -319,6 +319,6 @@ VendorState _setLoadedVendors( VendorState _setLoadedCompany( VendorState vendorState, LoadCompanySuccess action) { - final company = action.userCompany.company; + final company = action.userCompany.company!; return vendorState.loadVendors(company.vendors); } diff --git a/lib/redux/vendor/vendor_selectors.dart b/lib/redux/vendor/vendor_selectors.dart index 2d7e2060b..83d729f33 100644 --- a/lib/redux/vendor/vendor_selectors.dart +++ b/lib/redux/vendor/vendor_selectors.dart @@ -9,22 +9,22 @@ import 'package:invoiceninja_flutter/redux/static/static_state.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; var memoizedDropdownVendorList = memo4( - (BuiltMap vendorMap, BuiltList vendorList, - BuiltMap userMap, StaticState staticState) => + (BuiltMap vendorMap, BuiltList vendorList, + BuiltMap userMap, StaticState staticState) => dropdownVendorsSelector(vendorMap, vendorList, userMap, staticState)); List dropdownVendorsSelector( - BuiltMap vendorMap, + BuiltMap vendorMap, BuiltList vendorList, - BuiltMap userMap, + BuiltMap userMap, StaticState staticState) { final list = vendorList.where((vendorId) { - final vendor = vendorMap[vendorId]; + final vendor = vendorMap[vendorId]!; return vendor.isActive; }).toList(); list.sort((vendorAId, vendorBId) { - final vendorA = vendorMap[vendorAId]; + final vendorA = vendorMap[vendorAId]!; final vendorB = vendorMap[vendorBId]; return vendorA.compareTo( vendorB, VendorFields.name, true, userMap, staticState); @@ -34,23 +34,23 @@ List dropdownVendorsSelector( } var memoizedFilteredVendorList = memo6((SelectionState selectionState, - BuiltMap vendorMap, + BuiltMap vendorMap, BuiltList vendorList, ListUIState vendorListState, - BuiltMap userMap, + BuiltMap userMap, StaticState staticState) => filteredVendorsSelector(selectionState, vendorMap, vendorList, vendorListState, userMap, staticState)); List filteredVendorsSelector( SelectionState selectionState, - BuiltMap vendorMap, + BuiltMap vendorMap, BuiltList vendorList, ListUIState vendorListState, - BuiltMap userMap, + BuiltMap userMap, StaticState staticState) { final list = vendorList.where((vendorId) { - final vendor = vendorMap[vendorId]; + final vendor = vendorMap[vendorId]!; if (vendor.id == selectionState.selectedId) { return true; @@ -78,7 +78,7 @@ List filteredVendorsSelector( }).toList(); list.sort((vendorAId, vendorBId) { - final vendorA = vendorMap[vendorAId]; + final vendorA = vendorMap[vendorAId]!; final vendorB = vendorMap[vendorBId]; return vendorA.compareTo(vendorB, vendorListState.sortField, vendorListState.sortAscending, userMap, staticState); @@ -88,15 +88,15 @@ List filteredVendorsSelector( } var memoizedVendorStatsForUser = memo2( - (String userId, BuiltMap vendorMap) => + (String userId, BuiltMap vendorMap) => vendorStatsForUser(userId, vendorMap)); EntityStats vendorStatsForUser( - String userId, BuiltMap vendorMap) { + String userId, BuiltMap vendorMap) { int countActive = 0; int countArchived = 0; vendorMap.forEach((vendorId, vendor) { - if (vendor.assignedUserId == userId) { + if (vendor!.assignedUserId == userId) { if (vendor.isActive) { countActive++; } else if (vendor.isArchived) { @@ -110,12 +110,12 @@ EntityStats vendorStatsForUser( var memoizedCalculateVendorBalance = memo4((String vendorId, String currencyId, - BuiltMap expenseMap, + BuiltMap expenseMap, BuiltList expenseList) => calculateVendorBalance(vendorId, currencyId, expenseMap, expenseList)); double calculateVendorBalance(String vendorId, String currencyId, - BuiltMap expenseMap, BuiltList expenseList) { + BuiltMap expenseMap, BuiltList expenseList) { double total = 0; expenseList.forEach((expenseId) { diff --git a/lib/redux/vendor/vendor_state.dart b/lib/redux/vendor/vendor_state.dart index 5274d6a73..238945439 100644 --- a/lib/redux/vendor/vendor_state.dart +++ b/lib/redux/vendor/vendor_state.dart @@ -29,9 +29,9 @@ abstract class VendorState implements Built { @memoized int get hashCode; - BuiltMap get map; + BuiltMap get map; - VendorEntity get(String vendorId) { + VendorEntity? get(String vendorId) { if (map.containsKey(vendorId)) { return map[vendorId]; } else { @@ -42,7 +42,7 @@ abstract class VendorState implements Built { BuiltList get list; VendorState loadVendors(BuiltList clients) { - final map = Map.fromIterable( + final map = Map.fromIterable( clients, key: (dynamic item) => item.id, value: (dynamic item) => item, @@ -59,7 +59,7 @@ abstract class VendorState implements Built { abstract class VendorUIState extends Object with EntityUIState implements Built { - factory VendorUIState(PrefStateSortField sortField) { + factory VendorUIState(PrefStateSortField? sortField) { return _$VendorUIState._( listUIState: ListUIState(sortField?.field ?? VendorFields.name, sortAscending: sortField?.ascending), @@ -76,17 +76,15 @@ abstract class VendorUIState extends Object @memoized int get hashCode; - @nullable - VendorEntity get editing; + VendorEntity? get editing; - @nullable - VendorContactEntity get editingContact; + VendorContactEntity? get editingContact; @override - bool get isCreatingNew => editing.isNew; + bool get isCreatingNew => editing!.isNew; @override - String get editingId => editing.id; + String get editingId => editing!.id; static Serializer get serializer => _$vendorUIStateSerializer; } diff --git a/lib/redux/vendor/vendor_state.g.dart b/lib/redux/vendor/vendor_state.g.dart index 225f7c9cc..d2f54ad70 100644 --- a/lib/redux/vendor/vendor_state.g.dart +++ b/lib/redux/vendor/vendor_state.g.dart @@ -17,13 +17,15 @@ class _$VendorStateSerializer implements StructuredSerializer { final String wireName = 'VendorState'; @override - Iterable serialize(Serializers serializers, VendorState object, + Iterable serialize(Serializers serializers, VendorState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'map', serializers.serialize(object.map, - specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(VendorEntity)])), + specifiedType: const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(VendorEntity) + ])), 'list', serializers.serialize(object.list, specifiedType: @@ -34,28 +36,28 @@ class _$VendorStateSerializer implements StructuredSerializer { } @override - VendorState deserialize(Serializers serializers, Iterable serialized, + VendorState deserialize(Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new VendorStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'map': result.map.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(VendorEntity) - ]))); + const FullType.nullable(String), + const FullType.nullable(VendorEntity) + ]))!); break; case 'list': result.list.replace(serializers.deserialize(value, - specifiedType: - const FullType(BuiltList, const [const FullType(String)])) - as BuiltList); + specifiedType: const FullType( + BuiltList, const [const FullType(String)]))! + as BuiltList); break; } } @@ -71,9 +73,9 @@ class _$VendorUIStateSerializer implements StructuredSerializer { final String wireName = 'VendorUIState'; @override - Iterable serialize(Serializers serializers, VendorUIState object, + Iterable serialize(Serializers serializers, VendorUIState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'listUIState', serializers.serialize(object.listUIState, specifiedType: const FullType(ListUIState)), @@ -81,7 +83,7 @@ class _$VendorUIStateSerializer implements StructuredSerializer { serializers.serialize(object.tabIndex, specifiedType: const FullType(int)), ]; - Object value; + Object? value; value = object.editing; if (value != null) { result @@ -115,40 +117,40 @@ class _$VendorUIStateSerializer implements StructuredSerializer { @override VendorUIState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new VendorUIStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'editing': result.editing.replace(serializers.deserialize(value, - specifiedType: const FullType(VendorEntity)) as VendorEntity); + specifiedType: const FullType(VendorEntity))! as VendorEntity); break; case 'editingContact': result.editingContact.replace(serializers.deserialize(value, - specifiedType: const FullType(VendorContactEntity)) + specifiedType: const FullType(VendorContactEntity))! as VendorContactEntity); break; case 'listUIState': result.listUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(ListUIState)) as ListUIState); + specifiedType: const FullType(ListUIState))! as ListUIState); break; case 'selectedId': result.selectedId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'forceSelected': result.forceSelected = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'tabIndex': result.tabIndex = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; } } @@ -159,14 +161,14 @@ class _$VendorUIStateSerializer implements StructuredSerializer { class _$VendorState extends VendorState { @override - final BuiltMap map; + final BuiltMap map; @override final BuiltList list; - factory _$VendorState([void Function(VendorStateBuilder) updates]) => + factory _$VendorState([void Function(VendorStateBuilder)? updates]) => (new VendorStateBuilder()..update(updates))._build(); - _$VendorState._({this.map, this.list}) : super._() { + _$VendorState._({required this.map, required this.list}) : super._() { BuiltValueNullFieldError.checkNotNull(map, r'VendorState', 'map'); BuiltValueNullFieldError.checkNotNull(list, r'VendorState', 'list'); } @@ -184,10 +186,10 @@ class _$VendorState extends VendorState { return other is VendorState && map == other.map && list == other.list; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, map.hashCode); _$hash = $jc(_$hash, list.hashCode); @@ -205,16 +207,16 @@ class _$VendorState extends VendorState { } class VendorStateBuilder implements Builder { - _$VendorState _$v; + _$VendorState? _$v; - MapBuilder _map; - MapBuilder get map => - _$this._map ??= new MapBuilder(); - set map(MapBuilder map) => _$this._map = map; + MapBuilder? _map; + MapBuilder get map => + _$this._map ??= new MapBuilder(); + set map(MapBuilder? map) => _$this._map = map; - ListBuilder _list; + ListBuilder? _list; ListBuilder get list => _$this._list ??= new ListBuilder(); - set list(ListBuilder list) => _$this._list = list; + set list(ListBuilder? list) => _$this._list = list; VendorStateBuilder(); @@ -235,7 +237,7 @@ class VendorStateBuilder implements Builder { } @override - void update(void Function(VendorStateBuilder) updates) { + void update(void Function(VendorStateBuilder)? updates) { if (updates != null) updates(this); } @@ -248,7 +250,7 @@ class VendorStateBuilder implements Builder { _$result = _$v ?? new _$VendorState._(map: map.build(), list: list.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'map'; map.build(); @@ -267,32 +269,32 @@ class VendorStateBuilder implements Builder { class _$VendorUIState extends VendorUIState { @override - final VendorEntity editing; + final VendorEntity? editing; @override - final VendorContactEntity editingContact; + final VendorContactEntity? editingContact; @override final ListUIState listUIState; @override - final String selectedId; + final String? selectedId; @override - final bool forceSelected; + final bool? forceSelected; @override final int tabIndex; @override - final Completer saveCompleter; + final Completer? saveCompleter; @override - final Completer cancelCompleter; + final Completer? cancelCompleter; - factory _$VendorUIState([void Function(VendorUIStateBuilder) updates]) => + factory _$VendorUIState([void Function(VendorUIStateBuilder)? updates]) => (new VendorUIStateBuilder()..update(updates))._build(); _$VendorUIState._( {this.editing, this.editingContact, - this.listUIState, + required this.listUIState, this.selectedId, this.forceSelected, - this.tabIndex, + required this.tabIndex, this.saveCompleter, this.cancelCompleter}) : super._() { @@ -323,10 +325,10 @@ class _$VendorUIState extends VendorUIState { cancelCompleter == other.cancelCompleter; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, editing.hashCode); _$hash = $jc(_$hash, editingContact.hashCode); @@ -357,46 +359,46 @@ class _$VendorUIState extends VendorUIState { class VendorUIStateBuilder implements Builder { - _$VendorUIState _$v; + _$VendorUIState? _$v; - VendorEntityBuilder _editing; + VendorEntityBuilder? _editing; VendorEntityBuilder get editing => _$this._editing ??= new VendorEntityBuilder(); - set editing(VendorEntityBuilder editing) => _$this._editing = editing; + set editing(VendorEntityBuilder? editing) => _$this._editing = editing; - VendorContactEntityBuilder _editingContact; + VendorContactEntityBuilder? _editingContact; VendorContactEntityBuilder get editingContact => _$this._editingContact ??= new VendorContactEntityBuilder(); - set editingContact(VendorContactEntityBuilder editingContact) => + set editingContact(VendorContactEntityBuilder? editingContact) => _$this._editingContact = editingContact; - ListUIStateBuilder _listUIState; + ListUIStateBuilder? _listUIState; ListUIStateBuilder get listUIState => _$this._listUIState ??= new ListUIStateBuilder(); - set listUIState(ListUIStateBuilder listUIState) => + set listUIState(ListUIStateBuilder? listUIState) => _$this._listUIState = listUIState; - String _selectedId; - String get selectedId => _$this._selectedId; - set selectedId(String selectedId) => _$this._selectedId = selectedId; + String? _selectedId; + String? get selectedId => _$this._selectedId; + set selectedId(String? selectedId) => _$this._selectedId = selectedId; - bool _forceSelected; - bool get forceSelected => _$this._forceSelected; - set forceSelected(bool forceSelected) => + bool? _forceSelected; + bool? get forceSelected => _$this._forceSelected; + set forceSelected(bool? forceSelected) => _$this._forceSelected = forceSelected; - int _tabIndex; - int get tabIndex => _$this._tabIndex; - set tabIndex(int tabIndex) => _$this._tabIndex = tabIndex; + int? _tabIndex; + int? get tabIndex => _$this._tabIndex; + set tabIndex(int? tabIndex) => _$this._tabIndex = tabIndex; - Completer _saveCompleter; - Completer get saveCompleter => _$this._saveCompleter; - set saveCompleter(Completer saveCompleter) => + Completer? _saveCompleter; + Completer? get saveCompleter => _$this._saveCompleter; + set saveCompleter(Completer? saveCompleter) => _$this._saveCompleter = saveCompleter; - Completer _cancelCompleter; - Completer get cancelCompleter => _$this._cancelCompleter; - set cancelCompleter(Completer cancelCompleter) => + Completer? _cancelCompleter; + Completer? get cancelCompleter => _$this._cancelCompleter; + set cancelCompleter(Completer? cancelCompleter) => _$this._cancelCompleter = cancelCompleter; VendorUIStateBuilder(); @@ -424,7 +426,7 @@ class VendorUIStateBuilder } @override - void update(void Function(VendorUIStateBuilder) updates) { + void update(void Function(VendorUIStateBuilder)? updates) { if (updates != null) updates(this); } @@ -446,7 +448,7 @@ class VendorUIStateBuilder saveCompleter: saveCompleter, cancelCompleter: cancelCompleter); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'editing'; _editing?.build(); diff --git a/lib/redux/webhook/webhook_actions.dart b/lib/redux/webhook/webhook_actions.dart index 50ab02cc5..f4f03c317 100644 --- a/lib/redux/webhook/webhook_actions.dart +++ b/lib/redux/webhook/webhook_actions.dart @@ -29,24 +29,24 @@ class ViewWebhookList implements PersistUI { class ViewWebhook implements PersistUI, PersistPrefs { ViewWebhook({ - @required this.webhookId, + required this.webhookId, this.force = false, }); - final String webhookId; + final String? webhookId; final bool force; } class EditWebhook implements PersistUI, PersistPrefs { EditWebhook( - {@required this.webhook, + {required this.webhook, this.completer, this.cancelCompleter, this.force = false}); final WebhookEntity webhook; - final Completer completer; - final Completer cancelCompleter; + final Completer? completer; + final Completer? cancelCompleter; final bool force; } @@ -59,21 +59,21 @@ class UpdateWebhook implements PersistUI { class LoadWebhook { LoadWebhook({this.completer, this.webhookId}); - final Completer completer; - final String webhookId; + final Completer? completer; + final String? webhookId; } class LoadWebhookActivity { LoadWebhookActivity({this.completer, this.webhookId}); - final Completer completer; - final String webhookId; + final Completer? completer; + final String? webhookId; } class LoadWebhooks { LoadWebhooks({this.completer}); - final Completer completer; + final Completer? completer; } class LoadWebhookRequest implements StartLoading {} @@ -127,8 +127,8 @@ class LoadWebhooksSuccess implements StopLoading { class SaveWebhookRequest implements StartSaving { SaveWebhookRequest({this.completer, this.webhook}); - final Completer completer; - final WebhookEntity webhook; + final Completer? completer; + final WebhookEntity? webhook; } class SaveWebhookSuccess implements StopSaving, PersistData, PersistUI { @@ -165,7 +165,7 @@ class ArchiveWebhooksSuccess implements StopSaving, PersistData { class ArchiveWebhooksFailure implements StopSaving { ArchiveWebhooksFailure(this.webhooks); - final List webhooks; + final List webhooks; } class DeleteWebhooksRequest implements StartSaving { @@ -184,7 +184,7 @@ class DeleteWebhooksSuccess implements StopSaving, PersistData { class DeleteWebhooksFailure implements StopSaving { DeleteWebhooksFailure(this.webhooks); - final List webhooks; + final List webhooks; } class RestoreWebhooksRequest implements StartSaving { @@ -203,7 +203,7 @@ class RestoreWebhooksSuccess implements StopSaving, PersistData { class RestoreWebhooksFailure implements StopSaving { RestoreWebhooksFailure(this.webhooks); - final List webhooks; + final List webhooks; } class FilterWebhooks implements PersistUI { @@ -249,48 +249,48 @@ class FilterWebhooksByCustom4 implements PersistUI { } void handleWebhookAction( - BuildContext context, List webhooks, EntityAction action) { + BuildContext? context, List webhooks, EntityAction? action) { if (webhooks.isEmpty) { return; } - final store = StoreProvider.of(context); + final store = StoreProvider.of(context!); final localization = AppLocalization.of(context); - final webhook = webhooks.first as WebhookEntity; - final webhookIds = webhooks.map((webhook) => webhook.id).toList(); + final webhook = webhooks.first as WebhookEntity?; + final webhookIds = webhooks.map((webhook) => webhook!.id).toList(); switch (action) { case EntityAction.copy: - Clipboard.setData(ClipboardData(text: webhook.targetUrl)); - showToast(localization.copiedToClipboard.replaceFirst(':value ', '')); + Clipboard.setData(ClipboardData(text: webhook!.targetUrl)); + showToast(localization!.copiedToClipboard.replaceFirst(':value ', '')); break; case EntityAction.edit: - editEntity(entity: webhook); + editEntity(entity: webhook!); break; case EntityAction.restore: final message = webhookIds.length > 1 - ? localization.restoredWebhooks + ? localization!.restoredWebhooks .replaceFirst(':value', ':count') .replaceFirst(':count', webhookIds.length.toString()) - : localization.restoredWebhook; + : localization!.restoredWebhook; store.dispatch(RestoreWebhooksRequest( snackBarCompleter(context, message), webhookIds)); break; case EntityAction.archive: final message = webhookIds.length > 1 - ? localization.archivedWebhooks + ? localization!.archivedWebhooks .replaceFirst(':value', ':count') .replaceFirst(':count', webhookIds.length.toString()) - : localization.archivedWebhook; + : localization!.archivedWebhook; store.dispatch(ArchiveWebhooksRequest( snackBarCompleter(context, message), webhookIds)); break; case EntityAction.delete: final message = webhookIds.length > 1 - ? localization.deletedWebhooks + ? localization!.deletedWebhooks .replaceFirst(':value', ':count') .replaceFirst(':count', webhookIds.length.toString()) - : localization.deletedWebhook; + : localization!.deletedWebhook; store.dispatch(DeleteWebhooksRequest( snackBarCompleter(context, message), webhookIds)); break; @@ -304,7 +304,7 @@ void handleWebhookAction( } for (final webhook in webhooks) { - if (!store.state.webhookListState.isSelected(webhook.id)) { + if (!store.state.webhookListState.isSelected(webhook!.id)) { store.dispatch(AddToWebhookMultiselect(entity: webhook)); } else { store.dispatch(RemoveFromWebhookMultiselect(entity: webhook)); @@ -324,15 +324,15 @@ class StartWebhookMultiselect { } class AddToWebhookMultiselect { - AddToWebhookMultiselect({@required this.entity}); + AddToWebhookMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class RemoveFromWebhookMultiselect { - RemoveFromWebhookMultiselect({@required this.entity}); + RemoveFromWebhookMultiselect({required this.entity}); - final BaseEntity entity; + final BaseEntity? entity; } class ClearWebhookMultiselect { diff --git a/lib/redux/webhook/webhook_middleware.dart b/lib/redux/webhook/webhook_middleware.dart index 282760f98..12f3813a0 100644 --- a/lib/redux/webhook/webhook_middleware.dart +++ b/lib/redux/webhook/webhook_middleware.dart @@ -45,14 +45,14 @@ List> createStoreWebhooksMiddleware([ Middleware _editWebhook() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as EditWebhook; + final action = dynamicAction as EditWebhook?; next(action); store.dispatch(UpdateCurrentRoute(WebhookEditScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(WebhookEditScreen.route); + navigatorKey.currentState!.pushNamed(WebhookEditScreen.route); } }; } @@ -60,21 +60,21 @@ Middleware _editWebhook() { Middleware _viewWebhook() { return (Store store, dynamic dynamicAction, NextDispatcher next) async { - final action = dynamicAction as ViewWebhook; + final action = dynamicAction as ViewWebhook?; next(action); store.dispatch(UpdateCurrentRoute(WebhookViewScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamed(WebhookViewScreen.route); + navigatorKey.currentState!.pushNamed(WebhookViewScreen.route); } }; } Middleware _viewWebhookList() { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as ViewWebhookList; + final action = dynamicAction as ViewWebhookList?; next(action); @@ -85,7 +85,7 @@ Middleware _viewWebhookList() { store.dispatch(UpdateCurrentRoute(WebhookScreen.route)); if (store.state.prefState.isMobile) { - navigatorKey.currentState.pushNamedAndRemoveUntil( + navigatorKey.currentState!.pushNamedAndRemoveUntil( WebhookScreen.route, (Route route) => false); } }; @@ -173,19 +173,19 @@ Middleware _saveWebhook(WebhookRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as SaveWebhookRequest; repository - .saveData(store.state.credentials, action.webhook) + .saveData(store.state.credentials, action.webhook!) .then((WebhookEntity webhook) { - if (action.webhook.isNew) { + if (action.webhook!.isNew) { store.dispatch(AddWebhookSuccess(webhook)); } else { store.dispatch(SaveWebhookSuccess(webhook)); } - action.completer.complete(webhook); + action.completer!.complete(webhook); }).catchError((Object error) { print(error); store.dispatch(SaveWebhookFailure(error)); - action.completer.completeError(error); + action.completer!.completeError(error); }); next(action); @@ -202,13 +202,13 @@ Middleware _loadWebhook(WebhookRepository repository) { store.dispatch(LoadWebhookSuccess(webhook)); if (action.completer != null) { - action.completer.complete(null); + action.completer!.complete(null); } }).catchError((Object error) { print(error); store.dispatch(LoadWebhookFailure(error)); if (action.completer != null) { - action.completer.completeError(error); + action.completer!.completeError(error); } }); @@ -218,15 +218,15 @@ Middleware _loadWebhook(WebhookRepository repository) { Middleware _loadWebhooks(WebhookRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as LoadWebhooks; + final action = dynamicAction as LoadWebhooks?; final AppState state = store.state; store.dispatch(LoadWebhooksRequest()); repository.loadList(state.credentials).then((data) { store.dispatch(LoadWebhooksSuccess(data)); - if (action.completer != null) { - action.completer.complete(null); + if (action!.completer != null) { + action.completer!.complete(null); } /* if (state.productState.isStale) { @@ -236,8 +236,8 @@ Middleware _loadWebhooks(WebhookRepository repository) { }).catchError((Object error) { print(error); store.dispatch(LoadWebhooksFailure(error)); - if (action.completer != null) { - action.completer.completeError(error); + if (action!.completer != null) { + action.completer!.completeError(error); } }); diff --git a/lib/redux/webhook/webhook_reducer.dart b/lib/redux/webhook/webhook_reducer.dart index d25cfbf44..ce5b22953 100644 --- a/lib/redux/webhook/webhook_reducer.dart +++ b/lib/redux/webhook/webhook_reducer.dart @@ -14,42 +14,42 @@ import 'package:invoiceninja_flutter/redux/webhook/webhook_state.dart'; EntityUIState webhookUIReducer(WebhookUIState state, dynamic action) { return state.rebuild((b) => b ..listUIState.replace(webhookListReducer(state.listUIState, action)) - ..editing.replace(editingReducer(state.editing, action)) + ..editing.replace(editingReducer(state.editing, action)!) ..selectedId = selectedIdReducer(state.selectedId, action) ..forceSelected = forceSelectedReducer(state.forceSelected, action)); } -final forceSelectedReducer = combineReducers([ - TypedReducer((completer, action) => true), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), +final forceSelectedReducer = combineReducers([ + TypedReducer((completer, action) => true), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), + TypedReducer((completer, action) => false), ]); -Reducer selectedIdReducer = combineReducers([ - TypedReducer((completer, action) => ''), - TypedReducer((completer, action) => ''), - TypedReducer((selectedId, action) => +Reducer selectedIdReducer = combineReducers([ + TypedReducer((completer, action) => ''), + TypedReducer((completer, action) => ''), + TypedReducer((selectedId, action) => action.entityType == EntityType.webhook ? action.entityId : selectedId), - TypedReducer( - (String selectedId, dynamic action) => action.webhookId), - TypedReducer( - (String selectedId, dynamic action) => action.webhook.id), - TypedReducer( + TypedReducer( + (String? selectedId, dynamic action) => action.webhookId), + TypedReducer( + (String? selectedId, dynamic action) => action.webhook.id), + TypedReducer( (selectedId, action) => action.clearSelection ? '' : selectedId), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), - TypedReducer( + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer((selectedId, action) => ''), + TypedReducer( (selectedId, action) => action.clearSelection ? '' : action.entityType == EntityType.webhook @@ -57,30 +57,30 @@ Reducer selectedIdReducer = combineReducers([ : selectedId), ]); -final editingReducer = combineReducers([ - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer((webhooks, action) { +final editingReducer = combineReducers([ + TypedReducer(_updateEditing), + TypedReducer(_updateEditing), + TypedReducer((webhooks, action) { return action.webhooks[0]; }), - TypedReducer((webhooks, action) { + TypedReducer((webhooks, action) { return action.webhooks[0]; }), - TypedReducer((webhooks, action) { + TypedReducer((webhooks, action) { return action.webhooks[0]; }), - TypedReducer(_updateEditing), - TypedReducer((webhook, action) { + TypedReducer(_updateEditing), + TypedReducer((webhook, action) { return action.webhook.rebuild((b) => b..isChanged = true); }), - TypedReducer(_clearEditing), + TypedReducer(_clearEditing), ]); -WebhookEntity _clearEditing(WebhookEntity webhook, dynamic action) { +WebhookEntity _clearEditing(WebhookEntity? webhook, dynamic action) { return WebhookEntity(); } -WebhookEntity _updateEditing(WebhookEntity webhook, dynamic action) { +WebhookEntity? _updateEditing(WebhookEntity? webhook, dynamic action) { return action.webhook; } @@ -151,7 +151,7 @@ ListUIState _filterWebhooks( ListUIState _sortWebhooks(ListUIState webhookListState, SortWebhooks action) { return webhookListState.rebuild((b) => b - ..sortAscending = b.sortField != action.field || !b.sortAscending + ..sortAscending = b.sortField != action.field || !b.sortAscending! ..sortField = action.field); } @@ -162,13 +162,13 @@ ListUIState _startListMultiselect( ListUIState _addToListMultiselect( ListUIState productListState, AddToWebhookMultiselect action) { - return productListState.rebuild((b) => b..selectedIds.add(action.entity.id)); + return productListState.rebuild((b) => b..selectedIds.add(action.entity!.id)); } ListUIState _removeFromListMultiselect( ListUIState productListState, RemoveFromWebhookMultiselect action) { return productListState - .rebuild((b) => b..selectedIds.remove(action.entity.id)); + .rebuild((b) => b..selectedIds.remove(action.entity!.id)); } ListUIState _clearListMultiselect( @@ -238,6 +238,6 @@ WebhookState _setLoadedWebhooks( WebhookState _setLoadedCompany( WebhookState webhookState, LoadCompanySuccess action) { - final company = action.userCompany.company; + final company = action.userCompany.company!; return webhookState.loadWebhooks(company.webhooks); } diff --git a/lib/redux/webhook/webhook_selectors.dart b/lib/redux/webhook/webhook_selectors.dart index 2311f5207..4444eeb2b 100644 --- a/lib/redux/webhook/webhook_selectors.dart +++ b/lib/redux/webhook/webhook_selectors.dart @@ -18,7 +18,7 @@ List dropdownWebhooksSelector( BuiltList webhookList, String clientId) { final list = webhookList.where((webhookId) { - final webhook = webhookMap[webhookId]; + final webhook = webhookMap[webhookId]!; /* if (clientId != null && clientId > 0 && webhook.clientId != clientId) { return false; @@ -28,7 +28,7 @@ List dropdownWebhooksSelector( }).toList(); list.sort((webhookAId, webhookBId) { - final webhookA = webhookMap[webhookAId]; + final webhookA = webhookMap[webhookAId]!; final webhookB = webhookMap[webhookBId]; return webhookA.compareTo(webhookB, WebhookFields.targetUrl, true); }); @@ -38,7 +38,7 @@ List dropdownWebhooksSelector( var memoizedFilteredWebhookList = memo4(( SelectionState selectionState, - BuiltMap webhookMap, + BuiltMap webhookMap, BuiltList webhookList, ListUIState webhookListState, ) => @@ -51,12 +51,12 @@ var memoizedFilteredWebhookList = memo4(( List filteredWebhooksSelector( SelectionState selectionState, - BuiltMap webhookMap, + BuiltMap webhookMap, BuiltList webhookList, ListUIState webhookListState, ) { final list = webhookList.where((webhookId) { - final webhook = webhookMap[webhookId]; + final webhook = webhookMap[webhookId]!; if (webhook.id == selectionState.selectedId) { return true; @@ -69,7 +69,7 @@ List filteredWebhooksSelector( }).toList(); list.sort((webhookAId, webhookBId) { - final webhookA = webhookMap[webhookAId]; + final webhookA = webhookMap[webhookAId]!; final webhookB = webhookMap[webhookBId]; return webhookA.compareTo( webhookB, webhookListState.sortField, webhookListState.sortAscending); diff --git a/lib/redux/webhook/webhook_state.dart b/lib/redux/webhook/webhook_state.dart index fcbafaadf..42e835c98 100644 --- a/lib/redux/webhook/webhook_state.dart +++ b/lib/redux/webhook/webhook_state.dart @@ -29,12 +29,12 @@ abstract class WebhookState @memoized int get hashCode; - BuiltMap get map; + BuiltMap get map; BuiltList get list; WebhookState loadWebhooks(BuiltList clients) { - final map = Map.fromIterable( + final map = Map.fromIterable( clients, key: (dynamic item) => item.id, value: (dynamic item) => item, @@ -51,7 +51,7 @@ abstract class WebhookState abstract class WebhookUIState extends Object with EntityUIState implements Built { - factory WebhookUIState(PrefStateSortField sortField) { + factory WebhookUIState(PrefStateSortField? sortField) { return _$WebhookUIState._( listUIState: ListUIState(sortField?.field ?? WebhookFields.targetUrl, sortAscending: sortField?.ascending), @@ -67,14 +67,13 @@ abstract class WebhookUIState extends Object @memoized int get hashCode; - @nullable - WebhookEntity get editing; + WebhookEntity? get editing; @override - bool get isCreatingNew => editing.isNew; + bool get isCreatingNew => editing!.isNew; @override - String get editingId => editing.id; + String get editingId => editing!.id; static Serializer get serializer => _$webhookUIStateSerializer; diff --git a/lib/redux/webhook/webhook_state.g.dart b/lib/redux/webhook/webhook_state.g.dart index 305634adb..18e2b1355 100644 --- a/lib/redux/webhook/webhook_state.g.dart +++ b/lib/redux/webhook/webhook_state.g.dart @@ -18,13 +18,15 @@ class _$WebhookStateSerializer implements StructuredSerializer { final String wireName = 'WebhookState'; @override - Iterable serialize(Serializers serializers, WebhookState object, + Iterable serialize(Serializers serializers, WebhookState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'map', serializers.serialize(object.map, - specifiedType: const FullType(BuiltMap, - const [const FullType(String), const FullType(WebhookEntity)])), + specifiedType: const FullType(BuiltMap, const [ + const FullType.nullable(String), + const FullType.nullable(WebhookEntity) + ])), 'list', serializers.serialize(object.list, specifiedType: @@ -35,28 +37,29 @@ class _$WebhookStateSerializer implements StructuredSerializer { } @override - WebhookState deserialize(Serializers serializers, Iterable serialized, + WebhookState deserialize( + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new WebhookStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'map': result.map.replace(serializers.deserialize(value, specifiedType: const FullType(BuiltMap, const [ - const FullType(String), - const FullType(WebhookEntity) - ]))); + const FullType.nullable(String), + const FullType.nullable(WebhookEntity) + ]))!); break; case 'list': result.list.replace(serializers.deserialize(value, - specifiedType: - const FullType(BuiltList, const [const FullType(String)])) - as BuiltList); + specifiedType: const FullType( + BuiltList, const [const FullType(String)]))! + as BuiltList); break; } } @@ -73,9 +76,9 @@ class _$WebhookUIStateSerializer final String wireName = 'WebhookUIState'; @override - Iterable serialize(Serializers serializers, WebhookUIState object, + Iterable serialize(Serializers serializers, WebhookUIState object, {FullType specifiedType = FullType.unspecified}) { - final result = [ + final result = [ 'listUIState', serializers.serialize(object.listUIState, specifiedType: const FullType(ListUIState)), @@ -83,7 +86,7 @@ class _$WebhookUIStateSerializer serializers.serialize(object.tabIndex, specifiedType: const FullType(int)), ]; - Object value; + Object? value; value = object.editing; if (value != null) { result @@ -110,35 +113,35 @@ class _$WebhookUIStateSerializer @override WebhookUIState deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { final result = new WebhookUIStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { - final key = iterator.current as String; + final key = iterator.current! as String; iterator.moveNext(); - final Object value = iterator.current; + final Object? value = iterator.current; switch (key) { case 'editing': result.editing.replace(serializers.deserialize(value, - specifiedType: const FullType(WebhookEntity)) as WebhookEntity); + specifiedType: const FullType(WebhookEntity))! as WebhookEntity); break; case 'listUIState': result.listUIState.replace(serializers.deserialize(value, - specifiedType: const FullType(ListUIState)) as ListUIState); + specifiedType: const FullType(ListUIState))! as ListUIState); break; case 'selectedId': result.selectedId = serializers.deserialize(value, - specifiedType: const FullType(String)) as String; + specifiedType: const FullType(String)) as String?; break; case 'forceSelected': result.forceSelected = serializers.deserialize(value, - specifiedType: const FullType(bool)) as bool; + specifiedType: const FullType(bool)) as bool?; break; case 'tabIndex': result.tabIndex = serializers.deserialize(value, - specifiedType: const FullType(int)) as int; + specifiedType: const FullType(int))! as int; break; } } @@ -149,14 +152,14 @@ class _$WebhookUIStateSerializer class _$WebhookState extends WebhookState { @override - final BuiltMap map; + final BuiltMap map; @override final BuiltList list; - factory _$WebhookState([void Function(WebhookStateBuilder) updates]) => + factory _$WebhookState([void Function(WebhookStateBuilder)? updates]) => (new WebhookStateBuilder()..update(updates))._build(); - _$WebhookState._({this.map, this.list}) : super._() { + _$WebhookState._({required this.map, required this.list}) : super._() { BuiltValueNullFieldError.checkNotNull(map, r'WebhookState', 'map'); BuiltValueNullFieldError.checkNotNull(list, r'WebhookState', 'list'); } @@ -174,10 +177,10 @@ class _$WebhookState extends WebhookState { return other is WebhookState && map == other.map && list == other.list; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, map.hashCode); _$hash = $jc(_$hash, list.hashCode); @@ -196,16 +199,16 @@ class _$WebhookState extends WebhookState { class WebhookStateBuilder implements Builder { - _$WebhookState _$v; + _$WebhookState? _$v; - MapBuilder _map; - MapBuilder get map => - _$this._map ??= new MapBuilder(); - set map(MapBuilder map) => _$this._map = map; + MapBuilder? _map; + MapBuilder get map => + _$this._map ??= new MapBuilder(); + set map(MapBuilder? map) => _$this._map = map; - ListBuilder _list; + ListBuilder? _list; ListBuilder get list => _$this._list ??= new ListBuilder(); - set list(ListBuilder list) => _$this._list = list; + set list(ListBuilder? list) => _$this._list = list; WebhookStateBuilder(); @@ -226,7 +229,7 @@ class WebhookStateBuilder } @override - void update(void Function(WebhookStateBuilder) updates) { + void update(void Function(WebhookStateBuilder)? updates) { if (updates != null) updates(this); } @@ -239,7 +242,7 @@ class WebhookStateBuilder _$result = _$v ?? new _$WebhookState._(map: map.build(), list: list.build()); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'map'; map.build(); @@ -258,29 +261,29 @@ class WebhookStateBuilder class _$WebhookUIState extends WebhookUIState { @override - final WebhookEntity editing; + final WebhookEntity? editing; @override final ListUIState listUIState; @override - final String selectedId; + final String? selectedId; @override - final bool forceSelected; + final bool? forceSelected; @override final int tabIndex; @override - final Completer saveCompleter; + final Completer? saveCompleter; @override - final Completer cancelCompleter; + final Completer? cancelCompleter; - factory _$WebhookUIState([void Function(WebhookUIStateBuilder) updates]) => + factory _$WebhookUIState([void Function(WebhookUIStateBuilder)? updates]) => (new WebhookUIStateBuilder()..update(updates))._build(); _$WebhookUIState._( {this.editing, - this.listUIState, + required this.listUIState, this.selectedId, this.forceSelected, - this.tabIndex, + required this.tabIndex, this.saveCompleter, this.cancelCompleter}) : super._() { @@ -311,10 +314,10 @@ class _$WebhookUIState extends WebhookUIState { cancelCompleter == other.cancelCompleter; } - int __hashCode; + int? __hashCode; @override int get hashCode { - if (__hashCode != null) return __hashCode; + if (__hashCode != null) return __hashCode!; var _$hash = 0; _$hash = $jc(_$hash, editing.hashCode); _$hash = $jc(_$hash, listUIState.hashCode); @@ -343,40 +346,40 @@ class _$WebhookUIState extends WebhookUIState { class WebhookUIStateBuilder implements Builder { - _$WebhookUIState _$v; + _$WebhookUIState? _$v; - WebhookEntityBuilder _editing; + WebhookEntityBuilder? _editing; WebhookEntityBuilder get editing => _$this._editing ??= new WebhookEntityBuilder(); - set editing(WebhookEntityBuilder editing) => _$this._editing = editing; + set editing(WebhookEntityBuilder? editing) => _$this._editing = editing; - ListUIStateBuilder _listUIState; + ListUIStateBuilder? _listUIState; ListUIStateBuilder get listUIState => _$this._listUIState ??= new ListUIStateBuilder(); - set listUIState(ListUIStateBuilder listUIState) => + set listUIState(ListUIStateBuilder? listUIState) => _$this._listUIState = listUIState; - String _selectedId; - String get selectedId => _$this._selectedId; - set selectedId(String selectedId) => _$this._selectedId = selectedId; + String? _selectedId; + String? get selectedId => _$this._selectedId; + set selectedId(String? selectedId) => _$this._selectedId = selectedId; - bool _forceSelected; - bool get forceSelected => _$this._forceSelected; - set forceSelected(bool forceSelected) => + bool? _forceSelected; + bool? get forceSelected => _$this._forceSelected; + set forceSelected(bool? forceSelected) => _$this._forceSelected = forceSelected; - int _tabIndex; - int get tabIndex => _$this._tabIndex; - set tabIndex(int tabIndex) => _$this._tabIndex = tabIndex; + int? _tabIndex; + int? get tabIndex => _$this._tabIndex; + set tabIndex(int? tabIndex) => _$this._tabIndex = tabIndex; - Completer _saveCompleter; - Completer get saveCompleter => _$this._saveCompleter; - set saveCompleter(Completer saveCompleter) => + Completer? _saveCompleter; + Completer? get saveCompleter => _$this._saveCompleter; + set saveCompleter(Completer? saveCompleter) => _$this._saveCompleter = saveCompleter; - Completer _cancelCompleter; - Completer get cancelCompleter => _$this._cancelCompleter; - set cancelCompleter(Completer cancelCompleter) => + Completer? _cancelCompleter; + Completer? get cancelCompleter => _$this._cancelCompleter; + set cancelCompleter(Completer? cancelCompleter) => _$this._cancelCompleter = cancelCompleter; WebhookUIStateBuilder(); @@ -403,7 +406,7 @@ class WebhookUIStateBuilder } @override - void update(void Function(WebhookUIStateBuilder) updates) { + void update(void Function(WebhookUIStateBuilder)? updates) { if (updates != null) updates(this); } @@ -424,7 +427,7 @@ class WebhookUIStateBuilder saveCompleter: saveCompleter, cancelCompleter: cancelCompleter); } catch (_) { - String _$failedField; + late String _$failedField; try { _$failedField = 'editing'; _editing?.build(); diff --git a/lib/ui/app/FieldGrid.dart b/lib/ui/app/FieldGrid.dart index 0e56afe7c..2ec4b7e47 100644 --- a/lib/ui/app/FieldGrid.dart +++ b/lib/ui/app/FieldGrid.dart @@ -11,12 +11,12 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class FieldGrid extends StatelessWidget { const FieldGrid(this.fields); - final Map fields; + final Map fields; @override Widget build(BuildContext context) { final localization = AppLocalization.of(context); - final textColor = Theme.of(context).textTheme.bodyLarge.color; + final textColor = Theme.of(context).textTheme.bodyLarge!.color; final List fieldWidgets = []; fields.forEach((field, value) { @@ -44,10 +44,10 @@ class FieldGrid extends StatelessWidget { children: [ Flexible( child: Text( - localization.lookup(field), + localization!.lookup(field)!, overflow: TextOverflow.ellipsis, style: TextStyle( - color: textColor.withOpacity(.65), + color: textColor!.withOpacity(.65), ), ), ), diff --git a/lib/ui/app/actions_menu_button.dart b/lib/ui/app/actions_menu_button.dart index 9d57cf485..480540e13 100644 --- a/lib/ui/app/actions_menu_button.dart +++ b/lib/ui/app/actions_menu_button.dart @@ -10,8 +10,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class ActionMenuButton extends StatelessWidget { const ActionMenuButton({ - @required this.entity, - @required this.onSelected, + required this.entity, + required this.onSelected, this.isSaving = false, this.entityActions, this.color, @@ -19,13 +19,13 @@ class ActionMenuButton extends StatelessWidget { this.iconSize, }); - final BaseEntity entity; - final List entityActions; + final BaseEntity? entity; + final List? entityActions; final Function(BuildContext, EntityAction) onSelected; final bool isSaving; - final Color color; - final IconData iconData; - final double iconSize; + final Color? color; + final IconData? iconData; + final double? iconSize; @override Widget build(BuildContext context) { @@ -58,7 +58,7 @@ class ActionMenuButton extends StatelessWidget { SizedBox(width: 16.0), Expanded( child: Text( - AppLocalization.of(context).lookup(action.toString()) ?? + AppLocalization.of(context)!.lookup(action.toString()) ?? ''), ), ], @@ -87,14 +87,14 @@ class ActionMenuButton extends StatelessWidget { /// during tests class ViewActionMenuButton extends StatelessWidget { const ViewActionMenuButton({ - @required this.entity, - @required this.onSelected, + required this.entity, + required this.onSelected, this.isSaving = false, this.entityActions, }); - final BaseEntity entity; - final List entityActions; + final BaseEntity? entity; + final List? entityActions; final Function(BuildContext, EntityAction) onSelected; final bool isSaving; diff --git a/lib/ui/app/app_border.dart b/lib/ui/app/app_border.dart index f4f6bee36..4b3fa58cf 100644 --- a/lib/ui/app/app_border.dart +++ b/lib/ui/app/app_border.dart @@ -13,23 +13,23 @@ import 'package:invoiceninja_flutter/utils/colors.dart'; class AppBorder extends StatelessWidget { const AppBorder({ - @required this.child, + required this.child, this.isTop, this.isBottom, this.isLeft, this.hideBorder = false, }); - final Widget child; - final bool isTop; - final bool isBottom; - final bool isLeft; + final Widget? child; + final bool? isTop; + final bool? isBottom; + final bool? isLeft; final bool hideBorder; @override Widget build(BuildContext context) { if (hideBorder) { - return child; + return child!; } final Store store = StoreProvider.of(context); @@ -48,26 +48,26 @@ class AppBorder extends StatelessWidget { isAllSides ? BorderRadius.circular(kBorderRadius) : null, border: isAllSides ? Border.all( - width: borderWidth, - color: color, + width: borderWidth as double, + color: color!, ) : Border( top: isTop == true ? BorderSide( - width: borderWidth, - color: color, + width: borderWidth as double, + color: color!, ) : BorderSide.none, bottom: isBottom == true ? BorderSide( - width: borderWidth, - color: color, + width: borderWidth as double, + color: color!, ) : BorderSide.none, left: isLeft == true ? BorderSide( - width: borderWidth, - color: color, + width: borderWidth as double, + color: color!, ) : BorderSide.none, ), diff --git a/lib/ui/app/app_bottom_bar.dart b/lib/ui/app/app_bottom_bar.dart index 4373de44c..3c31788a4 100644 --- a/lib/ui/app/app_bottom_bar.dart +++ b/lib/ui/app/app_bottom_bar.dart @@ -22,10 +22,10 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class AppBottomBar extends StatefulWidget { const AppBottomBar({ - @required this.entityType, - @required this.sortFields, - @required this.onSelectedSortField, - @required this.onCheckboxPressed, + required this.entityType, + required this.sortFields, + required this.onSelectedSortField, + required this.onCheckboxPressed, this.onSelectedState, this.defaultTableColumns, this.tableColumns, @@ -49,37 +49,37 @@ class AppBottomBar extends StatefulWidget { final List sortFields; final List statuses; final Function onCheckboxPressed; - final Function(String) onSelectedSortField; - final Function(EntityState, bool) onSelectedState; - final Function(EntityStatus, bool) onSelectedStatus; - final Function(String) onSelectedCustom1; - final Function(String) onSelectedCustom2; - final Function(String) onSelectedCustom3; - final Function(String) onSelectedCustom4; + final Function(String?)? onSelectedSortField; + final Function(EntityState, bool?)? onSelectedState; + final Function(EntityStatus, bool?)? onSelectedStatus; + final Function(String)? onSelectedCustom1; + final Function(String)? onSelectedCustom2; + final Function(String)? onSelectedCustom3; + final Function(String)? onSelectedCustom4; final List customValues1; final List customValues2; final List customValues3; final List customValues4; - final List tableColumns; - final List defaultTableColumns; + final List? tableColumns; + final List? defaultTableColumns; final bool hideListOptions; final List iconButtons; final List paymentTypes; - final Function onPaymentTypeChanged; + final Function? onPaymentTypeChanged; @override _AppBottomBarState createState() => _AppBottomBarState(); } class _AppBottomBarState extends State { - PersistentBottomSheetController _sortController; - PersistentBottomSheetController _filterStateController; - PersistentBottomSheetController _filterStatusController; - PersistentBottomSheetController _filterPaymentTypeController; - PersistentBottomSheetController _filterCustom1Controller; - PersistentBottomSheetController _filterCustom2Controller; - PersistentBottomSheetController _filterCustom3Controller; - PersistentBottomSheetController _filterCustom4Controller; + PersistentBottomSheetController? _sortController; + PersistentBottomSheetController? _filterStateController; + PersistentBottomSheetController? _filterStatusController; + PersistentBottomSheetController? _filterPaymentTypeController; + PersistentBottomSheetController? _filterCustom1Controller; + PersistentBottomSheetController? _filterCustom2Controller; + PersistentBottomSheetController? _filterCustom3Controller; + PersistentBottomSheetController? _filterCustom4Controller; int kSortPanel = 0; int kFilterStatePanel = 1; @@ -90,44 +90,44 @@ class _AppBottomBarState extends State { int kCustom3Panel = 6; int kCustom4Panel = 7; - int closeBottomSheet() { + int? closeBottomSheet() { if (_filterStateController != null) { - _filterStateController.close(); + _filterStateController!.close(); return kFilterStatePanel; } if (_filterStatusController != null) { - _filterStatusController.close(); + _filterStatusController!.close(); return kFilterStatusPanel; } if (_filterPaymentTypeController != null) { - _filterPaymentTypeController.close(); + _filterPaymentTypeController!.close(); return kFilterPaymentTypePanel; } if (_sortController != null) { - _sortController.close(); + _sortController!.close(); return kSortPanel; } if (_filterCustom1Controller != null) { - _filterCustom1Controller.close(); + _filterCustom1Controller!.close(); return kCustom1Panel; } if (_filterCustom2Controller != null) { - _filterCustom2Controller.close(); + _filterCustom2Controller!.close(); return kCustom2Panel; } if (_filterCustom3Controller != null) { - _filterCustom3Controller.close(); + _filterCustom3Controller!.close(); return kCustom3Panel; } if (_filterCustom4Controller != null) { - _filterCustom4Controller.close(); + _filterCustom4Controller!.close(); return kCustom4Panel; } @@ -156,14 +156,14 @@ class _AppBottomBarState extends State { children: EntityState.values.map((state) { return CheckboxListTile( key: ValueKey('state_' + - AppLocalization.of(context).lookup('$state')), - title: Text(AppLocalization.of(context).lookup('$state')), + AppLocalization.of(context)!.lookup('$state')!), + title: Text(AppLocalization.of(context)!.lookup('$state')!), controlAffinity: ListTileControlAffinity.leading, value: stateFilters.contains(state), activeColor: Theme.of(context).colorScheme.secondary, dense: true, onChanged: (value) { - widget.onSelectedState(state, value); + widget.onSelectedState!(state, value); }, ); }).toList(), @@ -174,7 +174,7 @@ class _AppBottomBarState extends State { ); }); - _filterStateController.closed.whenComplete(() { + _filterStateController!.closed.whenComplete(() { _filterStateController = null; }); }; @@ -198,13 +198,13 @@ class _AppBottomBarState extends State { return CheckboxListTile( key: Key(status.toString()), title: - Text(AppLocalization.of(context).lookup(status.name)), + Text(AppLocalization.of(context)!.lookup(status.name)!), controlAffinity: ListTileControlAffinity.leading, value: statusFilters.contains(status), activeColor: Theme.of(context).colorScheme.secondary, dense: true, onChanged: (value) { - widget.onSelectedStatus(status, value); + widget.onSelectedStatus!(status, value); }, ); }).toList(), @@ -215,7 +215,7 @@ class _AppBottomBarState extends State { ); }); - _filterStatusController.closed.whenComplete(() { + _filterStatusController!.closed.whenComplete(() { _filterStatusController = null; }); }; @@ -239,26 +239,26 @@ class _AppBottomBarState extends State { children: widget.sortFields.map((sortField) { final field = sortField; return InkWell( - onTap: () => widget.onSelectedSortField(sortField), + onTap: () => widget.onSelectedSortField!(sortField), child: IgnorePointer( child: RadioListTile( dense: true, title: Text( - AppLocalization.of(context).lookup(sortField)), + AppLocalization.of(context)!.lookup(sortField)!), subtitle: sortField == listUIState.sortField ? Text(listUIState.sortAscending - ? AppLocalization.of(context).ascending - : AppLocalization.of(context).descending) + ? AppLocalization.of(context)!.ascending + : AppLocalization.of(context)!.descending) : null, groupValue: listUIState.sortField, activeColor: Theme.of(context).colorScheme.secondary, - onChanged: (String value) { + onChanged: (String? value) { if (value == null && listUIState.sortField == field) { // Is re-selecting - widget.onSelectedSortField(field); + widget.onSelectedSortField!(field); } else { - widget.onSelectedSortField(value); + widget.onSelectedSortField!(value); } }, value: field, @@ -272,7 +272,7 @@ class _AppBottomBarState extends State { ); }); - _sortController.closed.whenComplete(() { + _sortController!.closed.whenComplete(() { _sortController = null; }); }; @@ -288,12 +288,12 @@ class _AppBottomBarState extends State { customNumber: 1, entityType: widget.entityType, customFilters: state.getListState(widget.entityType).custom1Filters, - onSelected: (field) => widget.onSelectedCustom1(field), + onSelected: (field) => widget.onSelectedCustom1!(field), customValues: widget.customValues1, ); }); - _filterCustom1Controller.closed.whenComplete(() { + _filterCustom1Controller!.closed.whenComplete(() { _filterCustom1Controller = null; }); }; @@ -308,12 +308,12 @@ class _AppBottomBarState extends State { customNumber: 2, entityType: widget.entityType, customFilters: state.getListState(widget.entityType).custom2Filters, - onSelected: (field) => widget.onSelectedCustom2(field), + onSelected: (field) => widget.onSelectedCustom2!(field), customValues: widget.customValues2, ); }); - _filterCustom2Controller.closed.whenComplete(() { + _filterCustom2Controller!.closed.whenComplete(() { _filterCustom2Controller = null; }); }; @@ -329,12 +329,12 @@ class _AppBottomBarState extends State { customNumber: 3, entityType: widget.entityType, customFilters: state.getListState(widget.entityType).custom3Filters, - onSelected: (field) => widget.onSelectedCustom3(field), + onSelected: (field) => widget.onSelectedCustom3!(field), customValues: widget.customValues3, ); }); - _filterCustom3Controller.closed.whenComplete(() { + _filterCustom3Controller!.closed.whenComplete(() { _filterCustom3Controller = null; }); }; @@ -350,12 +350,12 @@ class _AppBottomBarState extends State { customNumber: 4, entityType: widget.entityType, customFilters: state.getListState(widget.entityType).custom4Filters, - onSelected: (field) => widget.onSelectedCustom4(field), + onSelected: (field) => widget.onSelectedCustom4!(field), customValues: widget.customValues4, ); }); - _filterCustom4Controller.closed.whenComplete(() { + _filterCustom4Controller!.closed.whenComplete(() { _filterCustom4Controller = null; }); }; @@ -372,17 +372,17 @@ class _AppBottomBarState extends State { onSelected: (selected) { final listUIState = store.state.getListState(widget.entityType); if (!selected.contains(listUIState.sortField)) { - widget.onSelectedSortField(selected.isEmpty ? '' : selected[0]); + widget.onSelectedSortField!(selected.isEmpty ? '' : selected[0]); } - final settings = state.userCompany.settings.rebuild((b) => b + final settings = state.userCompany!.settings!.rebuild((b) => b ..tableColumns['${widget.entityType}'] = BuiltList(selected)); final userCompany = - state.userCompany.rebuild((b) => b..settings.replace(settings)); + state.userCompany!.rebuild((b) => b..settings.replace(settings)); final user = - state.user.rebuild((b) => b..userCompany.replace(userCompany)); + state.user!.rebuild((b) => b..userCompany.replace(userCompany)); final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch( SaveUserSettingsRequest( completer: completer, @@ -393,7 +393,7 @@ class _AppBottomBarState extends State { options: widget.tableColumns, defaultSelected: widget.defaultTableColumns, selected: state - .userCompany.settings.tableColumns['${widget.entityType}'] + .userCompany!.settings!.tableColumns['${widget.entityType}'] ?.toList(), ); } @@ -413,8 +413,8 @@ class _AppBottomBarState extends State { IconButton( tooltip: prefState.enableTooltips ? (isList - ? localization.showTable - : localization.showList) + ? localization!.showTable + : localization!.showList) : null, icon: Icon(isList ? Icons.table_chart : Icons.view_list), onPressed: () { @@ -426,7 +426,7 @@ class _AppBottomBarState extends State { if (isMobile(context)) IconButton( tooltip: prefState.enableTooltips - ? localization.multiselect + ? localization!.multiselect : null, icon: Icon(Icons.check_box), onPressed: () => widget.onCheckboxPressed(), @@ -436,7 +436,7 @@ class _AppBottomBarState extends State { widget.entityType == EntityType.companyGateway && widget.onSelectedState != null) IconButton( - tooltip: localization.filter, + tooltip: localization!.filter, icon: Icon(Icons.filter_list), onPressed: _showFilterStateSheet, color: store.state @@ -448,7 +448,7 @@ class _AppBottomBarState extends State { if (widget.statuses.isNotEmpty && isList) IconButton( tooltip: - prefState.enableTooltips ? localization.status : null, + prefState.enableTooltips ? localization!.status : null, icon: Icon(Icons.filter), onPressed: _showFilterStatusSheet, color: store.state @@ -460,7 +460,7 @@ class _AppBottomBarState extends State { if (widget.customValues1.isNotEmpty) IconButton( tooltip: prefState.enableTooltips - ? localization.filteredBy.replaceFirst( + ? localization!.filteredBy.replaceFirst( ':value', widget.customValues1.join(', ')) : null, icon: Icon(Icons.looks_one), @@ -474,7 +474,7 @@ class _AppBottomBarState extends State { if (widget.customValues2.isNotEmpty) IconButton( tooltip: prefState.enableTooltips - ? localization.filteredBy.replaceFirst( + ? localization!.filteredBy.replaceFirst( ':value', widget.customValues2.join(', ')) : null, icon: Icon(Icons.looks_two), @@ -488,7 +488,7 @@ class _AppBottomBarState extends State { if (widget.customValues3.isNotEmpty) IconButton( tooltip: prefState.enableTooltips - ? localization.filteredBy.replaceFirst( + ? localization!.filteredBy.replaceFirst( ':value', widget.customValues3.join(', ')) : '', icon: Icon(Icons.looks_3), @@ -502,7 +502,7 @@ class _AppBottomBarState extends State { if (widget.customValues4.isNotEmpty) IconButton( tooltip: prefState.enableTooltips - ? localization.filteredBy.replaceFirst( + ? localization!.filteredBy.replaceFirst( ':value', widget.customValues4.join(', ')) : '', icon: Icon(Icons.looks_4), @@ -517,7 +517,7 @@ class _AppBottomBarState extends State { if (isList && widget.sortFields.isNotEmpty) IconButton( tooltip: - prefState.enableTooltips ? localization.sort : null, + prefState.enableTooltips ? localization!.sort : null, icon: Icon(Icons.sort_by_alpha), onPressed: _showSortSheet, ), @@ -528,14 +528,14 @@ class _AppBottomBarState extends State { !widget.hideListOptions) if (state.prefState.isDesktop) AppTextButton( - label: localization.columns, + label: localization!.columns, onPressed: _onColumnsPressed, ) else IconButton( icon: Icon(Icons.view_week), tooltip: prefState.enableTooltips - ? localization.columns + ? localization!.columns : null, onPressed: _onColumnsPressed, ), @@ -544,7 +544,7 @@ class _AppBottomBarState extends State { isLeft: true, child: Tooltip( message: prefState.enableTooltips - ? localization.refreshData + ? localization!.refreshData : '', child: InkWell( onTap: () => store.dispatch(RefreshData()), @@ -566,12 +566,12 @@ class _AppBottomBarState extends State { class CustomFieldSelector extends StatelessWidget { const CustomFieldSelector({ - Key key, - @required this.customNumber, - @required this.entityType, - @required this.customValues, - @required this.onSelected, - @required this.customFilters, + Key? key, + required this.customNumber, + required this.entityType, + required this.customValues, + required this.onSelected, + required this.customFilters, }) : super(key: key); final int customNumber; @@ -582,7 +582,7 @@ class CustomFieldSelector extends StatelessWidget { @override Widget build(BuildContext context) { - return StoreConnector>( + return StoreConnector?>( converter: (Store store) => store.state.getListState(entityType).getCustomFilters(customNumber), builder: (BuildContext context, customFilters) { @@ -595,7 +595,7 @@ class CustomFieldSelector extends StatelessWidget { key: Key(customField.toString()), title: Text(customField), controlAffinity: ListTileControlAffinity.leading, - value: customFilters.contains(customField), + value: customFilters!.contains(customField), activeColor: Theme.of(context).colorScheme.secondary, dense: true, onChanged: (value) => onSelected(customField), diff --git a/lib/ui/app/app_builder.dart b/lib/ui/app/app_builder.dart index 1ce8acf3a..6f021515e 100644 --- a/lib/ui/app/app_builder.dart +++ b/lib/ui/app/app_builder.dart @@ -2,13 +2,13 @@ import 'package:flutter/material.dart'; class AppBuilder extends StatefulWidget { - const AppBuilder({Key key, this.builder}) : super(key: key); - final Function(BuildContext) builder; + const AppBuilder({Key? key, this.builder}) : super(key: key); + final Function(BuildContext)? builder; @override AppBuilderState createState() => new AppBuilderState(); - static AppBuilderState of(BuildContext context) { + static AppBuilderState? of(BuildContext context) { return context.findAncestorStateOfType(); } } @@ -102,6 +102,6 @@ class AppBuilderState extends State { @override Widget build(BuildContext context) { - return widget.builder(context); + return widget.builder!(context); } } diff --git a/lib/ui/app/app_header.dart b/lib/ui/app/app_header.dart index 321a1b64a..a0465496c 100644 --- a/lib/ui/app/app_header.dart +++ b/lib/ui/app/app_header.dart @@ -6,22 +6,22 @@ import 'package:invoiceninja_flutter/ui/app/form_card.dart'; class AppHeader extends StatelessWidget { const AppHeader({ - @required this.label, - @required this.value, + required this.label, + required this.value, this.secondLabel, this.secondValue, this.message, }); final String label; - final String value; - final String secondLabel; - final String secondValue; - final String message; + final String? value; + final String? secondLabel; + final String? secondValue; + final String? message; @override Widget build(BuildContext context) { - final textColor = Theme.of(context).textTheme.bodyLarge.color; + final textColor = Theme.of(context).textTheme.bodyLarge!.color; Widget _value1() { return Column( @@ -31,14 +31,14 @@ class AppHeader extends StatelessWidget { Text(label, style: TextStyle( fontSize: 16.0, - color: textColor.withOpacity(.65), + color: textColor!.withOpacity(.65), )), SizedBox( height: 8, ), FittedBox( child: Text( - (value ?? '').isEmpty ? ' ' : value, + (value ?? '').isEmpty ? ' ' : value!, style: TextStyle( fontSize: 30, ), @@ -53,17 +53,17 @@ class AppHeader extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ - Text(secondLabel, + Text(secondLabel!, style: TextStyle( fontSize: 16.0, - color: textColor.withOpacity(.65), + color: textColor!.withOpacity(.65), )), SizedBox( height: 8, ), FittedBox( child: Text( - (secondValue ?? '').isEmpty ? ' ' : secondValue, + (secondValue ?? '').isEmpty ? ' ' : secondValue!, style: TextStyle( fontSize: 30, ), @@ -87,7 +87,7 @@ class AppHeader extends StatelessWidget { if (message != null) Padding( padding: const EdgeInsets.only(top: 16), - child: Text(message), + child: Text(message!), ) ], ); diff --git a/lib/ui/app/app_shortcuts.dart b/lib/ui/app/app_shortcuts.dart index 3dfbd1cac..aef8cc66b 100644 --- a/lib/ui/app/app_shortcuts.dart +++ b/lib/ui/app/app_shortcuts.dart @@ -8,13 +8,13 @@ import 'package:flutter/material.dart'; //import 'package:invoiceninja_flutter/redux/app/app_actions.dart'; class AppShortcuts extends StatefulWidget { - const AppShortcuts({Key key, this.child}) : super(key: key); - final Widget child; + const AppShortcuts({Key? key, this.child}) : super(key: key); + final Widget? child; @override AppShortcutsState createState() => new AppShortcutsState(); - static AppShortcutsState of(BuildContext context) { + static AppShortcutsState? of(BuildContext context) { return context.findAncestorStateOfType(); } } diff --git a/lib/ui/app/app_title_bar.dart b/lib/ui/app/app_title_bar.dart index 1a23b15d8..a14570745 100644 --- a/lib/ui/app/app_title_bar.dart +++ b/lib/ui/app/app_title_bar.dart @@ -9,7 +9,7 @@ import 'package:invoiceninja_flutter/redux/app/app_actions.dart'; */ class AppTitleBar extends StatelessWidget { - const AppTitleBar({Key key}) : super(key: key); + const AppTitleBar({Key? key}) : super(key: key); @override Widget build(BuildContext context) { diff --git a/lib/ui/app/app_webview.dart b/lib/ui/app/app_webview.dart index c104122a1..aac3c3f04 100644 --- a/lib/ui/app/app_webview.dart +++ b/lib/ui/app/app_webview.dart @@ -14,7 +14,7 @@ import 'package:invoiceninja_flutter/utils/web_stub.dart' class AppWebView extends StatelessWidget { const AppWebView({this.html}); - final String html; + final String? html; @override Widget build(BuildContext context) { @@ -25,12 +25,12 @@ class AppWebView extends StatelessWidget { class _WebWebView extends StatelessWidget { const _WebWebView({this.html}); - final String html; + final String? html; @override Widget build(BuildContext context) { final encodedHtml = - 'data:text/html;charset=utf-8,' + Uri.encodeComponent(html); + 'data:text/html;charset=utf-8,' + Uri.encodeComponent(html!); WebUtils.registerWebView(encodedHtml); return AbsorbPointer( child: HtmlElementView(viewType: encodedHtml), @@ -39,9 +39,9 @@ class _WebWebView extends StatelessWidget { } class _MobileWebView extends StatefulWidget { - const _MobileWebView({Key key, this.html}) : super(key: key); + const _MobileWebView({Key? key, this.html}) : super(key: key); - final String html; + final String? html; @override _MobileWebViewState createState() => _MobileWebViewState(); @@ -49,7 +49,7 @@ class _MobileWebView extends StatefulWidget { class _MobileWebViewState extends State<_MobileWebView> with AutomaticKeepAliveClientMixin<_MobileWebView> { - WebViewController _webViewController; + late WebViewController _webViewController; @override bool get wantKeepAlive => true; @@ -59,7 +59,7 @@ class _MobileWebViewState extends State<_MobileWebView> super.didUpdateWidget(oldWidget); if (widget.html != oldWidget.html) { - _webViewController.loadUrl(Uri.dataFromString(widget.html, + _webViewController.loadUrl(Uri.dataFromString(widget.html!, mimeType: 'text/html', encoding: Encoding.getByName('utf-8')) .toString()); } @@ -70,7 +70,7 @@ class _MobileWebViewState extends State<_MobileWebView> super.build(context); return WebView( - initialUrl: Uri.dataFromString(widget.html, + initialUrl: Uri.dataFromString(widget.html!, mimeType: 'text/html', encoding: Encoding.getByName('utf-8')) .toString(), onWebViewCreated: (WebViewController webViewController) { diff --git a/lib/ui/app/autobill_dropdown_menu_item.dart b/lib/ui/app/autobill_dropdown_menu_item.dart index 7d9643d20..5cb43e5c6 100644 --- a/lib/ui/app/autobill_dropdown_menu_item.dart +++ b/lib/ui/app/autobill_dropdown_menu_item.dart @@ -3,22 +3,22 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class AutobillDropdownMenuItem extends StatelessWidget { const AutobillDropdownMenuItem({ - Key key, - @required this.type, + Key? key, + required this.type, }) : super(key: key); final String type; @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text(localization.lookup(type)), + Text(localization.lookup(type)!), Text( - localization.lookup('auto_bill_help_' + type), + localization.lookup('auto_bill_help_' + type)!, style: Theme.of(context).textTheme.bodySmall, ), ], diff --git a/lib/ui/app/blank_screen.dart b/lib/ui/app/blank_screen.dart index 4bf68e193..abfcce51f 100644 --- a/lib/ui/app/blank_screen.dart +++ b/lib/ui/app/blank_screen.dart @@ -8,7 +8,7 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class BlankScreen extends StatelessWidget { const BlankScreen([this.message]); - final String message; + final String? message; @override Widget build(BuildContext context) { diff --git a/lib/ui/app/buttons/app_text_button.dart b/lib/ui/app/buttons/app_text_button.dart index 47ae34376..1055edc2e 100644 --- a/lib/ui/app/buttons/app_text_button.dart +++ b/lib/ui/app/buttons/app_text_button.dart @@ -15,17 +15,17 @@ class AppTextButton extends StatelessWidget { this.color, }); - final String label; - final Function onPressed; + final String? label; + final Function? onPressed; final bool isInHeader; - final Color color; + final Color? color; @override Widget build(BuildContext context) { final store = StoreProvider.of(context); final state = store.state; - Color primaryColor; + Color? primaryColor; if (onPressed == null) { // } else if (color != null) { @@ -43,8 +43,8 @@ class AppTextButton extends StatelessWidget { return TextButton( style: flatButtonStyle, - onPressed: onPressed, - child: Text(label), + onPressed: onPressed as void Function()?, + child: Text(label!), ); } } diff --git a/lib/ui/app/buttons/bottom_buttons.dart b/lib/ui/app/buttons/bottom_buttons.dart index 42980f14f..ba68930f6 100644 --- a/lib/ui/app/buttons/bottom_buttons.dart +++ b/lib/ui/app/buttons/bottom_buttons.dart @@ -15,14 +15,14 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class BottomButtons extends StatelessWidget { const BottomButtons({ - @required this.entity, - @required this.action1, - @required this.action2, + required this.entity, + required this.action1, + required this.action2, this.action1Enabled = true, this.action2Enabled = true, }); - final BaseEntity entity; + final BaseEntity? entity; final EntityAction action1; final EntityAction action2; final bool action1Enabled; @@ -30,12 +30,12 @@ class BottomButtons extends StatelessWidget { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final store = StoreProvider.of(context); final state = store.state; final textColor = state.prefState.enableDarkMode || state.hasAccentColor - ? Theme.of(context).textTheme.bodyLarge.color - : state.accentColor; + ? Theme.of(context).textTheme.bodyLarge!.color! + : state.accentColor!; return SizedBox( height: kTopBottomBarHeight, @@ -48,7 +48,7 @@ class BottomButtons extends StatelessWidget { Expanded( child: InkWell( onTap: action1Enabled && - (!entity.isDeleted || action1 == EntityAction.viewPdf) + (!entity!.isDeleted! || action1 == EntityAction.viewPdf) ? () { handleEntityAction(entity, action1); } @@ -59,11 +59,11 @@ class BottomButtons extends StatelessWidget { Icon(getEntityActionIcon(action1)), SizedBox(width: 12), Text( - localization.lookup('$action1'), + localization.lookup('$action1')!, textAlign: TextAlign.center, style: TextStyle( color: textColor.withOpacity( - action1Enabled && !entity.isDeleted ? 1 : .5)), + action1Enabled && !entity!.isDeleted! ? 1 : .5)), ), ], ), @@ -73,7 +73,7 @@ class BottomButtons extends StatelessWidget { child: AppBorder( isLeft: true, child: InkWell( - onTap: action2Enabled && !entity.isDeleted + onTap: action2Enabled && !entity!.isDeleted! ? () { handleEntityAction(entity, action2); } @@ -84,11 +84,11 @@ class BottomButtons extends StatelessWidget { Icon(getEntityActionIcon(action2)), SizedBox(width: 12), Text( - localization.lookup('$action2'), + localization.lookup('$action2')!, textAlign: TextAlign.center, style: TextStyle( color: textColor.withOpacity( - action2Enabled && !entity.isDeleted ? 1 : .6)), + action2Enabled && !entity!.isDeleted! ? 1 : .6)), ), ], ), diff --git a/lib/ui/app/buttons/edit_icon_button.dart b/lib/ui/app/buttons/edit_icon_button.dart index df674b87f..e8ba79b85 100644 --- a/lib/ui/app/buttons/edit_icon_button.dart +++ b/lib/ui/app/buttons/edit_icon_button.dart @@ -14,24 +14,24 @@ class EditIconButton extends StatelessWidget { this.isVisible, }); - final bool isVisible; - final Function onPressed; + final bool? isVisible; + final Function? onPressed; @override Widget build(BuildContext context) { final localization = AppLocalization.of(context); final store = StoreProvider.of(context); - if (!isVisible) { + if (!isVisible!) { return Container(); } return TextButton( child: Text( - localization.edit, + localization!.edit, style: TextStyle(color: store.state.headerTextColor), ), - onPressed: onPressed, + onPressed: onPressed as void Function()?, ); } } diff --git a/lib/ui/app/buttons/elevated_button.dart b/lib/ui/app/buttons/elevated_button.dart index e980f0ac7..30dead725 100644 --- a/lib/ui/app/buttons/elevated_button.dart +++ b/lib/ui/app/buttons/elevated_button.dart @@ -9,18 +9,18 @@ import 'package:invoiceninja_flutter/ui/app/icon_text.dart'; class AppButton extends StatelessWidget { const AppButton({ - @required this.label, - @required this.onPressed, + required this.label, + required this.onPressed, this.iconData, this.color, this.width, }); - final Color color; - final IconData iconData; - final String label; - final Function onPressed; - final double width; + final Color? color; + final IconData? iconData; + final String? label; + final Function? onPressed; + final double? width; @override Widget build(BuildContext context) { @@ -49,7 +49,7 @@ class AppButton extends StatelessWidget { ) : SizedBox( child: Text( - label, + label!, overflow: TextOverflow.ellipsis, style: TextStyle( color: Colors.white, @@ -57,7 +57,7 @@ class AppButton extends StatelessWidget { ), height: 24, ), - onPressed: onPressed, + onPressed: onPressed as void Function()?, ); return Padding( diff --git a/lib/ui/app/change_layout_banner.dart b/lib/ui/app/change_layout_banner.dart index a0d3d8c8a..485b4d221 100644 --- a/lib/ui/app/change_layout_banner.dart +++ b/lib/ui/app/change_layout_banner.dart @@ -18,10 +18,10 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class ChangeLayoutBanner extends StatefulWidget { const ChangeLayoutBanner({ - Key key, - @required this.child, - @required this.appLayout, - @required this.suggestedLayout, + Key? key, + required this.child, + required this.appLayout, + required this.suggestedLayout, }) : super(key: key); final Widget child; @@ -38,10 +38,10 @@ class _ChangeLayoutBannerState extends State { @override Widget build(BuildContext context) { final store = StoreProvider.of(context); - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final calculatedLayout = calculateLayout(context); - String message; + String? message; if (!_dismissedChange) { if (widget.appLayout == AppLayout.mobile && @@ -94,7 +94,7 @@ class _ChangeLayoutBannerState extends State { : AppLayout.desktop; store .dispatch(UpdateUserPreferences(appLayout: layout)); - AppBuilder.of(context).rebuild(); + AppBuilder.of(context)!.rebuild(); WidgetsBinding.instance .addPostFrameCallback((duration) { if (layout == AppLayout.mobile) { diff --git a/lib/ui/app/confirm_email.dart b/lib/ui/app/confirm_email.dart index 4842573b0..25ede6923 100644 --- a/lib/ui/app/confirm_email.dart +++ b/lib/ui/app/confirm_email.dart @@ -11,8 +11,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class ConfirmEmail extends StatelessWidget { const ConfirmEmail({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final ConfirmEmailVM viewModel; @@ -20,7 +20,7 @@ class ConfirmEmail extends StatelessWidget { @override Widget build(BuildContext context) { final localization = AppLocalization.of(context); - final state = viewModel.state; + final state = viewModel.state!; return Material( color: Theme.of(context).cardColor, @@ -38,12 +38,12 @@ class ConfirmEmail extends StatelessWidget { ), SizedBox(height: 60), Text( - localization.confirmYourEmailAddress, + localization!.confirmYourEmailAddress, style: Theme.of(context).textTheme.titleLarge, ), Padding( padding: const EdgeInsets.only(top: 16, bottom: 80), - child: HelpText(state.user.email), + child: HelpText(state.user!.email), ), Wrap( alignment: WrapAlignment.center, @@ -51,7 +51,7 @@ class ConfirmEmail extends StatelessWidget { Padding( padding: const EdgeInsets.only(bottom: kTableColumnGap), child: TextButton( - onPressed: viewModel.onResendPressed, + onPressed: viewModel.onResendPressed as void Function()?, child: Text(localization.resendEmail.toUpperCase()), ), ), @@ -64,7 +64,7 @@ class ConfirmEmail extends StatelessWidget { callback: (password, idToken) { fieldCallback( callback: (value) { - viewModel.onChangeEmail( + viewModel.onChangeEmail!( context, value, password, idToken); }, field: localization.email, @@ -74,7 +74,7 @@ class ConfirmEmail extends StatelessWidget { }, ); }, - child: Text(localization.changeEmail.toUpperCase()), + child: Text(localization.changeEmail!.toUpperCase()), ), ), /* @@ -91,14 +91,14 @@ class ConfirmEmail extends StatelessWidget { Padding( padding: const EdgeInsets.only(bottom: kTableColumnGap), child: TextButton( - onPressed: viewModel.onRefreshPressed, + onPressed: viewModel.onRefreshPressed as void Function()?, child: Text(localization.refreshData.toUpperCase()), ), ), Padding( padding: const EdgeInsets.only(bottom: kTableColumnGap), child: TextButton( - onPressed: viewModel.onLogoutPressed, + onPressed: viewModel.onLogoutPressed as void Function()?, child: Text(localization.logout.toUpperCase()), ), ), diff --git a/lib/ui/app/confirm_email_vm.dart b/lib/ui/app/confirm_email_vm.dart index be2a24260..882baab64 100644 --- a/lib/ui/app/confirm_email_vm.dart +++ b/lib/ui/app/confirm_email_vm.dart @@ -16,7 +16,7 @@ import 'package:invoiceninja_flutter/utils/dialogs.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class ConfirmEmailBuilder extends StatelessWidget { - const ConfirmEmailBuilder({Key key}) : super(key: key); + const ConfirmEmailBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -39,12 +39,12 @@ class ConfirmEmailVM { this.onChangeEmail, }); - final AppState state; - final Function onResendPressed; - final Function onRefreshPressed; - final Function onLogoutPressed; - final Function(BuildContext, String, String, String) onChangeEmail; - final Function(BuildContext) onUseLastPressed; + final AppState? state; + final Function? onResendPressed; + final Function? onRefreshPressed; + final Function? onLogoutPressed; + final Function(BuildContext, String, String?, String?)? onChangeEmail; + final Function(BuildContext)? onUseLastPressed; static ConfirmEmailVM fromStore(Store store) { final AppState state = store.state; @@ -61,9 +61,9 @@ class ConfirmEmailVM { store.dispatch(ResendConfirmation()); }, onChangeEmail: (context, email, password, idToken) { - final user = store.state.user.rebuild((b) => b..email = email); + final user = store.state.user!.rebuild((b) => b..email = email); final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch(SaveAuthUserRequest( user: user, password: password, @@ -78,7 +78,7 @@ class ConfirmEmailVM { callback: (password, idToken) { store.dispatch( SaveAuthUserRequest( - user: user.rebuild((b) => b..email = user.lastEmailAddress), + user: user!.rebuild((b) => b..email = user.lastEmailAddress), password: password, idToken: idToken, ), diff --git a/lib/ui/app/copy_to_clipboard.dart b/lib/ui/app/copy_to_clipboard.dart index 8d3701235..d7f9ebaef 100644 --- a/lib/ui/app/copy_to_clipboard.dart +++ b/lib/ui/app/copy_to_clipboard.dart @@ -5,19 +5,19 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class CopyToClipboard extends StatelessWidget { const CopyToClipboard({ - Key key, - @required this.value, + Key? key, + required this.value, this.child, this.showBorder = false, this.onLongPress, this.prefix, }) : super(key: key); - final Widget child; - final String value; + final Widget? child; + final String? value; final bool showBorder; - final Function onLongPress; - final String prefix; + final Function? onLongPress; + final String? prefix; @override Widget build(BuildContext context) { @@ -27,7 +27,7 @@ class CopyToClipboard extends StatelessWidget { final widget = child == null ? Text( - prefix != null ? '$prefix: $value' : value, + prefix != null ? '$prefix: $value' : value!, maxLines: 1, overflow: TextOverflow.ellipsis, ) @@ -36,13 +36,13 @@ class CopyToClipboard extends StatelessWidget { final onTap = () { Clipboard.setData(ClipboardData(text: value)); - var valueStr = value.replaceAll('\n', ' '); - if (value.length > 20) { - valueStr = value.substring(0, 20) + '...'; + var valueStr = value!.replaceAll('\n', ' '); + if (value!.length > 20) { + valueStr = value!.substring(0, 20) + '...'; } showToast( - localization.copiedToClipboard.replaceFirst( + localization!.copiedToClipboard.replaceFirst( ':value', '"$valueStr"', ), @@ -54,7 +54,7 @@ class CopyToClipboard extends StatelessWidget { child: OutlinedButton( onPressed: onTap, child: widget, - onLongPress: onLongPress, + onLongPress: onLongPress as void Function()?, ), constraints: BoxConstraints(maxWidth: 180), ); @@ -62,7 +62,7 @@ class CopyToClipboard extends StatelessWidget { return InkWell( child: widget, onTap: onTap, - onLongPress: onLongPress, + onLongPress: onLongPress as void Function()?, ); } } diff --git a/lib/ui/app/dashed_rect.dart b/lib/ui/app/dashed_rect.dart index 566b0e62a..574a61975 100644 --- a/lib/ui/app/dashed_rect.dart +++ b/lib/ui/app/dashed_rect.dart @@ -75,9 +75,9 @@ class DashRectPainter extends CustomPainter { } Path getDashedPath({ - @required math.Point a, - @required math.Point b, - @required double gap, + required math.Point a, + required math.Point b, + required double gap, }) { final size = Size(b.x - a.x, b.y - a.y); final path = Path(); @@ -97,8 +97,8 @@ class DashRectPainter extends CustomPainter { while (currentPoint.x <= b.x && currentPoint.y <= b.y) { shouldDraw - ? path.lineTo(currentPoint.x, currentPoint.y) - : path.moveTo(currentPoint.x, currentPoint.y); + ? path.lineTo(currentPoint.x as double, currentPoint.y as double) + : path.moveTo(currentPoint.x as double, currentPoint.y as double); shouldDraw = !shouldDraw; currentPoint = math.Point( currentPoint.x + dx, diff --git a/lib/ui/app/debug/state_inspector.dart b/lib/ui/app/debug/state_inspector.dart index b0b498102..403fe0566 100644 --- a/lib/ui/app/debug/state_inspector.dart +++ b/lib/ui/app/debug/state_inspector.dart @@ -20,7 +20,7 @@ class StateInspector extends StatefulWidget { class _StateInspectorState extends State { String _filter = ''; - dynamic filterJson({dynamic data, String filter}) { + dynamic filterJson({dynamic data, required String filter}) { filter.split('.') ..removeLast() ..forEach((part) { @@ -60,7 +60,7 @@ class _StateInspectorState extends State { autofocus: true, autocorrect: false, decoration: InputDecoration( - labelText: AppLocalization.of(context).filter, + labelText: AppLocalization.of(context)!.filter, ), onChanged: (value) { setState(() { diff --git a/lib/ui/app/desktop_session_timeout.dart b/lib/ui/app/desktop_session_timeout.dart index 385715d64..f49a827f1 100644 --- a/lib/ui/app/desktop_session_timeout.dart +++ b/lib/ui/app/desktop_session_timeout.dart @@ -18,14 +18,14 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class DesktopSessionTimeout extends StatefulWidget { const DesktopSessionTimeout({this.child}); - final Widget child; + final Widget? child; @override _DesktopSessionTimeoutState createState() => _DesktopSessionTimeoutState(); } class _DesktopSessionTimeoutState extends State { - Timer _timer; + Timer? _timer; bool _isWarned = false; @override @@ -41,7 +41,7 @@ class _DesktopSessionTimeoutState extends State { (Timer timer) { final store = StoreProvider.of(context); final state = store.state; - final sessionTimeout = state.company.sessionTimeout; + final sessionTimeout = state.company!.sessionTimeout; if (sessionTimeout == 0 || isMobile(context)) { return; @@ -83,7 +83,7 @@ class _DesktopSessionTimeoutState extends State { children: [ Expanded( child: Text( - localization.sessionAboutToExpire, + localization!.sessionAboutToExpire, style: TextStyle(color: Colors.white), )), TextButton( @@ -94,7 +94,7 @@ class _DesktopSessionTimeoutState extends State { setState(() { _isWarned = false; }); - }); + } as FutureOr<_> Function(Null)); store.dispatch(RefreshData(completer: completer)); }, child: Text( @@ -104,12 +104,12 @@ class _DesktopSessionTimeoutState extends State { ], ), ), - Expanded(child: widget.child), + Expanded(child: widget.child!), ], ), ); } - return widget.child; + return widget.child!; } } diff --git a/lib/ui/app/dialogs/alert_dialog.dart b/lib/ui/app/dialogs/alert_dialog.dart index 7428705fc..b354df7b9 100644 --- a/lib/ui/app/dialogs/alert_dialog.dart +++ b/lib/ui/app/dialogs/alert_dialog.dart @@ -16,11 +16,11 @@ class MessageDialog extends StatelessWidget { this.secondaryActions, }); - final String message; - final String dismissLabel; - final List secondaryActions; - final Function onDismiss; - final Function onDiscard; + final String? message; + final String? dismissLabel; + final List? secondaryActions; + final Function? onDismiss; + final Function? onDiscard; @override Widget build(BuildContext context) { @@ -39,7 +39,7 @@ class MessageDialog extends StatelessWidget { children: [ SizedBox(height: 20.0), Text( - message, + message!, style: Theme.of(context).textTheme.titleLarge, ), SizedBox(height: 40.0), @@ -48,7 +48,7 @@ class MessageDialog extends StatelessWidget { children: [ if (secondaryActions != null) Row( - children: secondaryActions + children: secondaryActions! .map((action) => Padding( padding: const EdgeInsets.only(right: 16), child: action, @@ -61,10 +61,10 @@ class MessageDialog extends StatelessWidget { onPressed: () { Navigator.of(context).pop(); if (onDismiss != null) { - onDismiss(); + onDismiss!(); } }, - child: Text((dismissLabel ?? localization.dismiss) + child: Text((dismissLabel ?? localization!.dismiss) .toUpperCase()), ), ), @@ -72,10 +72,10 @@ class MessageDialog extends StatelessWidget { TextButton( autofocus: true, child: Text( - localization.discardChanges.toUpperCase()), + localization!.discardChanges.toUpperCase()), onPressed: () { Navigator.of(context).pop(); - onDiscard(); + onDiscard!(); }), ], ), diff --git a/lib/ui/app/dialogs/error_dialog.dart b/lib/ui/app/dialogs/error_dialog.dart index 5fbbbe349..14b6c6ba2 100644 --- a/lib/ui/app/dialogs/error_dialog.dart +++ b/lib/ui/app/dialogs/error_dialog.dart @@ -18,12 +18,12 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class ErrorDialog extends StatelessWidget { const ErrorDialog(this.error, {this.clearErrorOnDismiss = false}); - final Object error; + final Object? error; final bool clearErrorOnDismiss; @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final store = StoreProvider.of(context); String errorStr = '$error'.trim(); diff --git a/lib/ui/app/dialogs/health_check_dialog.dart b/lib/ui/app/dialogs/health_check_dialog.dart index c396684ca..d9aa8f690 100644 --- a/lib/ui/app/dialogs/health_check_dialog.dart +++ b/lib/ui/app/dialogs/health_check_dialog.dart @@ -31,7 +31,7 @@ class HealthCheckDialog extends StatefulWidget { } class _HealthCheckDialogState extends State { - HealthCheckResponse _response; + HealthCheckResponse? _response; @override void didChangeDependencies() { @@ -51,7 +51,7 @@ class _HealthCheckDialogState extends State { final state = StoreProvider.of(context).state; try { - await webClient.get('${state.account.defaultUrl}/update?secret=', '', + await webClient.get('${state.account!.defaultUrl}/update?secret=', '', rawResponse: true); } catch (e) { // do nothing @@ -90,7 +90,7 @@ class _HealthCheckDialogState extends State { completer: Completer() ..future.then((value) { runCheck(); - }))); + } as FutureOr<_> Function(Null)))); }).catchError((dynamic error) { showErrorDialog(message: error); }); @@ -128,7 +128,7 @@ class _HealthCheckDialogState extends State { padding: const EdgeInsets.symmetric(vertical: 16), child: LinearProgressIndicator(), ), - Text('${localization.loading}...'), + Text('${localization!.loading}...'), ], ) : Column( @@ -137,17 +137,17 @@ class _HealthCheckDialogState extends State { _HealthListTile( title: 'System Health', subtitle: - 'Email: ${_response.emailDriver}\nQueue: ${_response.queue}\nPDF: ${_response.pdfEngine.replaceFirst(' Generator', '')}', - isValid: _response.systemHealth, + 'Email: ${_response!.emailDriver}\nQueue: ${_response!.queue}\nPDF: ${_response!.pdfEngine.replaceFirst(' Generator', '')}', + isValid: _response!.systemHealth, ), _HealthListTile( title: 'Database Check', - isValid: _response.dbCheck, + isValid: _response!.dbCheck, ), _HealthListTile( title: 'PHP Info', // TODO move this logic to the backend - isValid: _response.phpVersion.isOkay && + isValid: _response!.phpVersion.isOkay && webPhpVersion.startsWith('v8') && cliPhpVersion.startsWith('v8'), subtitle: 'Web: $webPhpVersion\nCLI: $cliPhpVersion' + @@ -171,12 +171,12 @@ class _HealthCheckDialogState extends State { isWarning: true, ), */ - if (_response.filePermissions != 'Ok' && - !state.account.disableAutoUpdate) + if (_response!.filePermissions != 'Ok' && + !state.account!.disableAutoUpdate) _HealthListTile( title: 'Invalid File Permissions', isValid: false, - subtitle: _response.filePermissions, + subtitle: _response!.filePermissions, url: '$kDocsUrl/self-host-installation/#file-permissions', ), /* @@ -196,8 +196,8 @@ class _HealthCheckDialogState extends State { ), ], */ - if (!state.account.isDocker && - phpMemoryLimitDouble > 100 && + if (!state.account!.isDocker && + phpMemoryLimitDouble! > 100 && phpMemoryLimitDouble < 512) _HealthListTile( title: 'PHP memory limit is too low', @@ -205,14 +205,14 @@ class _HealthCheckDialogState extends State { 'Increase the limit to at least 512M to support the in-app update', level: _HealthCheckLevel.Warning, ), - if (_response.queue == 'sync') + if (_response!.queue == 'sync') _HealthListTile( title: 'Queue not enabled', subtitle: 'Enable the queue for improved performance', level: _HealthCheckLevel.Info, url: '$kDocsUrl/self-host-installation/#final-setup-steps', ), - if (!_response.pdfEngine.toLowerCase().startsWith('snappdf')) + if (!_response!.pdfEngine.toLowerCase().startsWith('snappdf')) _HealthListTile( title: 'SnapPDF not enabled', subtitle: 'Use SnapPDF to generate PDF files locally', @@ -220,13 +220,13 @@ class _HealthCheckDialogState extends State { url: '$kDocsUrl/self-host-troubleshooting/#pdf-conversion-issues', ), - if (_response.trailingSlash) + if (_response!.trailingSlash) _HealthListTile( title: 'APP_URL has trailing slash', subtitle: 'Remove the slash in the .env file', level: _HealthCheckLevel.Warning, ), - if (_response.exchangeRateApiNotConfigured) + if (_response!.exchangeRateApiNotConfigured) _HealthListTile( title: 'Exchange Rate API Not Enabled', subtitle: 'Add an Open Exchange key to the .env file', @@ -240,7 +240,7 @@ class _HealthCheckDialogState extends State { ? [] : [ TextButton( - child: Text(localization.clearCache.toUpperCase()), + child: Text(localization!.clearCache.toUpperCase()), onPressed: () => clearCache(), ), TextButton( @@ -258,7 +258,7 @@ class _HealthCheckDialogState extends State { class _HealthListTile extends StatelessWidget { const _HealthListTile({ - @required this.title, + required this.title, this.isValid = true, this.level, this.subtitle, @@ -267,9 +267,9 @@ class _HealthListTile extends StatelessWidget { final String title; final bool isValid; - final _HealthCheckLevel level; - final String subtitle; - final String url; + final _HealthCheckLevel? level; + final String? subtitle; + final String? url; @override Widget build(BuildContext context) { @@ -277,7 +277,7 @@ class _HealthListTile extends StatelessWidget { title: Text(title), subtitle: Text( subtitle != null - ? subtitle + ? subtitle! : (level != null ? level.toString() : (isValid ? 'Passed' : 'Failed')), @@ -294,7 +294,7 @@ class _HealthListTile extends StatelessWidget { ? Colors.blue : (isValid ? Colors.green : Colors.red), ), - onTap: url != null ? () => launchUrl(Uri.parse(url)) : null, + onTap: url != null ? () => launchUrl(Uri.parse(url!)) : null, ); } } diff --git a/lib/ui/app/dialogs/loading_dialog.dart b/lib/ui/app/dialogs/loading_dialog.dart index a37c8703e..2b2d96807 100644 --- a/lib/ui/app/dialogs/loading_dialog.dart +++ b/lib/ui/app/dialogs/loading_dialog.dart @@ -7,7 +7,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class LoadingDialog extends StatelessWidget { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; return Column( crossAxisAlignment: CrossAxisAlignment.start, diff --git a/lib/ui/app/dialogs/multiselect_dialog.dart b/lib/ui/app/dialogs/multiselect_dialog.dart index ccae2aae7..785c7a344 100644 --- a/lib/ui/app/dialogs/multiselect_dialog.dart +++ b/lib/ui/app/dialogs/multiselect_dialog.dart @@ -12,24 +12,24 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/platforms.dart'; void multiselectDialog({ - BuildContext context, - List options, - List selected, - List defaultSelected, - Function(List) onSelected, - EntityType entityType, + required BuildContext context, + List? options, + List? selected, + List? defaultSelected, + Function(List)? onSelected, + EntityType? entityType, }) { showDialog( context: context, barrierDismissible: false, builder: (BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; return MultiSelectList( options: options, selected: selected, addTitle: localization.addColumn, defaultSelected: defaultSelected, - onSelected: (values) => onSelected(values), + onSelected: (values) => onSelected!(values), isDialog: true, entityType: entityType, ); @@ -39,36 +39,36 @@ void multiselectDialog({ class MultiSelectList extends StatefulWidget { const MultiSelectList({ - @required this.options, - @required this.selected, - @required this.defaultSelected, - @required this.addTitle, - @required this.onSelected, + required this.options, + required this.selected, + required this.defaultSelected, + required this.addTitle, + required this.onSelected, this.liveChanges = false, this.prefix, this.isDialog = false, this.entityType, }); - final List options; - final List selected; - final List defaultSelected; + final List? options; + final List? selected; + final List? defaultSelected; final String addTitle; - final Function(List) onSelected; + final Function(List?) onSelected; final bool liveChanges; - final String prefix; + final String? prefix; final bool isDialog; - final EntityType entityType; + final EntityType? entityType; @override MultiSelectListState createState() => MultiSelectListState(); } class MultiSelectListState extends State { - List selected; + List? selected; // TODO remove this https://github.com/flutter/flutter/issues/71946 - ScrollController _controller; + ScrollController? _controller; @override void initState() { @@ -81,11 +81,11 @@ class MultiSelectListState extends State { @override void dispose() { - _controller.dispose(); + _controller!.dispose(); super.dispose(); } - String lookupOption(String value) { + String? lookupOption(String value) { value = value.replaceFirst('\$', ''); final localization = AppLocalization.of(context); @@ -93,15 +93,15 @@ class MultiSelectListState extends State { // Workaround to sync up the variable with the PDF label if (value == InvoiceTotalFields.outstanding) { - return localization.balanceDue; + return localization!.balanceDue; } if (parts.length == 1 || parts[0] == widget.prefix) { - return localization.lookup(parts.last); + return localization!.lookup(parts.last); } else { - return localization.lookup(parts[0]) + + return localization!.lookup(parts[0])! + ' ' + - localization.lookup(parts[1]); + localization.lookup(parts[1])!; } } @@ -110,20 +110,20 @@ class MultiSelectListState extends State { final localization = AppLocalization.of(context); final state = StoreProvider.of(context).state; - final Map options = {}; - widget.options - .where((option) => !selected.contains(option)) + final Map options = {}; + widget.options! + .where((option) => !selected!.contains(option)) .forEach((option) { - final columnTitle = state.company.getCustomFieldLabel( + final columnTitle = state.company!.getCustomFieldLabel( widget.entityType != null - ? option.replaceFirst('custom', widget.entityType.snakeCase) - : option); + ? option!.replaceFirst('custom', widget.entityType!.snakeCase) + : option!); options[option] = columnTitle.isEmpty ? lookupOption(option) : columnTitle; }); final keys = options.keys.toList(); keys.sort((a, b) => - lookupOption(a).toLowerCase().compareTo(lookupOption(b).toLowerCase())); + lookupOption(a!)!.toLowerCase().compareTo(lookupOption(b!)!.toLowerCase())); final column = Container( width: isMobile(context) ? double.maxFinite : 400, @@ -135,7 +135,7 @@ class MultiSelectListState extends State { labelText: widget.addTitle, items: keys.map((option) { return DropdownMenuItem( - child: Text(options[option]), + child: Text(options[option]!), value: option, ); }).toList(), @@ -145,12 +145,12 @@ class MultiSelectListState extends State { return; } - if (selected.contains(value)) { + if (selected!.contains(value)) { return; } setState(() { - selected.add(value); + selected!.add(value); }); if (widget.liveChanges) { @@ -166,13 +166,13 @@ class MultiSelectListState extends State { child: ReorderableListView( scrollController: _controller, padding: const EdgeInsets.only(right: 12), - children: selected.asMap().entries.map((entry) { + children: selected!.asMap().entries.map((entry) { final option = entry.value; - final columnTitle = state.company.getCustomFieldLabel( + final columnTitle = state.company!.getCustomFieldLabel( widget.entityType != null - ? option.replaceFirst( - 'custom', widget.entityType.snakeCase) - : option); + ? option!.replaceFirst( + 'custom', widget.entityType!.snakeCase) + : option!); return Padding( key: ValueKey('__${entry.key}_${entry.value}__'), padding: @@ -182,7 +182,7 @@ class MultiSelectListState extends State { IconButton( icon: Icon(Icons.close), onPressed: () { - setState(() => selected.remove(option)); + setState(() => selected!.remove(option)); if (widget.liveChanges) { widget.onSelected(selected); } @@ -192,7 +192,7 @@ class MultiSelectListState extends State { Expanded( child: Text( columnTitle.isEmpty - ? lookupOption(option) + ? lookupOption(option)! : columnTitle, textAlign: TextAlign.left, style: Theme.of(context).textTheme.titleMedium, @@ -205,17 +205,17 @@ class MultiSelectListState extends State { onReorder: (oldIndex, newIndex) { // https://stackoverflow.com/a/54164333/497368 // These two lines are workarounds for ReorderableListView problems - if (newIndex > selected.length) { - newIndex = selected.length; + if (newIndex > selected!.length) { + newIndex = selected!.length; } if (oldIndex < newIndex) { newIndex--; } setState(() { - final field = selected[oldIndex]; - selected.removeAt(oldIndex); - selected.insert(newIndex, field); + final field = selected![oldIndex]; + selected!.removeAt(oldIndex); + selected!.insert(newIndex, field); }); if (widget.liveChanges) { @@ -232,10 +232,10 @@ class MultiSelectListState extends State { mainAxisAlignment: MainAxisAlignment.end, children: [ TextButton( - child: Text(localization.reset.toUpperCase()), + child: Text(localization!.reset.toUpperCase()), onPressed: () { setState( - () => selected = widget.defaultSelected.toList()); + () => selected = widget.defaultSelected!.toList()); if (widget.liveChanges) { widget.onSelected(selected); } @@ -249,14 +249,14 @@ class MultiSelectListState extends State { return widget.isDialog ? AlertDialog( - semanticLabel: localization.editColumns, + semanticLabel: localization!.editColumns, title: Text(localization.editColumns), content: column, actions: [ TextButton( child: Text(localization.reset.toUpperCase()), onPressed: () { - setState(() => selected = widget.defaultSelected.toList()); + setState(() => selected = widget.defaultSelected!.toList()); if (widget.liveChanges) { widget.onSelected(selected); } diff --git a/lib/ui/app/dismissible_entity.dart b/lib/ui/app/dismissible_entity.dart index 41ed31dd7..c885e7d2f 100644 --- a/lib/ui/app/dismissible_entity.dart +++ b/lib/ui/app/dismissible_entity.dart @@ -15,16 +15,16 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class DismissibleEntity extends StatelessWidget { const DismissibleEntity({ - @required this.userCompany, - @required this.entity, - @required this.child, - @required this.isSelected, + required this.userCompany, + required this.entity, + required this.child, + required this.isSelected, this.showMultiselect = true, this.isDismissible = true, }); - final UserCompanyEntity userCompany; - final BaseEntity entity; + final UserCompanyEntity? userCompany; + final BaseEntity? entity; final Widget child; final bool isSelected; final bool showMultiselect; @@ -32,14 +32,14 @@ class DismissibleEntity extends StatelessWidget { @override Widget build(BuildContext context) { - if (!userCompany.canEditEntity(entity)) { + if (!userCompany!.canEditEntity(entity)) { return child; } final localization = AppLocalization.of(context); final store = StoreProvider.of(context); final isMultiselect = - store.state.getListState(entity.entityType).isInMultiselect(); + store.state.getListState(entity!.entityType).isInMultiselect(); final widget = SelectedIndicator( isSelected: isDesktop(context) && @@ -47,7 +47,7 @@ class DismissibleEntity extends StatelessWidget { showMultiselect && isDismissible && !isMultiselect && - !entity.entityType.isSetting, + !entity!.entityType!.isSetting, child: ConstrainedBox( constraints: BoxConstraints( minHeight: 60, @@ -61,7 +61,7 @@ class DismissibleEntity extends StatelessWidget { } return Slidable( - key: Key('__${entity.entityKey}_${entity.entityState}__'), + key: Key('__${entity!.entityKey}_${entity!.entityState}__'), startActionPane: ActionPane( motion: const DrawerMotion(), children: [ @@ -70,12 +70,12 @@ class DismissibleEntity extends StatelessWidget { onPressed: (context) => handleEntityAction(entity, EntityAction.toggleMultiselect), icon: Icons.check_box, - label: localization.select, + label: localization!.select, backgroundColor: Colors.teal, foregroundColor: Colors.white, ), SlidableAction( - label: localization.more, + label: localization!.more, backgroundColor: Colors.black45, foregroundColor: Colors.white, icon: Icons.more_vert, @@ -84,11 +84,11 @@ class DismissibleEntity extends StatelessWidget { ), ], ), - endActionPane: entity.isDeletable + endActionPane: entity!.isDeletable ? ActionPane( motion: const DrawerMotion(), children: [ - if (entity.isActive) + if (entity!.isActive) SlidableAction( label: localization.archive, backgroundColor: Colors.orange, @@ -97,7 +97,7 @@ class DismissibleEntity extends StatelessWidget { onPressed: (context) => handleEntityAction(entity, EntityAction.archive), ) - else if (entity.isRestorable) + else if (entity!.isRestorable) SlidableAction( label: localization.restore, backgroundColor: Colors.blue, @@ -106,7 +106,7 @@ class DismissibleEntity extends StatelessWidget { onPressed: (context) => handleEntityAction(entity, EntityAction.restore), ), - if (!entity.isDeleted) + if (!entity!.isDeleted!) SlidableAction( label: localization.delete, backgroundColor: Colors.red, diff --git a/lib/ui/app/document_grid.dart b/lib/ui/app/document_grid.dart index 982d7d812..919a6966a 100644 --- a/lib/ui/app/document_grid.dart +++ b/lib/ui/app/document_grid.dart @@ -33,15 +33,15 @@ import 'package:version/version.dart'; class DocumentGrid extends StatefulWidget { const DocumentGrid({ - @required this.documents, - @required this.onUploadDocument, - @required this.onRenamedDocument, + required this.documents, + required this.onUploadDocument, + required this.onRenamedDocument, this.onViewExpense, }); final List documents; final Function(List, bool) onUploadDocument; - final Function(DocumentEntity) onViewExpense; + final Function(DocumentEntity)? onViewExpense; final Function onRenamedDocument; @override @@ -54,7 +54,7 @@ class _DocumentGridState extends State { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final state = StoreProvider.of(context).state; final privateSwitch = Padding( @@ -64,7 +64,7 @@ class _DocumentGridState extends State { children: [ Icon(Icons.lock), SizedBox(width: 16), - Text(localization.private), + Text(localization.private!), ], ), value: _isPrivate, @@ -120,7 +120,7 @@ class _DocumentGridState extends State { height: 75, width: double.infinity, child: Center( - child: Text(localization.clickOrDropFilesHere), + child: Text(localization.clickOrDropFilesHere!), ), color: _dragging ? Colors.blue.withOpacity(0.4) @@ -135,7 +135,7 @@ class _DocumentGridState extends State { ), ); - if (Version.parse(state.account.currentVersion) < + if (Version.parse(state.account!.currentVersion) < Version.parse('5.6.32') && kReleaseMode) { return child; @@ -180,8 +180,8 @@ class _DocumentGridState extends State { for (var index = 0; index < images.length; index++) { final image = images[index]; if (image != null && image.path != null) { - final croppedFile = await ImageCropper() - .cropImage(sourcePath: image.path); + final croppedFile = (await ImageCropper() + .cropImage(sourcePath: image.path))!; final bytes = await croppedFile.readAsBytes(); final multipartFile = MultipartFile.fromBytes( 'documents[$index]', bytes, @@ -271,14 +271,14 @@ class _DocumentGridState extends State { class DocumentTile extends StatelessWidget { const DocumentTile({ - @required this.documentId, - @required this.onViewExpense, - @required this.isFromExpense, - @required this.onRenamedDocument, + required this.documentId, + required this.onViewExpense, + required this.isFromExpense, + required this.onRenamedDocument, }); final String documentId; - final Function(DocumentEntity) onViewExpense; + final Function(DocumentEntity)? onViewExpense; final bool isFromExpense; final Function onRenamedDocument; @@ -353,7 +353,7 @@ class DocumentTile extends StatelessWidget { padding: const EdgeInsets.only(top: 22), child: PopupMenuButton( onSelected: (value) async { - if (value == localization.view) { + if (value == localization!.view) { handleDocumentAction(context, [document], EntityAction.viewDocument); } else if (value == localization.download) { @@ -363,7 +363,7 @@ class DocumentTile extends StatelessWidget { handleDocumentAction( context, [document], EntityAction.delete); } else if (value == localization.viewExpense) { - onViewExpense(document); + onViewExpense!(document); } else if (value == localization.rename) { fieldCallback( context: context, @@ -393,14 +393,14 @@ class DocumentTile extends StatelessWidget { if (document.isImage || document.isPdf) PopupMenuItem( child: IconText( - text: localization.view, + text: localization!.view, icon: Icons.open_in_browser, ), value: localization.view, ), PopupMenuItem( child: IconText( - text: localization.download, + text: localization!.download, icon: Icons.download, ), value: localization.download, @@ -440,7 +440,7 @@ class DocumentPreview extends StatelessWidget { const DocumentPreview(this.document, {this.height}); final DocumentEntity document; - final double height; + final double? height; @override Widget build(BuildContext context) { @@ -448,8 +448,8 @@ class DocumentPreview extends StatelessWidget { final repoDocument = state.documentState.map[document.id]; if (document.isImage) { - if (repoDocument.data != null) { - return Image.memory(repoDocument.data); + if (repoDocument!.data != null) { + return Image.memory(repoDocument.data!); } else { return CachedNetworkImage( height: height, @@ -459,14 +459,14 @@ class DocumentPreview extends StatelessWidget { imageUrl: '${cleanApiUrl(state.credentials.url)}/documents/${document.hash}', imageRenderMethodForWeb: ImageRenderMethodForWeb.HttpGet, - httpHeaders: {'X-API-TOKEN': state.credentials.token}, + httpHeaders: {'X-API-TOKEN': state.credentials.token!}, placeholder: (context, url) => Container( height: height, child: Center( child: CircularProgressIndicator(), ), ), - errorWidget: (context, url, Object error) => Text( + errorWidget: (context, url, Object? error) => Text( '$error: $url', maxLines: 6, overflow: TextOverflow.ellipsis, diff --git a/lib/ui/app/edit_scaffold.dart b/lib/ui/app/edit_scaffold.dart index 4a71e066d..f4e31092d 100644 --- a/lib/ui/app/edit_scaffold.dart +++ b/lib/ui/app/edit_scaffold.dart @@ -1,4 +1,5 @@ // Flutter imports: +import 'package:collection/collection.dart' show IterableNullableExtension; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; @@ -27,10 +28,10 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class EditScaffold extends StatelessWidget { const EditScaffold({ - Key key, - @required this.title, - @required this.onSavePressed, - @required this.body, + Key? key, + required this.title, + required this.onSavePressed, + required this.body, this.entity, this.onCancelPressed, this.bottomNavigationBar, @@ -42,48 +43,48 @@ class EditScaffold extends StatelessWidget { this.actions, }) : super(key: key); - final BaseEntity entity; - final String title; - final Function(BuildContext) onSavePressed; - final Function(BuildContext) onCancelPressed; - final Function(BuildContext, EntityAction) onActionPressed; - final List actions; - final Widget appBarBottom; - final Widget floatingActionButton; + final BaseEntity? entity; + final String? title; + final Function(BuildContext)? onSavePressed; + final Function(BuildContext)? onCancelPressed; + final Function(BuildContext, EntityAction)? onActionPressed; + final List? actions; + final Widget? appBarBottom; + final Widget? floatingActionButton; final Widget body; - final Widget bottomNavigationBar; - final String saveLabel; + final Widget? bottomNavigationBar; + final String? saveLabel; final bool isFullscreen; @override Widget build(BuildContext context) { final store = StoreProvider.of(context); final state = store.state; - final account = state.account; + final account = state.account!; final localization = AppLocalization.of(context); - Function bannerClick; + Function? bannerClick; bool showUpgradeBanner = false; bool isEnabled = !state.isSaving && (entity?.isEditable ?? true); bool isCancelEnabled = false; - String upgradeMessage = state.userCompany.isOwner - ? (state.account.isEligibleForTrial && !supportsInAppPurchase() - ? localization.startFreeTrialMessage - : localization.upgradeToPaidPlan) - : localization.ownerUpgradeToPaidPlan; + String? upgradeMessage = state.userCompany!.isOwner + ? (state.account!.isEligibleForTrial && !supportsInAppPurchase() + ? localization!.startFreeTrialMessage + : localization!.upgradeToPaidPlan) + : localization!.ownerUpgradeToPaidPlan; if (account.isTrial) { if (account.trialDaysLeft <= 1) { upgradeMessage = localization.freeTrialEndsToday; } else { - upgradeMessage = localization.freeTrialEndsInDays + upgradeMessage = localization.freeTrialEndsInDays! .replaceFirst(':count', account.trialDaysLeft.toString()); } } - if (!state.isProPlan || state.account.isTrial) { + if (!state.isProPlan || state.account!.isTrial) { if (kAdvancedSettings.contains(state.uiState.baseSubRoute)) { showUpgradeBanner = true; - if (!state.isProPlan && !state.account.isTrial && isEnabled) { + if (!state.isProPlan && !state.account!.isTrial && isEnabled) { isCancelEnabled = true; isEnabled = false; } @@ -112,12 +113,12 @@ class EditScaffold extends StatelessWidget { ((isEnabled && onSavePressed != null) || isCancelEnabled)) EntityAction.back, EntityAction.save, - ...(actions ?? []).where((action) => action != null), + ...(actions ?? []).whereNotNull(), ]; final textStyle = Theme.of(context) .textTheme - .bodyMedium + .bodyMedium! .copyWith(color: state.headerTextColor); final showOverflow = isDesktop(context) && state.isFullScreen; @@ -129,7 +130,7 @@ class EditScaffold extends StatelessWidget { child: CallbackShortcuts( bindings: { const SingleActivator(LogicalKeyboardKey.keyS, control: true): () => - onSavePressed(context), + onSavePressed!(context), }, child: FocusTraversalGroup( child: Scaffold( @@ -141,7 +142,7 @@ class EditScaffold extends StatelessWidget { Column( children: [ if (showUpgradeBanner && - state.userCompany.isOwner && + state.userCompany!.isOwner && (!isApple() || supportsInAppPurchase())) InkWell( child: IconMessage( @@ -159,7 +160,7 @@ class EditScaffold extends StatelessWidget { ); } else { launchUrl(Uri.parse( - state.userCompany.ninjaPortalUrl)); + state.userCompany!.ninjaPortalUrl)); } }, ), @@ -180,16 +181,16 @@ class EditScaffold extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ if (showOverflow) - Text(title) + Text(title!) else - Flexible(child: Text(title)), + Flexible(child: Text(title!)), SizedBox(width: 16), if (isDesktop(context) && isFullscreen && entity != null && - entity.isOld) ...[ + entity!.isOld) ...[ EntityStatusChip( - entity: state.getEntity(entity.entityType, entity.id)), + entity: state.getEntity(entity!.entityType, entity!.id)), SizedBox(width: 8), ], if (showOverflow) @@ -204,7 +205,7 @@ class EditScaffold extends StatelessWidget { spacing: 8, children: entityActions.map( (action) { - String label; + String? label; if (action == EntityAction.save && saveLabel != null) { label = saveLabel; @@ -219,7 +220,7 @@ class EditScaffold extends StatelessWidget { backgroundColor: MaterialStateProperty.all(state .prefState - .colorThemeModel + .colorThemeModel! .colorSuccess)) : null, child: ConstrainedBox( @@ -237,7 +238,7 @@ class EditScaffold extends StatelessWidget { color: Colors.white) : textStyle, ) - : Text(label, + : Text(label!, style: state.isSaving ? null : textStyle), @@ -247,7 +248,7 @@ class EditScaffold extends StatelessWidget { : () { if (action == EntityAction.back) { if (onCancelPressed != null) { - onCancelPressed(context); + onCancelPressed!(context); } else { store.dispatch(ResetSettings()); } @@ -259,9 +260,9 @@ class EditScaffold extends StatelessWidget { disposition: UnfocusDisposition .previouslyFocusedChild); - onSavePressed(context); + onSavePressed!(context); } else { - onActionPressed(context, action); + onActionPressed!(context, action); } }, ); @@ -287,7 +288,7 @@ class EditScaffold extends StatelessWidget { : Icon(Icons.more_vert), ), onSelected: (EntityAction action) { - onActionPressed(context, action); + onActionPressed!(context, action); }, itemBuilder: (BuildContext context) { return entityActions @@ -304,7 +305,7 @@ class EditScaffold extends StatelessWidget { .colorScheme .secondary), SizedBox(width: 16.0), - Text(AppLocalization.of(context) + Text(AppLocalization.of(context)! .lookup( action.toString()) ?? ''), @@ -342,7 +343,7 @@ class EditScaffold extends StatelessWidget { ? null : () { if (onCancelPressed != null) { - onCancelPressed(context); + onCancelPressed!(context); } else { store.dispatch(ResetSettings()); } @@ -352,7 +353,7 @@ class EditScaffold extends StatelessWidget { child: IconText( icon: getEntityActionIcon(EntityAction.back), text: (entity != null && - entity.entityType.isSetting) + entity!.entityType!.isSetting) ? localization.back : localization.cancel, style: state.isSaving ? null : textStyle, @@ -366,7 +367,7 @@ class EditScaffold extends StatelessWidget { backgroundColor: MaterialStateProperty.all(state .prefState - .colorThemeModel + .colorThemeModel! .colorSuccess)) : null, onPressed: !isEnabled || @@ -380,7 +381,7 @@ class EditScaffold extends StatelessWidget { disposition: UnfocusDisposition .previouslyFocusedChild); - onSavePressed(context); + onSavePressed!(context); }, child: ConstrainedBox( constraints: BoxConstraints(minWidth: 60), @@ -412,20 +413,20 @@ class EditScaffold extends StatelessWidget { disposition: UnfocusDisposition .previouslyFocusedChild); - onSavePressed(context); + onSavePressed!(context); }, onCancelPressed: isMobile(context) ? null : (context) { if (onCancelPressed != null) { - onCancelPressed(context); + onCancelPressed!(context); } else { store.dispatch(ResetSettings()); } }, ), if (actions != null && - actions.isNotEmpty && + actions!.isNotEmpty && onActionPressed != null) PopupMenuButton( icon: Icon( @@ -435,7 +436,7 @@ class EditScaffold extends StatelessWidget { ), itemBuilder: (BuildContext context) => >[ - ...actions + ...actions! .map((action) => action == null ? PopupMenuDivider() : PopupMenuItem( @@ -448,20 +449,20 @@ class EditScaffold extends StatelessWidget { .secondary, ), SizedBox(width: 16.0), - Text(AppLocalization.of(context) - .lookup(action.toString())), + Text(AppLocalization.of(context)! + .lookup(action.toString())!), ], ), value: action, )) - .toList() + .toList() as Iterable> ], onSelected: (action) => - onActionPressed(context, action), + onActionPressed!(context, action), enabled: isEnabled, ) ], - bottom: isFullscreen && isDesktop(context) ? null : appBarBottom, + bottom: isFullscreen && isDesktop(context) ? null : appBarBottom as PreferredSizeWidget?, ), bottomNavigationBar: bottomNavigationBar, floatingActionButtonLocation: diff --git a/lib/ui/app/entities/entity_actions_dialog.dart b/lib/ui/app/entities/entity_actions_dialog.dart index fd5888f4f..4bc6051fd 100644 --- a/lib/ui/app/entities/entity_actions_dialog.dart +++ b/lib/ui/app/entities/entity_actions_dialog.dart @@ -42,18 +42,18 @@ import 'package:invoiceninja_flutter/utils/icons.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; Future showEntityActionsDialog( - {@required List entities, - Completer completer, + {required List entities, + Completer? completer, bool multiselect = false}) async { if (entities == null) { return; } final mainContext = navigatorKey.currentContext; - final state = StoreProvider.of(navigatorKey.currentContext).state; + final state = StoreProvider.of(navigatorKey.currentContext!).state; final actions = []; - final first = entities[0]; - final ClientEntity client = first is BelongsToClient - ? state.clientState.get((first as BelongsToClient).clientId) + final first = entities[0]!; + final ClientEntity? client = first is BelongsToClient + ? state.clientState.get((first as BelongsToClient).clientId!) : null; actions.addAll(first @@ -81,7 +81,7 @@ Future showEntityActionsDialog( } showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext dialogContext) { return SimpleDialog(children: actions); }); @@ -96,109 +96,109 @@ class EntityActionListTile extends StatelessWidget { this.completer, }); - final List entities; - final EntityAction action; - final BuildContext mainContext; - final Completer completer; - final Function(BuildContext, List, EntityAction) onEntityAction; + final List? entities; + final EntityAction? action; + final BuildContext? mainContext; + final Completer? completer; + final Function(BuildContext, List, EntityAction)? onEntityAction; @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; return ListTile( leading: Icon(getEntityActionIcon(action)), title: Text( - localization.lookup(action.toString()), + localization.lookup(action.toString())!, overflow: TextOverflow.ellipsis, ), onTap: () { if (completer != null) { - completer.complete(null); + completer!.complete(null); } Navigator.of(context).pop(); - final first = entities.first; + final first = entities!.first!; switch (first.entityType) { case EntityType.client: - handleClientAction(mainContext, entities, action); + handleClientAction(mainContext, entities!, action); break; case EntityType.product: - handleProductAction(mainContext, entities, action); + handleProductAction(mainContext, entities!, action); break; case EntityType.invoice: - handleInvoiceAction(mainContext, entities, action); + handleInvoiceAction(mainContext, entities!, action); break; case EntityType.recurringInvoice: - handleRecurringInvoiceAction(mainContext, entities, action); + handleRecurringInvoiceAction(mainContext, entities!, action); break; case EntityType.payment: - handlePaymentAction(mainContext, entities, action); + handlePaymentAction(mainContext, entities!, action); break; case EntityType.quote: - handleQuoteAction(mainContext, entities, action); + handleQuoteAction(mainContext!, entities!, action); break; case EntityType.credit: - handleCreditAction(mainContext, entities, action); + handleCreditAction(mainContext!, entities!, action); break; case EntityType.task: - handleTaskAction(mainContext, entities, action); + handleTaskAction(mainContext, entities!, action); break; case EntityType.project: - handleProjectAction(mainContext, entities, action); + handleProjectAction(mainContext, entities!, action); break; case EntityType.vendor: - handleVendorAction(mainContext, entities, action); + handleVendorAction(mainContext, entities!, action); break; case EntityType.expense: - handleExpenseAction(mainContext, entities, action); + handleExpenseAction(mainContext!, entities!, action); break; case EntityType.companyGateway: - handleCompanyGatewayAction(mainContext, entities, action); + handleCompanyGatewayAction(mainContext, entities!, action); break; case EntityType.group: - handleGroupAction(mainContext, entities, action); + handleGroupAction(mainContext, entities!, action); break; case EntityType.taxRate: - handleTaxRateAction(mainContext, entities, action); + handleTaxRateAction(mainContext, entities!, action); break; case EntityType.user: - handleUserAction(mainContext, entities, action); + handleUserAction(mainContext, entities!, action); break; case EntityType.design: - handleDesignAction(mainContext, entities, action); + handleDesignAction(mainContext, entities!, action); break; case EntityType.paymentTerm: - handlePaymentTermAction(mainContext, entities, action); + handlePaymentTermAction(mainContext, entities!, action); break; case EntityType.token: - handleTokenAction(mainContext, entities, action); + handleTokenAction(mainContext, entities!, action); break; case EntityType.webhook: - handleWebhookAction(mainContext, entities, action); + handleWebhookAction(mainContext, entities!, action); break; case EntityType.expenseCategory: - handleExpenseCategoryAction(mainContext, entities, action); + handleExpenseCategoryAction(mainContext, entities!, action); break; case EntityType.taskStatus: - handleTaskStatusAction(mainContext, entities, action); + handleTaskStatusAction(mainContext, entities!, action); break; case EntityType.subscription: - handleSubscriptionAction(mainContext, entities, action); + handleSubscriptionAction(mainContext, entities!, action); break; case EntityType.bankAccount: - handleBankAccountAction(mainContext, entities, action); + handleBankAccountAction(mainContext, entities!, action); break; case EntityType.transaction: - handleTransactionAction(mainContext, entities, action); + handleTransactionAction(mainContext, entities!, action); break; case EntityType.transactionRule: - handleTransactionRuleAction(mainContext, entities, action); + handleTransactionRuleAction(mainContext, entities!, action); break; case EntityType.schedule: - handleScheduleAction(mainContext, entities, action); + handleScheduleAction(mainContext, entities!, action); break; case EntityType.document: - handleDocumentAction(mainContext, entities, action); + handleDocumentAction(mainContext, entities!, action); break; // TODO add to starter.sh default: diff --git a/lib/ui/app/entities/entity_list_tile.dart b/lib/ui/app/entities/entity_list_tile.dart index 7bf0d979a..24c6a0ad8 100644 --- a/lib/ui/app/entities/entity_list_tile.dart +++ b/lib/ui/app/entities/entity_list_tile.dart @@ -23,18 +23,18 @@ import 'package:invoiceninja_flutter/utils/strings.dart'; class EntityListTile extends StatefulWidget { const EntityListTile({ - @required this.entity, - @required this.isFilter, + required this.entity, + required this.isFilter, this.onEntityActionSelected, this.subtitle, this.client, }); - final String subtitle; - final BaseEntity entity; + final String? subtitle; + final BaseEntity? entity; final bool isFilter; - final ClientEntity client; - final Function(BuildContext, BaseEntity, EntityAction) onEntityActionSelected; + final ClientEntity? client; + final Function(BuildContext, BaseEntity?, EntityAction)? onEntityActionSelected; @override _EntityListTileState createState() => _EntityListTileState(); @@ -45,14 +45,14 @@ class _EntityListTileState extends State { @override Widget build(BuildContext context) { - if (widget.entity == null || widget.entity.isNew) { + if (widget.entity == null || widget.entity!.isNew) { return SizedBox(); } final store = StoreProvider.of(context); final state = store.state; - final isFilteredBy = state.uiState.filterEntityId == widget.entity.id && - state.uiState.filterEntityType == widget.entity.entityType; + final isFilteredBy = state.uiState.filterEntityId == widget.entity!.id && + state.uiState.filterEntityType == widget.entity!.entityType; final entityClient = widget.client ?? (widget.entity is BelongsToClient @@ -65,29 +65,29 @@ class _EntityListTileState extends State { final leading = ActionMenuButton( iconData: - isHovered ? Icons.more_vert : getEntityIcon(widget.entity.entityType), + isHovered ? Icons.more_vert : getEntityIcon(widget.entity!.entityType), iconSize: isHovered ? null : 18, - entityActions: widget.entity.getActions( + entityActions: widget.entity!.getActions( userCompany: state.userCompany, includeEdit: true, client: entityClient), isSaving: false, entity: widget.entity, onSelected: (context, action) => widget.onEntityActionSelected != null - ? widget.onEntityActionSelected(context, widget.entity, action) + ? widget.onEntityActionSelected!(context, widget.entity, action) : handleEntityAction(widget.entity, action), ); // we may have the id (so it's not considered new) but it hasn't yet been // created in the backend. ie, the invoice after converting a quote - final trailing = widget.entity.createdAt == 0 + final trailing = widget.entity!.createdAt == 0 ? null : IgnorePointer( ignoring: !isHovered || widget.isFilter || - widget.entity.entityType == EntityType.company, + widget.entity!.entityType == EntityType.company, child: IconButton( - icon: Icon(widget.entity.entityType != EntityType.company && + icon: Icon(widget.entity!.entityType != EntityType.company && (isHovered || widget.isFilter || isMobile(context) || @@ -95,7 +95,7 @@ class _EntityListTileState extends State { ? Icons.chevron_right : Icons.filter_list), onPressed: () => viewEntity( - entity: widget.entity, + entity: widget.entity!, addToStack: isDesktop(context) && !widget.isFilter, ), ), @@ -106,22 +106,22 @@ class _EntityListTileState extends State { if (entity is InvoiceEntity) { defaultSubtitle = - formatNumber(entity.amount, context, clientId: entity.clientId) + + formatNumber(entity.amount, context, clientId: entity.clientId)! + ' • ' + formatDate(entity.date, context); } else if (entity is PaymentEntity) { defaultSubtitle = - formatNumber(entity.amount, context, clientId: entity.clientId) + + formatNumber(entity.amount, context, clientId: entity.clientId)! + ' • ' + formatDate(entity.date, context); } else if (entity is ExpenseEntity) { defaultSubtitle = - formatNumber(entity.amount, context, clientId: entity.clientId) + + formatNumber(entity.amount, context, clientId: entity.clientId)! + ' • ' + formatDate(entity.date, context); } else if (entity is TransactionEntity) { defaultSubtitle = - formatNumber(entity.amount, context, currencyId: entity.currencyId) + + formatNumber(entity.amount, context, currencyId: entity.currencyId)! + ' • ' + formatDate(entity.date, context); } @@ -139,35 +139,35 @@ class _EntityListTileState extends State { contentPadding: const EdgeInsets.symmetric(horizontal: 16), onTap: () { if (state.prefState - .isViewerFullScreen(widget.entity.entityType)) - store.dispatch(ToggleViewerLayout(widget.entity.entityType)); + .isViewerFullScreen(widget.entity!.entityType)) + store.dispatch(ToggleViewerLayout(widget.entity!.entityType)); inspectEntity(entity: widget.entity); }, onLongPress: () => inspectEntity(entity: widget.entity, longPress: true), title: Text( - EntityPresenter().initialize(widget.entity, context).title(), + EntityPresenter().initialize(widget.entity, context).title()!, maxLines: 1, overflow: TextOverflow.ellipsis, ), subtitle: ((widget.subtitle ?? '').isNotEmpty || defaultSubtitle.isNotEmpty || - !entity.isActive) + !entity!.isActive) ? Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ if ((widget.subtitle ?? '').isNotEmpty) - Text(widget.subtitle) + Text(widget.subtitle!) else if (defaultSubtitle.isNotEmpty) Text(defaultSubtitle), - if (!entity.isActive) EntityStateLabel(widget.entity), + if (!entity!.isActive) EntityStateLabel(widget.entity), ], ) : null, leading: leading, trailing: trailing, isThreeLine: - (widget.subtitle ?? '').isNotEmpty && !widget.entity.isActive, + (widget.subtitle ?? '').isNotEmpty && !widget.entity!.isActive, ), ), ListDivider(), @@ -179,8 +179,8 @@ class _EntityListTileState extends State { class EntitiesListTile extends StatefulWidget { const EntitiesListTile({ - @required this.isFilter, - @required this.entity, + required this.isFilter, + required this.entity, this.entityType, this.title, this.subtitle, @@ -188,9 +188,9 @@ class EntitiesListTile extends StatefulWidget { }); final BaseEntity entity; - final EntityType entityType; - final String title; - final String subtitle; + final EntityType? entityType; + final String? title; + final String? subtitle; final bool isFilter; final bool hideNew; @@ -205,7 +205,7 @@ class _EntitiesListTileState extends State { entityType: widget.entityType, filterEntity: widget.entity); void _onLongPress() { - if (widget.entity.isDeleted) { + if (widget.entity.isDeleted!) { return; } @@ -242,12 +242,12 @@ class _EntitiesListTileState extends State { contentPadding: const EdgeInsets.symmetric(horizontal: 16), title: Text(widget.title ?? ''), subtitle: Text((widget.subtitle ?? '').isEmpty - ? AppLocalization.of(context).none - : widget.subtitle), + ? AppLocalization.of(context)!.none + : widget.subtitle!), leading: _isHovered && !widget.hideNew && - !widget.entity.isDeleted && - state.userCompany.canCreate(widget.entityType) + !widget.entity.isDeleted! && + state.userCompany!.canCreate(widget.entityType) ? IconButton( icon: Icon(Icons.add_circle_outline), onPressed: _onLongPress, diff --git a/lib/ui/app/entities/entity_state_title.dart b/lib/ui/app/entities/entity_state_title.dart index ba3227f36..767e4dc52 100644 --- a/lib/ui/app/entities/entity_state_title.dart +++ b/lib/ui/app/entities/entity_state_title.dart @@ -6,19 +6,19 @@ import 'package:invoiceninja_flutter/data/models/entities.dart'; import 'package:invoiceninja_flutter/ui/app/presenters/entity_presenter.dart'; class EntityStateTitle extends StatelessWidget { - const EntityStateTitle({@required this.entity}); + const EntityStateTitle({required this.entity}); final BaseEntity entity; @override Widget build(BuildContext context) { - String titleText = ''; + String? titleText = ''; if (entity.isOld) { titleText = EntityPresenter().initialize(entity, context).title(); } return Text( - titleText, + titleText!, maxLines: 2, overflow: TextOverflow.ellipsis, ); diff --git a/lib/ui/app/entities/entity_status_chip.dart b/lib/ui/app/entities/entity_status_chip.dart index b13cc4026..9bf1f2c7d 100644 --- a/lib/ui/app/entities/entity_status_chip.dart +++ b/lib/ui/app/entities/entity_status_chip.dart @@ -14,15 +14,15 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class EntityStatusChip extends StatelessWidget { const EntityStatusChip({ - @required this.entity, + required this.entity, this.addGap = false, this.width = 105, this.showState = false, }); - final BaseEntity entity; + final BaseEntity? entity; final bool addGap; - final double width; + final double? width; final bool showState; @override @@ -30,19 +30,19 @@ class EntityStatusChip extends StatelessWidget { final store = StoreProvider.of(context); final state = store.state; final localization = AppLocalization.of(context); - String label = ''; - Color color; + String? label = ''; + Color? color; - if (showState && !entity.isActive) { - if (entity.isArchived) { - label = localization.archived; + if (showState && !entity!.isActive) { + if (entity!.isArchived) { + label = localization!.archived; color = Colors.orange; - } else if (entity.isDeleted) { - label = localization.deleted; - color = state.prefState.colorThemeModel.colorDanger; + } else if (entity!.isDeleted!) { + label = localization!.deleted; + color = state.prefState.colorThemeModel!.colorDanger; } } else { - switch (entity.entityType) { + switch (entity!.entityType) { case EntityType.payment: final payment = entity as PaymentEntity; label = kPaymentStatuses[payment.calculatedStatusId]; @@ -90,7 +90,7 @@ class EntityStatusChip extends StatelessWidget { break; case EntityType.expense: final expense = entity as ExpenseEntity; - final category = state.expenseCategoryState.get(expense.categoryId); + final category = state.expenseCategoryState.get(expense.categoryId)!; label = kExpenseStatuses[expense.calculatedStatusId]; color = category.color.isNotEmpty && category.color != '#fff' ? convertHexStringToColor(category.color) @@ -108,17 +108,17 @@ class EntityStatusChip extends StatelessWidget { final task = entity as TaskEntity; final status = state.taskStatusState.get(task.statusId); label = task.isInvoiced - ? localization.invoiced + ? localization!.invoiced : task.isRunning - ? localization.running - : status.name.isNotEmpty + ? localization!.running + : status!.name.isNotEmpty ? status.name - : localization.logged; + : localization!.logged; color = task.isInvoiced - ? state.prefState.colorThemeModel.colorSuccess + ? state.prefState.colorThemeModel!.colorSuccess : task.isRunning - ? state.prefState.colorThemeModel.colorInfo - : status.color.isNotEmpty && status.color != '#fff' + ? state.prefState.colorThemeModel!.colorInfo + : status!.color.isNotEmpty && status.color != '#fff' ? convertHexStringToColor(status.color) : TaskStatusColors(state.prefState.colorThemeModel) .colors[task.calculateStatusId]; @@ -128,7 +128,7 @@ class EntityStatusChip extends StatelessWidget { break; } - label = localization.lookup(label) ?? ''; + label = localization!.lookup(label) ?? ''; if (label.isEmpty) { label = localization.logged; diff --git a/lib/ui/app/entity_dropdown.dart b/lib/ui/app/entity_dropdown.dart index 4e4b39812..797cbb9de 100644 --- a/lib/ui/app/entity_dropdown.dart +++ b/lib/ui/app/entity_dropdown.dart @@ -26,9 +26,9 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class EntityDropdown extends StatefulWidget { const EntityDropdown({ - @required this.entityType, - @required this.labelText, - @required this.onSelected, + required this.entityType, + required this.labelText, + required this.onSelected, this.entityMap, this.entityList, this.allowClearing = true, @@ -44,21 +44,21 @@ class EntityDropdown extends StatefulWidget { this.excludeIds = const [], }); - final EntityType entityType; - final List entityList; - final String labelText; - final String entityId; - final bool autofocus; - final BuiltMap entityMap; - final Function(SelectableEntity) onSelected; - final Function validator; + final EntityType? entityType; + final List? entityList; + final String? labelText; + final String? entityId; + final bool? autofocus; + final BuiltMap? entityMap; + final Function(SelectableEntity?) onSelected; + final Function? validator; final bool autoValidate; final bool allowClearing; - final Function(String) onFieldSubmitted; - final Function(Completer completer) onAddPressed; - final Function(SelectableEntity) overrideSuggestedAmount; - final Function(SelectableEntity) overrideSuggestedLabel; - final Function(Completer completer, String) onCreateNew; + final Function(String?)? onFieldSubmitted; + final Function(Completer completer)? onAddPressed; + final Function(SelectableEntity)? overrideSuggestedAmount; + final Function(SelectableEntity?)? overrideSuggestedLabel; + final Function(Completer completer, String)? onCreateNew; final List excludeIds; @override @@ -69,7 +69,7 @@ class _EntityDropdownState extends State { final _textController = TextEditingController(); final _focusNode = FocusNode(); String _filter = ''; - BuiltMap _entityMap; + BuiltMap? _entityMap; final _scrollController = ScrollController(); @override @@ -88,7 +88,7 @@ class _EntityDropdownState extends State { } } - String _getEntityLabel(SelectableEntity entity) { + String? _getEntityLabel(SelectableEntity? entity) { if (entity == null) { return ''; } @@ -99,8 +99,8 @@ class _EntityDropdownState extends State { return value; } - if ((entity as BaseEntity).isDeleted) { - value += ' - ' + AppLocalization.of(context).deleted; + if (entity.isDeleted!) { + value += ' - ' + AppLocalization.of(context)!.deleted; } return value; @@ -113,7 +113,7 @@ class _EntityDropdownState extends State { if (widget.entityId != oldWidget.entityId) { final state = StoreProvider.of(context).state; _entityMap = widget.entityMap ?? state.getEntityMap(widget.entityType); - _textController.text = _getEntityLabel(_entityMap[widget.entityId]); + _textController.text = _getEntityLabel(_entityMap![widget.entityId])!; } } @@ -125,13 +125,13 @@ class _EntityDropdownState extends State { if (_entityMap == null) { print('## ERROR: ENTITY MAP IS NULL: ${widget.entityType}'); } else { - final entity = _entityMap[widget.entityId]; + final entity = _entityMap![widget.entityId]; if (widget.overrideSuggestedLabel != null) { - _textController.text = widget.overrideSuggestedLabel(entity); + _textController.text = widget.overrideSuggestedLabel!(entity); } else if (entity == null) { // do nothing } else { - _textController.text = _getEntityLabel(entity); + _textController.text = _getEntityLabel(entity)!; } } @@ -179,7 +179,7 @@ class _EntityDropdownState extends State { builder: (BuildContext context) { return EntityDropdownDialog( entityMap: _entityMap, - entityList: (widget.entityList ?? _entityMap.keys) + entityList: (widget.entityList ?? _entityMap!.keys) .where((elementId) => !widget.excludeIds.contains(elementId)) .toList(), onSelected: (entity, [update = true]) { @@ -189,20 +189,20 @@ class _EntityDropdownState extends State { widget.onSelected(entity); - final String label = widget.overrideSuggestedLabel != null - ? widget.overrideSuggestedLabel(entity) + final String? label = widget.overrideSuggestedLabel != null + ? widget.overrideSuggestedLabel!(entity) : entity.listDisplayName; if (update) { - _textController.text = label; + _textController.text = label!; } if (widget.onFieldSubmitted != null) { - widget.onFieldSubmitted(label); + widget.onFieldSubmitted!(label); } }, onAddPressed: widget.onAddPressed != null - ? (context, completer) => widget.onAddPressed(completer) + ? (context, completer) => widget.onAddPressed!(completer as Completer) : null, overrideSuggestedAmount: widget.overrideSuggestedAmount, overrideSuggestedLabel: widget.overrideSuggestedLabel, @@ -213,14 +213,14 @@ class _EntityDropdownState extends State { bool get hasValue => widget.entityId != null && widget.entityId != '0' && - widget.entityId.isNotEmpty; + widget.entityId!.isNotEmpty; bool get showClear => widget.allowClearing && hasValue; @override Widget build(BuildContext context) { final state = StoreProvider.of(context).state; - if (!state.company.isModuleEnabled(widget.entityType)) { + if (!state.company!.isModuleEnabled(widget.entityType)) { return SizedBox(); } @@ -236,11 +236,11 @@ class _EntityDropdownState extends State { : widget.onAddPressed != null ? IconButton( icon: Icon(Icons.add_circle_outline), - tooltip: AppLocalization.of(context).createNew, + tooltip: AppLocalization.of(context)!.createNew, onPressed: () { final Completer completer = Completer(); - widget.onAddPressed(completer); + widget.onAddPressed!(completer); completer.future.then( (entity) { widget.onSelected(entity); @@ -256,14 +256,14 @@ class _EntityDropdownState extends State { focusNode: _focusNode, textEditingController: _textController, optionsBuilder: (TextEditingValue textEditingValue) { - final options = (widget.entityList ?? widget.entityMap.keys.toList()) - .map((entityId) => _entityMap[entityId]) + final options = (widget.entityList ?? widget.entityMap!.keys.toList()) + .map((entityId) => _entityMap![entityId]) .where((entity) => entity?.matchesFilter(textEditingValue.text) ?? false) - .where((element) => !widget.excludeIds.contains(element.id)) + .where((element) => !widget.excludeIds.contains(element!.id)) .toList(); - if (options.length == 1 && options[0].id == widget.entityId) { + if (options.length == 1 && options[0]!.id == widget.entityId) { return []; } @@ -271,13 +271,13 @@ class _EntityDropdownState extends State { options.isEmpty && _filter.trim().isNotEmpty && textEditingValue.text.trim().isNotEmpty && - state.userCompany.canCreate(widget.entityType)) { + state.userCompany!.canCreate(widget.entityType)) { options.add(_AutocompleteEntity(name: textEditingValue.text)); } - return options; - }, - displayStringForOption: (entity) => entity.listDisplayName, + return options as FutureOr>; + } as FutureOr> Function(TextEditingValue), + displayStringForOption: (entity) => entity.listDisplayName!, onSelected: (entity) { _filter = ''; /* @@ -301,7 +301,7 @@ class _EntityDropdownState extends State { } if (entity?.id == _AutocompleteEntity.KEY) { - final name = (entity as _AutocompleteEntity).name.trim(); + final name = (entity as _AutocompleteEntity).name!.trim(); _textController.text = name; _focusNode.removeListener(_onFocusChanged); @@ -313,14 +313,14 @@ class _EntityDropdownState extends State { final completer = Completer(); completer.future.then((value) { - showToast(AppLocalization.of(navigatorKey.currentContext) + showToast(AppLocalization.of(navigatorKey.currentContext!)! .createdRecord); _wrapUp(value); _focusNode.addListener(_onFocusChanged); }).catchError((dynamic error) { _focusNode.addListener(_onFocusChanged); }); - widget.onCreateNew(completer, name); + widget.onCreateNew!(completer, name); } else { _wrapUp(entity); } @@ -330,7 +330,7 @@ class _EntityDropdownState extends State { FocusNode focusNode, VoidCallback onFieldSubmitted) { return DecoratedFormField( - validator: widget.validator, + validator: widget.validator as dynamic Function(String)?, showClear: showClear, label: widget.labelText, autofocus: @@ -423,7 +423,7 @@ class _EntityDropdownState extends State { child: TextFormField( focusNode: _focusNode, readOnly: true, - validator: widget.validator, + validator: widget.validator as String? Function(String?)?, autovalidateMode: widget.autoValidate ? AutovalidateMode.always : AutovalidateMode.onUserInteraction, @@ -450,21 +450,21 @@ class _EntityDropdownState extends State { class EntityDropdownDialog extends StatefulWidget { const EntityDropdownDialog({ - @required this.entityMap, - @required this.entityList, - @required this.onSelected, - @required this.overrideSuggestedLabel, - @required this.overrideSuggestedAmount, + required this.entityMap, + required this.entityList, + required this.onSelected, + required this.overrideSuggestedLabel, + required this.overrideSuggestedAmount, this.onAddPressed, this.excludeIds = const [], }); - final BuiltMap entityMap; - final List entityList; + final BuiltMap? entityMap; + final List entityList; final Function(SelectableEntity, [bool]) onSelected; - final Function(BuildContext context, Completer completer) onAddPressed; - final Function(SelectableEntity) overrideSuggestedAmount; - final Function(SelectableEntity) overrideSuggestedLabel; + final Function(BuildContext context, Completer completer)? onAddPressed; + final Function(SelectableEntity)? overrideSuggestedAmount; + final Function(SelectableEntity)? overrideSuggestedLabel; final List excludeIds; @override @@ -472,7 +472,7 @@ class EntityDropdownDialog extends StatefulWidget { } class _EntityDropdownDialogState extends State { - String _filter; + String? _filter; @override Widget build(BuildContext context) { @@ -511,7 +511,7 @@ class _EntityDropdownDialogState extends State { autofocus: true, decoration: InputDecoration( border: InputBorder.none, - hintText: localization.filter, + hintText: localization!.filter, ), ), ), @@ -527,7 +527,7 @@ class _EntityDropdownDialogState extends State { Navigator.pop(context); final Completer completer = Completer(); - widget.onAddPressed(context, completer); + widget.onAddPressed!(context, completer); completer.future.then((entity) { widget.onSelected(entity, false); }); @@ -541,7 +541,7 @@ class _EntityDropdownDialogState extends State { Widget _createList() { final matches = widget.entityList .where((entityId) => - widget.entityMap[entityId]?.matchesFilter(_filter) ?? false) + widget.entityMap![entityId]?.matchesFilter(_filter) ?? false) .where((entityId) => !widget.excludeIds.contains(entityId)) .toList(); @@ -549,7 +549,7 @@ class _EntityDropdownDialogState extends State { itemCount: matches.length, itemBuilder: (BuildContext context, int index) { final entityId = matches[index]; - final entity = widget.entityMap[entityId]; + final entity = widget.entityMap![entityId]; return EntityAutocompleteListTile( entity: entity, filter: _filter, @@ -578,36 +578,36 @@ class _EntityDropdownDialogState extends State { class EntityAutocompleteListTile extends StatelessWidget { const EntityAutocompleteListTile( - {@required this.entity, + {required this.entity, this.filter, this.overrideSuggestedLabel, this.overrideSuggestedAmount, this.onTap, this.subtitle}); - final SelectableEntity entity; - final Function(SelectableEntity entity) onTap; - final String filter; - final String subtitle; - final Function(SelectableEntity) overrideSuggestedAmount; - final Function(SelectableEntity) overrideSuggestedLabel; + final SelectableEntity? entity; + final Function(SelectableEntity? entity)? onTap; + final String? filter; + final String? subtitle; + final Function(SelectableEntity?)? overrideSuggestedAmount; + final Function(SelectableEntity?)? overrideSuggestedLabel; @override Widget build(BuildContext context) { - final String subtitle = this.subtitle ?? entity.matchesFilterValue(filter); + final String? subtitle = this.subtitle ?? entity!.matchesFilterValue(filter); final String label = overrideSuggestedLabel == null - ? entity.listDisplayName - : overrideSuggestedLabel(entity); - final String amount = overrideSuggestedAmount == null - ? formatNumber(entity.listDisplayAmount, context, - formatNumberType: entity.listDisplayAmountType) - : overrideSuggestedAmount(entity); + ? entity!.listDisplayName! + : overrideSuggestedLabel!(entity); + final String? amount = overrideSuggestedAmount == null + ? formatNumber(entity!.listDisplayAmount, context, + formatNumberType: entity!.listDisplayAmountType) + : overrideSuggestedAmount!(entity); return ListTile( title: Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ - if (entity.id == _AutocompleteEntity.KEY) + if (entity!.id == _AutocompleteEntity.KEY) Padding( padding: const EdgeInsets.only(right: 8, top: 4), child: Icon( @@ -618,14 +618,14 @@ class EntityAutocompleteListTile extends StatelessWidget { Expanded( child: Text(label, style: Theme.of(context).textTheme.titleMedium), ), - entity.listDisplayAmount != null - ? Text(amount, style: Theme.of(context).textTheme.titleMedium) + entity!.listDisplayAmount != null + ? Text(amount!, style: Theme.of(context).textTheme.titleMedium) : Container(), ], ), subtitle: - (subtitle ?? '').isNotEmpty ? Text(subtitle, maxLines: 2) : null, - onTap: onTap != null ? () => onTap(entity) : null, + (subtitle ?? '').isNotEmpty ? Text(subtitle!, maxLines: 2) : null, + onTap: onTap != null ? () => onTap!(entity) : null, ); } } @@ -635,23 +635,23 @@ class _AutocompleteEntity extends Object with SelectableEntity { static const KEY = '__new__'; - final String name; + final String? name; @override String get id => KEY; @override - bool matchesFilter(String filter) => true; + bool matchesFilter(String? filter) => true; @override - String matchesFilterValue(String filter) => null; + String? matchesFilterValue(String? filter) => null; @override String get listDisplayName { - final localization = AppLocalization.of(navigatorKey.currentContext); + final localization = AppLocalization.of(navigatorKey.currentContext!)!; return '${localization.create}: $name'; } @override - double get listDisplayAmount => null; + double? get listDisplayAmount => null; } diff --git a/lib/ui/app/entity_header.dart b/lib/ui/app/entity_header.dart index e7029d325..165e8b719 100644 --- a/lib/ui/app/entity_header.dart +++ b/lib/ui/app/entity_header.dart @@ -14,9 +14,9 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class EntityHeader extends StatelessWidget { const EntityHeader({ - @required this.entity, - @required this.label, - @required this.value, + required this.entity, + required this.label, + required this.value, this.secondLabel, this.secondValue, this.statusLabel, @@ -24,17 +24,17 @@ class EntityHeader extends StatelessWidget { }); final BaseEntity entity; - final Color statusColor; - final String statusLabel; - final String label; - final String value; - final String secondLabel; - final String secondValue; + final Color? statusColor; + final String? statusLabel; + final String? label; + final String? value; + final String? secondLabel; + final String? secondValue; @override Widget build(BuildContext context) { final localization = AppLocalization.of(context); - final textColor = Theme.of(context).textTheme.bodyLarge.color; + final textColor = Theme.of(context).textTheme.bodyLarge!.color; final store = StoreProvider.of(context); final prefState = store.state.prefState; @@ -45,17 +45,17 @@ class EntityHeader extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ - Text(label, + Text(label!, style: TextStyle( fontSize: 16.0, - color: textColor.withOpacity(.65), + color: textColor!.withOpacity(.65), )), SizedBox( height: 8, ), FittedBox( child: Text( - (value ?? '').isEmpty ? ' ' : value, + (value ?? '').isEmpty ? ' ' : value!, style: TextStyle( fontSize: 30, ), @@ -73,17 +73,17 @@ class EntityHeader extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ - Text(secondLabel, + Text(secondLabel!, style: TextStyle( fontSize: 16.0, - color: textColor.withOpacity(.65), + color: textColor!.withOpacity(.65), )), SizedBox( height: 8, ), FittedBox( child: Text( - (secondValue ?? '').isEmpty ? ' ' : secondValue, + (secondValue ?? '').isEmpty ? ' ' : secondValue!, style: TextStyle( fontSize: 30, ), @@ -129,7 +129,7 @@ class EntityHeader extends StatelessWidget { decoration: BoxDecoration( color: entity.isArchived ? Colors.orange - : prefState.colorThemeModel.colorDanger, + : prefState.colorThemeModel!.colorDanger, borderRadius: BorderRadius.all(Radius.circular(kBorderRadius)), ), @@ -143,8 +143,8 @@ class EntityHeader extends StatelessWidget { vertical: 5, horizontal: 8), child: Text( entity.isArchived - ? localization.archived - : localization.deleted, + ? localization!.archived + : localization!.deleted, style: TextStyle(fontSize: 14, color: Colors.white), textAlign: TextAlign.center, overflow: TextOverflow.ellipsis, diff --git a/lib/ui/app/entity_state_label.dart b/lib/ui/app/entity_state_label.dart index 0f2bf3330..97fc06994 100644 --- a/lib/ui/app/entity_state_label.dart +++ b/lib/ui/app/entity_state_label.dart @@ -8,17 +8,17 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class EntityStateLabel extends StatelessWidget { const EntityStateLabel(this.entity); - final BaseEntity entity; + final BaseEntity? entity; @override Widget build(BuildContext context) { final localization = AppLocalization.of(context); - return entity.isDeleted - ? Text(localization.deleted, + return entity!.isDeleted! + ? Text(localization!.deleted, style: TextStyle(color: Colors.red, fontSize: 14.0)) - : entity.isArchived - ? Text(localization.archived, + : entity!.isArchived + ? Text(localization!.archived, style: TextStyle(color: Colors.orange, fontSize: 14.0)) : Container(); } diff --git a/lib/ui/app/entity_top_filter.dart b/lib/ui/app/entity_top_filter.dart index cd94a1ede..b23333fa4 100644 --- a/lib/ui/app/entity_top_filter.dart +++ b/lib/ui/app/entity_top_filter.dart @@ -1,4 +1,5 @@ // Flutter imports: +import 'package:collection/collection.dart' show IterableNullableExtension; import 'package:flutter/material.dart'; // Package imports: @@ -20,7 +21,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class EntityTopFilter extends StatelessWidget { const EntityTopFilter({ - @required this.show, + required this.show, }); final bool show; @@ -41,8 +42,8 @@ class EntityTopFilter extends StatelessWidget { final filterEntity = entityMap != null ? entityMap[uiState.filterEntityId] : null; final relatedTypes = filterEntityType?.relatedTypes - ?.where((element) => state.company.isModuleEnabled(element)) - ?.toList() ?? + ?.where((element) => state.company!.isModuleEnabled(element)) + .toList() ?? []; final backgroundColor = !prefState.enableDarkMode && state.hasAccentColor @@ -99,7 +100,7 @@ class EntityTopFilter extends StatelessWidget { isFilterVisible: !prefState.isFilterVisible)); }, onLongPress: () { - editEntity(entity: filterEntity); + editEntity(entity: filterEntity as BaseEntity); }, child: Row( crossAxisAlignment: CrossAxisAlignment.center, @@ -114,8 +115,8 @@ class EntityTopFilter extends StatelessWidget { constraints: BoxConstraints(maxWidth: 220), child: Text( EntityPresenter() - .initialize(filterEntity, context) - .title(), + .initialize(filterEntity as BaseEntity?, context) + .title()!, style: TextStyle( fontSize: 17, color: state.headerTextColor), @@ -138,8 +139,8 @@ class EntityTopFilter extends StatelessWidget { DecoratedBox( child: TextButton( child: Text( - localization.lookup( - '${relatedTypes[i].plural}'), + localization!.lookup( + '${relatedTypes[i].plural}')!, style: TextStyle( color: state.headerTextColor, ), @@ -152,12 +153,12 @@ class EntityTopFilter extends StatelessWidget { onPressed: () { viewEntitiesByType( entityType: relatedTypes[i], - filterEntity: filterEntity, + filterEntity: filterEntity as BaseEntity?, ); }, onLongPress: () { handleEntityAction( - filterEntity, + filterEntity as BaseEntity?, EntityAction.newEntityType( relatedTypes[i])); }, @@ -169,7 +170,7 @@ class EntityTopFilter extends StatelessWidget { color: prefState .enableDarkMode || !state.hasAccentColor - ? state.accentColor + ? state.accentColor! : Colors.white, width: 2, ), @@ -186,7 +187,7 @@ class EntityTopFilter extends StatelessWidget { child: Row( children: [ Text( - localization.more, + localization!.more, style: TextStyle( color: state.headerTextColor), ), @@ -200,20 +201,20 @@ class EntityTopFilter extends StatelessWidget { onSelected: (EntityType value) { if (value == filterEntityType) { viewEntity( - entity: filterEntity, + entity: filterEntity as BaseEntity, ); } else { viewEntitiesByType( entityType: value, - filterEntity: filterEntity, + filterEntity: filterEntity as BaseEntity?, ); } }, itemBuilder: (BuildContext context) => - filterEntityType.relatedTypes + filterEntityType!.relatedTypes .sublist( relatedTypes.length - remaining) - .where((element) => state.company + .where((element) => state.company! .isModuleEnabled(element)) .map((type) => PopupMenuItem( @@ -237,7 +238,7 @@ class EntityTopFilter extends StatelessWidget { SizedBox(width: 4), if (!prefState .isViewerFullScreen(filterEntityType)) ...[ - if (filterEntityType.hasFullWidthViewer) + if (filterEntityType!.hasFullWidthViewer) AppBorder( isLeft: true, child: InkWell( @@ -282,7 +283,7 @@ class EntityTopFilterHeader extends StatelessWidget { final entityMap = filterEntityType != null ? state.getEntityMap(filterEntityType) : null; final filterEntity = - entityMap != null ? entityMap[uiState.filterEntityId] : null; + entityMap != null ? entityMap[uiState.filterEntityId]! : null; final backgroundColor = !prefState.enableDarkMode && state.hasAccentColor ? state.accentColor @@ -293,10 +294,10 @@ class EntityTopFilterHeader extends StatelessWidget { includeEdit: true, userCompany: state.userCompany, ) - .where((action) => action != null); + .whereNotNull(); final textStyle = Theme.of(context) .textTheme - .bodyMedium + .bodyMedium! .copyWith(color: state.headerTextColor); return Material( @@ -316,7 +317,7 @@ class EntityTopFilterHeader extends StatelessWidget { color: state.headerTextColor, ), onPressed: () { - final entityType = uiState.filterEntityType; + final entityType = uiState.filterEntityType!; if (entityType.hasFullWidthViewer && state.prefState.isViewerFullScreen(entityType)) { viewEntitiesByType( @@ -355,7 +356,7 @@ class EntityTopFilterHeader extends StatelessWidget { child: Text( EntityPresenter() .initialize(filterEntity, context) - .title(), + .title()!, style: TextStyle( fontSize: 17, color: state.headerTextColor), overflow: TextOverflow.ellipsis, @@ -374,13 +375,13 @@ class EntityTopFilterHeader extends StatelessWidget { spacing: 8, children: entityActions.map( (action) { - final label = localization.lookup('$action'); + final label = localization!.lookup('$action'); return OutlinedButton( style: action == EntityAction.edit ? ButtonStyle( backgroundColor: MaterialStateProperty.all( - state.prefState.colorThemeModel + state.prefState.colorThemeModel! .colorSuccess)) : null, child: IconText( @@ -403,7 +404,7 @@ class EntityTopFilterHeader extends StatelessWidget { child: Row( children: [ Text( - localization.more, + localization!.more, style: textStyle, ), SizedBox(width: 4), @@ -429,7 +430,7 @@ class EntityTopFilterHeader extends StatelessWidget { .colorScheme .secondary), SizedBox(width: 16.0), - Text(AppLocalization.of(context) + Text(AppLocalization.of(context)! .lookup(action.toString()) ?? ''), ], diff --git a/lib/ui/app/form_card.dart b/lib/ui/app/form_card.dart index 604dbebc5..e2e552a11 100644 --- a/lib/ui/app/form_card.dart +++ b/lib/ui/app/form_card.dart @@ -10,7 +10,7 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class FormCard extends StatelessWidget { const FormCard({ - Key key, + Key? key, this.children, this.child, this.crossAxisAlignment, @@ -22,19 +22,19 @@ class FormCard extends StatelessWidget { this.constraints, }) : super(key: key); - final Widget child; - final List children; - final CrossAxisAlignment crossAxisAlignment; + final Widget? child; + final List? children; + final CrossAxisAlignment? crossAxisAlignment; final bool forceNarrow; - final EdgeInsets padding; - final EdgeInsets internalPadding; + final EdgeInsets? padding; + final EdgeInsets? internalPadding; final bool isLast; final double elevation; - final BoxConstraints constraints; + final BoxConstraints? constraints; @override Widget build(BuildContext context) { - if (child == null && (children == null || children.isEmpty)) { + if (child == null && (children == null || children!.isEmpty)) { return SizedBox(); } @@ -70,7 +70,7 @@ class FormCard extends StatelessWidget { mainAxisSize: MainAxisSize.max, crossAxisAlignment: crossAxisAlignment ?? CrossAxisAlignment.center, - children: children, + children: children!, ), ), ), diff --git a/lib/ui/app/forms/app_dropdown_button.dart b/lib/ui/app/forms/app_dropdown_button.dart index 6f301f08f..ebae2f6f3 100644 --- a/lib/ui/app/forms/app_dropdown_button.dart +++ b/lib/ui/app/forms/app_dropdown_button.dart @@ -3,10 +3,10 @@ import 'package:flutter/material.dart'; class AppDropdownButton extends StatelessWidget { const AppDropdownButton({ - Key key, - @required this.value, - @required this.onChanged, - @required this.items, + Key? key, + required this.value, + required this.onChanged, + required this.items, this.selectedItemBuilder, this.labelText, this.showBlank = false, @@ -15,15 +15,15 @@ class AppDropdownButton extends StatelessWidget { this.enabled = true, }) : super(key: key); - final String labelText; + final String? labelText; final dynamic value; - final Function(dynamic) onChanged; + final Function(dynamic)? onChanged; final List> items; final bool showBlank; final bool enabled; final dynamic blankValue; - final String blankLabel; - final DropdownButtonBuilder selectedItemBuilder; + final String? blankLabel; + final DropdownButtonBuilder? selectedItemBuilder; @override Widget build(BuildContext context) { @@ -45,7 +45,7 @@ class AppDropdownButton extends StatelessWidget { if (showBlank || isEmpty) DropdownMenuItem( value: blankValue, - child: blankLabel == null ? SizedBox() : Text(blankLabel), + child: blankLabel == null ? SizedBox() : Text(blankLabel!), ), ...items ], @@ -55,7 +55,7 @@ class AppDropdownButton extends StatelessWidget { if (labelText != null) { dropDownButton = InputDecorator( decoration: InputDecoration( - labelText: labelText.isEmpty ? null : labelText, + labelText: labelText!.isEmpty ? null : labelText, ), isEmpty: isEmpty && blankLabel == null, child: dropDownButton); diff --git a/lib/ui/app/forms/app_form.dart b/lib/ui/app/forms/app_form.dart index 81ea244cf..328df2db6 100644 --- a/lib/ui/app/forms/app_form.dart +++ b/lib/ui/app/forms/app_form.dart @@ -12,14 +12,14 @@ class AppForm extends StatelessWidget { const AppForm({ this.children, this.child, - @required this.formKey, - @required this.focusNode, + required this.formKey, + required this.focusNode, }); final GlobalKey formKey; - final List children; - final Widget child; - final FocusScopeNode focusNode; + final List? children; + final Widget? child; + final FocusScopeNode? focusNode; @override Widget build(BuildContext context) { @@ -39,18 +39,18 @@ class AppForm extends StatelessWidget { class AppTabForm extends StatelessWidget { const AppTabForm({ - @required this.children, - @required this.formKey, - @required this.focusNode, - @required this.tabController, + required this.children, + required this.formKey, + required this.focusNode, + required this.tabController, this.tabBarKey, }); - final FocusScopeNode focusNode; + final FocusScopeNode? focusNode; final GlobalKey formKey; final List children; - final TabController tabController; - final Key tabBarKey; + final TabController? tabController; + final Key? tabBarKey; @override Widget build(BuildContext context) { diff --git a/lib/ui/app/forms/app_tab_bar.dart b/lib/ui/app/forms/app_tab_bar.dart index b4bf83383..3b0011413 100644 --- a/lib/ui/app/forms/app_tab_bar.dart +++ b/lib/ui/app/forms/app_tab_bar.dart @@ -15,10 +15,10 @@ class AppTabBar extends StatelessWidget { this.onTap, }); - final List tabs; - final TabController controller; + final List? tabs; + final TabController? controller; final bool isScrollable; - final Function(int) onTap; + final Function(int)? onTap; @override Widget build(BuildContext context) { @@ -26,7 +26,7 @@ class AppTabBar extends StatelessWidget { final state = store.state; final tabBar = TabBar( - tabs: tabs, + tabs: tabs!, controller: controller, isScrollable: isScrollable, indicatorColor: Theme.of(context).colorScheme.secondary, diff --git a/lib/ui/app/forms/app_toggle_buttons.dart b/lib/ui/app/forms/app_toggle_buttons.dart index 6de1d1631..e0b61ed16 100644 --- a/lib/ui/app/forms/app_toggle_buttons.dart +++ b/lib/ui/app/forms/app_toggle_buttons.dart @@ -7,13 +7,13 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class AppToggleButtons extends StatelessWidget { const AppToggleButtons({ - @required this.selectedIndex, - @required this.onTabChanged, - @required this.tabLabels, + required this.selectedIndex, + required this.onTabChanged, + required this.tabLabels, this.padding = 36, }); - final List tabLabels; + final List? tabLabels; final int selectedIndex; final Function(int) onTabChanged; final double padding; @@ -22,12 +22,12 @@ class AppToggleButtons extends StatelessWidget { Widget build(BuildContext context) { return LayoutBuilder(builder: (context, constraints) { final bool isDesktop = calculateLayout(context) != AppLayout.mobile; - double toggleWidth = (constraints.maxWidth - padding) / tabLabels.length; + double toggleWidth = (constraints.maxWidth - padding) / tabLabels!.length; if (isDesktop) { - toggleWidth -= 46 / tabLabels.length; + toggleWidth -= 46 / tabLabels!.length; } - final isSelected = tabLabels.length == 4 + final isSelected = tabLabels!.length == 4 ? (selectedIndex == 0 ? [true, false, false, false] : selectedIndex == 1 @@ -35,7 +35,7 @@ class AppToggleButtons extends StatelessWidget { : selectedIndex == 2 ? [false, false, true, false] : [false, false, false, true]) - : tabLabels.length == 3 + : tabLabels!.length == 3 ? (selectedIndex == 0 ? [true, false, false] : selectedIndex == 1 @@ -45,12 +45,12 @@ class AppToggleButtons extends StatelessWidget { ? [true, false] : [false, true]; - final children = tabLabels + final children = tabLabels! .map((label) => Container( width: toggleWidth, child: Center( child: Text( - label[0].toUpperCase() + label.substring(1), + label![0].toUpperCase() + label.substring(1), maxLines: 1, overflow: TextOverflow.clip, )), diff --git a/lib/ui/app/forms/bool_dropdown_button.dart b/lib/ui/app/forms/bool_dropdown_button.dart index d86f3439e..dda379ecd 100644 --- a/lib/ui/app/forms/bool_dropdown_button.dart +++ b/lib/ui/app/forms/bool_dropdown_button.dart @@ -11,8 +11,8 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class BoolDropdownButton extends StatelessWidget { const BoolDropdownButton({ - @required this.value, - @required this.onChanged, + required this.value, + required this.onChanged, this.label, this.showBlank, this.enabledLabel, @@ -22,37 +22,37 @@ class BoolDropdownButton extends StatelessWidget { this.minWidth, }); - final String label; - final String helpLabel; - final bool value; - final Function(bool) onChanged; - final IconData iconData; - final bool showBlank; - final String enabledLabel; - final String disabledLabel; - final double minWidth; + final String? label; + final String? helpLabel; + final bool? value; + final Function(bool?) onChanged; + final IconData? iconData; + final bool? showBlank; + final String? enabledLabel; + final String? disabledLabel; + final double? minWidth; @override Widget build(BuildContext context) { final localization = AppLocalization.of(context); - final trueLabel = enabledLabel ?? localization.enabled; - final falseLabel = disabledLabel ?? localization.disabled; + final trueLabel = enabledLabel ?? localization!.enabled; + final falseLabel = disabledLabel ?? localization!.disabled; final state = StoreProvider.of(context).state; final _showBlank = showBlank ?? state.settingsUIState.isFiltered; if (!_showBlank && - (enabledLabel == null || enabledLabel == localization.yes)) { + (enabledLabel == null || enabledLabel == localization!.yes)) { return Padding( padding: const EdgeInsets.only(top: 12), child: SwitchListTile( - title: Text(label), + title: Text(label!), value: value ?? false, secondary: iconData != null && isDesktop(context) ? Icon(iconData) : null, onChanged: (value) => onChanged(value), activeColor: Theme.of(context).colorScheme.secondary, - subtitle: helpLabel != null ? Text(helpLabel) : null, + subtitle: helpLabel != null ? Text(helpLabel!) : null, ), ); } @@ -77,7 +77,7 @@ class BoolDropdownButton extends StatelessWidget { child: Text(trueLabel), value: true, ), - ].toList(), + ].toList() as List>?, ), ) : Padding( diff --git a/lib/ui/app/forms/client_picker.dart b/lib/ui/app/forms/client_picker.dart index a126efd3d..2e9566af5 100644 --- a/lib/ui/app/forms/client_picker.dart +++ b/lib/ui/app/forms/client_picker.dart @@ -17,27 +17,27 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class ClientPicker extends StatelessWidget { const ClientPicker({ - Key key, - @required this.clientId, - @required this.clientState, - @required this.onSelected, + Key? key, + required this.clientId, + required this.clientState, + required this.onSelected, this.onAddPressed, this.autofocus, this.excludeIds = const [], this.isRequired = true, }) : super(key: key); - final String clientId; + final String? clientId; final ClientState clientState; final Function(SelectableEntity) onSelected; - final Function(Completer completer) onAddPressed; - final bool autofocus; + final Function(Completer completer)? onAddPressed; + final bool? autofocus; final List excludeIds; final bool isRequired; @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final store = StoreProvider.of(context); final state = store.state; @@ -50,7 +50,7 @@ class ClientPicker extends StatelessWidget { state.userState.map, state.staticState), entityMap: clientState.map, validator: (String val) => isRequired && val.trim().isEmpty - ? AppLocalization.of(context).pleaseSelectAClient + ? AppLocalization.of(context)!.pleaseSelectAClient : null, onSelected: onSelected, onAddPressed: onAddPressed, diff --git a/lib/ui/app/forms/color_picker.dart b/lib/ui/app/forms/color_picker.dart index 273e85b91..35b04620a 100644 --- a/lib/ui/app/forms/color_picker.dart +++ b/lib/ui/app/forms/color_picker.dart @@ -25,9 +25,9 @@ class FormColorPicker extends StatefulWidget { this.showClear = true, }); - final String labelText; - final String initialValue; - final Function(String) onSelected; + final String? labelText; + final String? initialValue; + final Function(String?)? onSelected; final bool showClear; @override @@ -37,11 +37,11 @@ class FormColorPicker extends StatefulWidget { class _FormColorPickerState extends State { final _textController = TextEditingController(); - String _pendingColor; - String _selectedColor; + String? _pendingColor; + String? _selectedColor; final _debouncer = Debouncer(); - List _controllers; + late List _controllers; final _defaultColors = [ Colors.red, @@ -80,7 +80,7 @@ class _FormColorPickerState extends State { _controllers .forEach((dynamic controller) => controller.removeListener(_onChanged)); - _selectedColor = _textController.text = widget.initialValue; + _selectedColor = _textController.text = widget.initialValue!; _controllers .forEach((dynamic controller) => controller.addListener(_onChanged)); @@ -94,14 +94,14 @@ class _FormColorPickerState extends State { }); } - void _selectColor(String color) { + void _selectColor(String? color) { if (color != null && color.length != 7) { return; } setState(() { _selectedColor = color; - widget.onSelected(color); + widget.onSelected!(color); }); } @@ -117,7 +117,7 @@ class _FormColorPickerState extends State { _selectedColor = null; Color color = Colors.black; - if (widget.initialValue != null && widget.initialValue.isNotEmpty) { + if (widget.initialValue != null && widget.initialValue!.isNotEmpty) { color = convertHexStringToColor(widget.initialValue) ?? Colors.black; } @@ -133,12 +133,12 @@ class _FormColorPickerState extends State { content: SingleChildScrollView( child: BlockPicker( availableColors: [ - ..._defaultColors, - colors.colorInfo, - colors.colorPrimary, - colors.colorSuccess, - colors.colorWarning, - colors.colorDanger, + ..._defaultColors as Iterable, + colors!.colorInfo!, + colors.colorPrimary!, + colors.colorSuccess!, + colors.colorWarning!, + colors.colorDanger!, ], pickerColor: color, onColorChanged: (color) { @@ -148,14 +148,14 @@ class _FormColorPickerState extends State { ), actions: [ TextButton( - child: Text(localization.cancel.toUpperCase()), + child: Text(localization!.cancel.toUpperCase()), onPressed: () => Navigator.of(context).pop(), ), TextButton( child: Text(localization.done.toUpperCase()), onPressed: () { _selectColor(_pendingColor); - _textController.text = _pendingColor; + _textController.text = _pendingColor!; Navigator.of(context).pop(); }, ), @@ -172,7 +172,7 @@ class _FormColorPickerState extends State { children: [ DecoratedFormField( controller: _textController, - label: widget.labelText ?? AppLocalization.of(context).color, + label: widget.labelText ?? AppLocalization.of(context)!.color, hint: '#000000', keyboardType: TextInputType.text, ), diff --git a/lib/ui/app/forms/custom_field.dart b/lib/ui/app/forms/custom_field.dart index af9013bfe..a49e5fb8b 100644 --- a/lib/ui/app/forms/custom_field.dart +++ b/lib/ui/app/forms/custom_field.dart @@ -17,7 +17,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class CustomField extends StatefulWidget { const CustomField({ - @required this.field, + required this.field, this.onSavePressed, this.controller, this.onChanged, @@ -25,11 +25,11 @@ class CustomField extends StatefulWidget { this.hideFieldLabel = false, }); - final TextEditingController controller; - final Function(String) onChanged; - final Function(BuildContext) onSavePressed; + final TextEditingController? controller; + final Function(String)? onChanged; + final Function(BuildContext)? onSavePressed; final String field; - final String value; + final String? value; final bool hideFieldLabel; @override @@ -37,22 +37,22 @@ class CustomField extends StatefulWidget { } class _CustomFieldState extends State { - TextEditingController _controller; - String _value; + TextEditingController? _controller; + String? _value; @override void initState() { super.initState(); _controller = widget.controller ?? TextEditingController(); - _controller.text = widget.value ?? ''; + _controller!.text = widget.value ?? ''; _value = widget.value; } @override void dispose() { if (widget.controller == null) { - _controller.dispose(); + _controller!.dispose(); } super.dispose(); } @@ -60,7 +60,7 @@ class _CustomFieldState extends State { @override Widget build(BuildContext context) { final state = StoreProvider.of(context).state; - final CompanyEntity company = state.company; + final CompanyEntity company = state.company!; final localization = AppLocalization.of(context); final fieldLabel = company.getCustomFieldLabel(widget.field); @@ -93,25 +93,25 @@ class _CustomFieldState extends State { case kFieldTypeSwitch: return BoolDropdownButton( onChanged: (value) { - _controller.text = value ? kSwitchValueYes : kSwitchValueNo; + _controller!.text = value ? kSwitchValueYes : kSwitchValueNo; Debouncer.complete(); if (widget.onChanged != null) { - widget.onChanged(value ? kSwitchValueYes : kSwitchValueNo); + widget.onChanged!(value ? kSwitchValueYes : kSwitchValueNo); } }, value: widget.value == null ? null : widget.value == kSwitchValueYes, label: widget.hideFieldLabel ? '' : fieldLabel, - enabledLabel: localization.yes, + enabledLabel: localization!.yes, disabledLabel: localization.no, ); case kFieldTypeDate: return DatePicker( labelText: widget.hideFieldLabel ? null : fieldLabel, onSelected: (date, _) { - _controller.text = date; + _controller!.text = date; Debouncer.complete(); if (widget.onChanged != null) { - widget.onChanged(date); + widget.onChanged!(date); } }, selectedDate: widget.value, @@ -127,11 +127,11 @@ class _CustomFieldState extends State { .toList(), onChanged: (dynamic value) { setState(() { - _controller.text = _value = value; + _controller!.text = _value = value; }); Debouncer.complete(); if (widget.onChanged != null) { - widget.onChanged(value); + widget.onChanged!(value); } }, labelText: widget.hideFieldLabel ? null : fieldLabel, diff --git a/lib/ui/app/forms/custom_surcharges.dart b/lib/ui/app/forms/custom_surcharges.dart index 970e0cb63..1ddf4303f 100644 --- a/lib/ui/app/forms/custom_surcharges.dart +++ b/lib/ui/app/forms/custom_surcharges.dart @@ -11,10 +11,10 @@ import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart'; class CustomSurcharges extends StatelessWidget { const CustomSurcharges({ - @required this.surcharge1Controller, - @required this.surcharge2Controller, - @required this.surcharge3Controller, - @required this.surcharge4Controller, + required this.surcharge1Controller, + required this.surcharge2Controller, + required this.surcharge3Controller, + required this.surcharge4Controller, this.onSavePressed, this.isAfterTaxes = false, }); @@ -23,13 +23,13 @@ class CustomSurcharges extends StatelessWidget { final TextEditingController surcharge2Controller; final TextEditingController surcharge3Controller; final TextEditingController surcharge4Controller; - final Function(BuildContext) onSavePressed; + final Function(BuildContext)? onSavePressed; final bool isAfterTaxes; @override Widget build(BuildContext context) { final state = StoreProvider.of(context).state; - final CompanyEntity company = state.company; + final CompanyEntity company = state.company!; return Column( children: [ diff --git a/lib/ui/app/forms/date_picker.dart b/lib/ui/app/forms/date_picker.dart index 8dd56b0b2..692bdffe6 100644 --- a/lib/ui/app/forms/date_picker.dart +++ b/lib/ui/app/forms/date_picker.dart @@ -16,9 +16,9 @@ import 'package:invoiceninja_flutter/utils/strings.dart'; class DatePicker extends StatefulWidget { const DatePicker({ - Key key, - @required this.onSelected, - @required this.selectedDate, + Key? key, + required this.onSelected, + required this.selectedDate, this.labelText, this.validator, this.autoValidate = false, @@ -29,16 +29,16 @@ class DatePicker extends StatefulWidget { this.hint, }) : super(key: key); - final String labelText; - final String selectedDate; + final String? labelText; + final String? selectedDate; final Function(String, bool) onSelected; - final Function(String) validator; + final Function(String)? validator; final bool autoValidate; final bool allowClearing; - final String message; - final DateTime firstDate; + final String? message; + final DateTime? firstDate; final bool autofocus; - final String hint; + final String? hint; @override _DatePickerState createState() => new _DatePickerState(); @@ -47,7 +47,7 @@ class DatePicker extends StatefulWidget { class _DatePickerState extends State { final _textController = TextEditingController(); final _focusNode = FocusNode(); - String _pendingValue; + String? _pendingValue; @override void initState() { @@ -86,8 +86,8 @@ class _DatePickerState extends State { void _showDatePicker() async { DateTime firstDate = DateTime.now(); final DateTime initialDate = - widget.selectedDate != null && widget.selectedDate.isNotEmpty - ? DateTime.tryParse(widget.selectedDate) + widget.selectedDate != null && widget.selectedDate!.isNotEmpty + ? DateTime.tryParse(widget.selectedDate!)! : DateTime.now(); if (widget.firstDate != null) { @@ -99,7 +99,7 @@ class _DatePickerState extends State { } final store = StoreProvider.of(context); - final DateTime selectedDate = await showDatePicker( + final DateTime? selectedDate = await showDatePicker( context: context, initialDate: initialDate, firstDate: firstDate, @@ -153,11 +153,11 @@ class _DatePickerState extends State { final dateAsNumber = value.replaceAll('/', '').replaceAll('\\', ''); if (value.startsWith('+') || value.startsWith('-')) { date = convertDateTimeToSqlDate( - DateTime.now().add(Duration(days: parseInt(value)))); + DateTime.now().add(Duration(days: parseInt(value)!))); } else if (isAllDigits(dateAsNumber) || value.length <= 5) { String firstPart = '01'; String secondPart = '01'; - int year = DateTime.now().year; + int? year = DateTime.now().year; if (value.contains('/')) { final parts = value.split('/'); if (parts[0].length == 1) { @@ -172,7 +172,7 @@ class _DatePickerState extends State { } if (parts.length == 3) { year = parseInt(parts[2]); - if (year < 100) { + if (year! < 100) { year += 2000; } } @@ -190,7 +190,7 @@ class _DatePickerState extends State { } if (parts.length == 3) { year = parseInt(parts[2]); - if (year < 100) { + if (year! < 100) { year += 2000; } } @@ -221,7 +221,7 @@ class _DatePickerState extends State { if (value.length == 6) { year = int.tryParse(value.substring(4, 6)); - if (year < 30) { + if (year! < 30) { year += 2000; } else { year += 1900; @@ -236,7 +236,7 @@ class _DatePickerState extends State { final day = secondPart; final state = StoreProvider.of(context).state; - final countryId = state.company.settings.countryId; + final countryId = state.company!.settings.countryId; value = [ kCountryUnitedStates, diff --git a/lib/ui/app/forms/decorated_form_field.dart b/lib/ui/app/forms/decorated_form_field.dart index fa09b0cc2..49b82409a 100644 --- a/lib/ui/app/forms/decorated_form_field.dart +++ b/lib/ui/app/forms/decorated_form_field.dart @@ -11,8 +11,8 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class DecoratedFormField extends StatefulWidget { const DecoratedFormField({ - Key key, - @required this.keyboardType, + Key? key, + required this.keyboardType, this.controller, this.label, this.onSavePressed, @@ -40,32 +40,32 @@ class DecoratedFormField extends StatefulWidget { this.inputFormatters, }) : super(key: key); - final TextEditingController controller; - final String label; - final String hint; - final String initialValue; - final Function(String) validator; + final TextEditingController? controller; + final String? label; + final String? hint; + final String? initialValue; + final Function(String)? validator; final TextInputType keyboardType; - final int maxLines; - final int minLines; - final bool enabled; + final int? maxLines; + final int? minLines; + final bool? enabled; final bool autocorrect; final bool obscureText; final bool expands; final bool autofocus; - final ValueChanged onFieldSubmitted; - final ValueChanged onChanged; - final Icon suffixIcon; - final IconButton suffixIconButton; - final Iterable autofillHints; - final Function(BuildContext) onSavePressed; + final ValueChanged? onFieldSubmitted; + final ValueChanged? onChanged; + final Icon? suffixIcon; + final IconButton? suffixIconButton; + final Iterable? autofillHints; + final Function(BuildContext)? onSavePressed; final TextAlign textAlign; - final InputDecoration decoration; - final FocusNode focusNode; + final InputDecoration? decoration; + final FocusNode? focusNode; final bool isMoney; final bool isPercent; final bool showClear; - final List inputFormatters; + final List? inputFormatters; @override _DecoratedFormFieldState createState() => _DecoratedFormFieldState(); @@ -76,7 +76,7 @@ class _DecoratedFormFieldState extends State { @override Widget build(BuildContext context) { - Widget iconButton = widget.suffixIconButton; + Widget? iconButton = widget.suffixIconButton; final hasValue = (widget.initialValue ?? '').isNotEmpty || (widget.controller?.text ?? '').isNotEmpty; @@ -92,11 +92,11 @@ class _DecoratedFormFieldState extends State { widget.controller != null) { if (widget.suffixIconButton == null && widget.suffixIcon == null && - widget.enabled) { + widget.enabled!) { iconButton = IconButton( icon: Icon(Icons.clear), onPressed: () { - widget.controller.text = ''; + widget.controller!.text = ''; setState(() { _showClear = false; }); @@ -105,7 +105,7 @@ class _DecoratedFormFieldState extends State { } } - InputDecoration inputDecoration; + InputDecoration? inputDecoration; if (widget.decoration != null) { inputDecoration = widget.decoration; } else if (widget.label == null && widget.hint == null) { @@ -138,7 +138,7 @@ class _DecoratedFormFieldState extends State { controller: widget.controller, autofocus: widget.autofocus, decoration: inputDecoration, - validator: widget.validator, + validator: widget.validator as String? Function(String?)?, autovalidateMode: AutovalidateMode.onUserInteraction, keyboardType: widget.keyboardType, maxLines: widget.expands ? null : widget.maxLines ?? 1, @@ -157,17 +157,17 @@ class _DecoratedFormFieldState extends State { onChanged: (value) { _showClear = true; if (widget.onChanged != null) { - widget.onChanged(value); + widget.onChanged!(value); } }, inputFormatters: widget.inputFormatters, onFieldSubmitted: (value) { if (widget.onFieldSubmitted != null) { - return widget.onFieldSubmitted(value); + return widget.onFieldSubmitted!(value); } else if (widget.keyboardType == TextInputType.multiline) { return null; } else if (enterShouldSubmit) { - widget.onSavePressed(context); + widget.onSavePressed!(context); } }, enabled: widget.enabled, diff --git a/lib/ui/app/forms/design_picker.dart b/lib/ui/app/forms/design_picker.dart index ed9bb9150..ddc5b229c 100644 --- a/lib/ui/app/forms/design_picker.dart +++ b/lib/ui/app/forms/design_picker.dart @@ -12,14 +12,14 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class DesignPicker extends StatelessWidget { const DesignPicker({ - @required this.onSelected, + required this.onSelected, this.label, this.initialValue, }); - final Function(DesignEntity) onSelected; - final String label; - final String initialValue; + final Function(DesignEntity?) onSelected; + final String? label; + final String? initialValue; @override Widget build(BuildContext context) { @@ -36,18 +36,18 @@ class DesignPicker extends StatelessWidget { final design = designState.map[designId]; if (state.isHosted && !state.isPaidAccount && - !state.account.isTrial && - !design.isFree) { + !state.account!.isTrial && + !design!.isFree) { return false; } - return design.isActive || designId == initialValue; + return design!.isActive || designId == initialValue; }) .map((value) => DropdownMenuItem( value: value, - child: Text(designState.map[value].displayName), + child: Text(designState.map[value]!.displayName), )) .toList(), - labelText: label ?? localization.design, + labelText: label ?? localization!.design, ); } } diff --git a/lib/ui/app/forms/discount_field.dart b/lib/ui/app/forms/discount_field.dart index d3c0cb6f8..da5f3e0f7 100644 --- a/lib/ui/app/forms/discount_field.dart +++ b/lib/ui/app/forms/discount_field.dart @@ -7,22 +7,22 @@ import 'decorated_form_field.dart'; class DiscountField extends StatelessWidget { const DiscountField({ - @required this.controller, - @required this.value, - @required this.isAmountDiscount, - @required this.onTypeChanged, + required this.controller, + required this.value, + required this.isAmountDiscount, + required this.onTypeChanged, this.label, }); final TextEditingController controller; final double value; final bool isAmountDiscount; - final Function(bool value) onTypeChanged; - final String label; + final Function(bool? value) onTypeChanged; + final String? label; @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; return Row( mainAxisSize: MainAxisSize.min, diff --git a/lib/ui/app/forms/duration_picker.dart b/lib/ui/app/forms/duration_picker.dart index 4ed67ecc9..63c82da08 100644 --- a/lib/ui/app/forms/duration_picker.dart +++ b/lib/ui/app/forms/duration_picker.dart @@ -7,17 +7,17 @@ import 'package:invoiceninja_flutter/utils/formatting.dart'; class DurationPicker extends StatefulWidget { const DurationPicker({ - Key key, - @required this.selectedDuration, - @required this.onSelected, + Key? key, + required this.selectedDuration, + required this.onSelected, this.labelText, this.allowClearing = false, }) : super(key: key); - final Duration selectedDuration; + final Duration? selectedDuration; final Function onSelected; final bool allowClearing; - final String labelText; + final String? labelText; @override _DurationPickerState createState() => _DurationPickerState(); @@ -26,7 +26,7 @@ class DurationPicker extends StatefulWidget { class _DurationPickerState extends State { final _textController = TextEditingController(); final _focusNode = FocusNode(); - Duration _pendingDuration; + Duration? _pendingDuration; @override void initState() { @@ -77,17 +77,17 @@ class _DurationPickerState extends State { int seconds = 0; if (value.contains(':')) { final parts = value.split(':'); - seconds = parseInt(parts[0]) * 60 * 60; + seconds = parseInt(parts[0])! * 60 * 60; if (parts[1].length == 1) { - seconds += parseInt('${parts[1]}0') * 60; + seconds += parseInt('${parts[1]}0')! * 60; } else { - seconds += parseInt(parts[1]) * 60; + seconds += parseInt(parts[1])! * 60; } if (parts.length > 2) { - seconds += parseInt(parts[2]); + seconds += parseInt(parts[2])!; } } else { - seconds = (parseDouble(value) * 60 * 60).round(); + seconds = (parseDouble(value)! * 60 * 60).round(); } final duration = Duration(seconds: seconds); if (widget.selectedDuration != null) { @@ -104,7 +104,7 @@ class _DurationPickerState extends State { : (widget.labelText ?? ''), suffixIcon: widget.allowClearing && (widget.selectedDuration != null && - widget.selectedDuration.inSeconds != 0) + widget.selectedDuration!.inSeconds != 0) ? IconButton( icon: Icon(Icons.clear), onPressed: () { diff --git a/lib/ui/app/forms/dynamic_selector.dart b/lib/ui/app/forms/dynamic_selector.dart index 66fb53280..d8f65f7f6 100644 --- a/lib/ui/app/forms/dynamic_selector.dart +++ b/lib/ui/app/forms/dynamic_selector.dart @@ -16,7 +16,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class DynamicSelector extends StatelessWidget { const DynamicSelector({ - Key key, + Key? key, this.entityId, this.entityType, this.entityIds, @@ -28,15 +28,15 @@ class DynamicSelector extends StatelessWidget { this.labelText, }) : super(key: key); - final String labelText; + final String? labelText; final bool allowClearing; - final String entityId; - final List entityIds; - final EntityType entityType; - final Function(String) onChanged; - final Function(SelectableEntity) overrideSuggestedAmount; - final Function(SelectableEntity) overrideSuggestedLabel; - final Function(Completer completer) onAddPressed; + final String? entityId; + final List? entityIds; + final EntityType? entityType; + final Function(String)? onChanged; + final Function(SelectableEntity)? overrideSuggestedAmount; + final Function(SelectableEntity?)? overrideSuggestedLabel; + final Function(Completer completer)? onAddPressed; @override Widget build(BuildContext context) { @@ -44,30 +44,30 @@ class DynamicSelector extends StatelessWidget { final state = StoreProvider.of(context).state; final entityMap = state.getEntityMap(entityType); - if (!state.company.isModuleEnabled(entityType)) { + if (!state.company!.isModuleEnabled(entityType)) { return SizedBox(); } - if (entityIds.length < 10) { + if (entityIds!.length < 10) { return AppDropdownButton( - labelText: labelText ?? localization.lookup('$entityType'), + labelText: labelText ?? localization!.lookup('$entityType'), value: entityId, showBlank: allowClearing, - onChanged: (dynamic entityId) => onChanged(entityId), - items: entityIds + onChanged: (dynamic entityId) => onChanged!(entityId), + items: entityIds! .map((entityId) => DropdownMenuItem( child: Text(overrideSuggestedLabel != null - ? overrideSuggestedLabel(entityMap[entityId]) - : entityMap[entityId]?.listDisplayName ?? ''), + ? overrideSuggestedLabel!(entityMap![entityId]) + : entityMap![entityId]?.listDisplayName ?? ''), value: entityId, )) .toList(), ); } else { return EntityDropdown( - labelText: labelText ?? localization.lookup('$entityType'), + labelText: labelText ?? localization!.lookup('$entityType'), entityType: entityType, - onSelected: (entity) => onChanged(entity?.id), + onSelected: (entity) => onChanged!(entity?.id), onAddPressed: onAddPressed, entityId: entityId, entityList: entityIds, diff --git a/lib/ui/app/forms/growable_form_field.dart b/lib/ui/app/forms/growable_form_field.dart index e9323dcb7..0ef0117bc 100644 --- a/lib/ui/app/forms/growable_form_field.dart +++ b/lib/ui/app/forms/growable_form_field.dart @@ -6,9 +6,9 @@ import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart'; class GrowableFormField extends StatefulWidget { const GrowableFormField({ - Key key, - @required this.initialValue, - @required this.onChanged, + Key? key, + required this.initialValue, + required this.onChanged, this.autofocus = false, this.label, }) : super(key: key); @@ -16,7 +16,7 @@ class GrowableFormField extends StatefulWidget { final String initialValue; final ValueChanged onChanged; final bool autofocus; - final String label; + final String? label; @override _GrowableFormFieldState createState() => _GrowableFormFieldState(); diff --git a/lib/ui/app/forms/help_link.dart b/lib/ui/app/forms/help_link.dart index 0b9b6e5d4..08ba9fe61 100644 --- a/lib/ui/app/forms/help_link.dart +++ b/lib/ui/app/forms/help_link.dart @@ -10,8 +10,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class HelpLink extends StatelessWidget { const HelpLink({ - @required this.url, - @required this.message, + required this.url, + required this.message, }); final String url; @@ -19,10 +19,10 @@ class HelpLink extends StatelessWidget { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final ThemeData themeData = Theme.of(context); - final TextStyle aboutTextStyle = themeData.textTheme.bodyMedium; - final TextStyle linkStyle = themeData.textTheme.bodyMedium + final TextStyle? aboutTextStyle = themeData.textTheme.bodyMedium; + final TextStyle linkStyle = themeData.textTheme.bodyMedium! .copyWith(color: themeData.colorScheme.secondary); return Padding( diff --git a/lib/ui/app/forms/learn_more.dart b/lib/ui/app/forms/learn_more.dart index dcaff472d..8f0def05a 100644 --- a/lib/ui/app/forms/learn_more.dart +++ b/lib/ui/app/forms/learn_more.dart @@ -9,14 +9,14 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class LearnMoreUrl extends StatelessWidget { const LearnMoreUrl({ - @required this.child, - @required this.url, + required this.child, + required this.url, this.label, }); final Widget child; final String url; - final String label; + final String? label; @override Widget build(BuildContext context) { @@ -35,7 +35,7 @@ class LearnMoreUrl extends StatelessWidget { width: 10, ), TextButton( - child: Text(label ?? localization.learnMore), + child: Text(label ?? localization!.learnMore), onPressed: () => launchUrl(Uri.parse(url)), ), ], @@ -45,14 +45,14 @@ class LearnMoreUrl extends StatelessWidget { class LearnMoreDialog extends StatelessWidget { const LearnMoreDialog({ - @required this.child, - @required this.dialog, + required this.child, + required this.dialog, this.label, }); final Widget child; final Widget dialog; - final String label; + final String? label; @override Widget build(BuildContext context) { @@ -67,7 +67,7 @@ class LearnMoreDialog extends StatelessWidget { width: 10, ), TextButton( - child: Text(label ?? localization.learnMore), + child: Text(label ?? localization!.learnMore), onPressed: () { showDialog( context: context, diff --git a/lib/ui/app/forms/notification_settings.dart b/lib/ui/app/forms/notification_settings.dart index 72b3fdb39..b561d1f77 100644 --- a/lib/ui/app/forms/notification_settings.dart +++ b/lib/ui/app/forms/notification_settings.dart @@ -17,8 +17,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class NotificationSettings extends StatelessWidget { const NotificationSettings({ - @required this.user, - @required this.onChanged, + required this.user, + required this.onChanged, }); final UserEntity user; @@ -31,12 +31,12 @@ class NotificationSettings extends StatelessWidget { @override Widget build(BuildContext context) { final state = StoreProvider.of(context).state; - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final notifications = - user.userCompany.notifications ?? BuiltMap>(); + user.userCompany!.notifications ?? BuiltMap>(); final BuiltList emailNotifications = notifications.containsKey(kNotificationChannelEmail) - ? notifications[kNotificationChannelEmail] + ? notifications[kNotificationChannelEmail]! : BuiltList(); final hasMultipleUsers = state.userState.list.length > 1 || user.isNew; @@ -87,14 +87,14 @@ class NotificationSettings extends StatelessWidget { kNotificationsQuoteApproved, kNotificationsQuoteExpired, ].contains(eventType) && - !state.company.isModuleEnabled(EntityType.quote)) { + !state.company!.isModuleEnabled(EntityType.quote)) { return false; } else if ([ kNotificationsCreditCreated, kNotificationsCreditSent, kNotificationsCreditViewed, ].contains(eventType) && - !state.company.isModuleEnabled(EntityType.credit)) { + !state.company!.isModuleEnabled(EntityType.credit)) { return false; } else if ([ kNotificationsPurchaseOrderCreated, @@ -102,13 +102,13 @@ class NotificationSettings extends StatelessWidget { kNotificationsPurchaseOrderViewed, kNotificationsPurchaseOrderAccepted, ].contains(eventType) && - !state.company + !state.company! .isModuleEnabled(EntityType.purchaseOrder)) { return false; } else if ([ kNotificationsInventoryThreshold, ].contains(eventType) && - !state.company.stockNotification) { + !state.company!.stockNotification) { return false; } @@ -135,8 +135,8 @@ class NotificationSettings extends StatelessWidget { return DataRow(cells: [ // workaround for mistake in translations DataCell(Text(eventType == kNotificationsInvoiceSent - ? localization.invoiceSentNotificationLabel - : localization.lookup(eventType))), + ? localization.invoiceSentNotificationLabel! + : localization.lookup(eventType)!)), DataCell(isAllEnabled ? value == NOTIFY_ALL ? IconText( @@ -179,13 +179,13 @@ class NotificationSettings extends StatelessWidget { class _NotificationSelector extends StatelessWidget { const _NotificationSelector({ - @required this.value, - @required this.onChanged, - @required this.hasMultipleUsers, + required this.value, + required this.onChanged, + required this.hasMultipleUsers, this.showNoneAsCustom = false, }); - final String value; + final String? value; final Function(String) onChanged; final bool hasMultipleUsers; final bool showNoneAsCustom; @@ -207,8 +207,8 @@ class _NotificationSelector extends StatelessWidget { value: NotificationSettings.NOTIFY_ALL, child: IconText( text: hasMultipleUsers - ? localization.allRecords - : localization.enabled, + ? localization!.allRecords + : localization!.enabled, icon: hasMultipleUsers ? Icons.supervised_user_circle : Icons.check_circle, diff --git a/lib/ui/app/forms/password_field.dart b/lib/ui/app/forms/password_field.dart index e255ba28a..326abd6f1 100644 --- a/lib/ui/app/forms/password_field.dart +++ b/lib/ui/app/forms/password_field.dart @@ -14,11 +14,11 @@ class PasswordFormField extends StatefulWidget { this.labelText, }); - final TextEditingController controller; - final Function(BuildContext) onSavePressed; + final TextEditingController? controller; + final Function(BuildContext)? onSavePressed; final bool newPassword; final bool validate; - final String labelText; + final String? labelText; @override _PasswordFormFieldState createState() => _PasswordFormFieldState(); @@ -38,17 +38,17 @@ class _PasswordFormFieldState extends State { final localization = AppLocalization.of(context); return DecoratedFormField( - key: ValueKey(widget.labelText ?? localization.password), + key: ValueKey(widget.labelText ?? localization!.password), controller: widget.controller, onSavePressed: widget.onSavePressed, autocorrect: false, decoration: InputDecoration( - labelText: widget.labelText ?? localization.password, + labelText: widget.labelText ?? localization!.password, suffixIcon: IconButton( alignment: Alignment.bottomCenter, tooltip: _isPasswordObscured - ? localization.showPassword - : localization.hidePassword, + ? localization!.showPassword + : localization!.hidePassword, icon: Icon( _isPasswordObscured ? Icons.visibility : Icons.visibility_off, color: Colors.grey, diff --git a/lib/ui/app/forms/project_picker.dart b/lib/ui/app/forms/project_picker.dart index 67f764094..4124fe35a 100644 --- a/lib/ui/app/forms/project_picker.dart +++ b/lib/ui/app/forms/project_picker.dart @@ -17,23 +17,23 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class ProjectPicker extends StatelessWidget { const ProjectPicker({ - Key key, + Key? key, this.projectId, this.clientId, this.onChanged, this.onAddPressed, }) : super(key: key); - final String projectId; - final String clientId; - final Function(String) onChanged; - final Function(Completer completer) onAddPressed; + final String? projectId; + final String? clientId; + final Function(String)? onChanged; + final Function(Completer completer)? onAddPressed; @override Widget build(BuildContext context) { final store = StoreProvider.of(context); final state = store.state; - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; return EntityDropdown( entityType: EntityType.project, @@ -47,7 +47,7 @@ class ProjectPicker extends StatelessWidget { state.userState.map, clientId), onSelected: (entity) { - onChanged(entity?.id ?? ''); + onChanged!(entity?.id ?? ''); }, onCreateNew: (clientId ?? '').isNotEmpty ? (completer, name) { diff --git a/lib/ui/app/forms/save_cancel_buttons.dart b/lib/ui/app/forms/save_cancel_buttons.dart index 807f9bdb3..f581cfa64 100644 --- a/lib/ui/app/forms/save_cancel_buttons.dart +++ b/lib/ui/app/forms/save_cancel_buttons.dart @@ -18,11 +18,11 @@ class SaveCancelButtons extends StatelessWidget { final bool isEnabled; final bool isCancelEnabled; - final String saveLabel; - final String cancelLabel; + final String? saveLabel; + final String? cancelLabel; final bool isHeader; - final Function(BuildContext) onCancelPressed; - final Function(BuildContext) onSavePressed; + final Function(BuildContext)? onCancelPressed; + final Function(BuildContext)? onSavePressed; @override Widget build(BuildContext context) { @@ -35,18 +35,18 @@ class SaveCancelButtons extends StatelessWidget { if (onCancelPressed != null) Builder(builder: (BuildContext context) { return AppTextButton( - label: cancelLabel ?? localization.cancel, + label: cancelLabel ?? localization!.cancel, isInHeader: isHeader && (isEnabled || isCancelEnabled), onPressed: isEnabled || isCancelEnabled - ? () => onCancelPressed(context) + ? () => onCancelPressed!(context) : null, ); }), Builder(builder: (BuildContext context) { return AppTextButton( - label: saveLabel ?? localization.save, + label: saveLabel ?? localization!.save, isInHeader: isHeader, - onPressed: isEnabled ? () => onSavePressed(context) : null, + onPressed: isEnabled ? () => onSavePressed!(context) : null, ); }), ], diff --git a/lib/ui/app/forms/time_picker.dart b/lib/ui/app/forms/time_picker.dart index 926d169fc..26c11a320 100644 --- a/lib/ui/app/forms/time_picker.dart +++ b/lib/ui/app/forms/time_picker.dart @@ -12,9 +12,9 @@ import 'package:invoiceninja_flutter/utils/formatting.dart'; class TimePicker extends StatefulWidget { const TimePicker({ - Key key, - @required this.onSelected, - @required this.selectedDateTime, + Key? key, + required this.onSelected, + required this.selectedDateTime, this.isEndTime = false, this.labelText, this.validator, @@ -22,10 +22,10 @@ class TimePicker extends StatefulWidget { this.allowClearing = false, }) : super(key: key); - final String labelText; - final DateTime selectedDateTime; - final Function(DateTime) onSelected; - final Function validator; + final String? labelText; + final DateTime? selectedDateTime; + final Function(DateTime?) onSelected; + final Function? validator; final bool autoValidate; final bool allowClearing; final bool isEndTime; @@ -37,7 +37,7 @@ class TimePicker extends StatefulWidget { class _TimePickerState extends State { final _textController = TextEditingController(); final _focusNode = FocusNode(); - String _pendingValue; + String? _pendingValue; @override void initState() { @@ -49,7 +49,7 @@ class _TimePickerState extends State { void didChangeDependencies() { if (widget.selectedDateTime != null) { final formatted = formatDate( - widget.selectedDateTime.toIso8601String(), context, + widget.selectedDateTime!.toIso8601String(), context, showDate: false, showTime: true); _textController.text = formatted; @@ -61,7 +61,7 @@ class _TimePickerState extends State { void _onFoucsChanged() { if (!_focusNode.hasFocus && widget.selectedDateTime != null) { _textController.text = formatDate( - widget.selectedDateTime.toIso8601String(), context, + widget.selectedDateTime!.toIso8601String(), context, showDate: false, showTime: true); setState(() { @@ -85,17 +85,17 @@ class _TimePickerState extends State { final hour = selectedDateTime?.hour ?? now.hour; final minute = selectedDateTime?.minute ?? now.minute; - final TimeOfDay selectedTime = await showTimePicker( + final TimeOfDay? selectedTime = await showTimePicker( context: context, initialTime: TimeOfDay(hour: hour, minute: minute), - builder: (BuildContext context, Widget child) { + builder: (BuildContext context, Widget? child) { final store = StoreProvider.of(context); final enableMilitaryTime = - store.state.company.settings.enableMilitaryTime; + store.state.company!.settings.enableMilitaryTime; return MediaQuery( data: MediaQuery.of(context) .copyWith(alwaysUse24HourFormat: enableMilitaryTime), - child: child, + child: child!, ); }, ); @@ -115,7 +115,7 @@ class _TimePickerState extends State { Widget build(BuildContext context) { return DecoratedFormField( focusNode: _focusNode, - validator: widget.validator, + validator: widget.validator as dynamic Function(String)?, controller: _textController, keyboardType: TextInputType.text, decoration: InputDecoration( @@ -176,8 +176,8 @@ class _TimePickerState extends State { dateTimeStr += ' PM'; } else { final store = StoreProvider.of(context); - if (!store.state.company.settings.enableMilitaryTime) { - final hour = parseDouble(parts[0]); + if (!store.state.company!.settings.enableMilitaryTime!) { + final hour = parseDouble(parts[0])!; if (hour > 12) { final parts = dateTimeStr .split(':') diff --git a/lib/ui/app/forms/user_picker.dart b/lib/ui/app/forms/user_picker.dart index 5be6c54ba..20d427881 100644 --- a/lib/ui/app/forms/user_picker.dart +++ b/lib/ui/app/forms/user_picker.dart @@ -13,15 +13,15 @@ import 'package:invoiceninja_flutter/ui/app/forms/dynamic_selector.dart'; class UserPicker extends StatelessWidget { const UserPicker({this.userId, this.onChanged}); - final String userId; - final Function(String) onChanged; + final String? userId; + final Function(String)? onChanged; @override Widget build(BuildContext context) { final state = StoreProvider.of(context).state; final userIds = memoizedUserList(state.userState.map); - if (!state.userCompany.isAdmin) { + if (!state.userCompany!.isAdmin) { return SizedBox(); } diff --git a/lib/ui/app/forms/vendor_picker.dart b/lib/ui/app/forms/vendor_picker.dart index 501b9bd0b..2a651ed88 100644 --- a/lib/ui/app/forms/vendor_picker.dart +++ b/lib/ui/app/forms/vendor_picker.dart @@ -19,10 +19,10 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class VendorPicker extends StatelessWidget { const VendorPicker({ - @required this.vendorId, - @required this.vendorState, - @required this.onSelected, - @required this.onAddPressed, + required this.vendorId, + required this.vendorState, + required this.onSelected, + required this.onAddPressed, this.autofocus, }); @@ -30,11 +30,11 @@ class VendorPicker extends StatelessWidget { final VendorState vendorState; final Function(SelectableEntity) onSelected; final Function(Completer completer) onAddPressed; - final bool autofocus; + final bool? autofocus; @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final store = StoreProvider.of(context); final state = store.state; @@ -47,7 +47,7 @@ class VendorPicker extends StatelessWidget { state.userState.map, state.staticState), entityMap: vendorState.map, validator: (String val) => val.trim().isEmpty - ? AppLocalization.of(context).pleaseSelectAVendor + ? AppLocalization.of(context)!.pleaseSelectAVendor : null, onSelected: onSelected, onAddPressed: onAddPressed, diff --git a/lib/ui/app/gateways/token_meta.dart b/lib/ui/app/gateways/token_meta.dart index bae21220c..646b528bf 100644 --- a/lib/ui/app/gateways/token_meta.dart +++ b/lib/ui/app/gateways/token_meta.dart @@ -7,24 +7,24 @@ import 'package:invoiceninja_flutter/data/models/gateway_token_model.dart'; class TokenMeta extends StatelessWidget { const TokenMeta({this.meta}); - final GatewayTokenMetaEntity meta; + final GatewayTokenMetaEntity? meta; @override Widget build(BuildContext context) { var cardDetails = '••••'; - if (meta.last4 != null) { - cardDetails += ' ${meta.last4}'; + if (meta!.last4 != null) { + cardDetails += ' ${meta!.last4}'; } - if (meta.expMonth != null && meta.expYear != null) { - cardDetails += ' ${meta.expMonth}/${meta.expYear}'; + if (meta!.expMonth != null && meta!.expYear != null) { + cardDetails += ' ${meta!.expMonth}/${meta!.expYear}'; } return Row( children: [ Image.asset( - 'assets/images/payment_types/${meta.brand}.png', + 'assets/images/payment_types/${meta!.brand}.png', height: 16, ), SizedBox(width: 8), diff --git a/lib/ui/app/help_text.dart b/lib/ui/app/help_text.dart index 2dbf42f10..2b4625866 100644 --- a/lib/ui/app/help_text.dart +++ b/lib/ui/app/help_text.dart @@ -4,7 +4,7 @@ import 'package:flutter/material.dart'; class HelpText extends StatelessWidget { const HelpText(this.message); - final String message; + final String? message; @override Widget build(BuildContext context) { @@ -13,7 +13,7 @@ class HelpText extends StatelessWidget { child: Opacity( opacity: 0.8, child: Text( - message, + message!, style: TextStyle( fontSize: 20, color: Colors.grey, diff --git a/lib/ui/app/history_drawer.dart b/lib/ui/app/history_drawer.dart index abc2cdcd2..d1c3274b6 100644 --- a/lib/ui/app/history_drawer.dart +++ b/lib/ui/app/history_drawer.dart @@ -29,15 +29,15 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class HistoryDrawer extends StatelessWidget { const HistoryDrawer({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final AppDrawerVM viewModel; @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final store = StoreProvider.of(context); final state = store.state; @@ -91,7 +91,7 @@ class HistoryDrawer extends StatelessWidget { } class HistoryListTile extends StatefulWidget { - const HistoryListTile({@required this.history}); + const HistoryListTile({required this.history}); final HistoryRecord history; @@ -112,30 +112,30 @@ class _HistoryListTileState extends State { Widget title = SizedBox(); Widget subtitle = SizedBox(); - String clientId; - BaseEntity entity; + String? clientId; + BaseEntity? entity; if ([ EntityType.dashboard, EntityType.reports, EntityType.settings, ].contains(history.entityType)) { - title = Text(localization.lookup(history.entityType.toString())); + title = Text(localization!.lookup(history.entityType.toString())!); if (history.entityType == EntityType.reports) { subtitle = Text( - localization.lookup(state.uiState.reportsUIState.report), + localization.lookup(state.uiState.reportsUIState.report)!, style: Theme.of(context).textTheme.bodySmall, ); } else if (history.entityType == EntityType.settings) { subtitle = Text( - localization.lookup(history.id ?? kSettingsCompanyDetails), + localization.lookup(history.id ?? kSettingsCompanyDetails)!, style: Theme.of(context).textTheme.bodySmall, ); } } else if (history.id == null) { - title = Text(localization.lookup(history.entityType.plural)); + title = Text(localization!.lookup(history.entityType.plural)!); } else { - entity = state.getEntityMap(history.entityType)[history.id] as BaseEntity; + entity = state.getEntityMap(history.entityType)![history.id] as BaseEntity?; if (entity == null) { return SizedBox(); @@ -145,14 +145,14 @@ class _HistoryListTileState extends State { clientId = (entity as BelongsToClient).clientId; } - title = Text(entity.listDisplayName.isEmpty + title = Text(entity.listDisplayName!.isEmpty ? formatNumber(entity.listDisplayAmount, context, formatNumberType: entity.listDisplayAmountType, - clientId: clientId) - : entity.listDisplayName); + clientId: clientId)! + : entity.listDisplayName!); subtitle = Text( - localization.lookup('${history.entityType}'), + localization!.lookup('${history.entityType}')!, style: Theme.of(context).textTheme.bodySmall, ); } @@ -262,7 +262,7 @@ class _HistoryListTileState extends State { ? (Completer() ..future.then((value) { Navigator.pop(context); - })) + } as FutureOr<_> Function(Null))) : null, ); }, diff --git a/lib/ui/app/history_drawer_vm.dart b/lib/ui/app/history_drawer_vm.dart index fc56a9cab..3f2bee204 100644 --- a/lib/ui/app/history_drawer_vm.dart +++ b/lib/ui/app/history_drawer_vm.dart @@ -11,7 +11,7 @@ import 'package:invoiceninja_flutter/redux/app/app_state.dart'; import 'package:invoiceninja_flutter/ui/app/history_drawer.dart'; class HistoryDrawerBuilder extends StatelessWidget { - const HistoryDrawerBuilder({Key key}) : super(key: key); + const HistoryDrawerBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -26,15 +26,15 @@ class HistoryDrawerBuilder extends StatelessWidget { class AppDrawerVM { AppDrawerVM({ - @required this.companies, - @required this.selectedCompany, - @required this.user, - @required this.isLoading, + required this.companies, + required this.selectedCompany, + required this.user, + required this.isLoading, }); - final List companies; - final CompanyEntity selectedCompany; - final UserEntity user; + final List companies; + final CompanyEntity? selectedCompany; + final UserEntity? user; final bool isLoading; static AppDrawerVM fromStore(Store store) { diff --git a/lib/ui/app/icon_message.dart b/lib/ui/app/icon_message.dart index c3dd28a9c..7103873d5 100644 --- a/lib/ui/app/icon_message.dart +++ b/lib/ui/app/icon_message.dart @@ -11,10 +11,10 @@ class IconMessage extends StatelessWidget { this.copyToClipboard = false, }); - final String text; - final IconData iconData; - final Color color; - final Widget trailing; + final String? text; + final IconData? iconData; + final Color? color; + final Widget? trailing; final bool copyToClipboard; @override @@ -24,7 +24,7 @@ class IconMessage extends StatelessWidget { child: Padding( padding: const EdgeInsets.symmetric(vertical: 16, horizontal: 20), child: Row( - children: [ + children: [ Icon( iconData ?? Icons.info_outline, size: 18.0, @@ -36,7 +36,7 @@ class IconMessage extends StatelessWidget { ? CopyToClipboard( value: text, child: Text( - text, + text!, maxLines: null, style: TextStyle( color: Colors.white, @@ -44,7 +44,7 @@ class IconMessage extends StatelessWidget { ), ) : Text( - text, + text!, maxLines: null, style: TextStyle( color: Colors.white, diff --git a/lib/ui/app/icon_text.dart b/lib/ui/app/icon_text.dart index 6858384f2..ee67d9c91 100644 --- a/lib/ui/app/icon_text.dart +++ b/lib/ui/app/icon_text.dart @@ -11,10 +11,10 @@ class IconText extends StatelessWidget { this.copyToClipboard = false, }); - final String text; - final IconData icon; - final TextStyle style; - final MainAxisAlignment alignment; + final String? text; + final IconData? icon; + final TextStyle? style; + final MainAxisAlignment? alignment; final bool copyToClipboard; @override diff --git a/lib/ui/app/invoice/invoice_email_view.dart b/lib/ui/app/invoice/invoice_email_view.dart index 073e5264b..89dac8c56 100644 --- a/lib/ui/app/invoice/invoice_email_view.dart +++ b/lib/ui/app/invoice/invoice_email_view.dart @@ -1,4 +1,5 @@ // Flutter imports: +import 'package:collection/collection.dart' show IterableNullableExtension; import 'package:flutter/material.dart'; import 'package:html2md/html2md.dart' as html2md; @@ -32,8 +33,8 @@ import 'package:url_launcher/url_launcher.dart'; class InvoiceEmailView extends StatefulWidget { const InvoiceEmailView({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final EmailEntityVM viewModel; @@ -44,7 +45,7 @@ class InvoiceEmailView extends StatefulWidget { class _InvoiceEmailViewState extends State with SingleTickerProviderStateMixin { - EmailTemplate selectedTemplate; + EmailTemplate? selectedTemplate; String _emailPreview = ''; String _bodyPreview = ''; String _rawBodyPreview = ''; @@ -56,7 +57,7 @@ class _InvoiceEmailViewState extends State final _ccEmailController = TextEditingController(); final _debouncer = Debouncer(milliseconds: kMillisecondsToDebounceSave); - TabController _controller; + TabController? _controller; List _controllers = []; static const kTabPreview = 0; @@ -68,7 +69,7 @@ class _InvoiceEmailViewState extends State void initState() { super.initState(); _controller = TabController(vsync: this, length: 4); - _controller.addListener(_loadTemplate); + _controller!.addListener(_loadTemplate); _controllers = [ _subjectController, _bodyController, @@ -76,7 +77,7 @@ class _InvoiceEmailViewState extends State ]; final viewModel = widget.viewModel; - final invoice = viewModel.invoice; + final invoice = viewModel.invoice!; switch (invoice.entityType) { case EntityType.invoice: @@ -112,8 +113,8 @@ class _InvoiceEmailViewState extends State @override void dispose() { - _controller.removeListener(_loadTemplate); - _controller.dispose(); + _controller!.removeListener(_loadTemplate); + _controller!.dispose(); _controllers.forEach((dynamic controller) { controller.dispose(); }); @@ -128,7 +129,7 @@ class _InvoiceEmailViewState extends State } void _loadTemplate() { - if (_isLoading || (isMobile(context) && _controller.index != kTabPreview)) { + if (_isLoading || (isMobile(context) && _controller!.index != kTabPreview)) { return; } @@ -152,14 +153,14 @@ class _InvoiceEmailViewState extends State setState(() { _isLoading = false; - _subjectPreview = subject.trim(); - _bodyPreview = body.trim(); - _emailPreview = email.trim(); + _subjectPreview = subject!.trim(); + _bodyPreview = body!.trim(); + _emailPreview = email!.trim(); if (_rawBodyPreview.isEmpty) { - _rawBodyPreview = rawBody.trim(); + _rawBodyPreview = rawBody!.trim(); - final company = widget.viewModel.state.company; + final company = widget.viewModel.state!.company!; if (company.markdownEmailEnabled && _rawBodyPreview.trim().startsWith('<')) { _rawBodyPreview = html2md.convert(_rawBodyPreview); @@ -167,27 +168,27 @@ class _InvoiceEmailViewState extends State } if (origSubject.isEmpty && origBody.isEmpty) { - _subjectController.text = rawSubject.trim(); - _bodyController.text = rawBody.trim(); + _subjectController.text = rawSubject!.trim(); + _bodyController.text = rawBody!.trim(); } }); }); } Widget _buildTemplateDropdown(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; - final invoice = widget.viewModel.invoice; + final invoice = widget.viewModel.invoice!; final client = viewModel.client; final vendor = viewModel.vendor; - final state = viewModel.state; + final state = viewModel.state!; final settings = getClientSettings(state, client); final contacts = invoice.invitations .map((invitation) => - (invoice.isPurchaseOrder ? vendor.contacts : client.contacts) + (invoice.isPurchaseOrder ? vendor!.contacts : client!.contacts) .firstWhere( (contact) => - contact.id == + contact!.id == (invoice.isPurchaseOrder ? invitation.vendorContactId : invitation.clientContactId), @@ -204,7 +205,7 @@ class _InvoiceEmailViewState extends State child: Text(localization.to + ': ' + contacts - .where((contact) => contact != null) + .whereNotNull() .map((contact) => invoice.isPurchaseOrder ? (contact as VendorContactEntity).fullNameOrEmail : (contact as ClientContactEntity) @@ -315,13 +316,13 @@ class _InvoiceEmailViewState extends State } Widget _buildEdit(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; - final state = viewModel.state; + final state = viewModel.state!; final enableCustomEmail = state.isSelfHosted || state.isProPlan || state.isTrial || - !state.account.accountSmsVerified; + !state.account!.accountSmsVerified; return Column( children: [ @@ -341,20 +342,20 @@ class _InvoiceEmailViewState extends State ), onPressed: () { if (supportsInAppPurchase() && - state.account.canMakeIAP) { + state.account!.canMakeIAP) { showDialog( context: context, builder: (context) => UpgradeDialog(), ); } else { launchUrl( - Uri.parse(state.userCompany.ninjaPortalUrl)); + Uri.parse(state.userCompany!.ninjaPortalUrl)); } }), ), ), ColoredBox( - color: state.company.markdownEmailEnabled && !isDarkMode(context) + color: state.company!.markdownEmailEnabled && !isDarkMode(context) ? Colors.white : Theme.of(context).colorScheme.background, child: Padding( @@ -368,7 +369,7 @@ class _InvoiceEmailViewState extends State ), ), ), - if (state.company.markdownEmailEnabled) + if (state.company!.markdownEmailEnabled) Expanded( child: ColoredBox( color: Colors.white, @@ -404,7 +405,7 @@ class _InvoiceEmailViewState extends State Widget _buildHistory(BuildContext context) { final localization = AppLocalization.of(context); - final invoice = widget.viewModel.invoice; + final invoice = widget.viewModel.invoice!; final client = widget.viewModel.client; final vendor = widget.viewModel.vendor; @@ -413,7 +414,7 @@ class _InvoiceEmailViewState extends State .getActivities(invoiceId: invoice.id, typeId: kActivityEmailInvoice); if (activities.isEmpty) { - return HelpText(localization.noHistory); + return HelpText(localization!.noHistory); } return ScrollableListViewBuilder( @@ -435,12 +436,12 @@ class _InvoiceEmailViewState extends State if (isDesktop(context)) { return EditScaffold( entity: invoice, - title: localization.sendEmail, - onCancelPressed: (context) => viewEntity(entity: invoice), + title: localization!.sendEmail, + onCancelPressed: (context) => viewEntity(entity: invoice!), saveLabel: localization.send, onSavePressed: (context) { - if (state.account.accountSmsVerified || state.isSelfHosted) { - viewModel.onSendPressed( + if (state!.account!.accountSmsVerified || state.isSelfHosted) { + viewModel.onSendPressed!( context, selectedTemplate, _subjectController.text.trim(), @@ -493,7 +494,7 @@ class _InvoiceEmailViewState extends State Expanded( child: TabBarView( children: [ - invoice.isPurchaseOrder + invoice!.isPurchaseOrder ? PurchaseOrderPdfScreen(showAppBar: false) : invoice.isCredit ? CreditPdfScreen(showAppBar: false) @@ -517,8 +518,8 @@ class _InvoiceEmailViewState extends State length: 3, child: EditScaffold( entity: invoice, - title: localization.sendEmail, - onCancelPressed: (context) => viewEntity(entity: invoice), + title: localization!.sendEmail, + onCancelPressed: (context) => viewEntity(entity: invoice!), appBarBottom: TabBar( controller: _controller, isScrollable: true, @@ -531,7 +532,7 @@ class _InvoiceEmailViewState extends State ), saveLabel: localization.send, onSavePressed: (context) { - viewModel.onSendPressed( + viewModel.onSendPressed!( context, selectedTemplate, _subjectController.text.trim(), @@ -550,7 +551,7 @@ class _InvoiceEmailViewState extends State ], ), _buildEdit(context), - invoice.isPurchaseOrder + invoice!.isPurchaseOrder ? PurchaseOrderPdfScreen(showAppBar: false) : invoice.isCredit ? CreditPdfScreen(showAppBar: false) diff --git a/lib/ui/app/invoice/invoice_item_view.dart b/lib/ui/app/invoice/invoice_item_view.dart index cfcaeccf8..b350bda7e 100644 --- a/lib/ui/app/invoice/invoice_item_view.dart +++ b/lib/ui/app/invoice/invoice_item_view.dart @@ -16,22 +16,22 @@ import 'package:invoiceninja_flutter/utils/strings.dart'; class InvoiceItemListTile extends StatelessWidget { const InvoiceItemListTile({ - @required this.invoice, - @required this.invoiceItem, - @required this.onTap, + required this.invoice, + required this.invoiceItem, + required this.onTap, }); final Function onTap; final InvoiceEntity invoice; - final InvoiceItemEntity invoiceItem; + final InvoiceItemEntity? invoiceItem; @override Widget build(BuildContext context) { - final String cost = formatNumber(invoiceItem.cost, context, + final String? cost = formatNumber(invoiceItem!.cost, context, clientId: invoice.isPurchaseOrder ? null : invoice.clientId, vendorId: invoice.isPurchaseOrder ? invoice.vendorId : null, roundToPrecision: false); - final String qty = formatNumber(invoiceItem.quantity, context, + final String? qty = formatNumber(invoiceItem!.quantity, context, clientId: invoice.isPurchaseOrder ? null : invoice.clientId, vendorId: invoice.isPurchaseOrder ? invoice.vendorId : null, formatNumberType: FormatNumberType.double); @@ -39,84 +39,84 @@ class InvoiceItemListTile extends StatelessWidget { final store = StoreProvider.of(context); final state = store.state; - final company = state.company; - final client = state.clientState.get(invoice.clientId); + final company = state.company!; + final client = state.clientState.get(invoice.clientId)!; final precision = state.staticState.currencyMap[client.currencyId]?.precision ?? 2; String subtitle = '$qty x $cost'; - if (invoiceItem.discount != 0) { - subtitle += ' • ${localization.discount} '; + if (invoiceItem!.discount != 0) { + subtitle += ' • ${localization!.discount} '; if (invoice.isAmountDiscount) { subtitle += formatNumber( - invoiceItem.discount, + invoiceItem!.discount, context, clientId: invoice.isPurchaseOrder ? null : invoice.clientId, vendorId: invoice.isPurchaseOrder ? invoice.vendorId : null, - ); + )!; } else { - subtitle += formatNumber(invoiceItem.discount, context, + subtitle += formatNumber(invoiceItem!.discount, context, clientId: invoice.isPurchaseOrder ? null : invoice.clientId, vendorId: invoice.isPurchaseOrder ? invoice.vendorId : null, - formatNumberType: FormatNumberType.percent); + formatNumberType: FormatNumberType.percent)!; } } if (company.calculateTaxes) { subtitle += ' • ' + - localization.lookup(kTaxCategories[invoiceItem.taxCategoryId]); + localization!.lookup(kTaxCategories[invoiceItem!.taxCategoryId])!; } - if (invoiceItem.taxRate1 != 0) { - final taxRate1 = formatNumber(invoiceItem.taxRate1, context, + if (invoiceItem!.taxRate1 != 0) { + final taxRate1 = formatNumber(invoiceItem!.taxRate1, context, formatNumberType: FormatNumberType.percent); - subtitle += ' • $taxRate1 ${invoiceItem.taxName1}'; + subtitle += ' • $taxRate1 ${invoiceItem!.taxName1}'; } - if (invoiceItem.taxRate2 != 0) { - final taxRate2 = formatNumber(invoiceItem.taxRate2, context, + if (invoiceItem!.taxRate2 != 0) { + final taxRate2 = formatNumber(invoiceItem!.taxRate2, context, formatNumberType: FormatNumberType.percent); - subtitle += ' • $taxRate2 ${invoiceItem.taxName2}'; + subtitle += ' • $taxRate2 ${invoiceItem!.taxName2}'; } - if (invoiceItem.taxRate3 != 0) { - final taxRate3 = formatNumber(invoiceItem.taxRate3, context, + if (invoiceItem!.taxRate3 != 0) { + final taxRate3 = formatNumber(invoiceItem!.taxRate3, context, formatNumberType: FormatNumberType.percent); - subtitle += ' • $taxRate3 ${invoiceItem.taxName3}'; + subtitle += ' • $taxRate3 ${invoiceItem!.taxName3}'; } - final List parts = []; + final List parts = []; if (company.hasCustomField(CustomFieldType.product1) && - invoiceItem.customValue1.isNotEmpty) { + invoiceItem!.customValue1.isNotEmpty) { parts.add(formatCustomValue( context: context, field: CustomFieldType.product1, - value: invoiceItem.customValue1)); + value: invoiceItem!.customValue1)); } if (company.hasCustomField(CustomFieldType.product2) && - invoiceItem.customValue2.isNotEmpty) { + invoiceItem!.customValue2.isNotEmpty) { parts.add(formatCustomValue( context: context, field: CustomFieldType.product2, - value: invoiceItem.customValue2)); + value: invoiceItem!.customValue2)); } if (company.hasCustomField(CustomFieldType.product3) && - invoiceItem.customValue3.isNotEmpty) { + invoiceItem!.customValue3.isNotEmpty) { parts.add(formatCustomValue( context: context, field: CustomFieldType.product3, - value: invoiceItem.customValue3)); + value: invoiceItem!.customValue3)); } if (company.hasCustomField(CustomFieldType.product4) && - invoiceItem.customValue4.isNotEmpty) { + invoiceItem!.customValue4.isNotEmpty) { parts.add(formatCustomValue( context: context, field: CustomFieldType.product4, - value: invoiceItem.customValue4)); + value: invoiceItem!.customValue4)); } - if (invoiceItem.notes.isNotEmpty) { - parts.add(removeAllHtmlTags(invoiceItem.notes).trim()); + if (invoiceItem!.notes.isNotEmpty) { + parts.add(removeAllHtmlTags(invoiceItem!.notes).trim()); } if (parts.isNotEmpty) { subtitle += '\n' + parts.join(' • '); @@ -129,16 +129,16 @@ class InvoiceItemListTile extends StatelessWidget { ListTile( contentPadding: const EdgeInsets.symmetric(horizontal: 20, vertical: 4), - onTap: onTap, + onTap: onTap as void Function()?, title: Row( children: [ - Expanded(child: Text(invoiceItem.productKey)), + Expanded(child: Text(invoiceItem!.productKey)), Text(formatNumber( - invoiceItem.total(invoice, precision), + invoiceItem!.total(invoice, precision), context, clientId: invoice.isPurchaseOrder ? null : invoice.clientId, vendorId: invoice.isPurchaseOrder ? invoice.vendorId : null, - )), + )!), ], ), subtitle: Row( diff --git a/lib/ui/app/invoice/tax_rate_dropdown.dart b/lib/ui/app/invoice/tax_rate_dropdown.dart index b9c28360e..0249cb260 100644 --- a/lib/ui/app/invoice/tax_rate_dropdown.dart +++ b/lib/ui/app/invoice/tax_rate_dropdown.dart @@ -11,17 +11,17 @@ import 'package:invoiceninja_flutter/utils/formatting.dart'; class TaxRateDropdown extends StatefulWidget { const TaxRateDropdown({ - Key key, - @required this.labelText, - @required this.onSelected, + Key? key, + required this.labelText, + required this.onSelected, this.initialTaxName = '', this.initialTaxRate = 0.0, }) : super(key: key); - final String labelText; - final Function(TaxRateEntity) onSelected; - final String initialTaxName; - final double initialTaxRate; + final String? labelText; + final Function(TaxRateEntity?) onSelected; + final String? initialTaxName; + final double? initialTaxRate; @override _TaxRateDropdownState createState() => _TaxRateDropdownState(); @@ -30,7 +30,7 @@ class TaxRateDropdown extends StatefulWidget { class _TaxRateDropdownState extends State { final _textController = TextEditingController(); - TaxRateEntity _selectedTaxRate; + TaxRateEntity? _selectedTaxRate; @override void didChangeDependencies() { @@ -39,13 +39,13 @@ class _TaxRateDropdownState extends State { _selectedTaxRate = taxRates.firstWhere( (taxRate) => - taxRate.name == widget.initialTaxName && + taxRate!.name == widget.initialTaxName && taxRate.rate == widget.initialTaxRate, orElse: () => TaxRateEntity( name: widget.initialTaxName, rate: widget.initialTaxRate)); - if (_selectedTaxRate.rate != 0) { - _textController.text = _formatTaxRate(_selectedTaxRate); + if (_selectedTaxRate!.rate != 0) { + _textController.text = _formatTaxRate(_selectedTaxRate!); } super.didChangeDependencies(); @@ -66,7 +66,7 @@ class _TaxRateDropdownState extends State { final state = StoreProvider.of(context).state; final taxState = state.taxRateState; final taxRates = taxState.list - .where((id) => taxState.map[id].isActive) + .where((id) => taxState.map[id]!.isActive) .map((id) => taxState.map[id]) .toList(); @@ -76,10 +76,10 @@ class _TaxRateDropdownState extends State { final taxRate = taxRates.firstWhere( (taxRate) => - taxRate.name == widget.initialTaxName && + taxRate!.name == widget.initialTaxName && taxRate.rate == widget.initialTaxRate, orElse: () => TaxRateEntity( - name: widget.initialTaxName, rate: widget.initialTaxRate)); + name: widget.initialTaxName, rate: widget.initialTaxRate))!; return InputDecorator( decoration: InputDecoration( @@ -106,7 +106,7 @@ class _TaxRateDropdownState extends State { ...taxRates .map((taxRate) => DropdownMenuItem( child: Text( - taxRate.isEmpty ? '' : _formatTaxRate(taxRate)), + taxRate!.isEmpty ? '' : _formatTaxRate(taxRate)), value: taxRate, )) .toList() diff --git a/lib/ui/app/invoice/tax_rate_field.dart b/lib/ui/app/invoice/tax_rate_field.dart index 60eb23a97..b7a26ca71 100644 --- a/lib/ui/app/invoice/tax_rate_field.dart +++ b/lib/ui/app/invoice/tax_rate_field.dart @@ -9,21 +9,21 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class TaxRateField extends StatelessWidget { const TaxRateField({ - Key key, - @required this.onNameChanged, - @required this.onAmountChanged, - @required this.initialTaxName, - @required this.initialTaxAmount, + Key? key, + required this.onNameChanged, + required this.onAmountChanged, + required this.initialTaxName, + required this.initialTaxAmount, }) : super(key: key); final Function(String) onNameChanged; - final Function(double) onAmountChanged; + final Function(double?) onAmountChanged; final String initialTaxName; final double initialTaxAmount; @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; return Row( children: [ diff --git a/lib/ui/app/link_text.dart b/lib/ui/app/link_text.dart index c39c72de3..6ae58bedb 100644 --- a/lib/ui/app/link_text.dart +++ b/lib/ui/app/link_text.dart @@ -9,13 +9,13 @@ import 'package:url_launcher/url_launcher.dart'; class LinkTextRelatedEntity extends StatefulWidget { const LinkTextRelatedEntity({ - Key key, - @required this.entity, - @required this.relation, + Key? key, + required this.entity, + required this.relation, }) : super(key: key); - final BaseEntity entity; - final BaseEntity relation; + final BaseEntity? entity; + final BaseEntity? relation; @override State createState() => _LinkTextRelatedEntityState(); @@ -39,26 +39,26 @@ class _LinkTextRelatedEntityState extends State { }, child: GestureDetector( child: Text( - widget.entity.listDisplayName, + widget.entity!.listDisplayName!, style: TextStyle( decoration: _isHovered ? TextDecoration.underline : TextDecoration.none, ), ), onTap: () { - final entity = widget.entity; + final entity = widget.entity!; if (entity.entityType == EntityType.company || entity.entityType == null) { viewEntitiesByType(entityType: EntityType.settings); - } else if (entity.entityType.hasFullWidthViewer) { + } else if (entity.entityType!.hasFullWidthViewer) { viewEntity(entity: entity); } else { - viewEntity(entity: widget.relation); + viewEntity(entity: widget.relation!); viewEntity(entity: entity, addToStack: true); } }, onLongPress: () { - editEntity(entity: widget.entity); + editEntity(entity: widget.entity!); }, ), ); @@ -66,12 +66,12 @@ class _LinkTextRelatedEntityState extends State { } class LinkTextSpan extends TextSpan { - LinkTextSpan({TextStyle style, String url, String text}) + LinkTextSpan({TextStyle? style, String? url, String? text}) : super( style: style, text: text ?? url, recognizer: TapGestureRecognizer() ..onTap = () { - launchUrl(Uri.parse(url)); + launchUrl(Uri.parse(url!)); }); } diff --git a/lib/ui/app/list_filter.dart b/lib/ui/app/list_filter.dart index 8eeec34f4..0f0679fc5 100644 --- a/lib/ui/app/list_filter.dart +++ b/lib/ui/app/list_filter.dart @@ -20,31 +20,31 @@ import 'package:invoiceninja_flutter/utils/strings.dart'; class ListFilter extends StatefulWidget { const ListFilter({ - Key key, - @required this.entityType, - @required this.filter, - @required this.onFilterChanged, - @required this.entityIds, + Key? key, + required this.entityType, + required this.filter, + required this.onFilterChanged, + required this.entityIds, this.statuses, this.onSelectedStatus, this.onSelectedState, }) : super(key: key); final EntityType entityType; - final String filter; - final Function(String) onFilterChanged; - final List entityIds; - final List statuses; - final Function(EntityStatus, bool) onSelectedStatus; - final Function(EntityState, bool) onSelectedState; + final String? filter; + final Function(String?) onFilterChanged; + final List entityIds; + final List? statuses; + final Function(EntityStatus, bool)? onSelectedStatus; + final Function(EntityState, bool)? onSelectedState; @override _ListFilterState createState() => new _ListFilterState(); } class _ListFilterState extends State { - TextEditingController _filterController; - FocusNode _focusNode; + TextEditingController? _filterController; + FocusNode? _focusNode; final _debouncer = Debouncer(); @override @@ -57,13 +57,13 @@ class _ListFilterState extends State { void onFocusChanged() { // Check is needed to prevent the TextField from // refocusing when the users tries to tab out - if (_focusNode.hasFocus) { + if (_focusNode!.hasFocus) { setState(() {}); } } - String get _getPlaceholder { - final localization = AppLocalization.of(context); + String? get _getPlaceholder { + final localization = AppLocalization.of(context)!; final count = widget.entityIds.length; final isDashboardOrSettings = @@ -79,27 +79,27 @@ class _ListFilterState extends State { return isSingle ? placeholder - : placeholder.replaceFirst( + : placeholder!.replaceFirst( ':count', formatNumber(count.toDouble(), context, - formatNumberType: FormatNumberType.int)); + formatNumberType: FormatNumberType.int)!); } @override void didChangeDependencies() { super.didChangeDependencies(); - _filterController.text = widget.filter; + _filterController!.text = widget.filter!; if (widget.filter != null) { - _focusNode.requestFocus(); + _focusNode!.requestFocus(); } } @override void dispose() { - _filterController.dispose(); - _focusNode.removeListener(onFocusChanged); - _focusNode.dispose(); + _filterController!.dispose(); + _focusNode!.removeListener(onFocusChanged); + _focusNode!.dispose(); super.dispose(); } @@ -159,10 +159,10 @@ class _ListFilterState extends State { .where((dynamic e) => !selected.contains(e)); for (var state in added) { - widget.onSelectedState(state, true); + widget.onSelectedState!(state, true); } for (var state in removed) { - widget.onSelectedState(state, false); + widget.onSelectedState!(state, false); } }, options: EntityState.values.toList(), @@ -180,11 +180,11 @@ class _ListFilterState extends State { .getListState(widget.entityType) .stateFilters .toList(), - whenEmpty: localization.all, + whenEmpty: localization!.all, menuItembuilder: (dynamic value) { final state = value as EntityState; return Text( - localization.lookup(state.name), + localization.lookup(state.name)!, overflow: TextOverflow.clip, maxLines: 1, ); @@ -196,7 +196,7 @@ class _ListFilterState extends State { child: Text( selected.isNotEmpty ? selected - .map((dynamic value) => localization + .map((dynamic value) => localization .lookup((value as EntityState).name)) .join(', ') : localization.all, @@ -223,16 +223,16 @@ class _ListFilterState extends State { .contains((e as EntityStatus).id)); final removed = statusFilters.where((dynamic e) => !selected - .map((dynamic e) => e.id) + .map((dynamic e) => e.id) .toList() .contains((e as EntityStatus).id)); for (var status in added) { - widget.onSelectedStatus(status, true); + widget.onSelectedStatus!(status, true); } for (var status in removed) { - widget.onSelectedStatus(status, false); + widget.onSelectedStatus!(status, false); } }, options: widget.statuses, @@ -240,10 +240,10 @@ class _ListFilterState extends State { .getListState(widget.entityType) .statusFilters .toList(), - whenEmpty: localization.all, + whenEmpty: localization!.all, menuItembuilder: (dynamic value) { final state = value as EntityStatus; - return Text(localization.lookup(state.name)); + return Text(localization.lookup(state.name)!); }, decoration: InputDecoration( border: OutlineInputBorder(), diff --git a/lib/ui/app/list_scaffold.dart b/lib/ui/app/list_scaffold.dart index 4b9a4d779..e008fb07f 100644 --- a/lib/ui/app/list_scaffold.dart +++ b/lib/ui/app/list_scaffold.dart @@ -20,9 +20,9 @@ import 'menu_drawer_vm.dart'; class ListScaffold extends StatelessWidget { const ListScaffold({ - @required this.appBarTitle, - @required this.body, - @required this.entityType, + required this.appBarTitle, + required this.body, + required this.entityType, this.onCheckboxPressed, this.appBarActions, this.appBarLeadingActions = const [], @@ -35,15 +35,15 @@ class ListScaffold extends StatelessWidget { final EntityType entityType; final Widget body; - final AppBottomBar bottomNavigationBar; - final FloatingActionButton floatingActionButton; + final AppBottomBar? bottomNavigationBar; + final FloatingActionButton? floatingActionButton; final Widget appBarTitle; - final List appBarActions; + final List? appBarActions; final List appBarLeadingActions; - final Function onHamburgerLongPress; - final String onCancelSettingsSection; + final Function? onHamburgerLongPress; + final String? onCancelSettingsSection; final int onCancelSettingsIndex; - final Function onCheckboxPressed; + final Function? onCheckboxPressed; @override Widget build(BuildContext context) { @@ -62,9 +62,9 @@ class ListScaffold extends StatelessWidget { } else if (isMobile(context) || state.prefState.isMenuFloated) { leading = Builder( builder: (context) => InkWell( - onLongPress: onHamburgerLongPress, + onLongPress: onHamburgerLongPress as void Function()?, child: IconButton( - tooltip: localization.menuSidebar, + tooltip: localization!.menuSidebar, icon: Icon(Icons.menu), onPressed: () { Scaffold.of(context).openDrawer(); @@ -74,18 +74,18 @@ class ListScaffold extends StatelessWidget { ); } else if (entityType != null && !entityType.hideCreate && - state.userCompany.canCreate(entityType)) { + state.userCompany!.canCreate(entityType)) { leading = Padding( padding: const EdgeInsets.only(left: 16, right: 14), child: OutlinedButton( style: ButtonStyle( backgroundColor: MaterialStateProperty.all( - state.prefState.colorThemeModel.colorSuccess)), + state.prefState.colorThemeModel!.colorSuccess)), onPressed: () { createEntityByType(entityType: entityType, context: context); }, child: IconText( - text: localization.create, + text: localization!.create, icon: Icons.add, style: TextStyle(color: Colors.white), ), @@ -113,11 +113,11 @@ class ListScaffold extends StatelessWidget { if (isDesktop(context) && onCheckboxPressed != null) IconButton( icon: Icon(Icons.check_box), - tooltip: prefState.enableTooltips ? localization.multiselect : null, + tooltip: prefState.enableTooltips ? localization!.multiselect : null, onPressed: state.prefState.showKanban && state.uiState.mainRoute == '${EntityType.task}' ? null - : () => onCheckboxPressed(), + : () => onCheckboxPressed!(), ), if (appBarLeadingActions.isNotEmpty) SizedBox(width: 4), ...appBarLeadingActions, @@ -156,7 +156,7 @@ class ListScaffold extends StatelessWidget { )); }, child: Text( - localization.back, + localization!.back, style: TextStyle(color: state.headerTextColor), )), ], diff --git a/lib/ui/app/lists/activity_list_tile.dart b/lib/ui/app/lists/activity_list_tile.dart index 960de6246..a2ae7dfb7 100644 --- a/lib/ui/app/lists/activity_list_tile.dart +++ b/lib/ui/app/lists/activity_list_tile.dart @@ -16,9 +16,9 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class ActivityListTile extends StatelessWidget { const ActivityListTile({ - Key key, + Key? key, this.enableNavigation = true, - @required this.activity, + required this.activity, }) : super(key: key); final ActivityEntity activity; @@ -26,7 +26,7 @@ class ActivityListTile extends StatelessWidget { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final store = StoreProvider.of(context); final state = store.state; @@ -48,9 +48,9 @@ class ActivityListTile extends StatelessWidget { String key = 'activity_${activity.activityTypeId}'; if (activity.activityTypeId == kActivityCreatePayment) { - key += payment.isOnline ? '_online' : '_manual'; + key += payment!.isOnline ? '_online' : '_manual'; } - String title = localization.lookup(key); + String? title = localization.lookup(key); title = activity.getDescription( title, localization.system, @@ -140,12 +140,12 @@ class ActivityListTile extends StatelessWidget { children: [ Flexible( child: Text(((activity.notes ?? '').isNotEmpty - ? localization.lookup(activity.notes).trim() + '\n' + ? localization.lookup(activity.notes)!.trim() + '\n' : '') + formatDate( convertTimestampToDateString(activity.createdAt), context, showTime: true, showSeconds: false) + - ((activity.ip ?? '').isNotEmpty ? ' • ' + activity.ip : '')), + ((activity.ip ?? '').isNotEmpty ? ' • ' + activity.ip! : '')), ), ], ), diff --git a/lib/ui/app/lists/app_list_tile.dart b/lib/ui/app/lists/app_list_tile.dart index 869208887..1faa47838 100644 --- a/lib/ui/app/lists/app_list_tile.dart +++ b/lib/ui/app/lists/app_list_tile.dart @@ -20,14 +20,14 @@ class AppListTile extends StatelessWidget { this.trailing, }); - final IconData icon; - final String title; - final String subtitle; + final IconData? icon; + final String? title; + final String? subtitle; final bool dense; - final Function onLongPress; - final String copyValue; - final Widget buttonRow; - final Widget trailing; + final Function? onLongPress; + final String? copyValue; + final Widget? buttonRow; + final Widget? trailing; void _onTap(BuildContext context) { if ((copyValue ?? title ?? '').isEmpty) { @@ -35,9 +35,9 @@ class AppListTile extends StatelessWidget { } Clipboard.setData(ClipboardData(text: copyValue ?? title)); - showToast(AppLocalization.of(context) + showToast(AppLocalization.of(context)! .copiedToClipboard - .replaceFirst(':value', copyValue ?? title)); + .replaceFirst(':value', copyValue ?? title!)); } @override @@ -47,14 +47,14 @@ class AppListTile extends StatelessWidget { child: ListTile( contentPadding: EdgeInsets.symmetric(horizontal: 25, vertical: 16), leading: Icon(icon), - title: Text(title), + title: Text(title!), trailing: trailing, subtitle: buttonRow != null || subtitle != null ? Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ - if (subtitle != null) Text(subtitle), + if (subtitle != null) Text(subtitle!), if (buttonRow != null) Padding( padding: const EdgeInsets.only(top: 8), @@ -65,7 +65,7 @@ class AppListTile extends StatelessWidget { : null, dense: dense, onTap: () => _onTap(context), - onLongPress: onLongPress, + onLongPress: onLongPress as void Function()?, ), ); } diff --git a/lib/ui/app/lists/list_filter.dart b/lib/ui/app/lists/list_filter.dart index 2678b70c3..69bf5f722 100644 --- a/lib/ui/app/lists/list_filter.dart +++ b/lib/ui/app/lists/list_filter.dart @@ -13,15 +13,15 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class ListFilterMessage extends StatelessWidget { const ListFilterMessage({ - @required this.filterEntityId, - @required this.filterEntityType, - @required this.onPressed, - @required this.onClearPressed, + required this.filterEntityId, + required this.filterEntityType, + required this.onPressed, + required this.onClearPressed, this.isSettings = false, }); - final String filterEntityId; - final EntityType filterEntityType; + final String? filterEntityId; + final EntityType? filterEntityType; final Function(BuildContext) onPressed; final Function() onClearPressed; final bool isSettings; @@ -29,14 +29,14 @@ class ListFilterMessage extends StatelessWidget { @override Widget build(BuildContext context) { final state = StoreProvider.of(context).state; - final filteredEntity = state.getEntityMap(filterEntityType)[filterEntityId]; + final filteredEntity = state.getEntityMap(filterEntityType)![filterEntityId]; return Material( color: Colors.orange, elevation: 6.0, child: FilterListTile( entityType: filterEntityType, - entity: filteredEntity, + entity: filteredEntity as BaseEntity?, onPressed: onPressed, onClearPressed: onClearPressed, isSettings: isSettings, @@ -47,15 +47,15 @@ class ListFilterMessage extends StatelessWidget { class FilterListTile extends StatelessWidget { const FilterListTile({ - @required this.entityType, - @required this.entity, - @required this.onPressed, - @required this.onClearPressed, + required this.entityType, + required this.entity, + required this.onPressed, + required this.onClearPressed, this.isSettings = false, }); - final EntityType entityType; - final BaseEntity entity; + final EntityType? entityType; + final BaseEntity? entity; final Function(BuildContext) onPressed; final Function() onClearPressed; final bool isSettings; @@ -64,19 +64,19 @@ class FilterListTile extends StatelessWidget { Widget build(BuildContext context) { final localization = AppLocalization.of(context); - String title; - String subtitle; + late String title; + String? subtitle; if (isSettings) { subtitle = entity?.listDisplayName ?? ''; if (entityType == EntityType.client) { - title = localization.clientSettings; + title = localization!.clientSettings; } else if (entityType == EntityType.group) { - title = localization.groupSettings; + title = localization!.groupSettings; } } else { - title = localization.filteredBy - .replaceFirst(':value', entity.listDisplayName); + title = localization!.filteredBy + .replaceFirst(':value', entity!.listDisplayName!); subtitle = localization.lookup(entityType.toString()); } @@ -98,7 +98,7 @@ class FilterListTile extends StatelessWidget { ? Icon(getEntityIcon(entityType)) : null, title: Text(title), - subtitle: Text(subtitle), + subtitle: Text(subtitle!), onTap: () => onPressed(context), trailing: IconButton( icon: Icon(Icons.clear), diff --git a/lib/ui/app/lists/selected_indicator.dart b/lib/ui/app/lists/selected_indicator.dart index 854ae9731..c1c2796b4 100644 --- a/lib/ui/app/lists/selected_indicator.dart +++ b/lib/ui/app/lists/selected_indicator.dart @@ -13,8 +13,8 @@ import 'package:invoiceninja_flutter/utils/colors.dart'; class SelectedIndicator extends StatelessWidget { const SelectedIndicator({this.child, this.isSelected, this.isMenu = false}); - final Widget child; - final bool isSelected; + final Widget? child; + final bool? isSelected; final bool isMenu; @override @@ -24,7 +24,7 @@ class SelectedIndicator extends StatelessWidget { final enableDarkMode = state.prefState.enableDarkMode; return Material( - color: isSelected + color: isSelected! ? convertHexStringToColor(enableDarkMode ? (isMenu ? kDefaultDarkSelectedColorMenu diff --git a/lib/ui/app/live_text.dart b/lib/ui/app/live_text.dart index f7f0536e5..040fc4e4e 100644 --- a/lib/ui/app/live_text.dart +++ b/lib/ui/app/live_text.dart @@ -12,9 +12,9 @@ class LiveText extends StatefulWidget { this.maxLines = 1, }); - final Duration duration; + final Duration? duration; final Function value; - final TextStyle style; + final TextStyle? style; final int maxLines; @override @@ -22,7 +22,7 @@ class LiveText extends StatefulWidget { } class _LiveTextState extends State { - Timer _timer; + Timer? _timer; @override void initState() { @@ -35,7 +35,7 @@ class _LiveTextState extends State { @override void dispose() { - _timer.cancel(); + _timer!.cancel(); _timer = null; super.dispose(); } diff --git a/lib/ui/app/loading_indicator.dart b/lib/ui/app/loading_indicator.dart index 1f00ac3bb..a957c08e4 100644 --- a/lib/ui/app/loading_indicator.dart +++ b/lib/ui/app/loading_indicator.dart @@ -2,10 +2,10 @@ import 'package:flutter/material.dart'; class LoadingIndicator extends StatelessWidget { - const LoadingIndicator({Key key, this.useCard = false, this.height}) + const LoadingIndicator({Key? key, this.useCard = false, this.height}) : super(key: key); - final double height; + final double? height; final bool useCard; @override diff --git a/lib/ui/app/main_screen.dart b/lib/ui/app/main_screen.dart index 304908b82..ae2ae0c69 100644 --- a/lib/ui/app/main_screen.dart +++ b/lib/ui/app/main_screen.dart @@ -264,7 +264,7 @@ class MainScreen extends StatelessWidget { final historyList = state.historyList; final isEditing = state.uiState.isEditing; final index = isEditing ? 0 : 1; - HistoryRecord history; + HistoryRecord? history; if (state.uiState.isPreviewing) { store.dispatch(PopPreviewStack()); @@ -284,7 +284,7 @@ class MainScreen extends StatelessWidget { history = item; } else { final entity = - state.getEntityMap(item.entityType)[item.id] as BaseEntity; + state.getEntityMap(item.entityType)![item.id] as BaseEntity?; if (entity == null || !entity.isActive) { continue; } @@ -367,12 +367,12 @@ class MainScreen extends StatelessWidget { class EntityScreens extends StatelessWidget { const EntityScreens({ - @required this.entityType, + required this.entityType, this.editingFilterEntity, }); final EntityType entityType; - final bool editingFilterEntity; + final bool? editingFilterEntity; @override Widget build(BuildContext context) { @@ -392,7 +392,7 @@ class EntityScreens extends StatelessWidget { isPreviewShown = true; } else if (mainRoute == '/task' && prefState.showKanban && - state.taskUIState.selectedId.isEmpty) { + state.taskUIState.selectedId!.isEmpty) { isPreviewShown = false; } @@ -405,7 +405,7 @@ class EntityScreens extends StatelessWidget { listFlex += 1; } - Widget child; + Widget? child; // TODO rmeove this once full width project editor is if (state.uiState.isEditing && @@ -474,7 +474,7 @@ class EntityScreens extends StatelessWidget { } } else if (subRoute == 'edit') { final editEntityType = - editingFilterEntity ? uiState.filterEntityType : entityType; + editingFilterEntity! ? uiState.filterEntityType : entityType; switch (editEntityType) { case EntityType.client: child = ClientEditScreen(); @@ -529,12 +529,12 @@ class EntityScreens extends StatelessWidget { final previewStack = uiState.previewStack; final previewEntityType = previewStack.isEmpty ? entityType : previewStack.last; - final entityUIState = state.getUIState(previewEntityType); + final entityUIState = state.getUIState(previewEntityType)!; if ((entityUIState.selectedId ?? '').isEmpty || !state - .getEntityMap(previewEntityType) - .containsKey(entityUIState.selectedId)) { + .getEntityMap(previewEntityType)! + .containsKey(entityUIState.selectedId!)) { child = BlankScreen(); } else { switch (previewEntityType) { @@ -613,7 +613,7 @@ class EntityScreens extends StatelessWidget { } } - Widget leftFilterChild; + Widget? leftFilterChild; Widget topFilterChild; if (uiState.filterEntityType != null) { @@ -693,7 +693,7 @@ class EntityScreens extends StatelessWidget { show: uiState.filterEntityType != null, ); - Widget listWidget; + Widget? listWidget; if (!isFullScreen) { switch (entityType) { case EntityType.client: diff --git a/lib/ui/app/menu_drawer.dart b/lib/ui/app/menu_drawer.dart index 43a153745..ac90d7f28 100644 --- a/lib/ui/app/menu_drawer.dart +++ b/lib/ui/app/menu_drawer.dart @@ -52,8 +52,8 @@ import 'package:invoiceninja_flutter/utils/strings.dart'; class MenuDrawer extends StatefulWidget { const MenuDrawer({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final MenuDrawerVM viewModel; @@ -83,16 +83,16 @@ class _MenuDrawerState extends State { Widget _companyLogo(CompanyEntity company) { if (company.settings.companyLogo != null && - company.settings.companyLogo.isNotEmpty) { + company.settings.companyLogo!.isNotEmpty) { if (state.isHosted && kIsWeb) { // Fix for CORS error using 'object' subdomain return CachedImage( width: MenuDrawer.LOGO_WIDTH, - url: state.credentials.url + '/companies/' + company.id + '/logo', + url: state.credentials.url! + '/companies/' + company.id + '/logo', apiToken: state.userCompanyStates .firstWhere((userCompanyState) => - userCompanyState.company.id == company.id) - .token + userCompanyState.company!.id == company.id) + .token! .token, ); } else { @@ -113,7 +113,7 @@ class _MenuDrawerState extends State { }) { final userCompany = state.userCompanyStates .firstWhere( - (userCompanyState) => userCompanyState.company.id == company.id) + (userCompanyState) => userCompanyState.company!.id == company.id) .userCompany; return MouseRegion( onEnter: (_) => setState(() => _isHovered = true), @@ -171,21 +171,21 @@ class _MenuDrawerState extends State { Expanded( child: Text( company.displayName.isEmpty - ? localization.newCompany + ? localization!.newCompany : company.displayName, style: Theme.of(context).textTheme.titleMedium, overflow: TextOverflow.ellipsis, ), ), if (showAccentColor && - userCompany.settings.accentColor != null && + userCompany!.settings!.accentColor != null && state.companies.length > 1) Container( padding: const EdgeInsets.only(right: 2), decoration: BoxDecoration( shape: BoxShape.circle, color: convertHexStringToColor( - userCompany.settings.accentColor)), + userCompany.settings!.accentColor)), width: 10, height: 10, //color: Colors.red, @@ -196,17 +196,17 @@ class _MenuDrawerState extends State { } final _collapsedCompanySelector = PopupMenuButton( - tooltip: localization.selectCompany, + tooltip: localization!.selectCompany, child: SizedBox( height: kTopBottomBarHeight, width: MenuDrawer.LOGO_WIDTH, - child: _companyLogo(widget.viewModel.selectedCompany), + child: _companyLogo(widget.viewModel.selectedCompany!), ), color: Theme.of(context).cardColor, itemBuilder: (BuildContext context) => [ ...widget.viewModel.state.companies .map((company) => PopupMenuItem( - child: _companyListItem(company), + child: _companyListItem(company!), value: company.id, )) .toList(), @@ -259,7 +259,7 @@ class _MenuDrawerState extends State { widget.viewModel.onAddCompany(context); } else { final company = - state.companies.firstWhere((company) => company.id == companyId); + state.companies.firstWhere((company) => company!.id == companyId); final index = state.companies.indexOf(company); widget.viewModel.onCompanyChanged(context, index, company); } @@ -275,13 +275,13 @@ class _MenuDrawerState extends State { value: widget.viewModel.selectedCompanyIndex, selectedItemBuilder: (context) => state.companies .map((company) => - _companyListItem(company, showAccentColor: false)) + _companyListItem(company!, showAccentColor: false)) .toList(), items: [ ...state.companies - .map((CompanyEntity company) => DropdownMenuItem( + .map((CompanyEntity? company) => DropdownMenuItem( value: (state.companies.indexOf(company)).toString(), - child: _companyListItem(company))) + child: _companyListItem(company!))) .toList(), if (state.canAddCompany) DropdownMenuItem( @@ -353,7 +353,7 @@ class _MenuDrawerState extends State { mainAxisSize: MainAxisSize.max, children: [ // Hide options while refreshing data - state.credentials.token.isEmpty + state.credentials.token!.isEmpty ? Expanded(child: SizedBox()) : Container( padding: @@ -364,7 +364,7 @@ class _MenuDrawerState extends State { child: state.isMenuCollapsed ? _collapsedCompanySelector : _expandedCompanySelector), - state.credentials.token.isEmpty + state.credentials.token!.isEmpty ? SizedBox() : Theme( data: state.prefState.enableDarkMode || @@ -381,7 +381,7 @@ class _MenuDrawerState extends State { : Theme.of(context).cardColor, child: ScrollableListView( children: [ - if (state.account.debugEnabled && kReleaseMode) + if (state.account!.debugEnabled && kReleaseMode) if (state.isMenuCollapsed) Tooltip( message: localization.debugModeIsEnabled, @@ -417,7 +417,7 @@ class _MenuDrawerState extends State { launchUrl(Uri.parse(kDebugModeUrl)), ), ), - if (!state.account.accountSmsVerified && + if (!state.account!.accountSmsVerified && state.isHosted) if (state.isMenuCollapsed) Tooltip( @@ -444,7 +444,7 @@ class _MenuDrawerState extends State { child: ListTile( tileColor: Colors.orange.shade800, subtitle: Text( - localization.verifyPhoneNumberHelp, + localization.verifyPhoneNumberHelp!, style: TextStyle(color: Colors.white), ), onTap: () { @@ -456,8 +456,8 @@ class _MenuDrawerState extends State { }, ), ) - else if (state.user.isTwoFactorEnabled && - !state.user.phoneVerified && + else if (state.user!.isTwoFactorEnabled && + !state.user!.phoneVerified && state.isHosted) if (state.isMenuCollapsed) Tooltip( @@ -486,7 +486,7 @@ class _MenuDrawerState extends State { child: ListTile( tileColor: Colors.orange.shade800, subtitle: Text( - localization.verifyPhoneNumber2faHelp, + localization.verifyPhoneNumber2faHelp!, style: TextStyle(color: Colors.white), ), onTap: () { @@ -498,8 +498,8 @@ class _MenuDrawerState extends State { }, ), ) - else if (state.company.isDisabled && - state.userCompany.isAdmin) + else if (state.company!.isDisabled && + state.userCompany!.isAdmin) if (state.isMenuCollapsed) Tooltip( message: @@ -544,7 +544,7 @@ class _MenuDrawerState extends State { }, ), ), - if (state.userCompany.isOwner && + if (state.userCompany!.isOwner && state.isHosted && !state.isProPlan && (!isApple() || supportsInAppPurchase())) @@ -577,7 +577,7 @@ class _MenuDrawerState extends State { localization.upgrade, style: Theme.of(context) .textTheme - .bodyLarge + .bodyLarge! .copyWith( fontSize: 14, color: Colors.white, @@ -594,7 +594,7 @@ class _MenuDrawerState extends State { ), ), ), - if (state.userCompany.canViewDashboard) + if (state.userCompany!.canViewDashboard) DrawerTile( company: company, icon: getEntityIcon(EntityType.dashboard), @@ -709,7 +709,7 @@ class _MenuDrawerState extends State { title: localization.documents, ), if (state.isProPlan && - state.userCompany.canViewReports) + state.userCompany!.canViewReports) DrawerTile( company: company, icon: getEntityIcon(EntityType.reports), @@ -752,9 +752,9 @@ class _MenuDrawerState extends State { class DrawerTile extends StatefulWidget { const DrawerTile({ - @required this.company, - @required this.icon, - @required this.title, + required this.company, + required this.icon, + required this.title, this.onTap, this.entityType, this.onLongPress, @@ -763,13 +763,13 @@ class DrawerTile extends StatefulWidget { }); final CompanyEntity company; - final EntityType entityType; + final EntityType? entityType; final IconData icon; - final String title; - final Function onTap; - final Function onLongPress; - final Function onCreateTap; - final String iconTooltip; + final String? title; + final Function? onTap; + final Function? onLongPress; + final Function? onCreateTap; + final String? iconTooltip; @override _DrawerTileState createState() => _DrawerTileState(); @@ -789,13 +789,13 @@ class _DrawerTileState extends State { if (!Config.DEMO_MODE) { if (widget.entityType != null && - !userCompany.canViewCreateOrEdit(widget.entityType)) { + !userCompany!.canViewCreateOrEdit(widget.entityType)) { return Container(); } } final enableDarkMode = state.prefState.enableDarkMode; - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; String route; if (widget.title == localization.dashboard) { @@ -807,7 +807,7 @@ class _DrawerTileState extends State { } else if (widget.title == localization.kanban) { route = kKanban; } else { - route = widget.entityType.name; + route = widget.entityType!.name; } // Workaround to show clients/vendors as selected when @@ -832,11 +832,11 @@ class _DrawerTileState extends State { .activeCustomColors[PrefState.THEME_SIDEBAR_ACTIVE_FONT_COLOR] ?? ''; - Color color = Colors.transparent; - Color textColor = Theme.of(context) + Color? color = Colors.transparent; + Color? textColor = Theme.of(context) .textTheme - .bodyLarge - .color + .bodyLarge! + .color! .withOpacity(isSelected ? 1 : .7); if (isSelected) { @@ -867,13 +867,13 @@ class _DrawerTileState extends State { entityType: widget.entityType, ); } else { - widget.onTap(); + widget.onTap!(); } }; final onLongPress = () { if (widget.onLongPress != null) { - widget.onLongPress(); + widget.onLongPress!(); } else if (widget.entityType != null) { createEntityByType( context: context, @@ -887,7 +887,7 @@ class _DrawerTileState extends State { return Tooltip( message: prefState.enableTooltips ? widget.title : '', child: ColoredBox( - color: color, + color: color!, child: Opacity( opacity: isSelected ? 1 : .8, child: InkWell( @@ -905,7 +905,7 @@ class _DrawerTileState extends State { ); } - Widget iconWidget; + Widget? iconWidget; if ([ localization.dashboard, localization.settings, @@ -930,7 +930,7 @@ class _DrawerTileState extends State { } }, ); - } else if (userCompany.canCreate(widget.entityType)) { + } else if (userCompany!.canCreate(widget.entityType)) { iconWidget = IconButton( tooltip: prefState.enableTooltips ? widget.iconTooltip : null, icon: Icon( @@ -952,7 +952,7 @@ class _DrawerTileState extends State { bool isLoading = false; if (widget.entityType != null && - state.company.isLarge && + state.company!.isLarge && state.uiState.loadingEntityType == widget.entityType) { isLoading = true; } @@ -984,9 +984,9 @@ class _DrawerTileState extends State { ), ), title: Text( - widget.title, + widget.title!, key: ValueKey('menu_${widget.title}'), - style: Theme.of(context).textTheme.bodyLarge.copyWith( + style: Theme.of(context).textTheme.bodyLarge!.copyWith( fontSize: 14, color: textColor, ), @@ -1010,7 +1010,7 @@ class _DrawerTileState extends State { SizedBox( width: 6, height: 40, - child: ColoredBox(color: state.accentColor), + child: ColoredBox(color: state.accentColor!), ), ], ); @@ -1031,7 +1031,7 @@ class SidebarFooter extends StatelessWidget { final state = store.state; final prefState = state.prefState; final localization = AppLocalization.of(context); - final account = state.userCompany.account; + final account = state.userCompany!.account; return Material( color: Theme.of(context).bottomAppBarTheme.color, @@ -1042,19 +1042,19 @@ class SidebarFooter extends StatelessWidget { if (state.isMenuCollapsed) ...[ Expanded(child: SizedBox()) ] else ...[ - if (!Config.DEMO_MODE && !state.isDemo && account.isOld) + if (!Config.DEMO_MODE && !state.isDemo && account!.isOld) if (state.isSelfHosted && !account.isSchedulerRunning && - state.userCompany.isAdmin) + state.userCompany!.isAdmin) IconButton( - tooltip: prefState.enableTooltips ? localization.error : '', + tooltip: prefState.enableTooltips ? localization!.error : '', icon: Icon( Icons.warning, color: Colors.red, ), onPressed: () => showMessageDialog( context: context, - message: localization.cronsNotEnabled, + message: localization!.cronsNotEnabled, secondaryActions: [ TextButton( child: Text(localization.learnMore.toUpperCase()), @@ -1071,9 +1071,9 @@ class SidebarFooter extends StatelessWidget { ), ]), ) - else if (state.credentials.token.isEmpty) + else if (state.credentials.token!.isEmpty) IconButton( - tooltip: prefState.enableTooltips ? localization.error : '', + tooltip: prefState.enableTooltips ? localization!.error : '', icon: Icon( Icons.warning, color: Colors.red, @@ -1083,12 +1083,12 @@ class SidebarFooter extends StatelessWidget { ), ) else if (state.isSelfHosted && - !state.account.disableAutoUpdate && - state.userCompany.isAdmin && + !state.account!.disableAutoUpdate && + state.userCompany!.isAdmin && state.isUpdateAvailable) IconButton( tooltip: prefState.enableTooltips - ? localization.updateAvailable + ? localization!.updateAvailable : '', icon: Icon( Icons.warning, @@ -1111,8 +1111,8 @@ class SidebarFooter extends StatelessWidget { onPressed: () => showMessageDialog( context: context, message: isMobileOS() - ? localization.recommendMobile - : localization.recommendDesktop, + ? localization!.recommendMobile + : localization!.recommendDesktop, onDismiss: () => store.dispatch(DismissNativeWarningPermanently()), secondaryActions: [ @@ -1131,7 +1131,7 @@ class SidebarFooter extends StatelessWidget { Navigator.of(context).pop(); store.dispatch(DismissNativeWarning()); }, - child: Text(localization.remindMe.toUpperCase()), + child: Text(localization.remindMe!.toUpperCase()), ), ], ), @@ -1143,13 +1143,13 @@ class SidebarFooter extends StatelessWidget { IconButton( icon: Icon(Icons.mail), onPressed: () => _showContactUs(context), - tooltip: prefState.enableTooltips ? localization.contactUs : '', + tooltip: prefState.enableTooltips ? localization!.contactUs : '', ), IconButton( icon: Icon(Icons.forum), onPressed: () => launchUrl(Uri.parse(kForumUrl)), tooltip: - prefState.enableTooltips ? localization.supportForum : '', + prefState.enableTooltips ? localization!.supportForum : '', ), IconButton( icon: Icon(Icons.help_outline), @@ -1179,12 +1179,12 @@ class SidebarFooter extends StatelessWidget { launchUrl(Uri.parse(url)); }, - tooltip: prefState.enableTooltips ? localization.userGuide : '', + tooltip: prefState.enableTooltips ? localization!.userGuide : '', ), IconButton( icon: Icon(Icons.info_outline), onPressed: () => _showAbout(context), - tooltip: prefState.enableTooltips ? localization.about : '', + tooltip: prefState.enableTooltips ? localization!.about : '', ), /* if (kDebugMode) @@ -1203,7 +1203,7 @@ class SidebarFooter extends StatelessWidget { Icons.warning, color: Colors.red, ), - tooltip: prefState.enableTooltips ? localization.error : '', + tooltip: prefState.enableTooltips ? localization!.error : '', onPressed: () => showDialog( context: context, builder: (BuildContext context) { @@ -1220,7 +1220,7 @@ class SidebarFooter extends StatelessWidget { isLeft: true, child: Tooltip( message: - prefState.enableTooltips ? localization.hideMenu : '', + prefState.enableTooltips ? localization!.hideMenu : '', child: InkWell( onTap: () => store.dispatch( UpdateUserPreferences(sidebar: AppSidebar.menu)), @@ -1259,7 +1259,7 @@ class SidebarFooterCollapsed extends StatelessWidget { color: Theme.of(context).colorScheme.secondary) : Icon(Icons.info_outline), onSelected: (value) { - if (value == localization.updateAvailable) { + if (value == localization!.updateAvailable) { _showUpdate(context); } else if (value == localization.about) { _showAbout(context); @@ -1275,14 +1275,14 @@ class SidebarFooterCollapsed extends StatelessWidget { Icons.warning, color: Theme.of(context).colorScheme.secondary, ), - title: Text(localization.updateAvailable), + title: Text(localization!.updateAvailable), ), value: localization.updateAvailable, ), PopupMenuItem( child: ListTile( leading: Icon(Icons.mail), - title: Text(localization.contactUs), + title: Text(localization!.contactUs), ), value: localization.contactUs, ), @@ -1315,7 +1315,7 @@ class SidebarFooterCollapsed extends StatelessWidget { color: state.isUpdateAvailable ? state.accentColor : null, ), tooltip: - state.prefState.enableTooltips ? localization.showMenu : null, + state.prefState.enableTooltips ? localization!.showMenu : null, onPressed: () { store.dispatch(UpdateUserPreferences(sidebar: AppSidebar.menu)); }, @@ -1340,7 +1340,7 @@ void _showUpdate(BuildContext context) { } void _showConnectStripe(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; showMessageDialog( context: context, message: localization.unauthorizedStripeWarning, @@ -1348,10 +1348,10 @@ void _showConnectStripe(BuildContext context) { TextButton( child: Text(localization.viewSettings.toUpperCase()), onPressed: () { - final context = navigatorKey.currentContext; + final context = navigatorKey.currentContext!; Navigator.of(context).pop(); final store = StoreProvider.of(context); - final gateway = getUnconnectedStripeAccount(store.state); + final gateway = getUnconnectedStripeAccount(store.state)!; editEntity(entity: gateway); }, ), @@ -1371,14 +1371,14 @@ void _showAbout(BuildContext context) async { height: 40.0, ); - final userCompany = state.userCompany; + final userCompany = state.userCompany!; String subtitle = state.appVersion + '\n'; subtitle += - state.isSelfHosted ? localization.selfhosted : localization.hosted; + state.isSelfHosted ? localization!.selfhosted : localization!.hosted; if (userCompany.isOwner) { - subtitle += ' • ' + localization.owner; + subtitle += ' • ' + localization.owner!; } else if (userCompany.isAdmin) { - subtitle += ' • ' + localization.admin; + subtitle += ' • ' + localization.admin!; } showDialog( @@ -1426,9 +1426,9 @@ void _showAbout(BuildContext context) async { if (kReleaseMode) { showMessageDialog( context: context, - message: FLUTTER_VERSION['channel'].toUpperCase() + + message: FLUTTER_VERSION['channel']!.toUpperCase() + ' • ' + - FLUTTER_VERSION['frameworkVersion'], + FLUTTER_VERSION['frameworkVersion']!, secondaryActions: [ TextButton( child: Text(localization.logout.toUpperCase()), @@ -1446,8 +1446,8 @@ void _showAbout(BuildContext context) async { SizedBox(height: 8), ListTile( contentPadding: const EdgeInsets.all(0), - title: Text(state.user.fullName), - subtitle: Text(state.user.email), + title: Text(state.user!.fullName), + subtitle: Text(state.user!.email), ), if (!isApple()) Padding( @@ -1580,12 +1580,12 @@ void _showAbout(BuildContext context) async { ), ), AppButton( - label: (localization.releaseNotes).toUpperCase(), + label: localization.releaseNotes!.toUpperCase(), iconData: MdiIcons.note, color: Colors.cyan, onPressed: () => launchUrl(Uri.parse(kReleaseNotesUrl)), ), - if (state.userCompany.isAdmin) ...[ + if (state.userCompany!.isAdmin) ...[ if (state.isSelfHosted || !kReleaseMode) ...[ AppButton( label: localization.healthCheck.toUpperCase(), @@ -1599,8 +1599,8 @@ void _showAbout(BuildContext context) async { }); }, ), - if (!state.account.disableAutoUpdate && - (!state.account.isDocker || state.isUpdateAvailable)) + if (!state.account!.disableAutoUpdate && + (!state.account!.isDocker || state.isUpdateAvailable)) AppButton( label: (state.isUpdateAvailable ? localization.updateApp @@ -1612,9 +1612,9 @@ void _showAbout(BuildContext context) async { ), ], ], - if (state.company.daysActive > 30) + if (state.company!.daysActive > 30) AppButton( - label: localization.reviewApp.toUpperCase(), + label: localization.reviewApp!.toUpperCase(), iconData: Icons.star, color: Colors.purple, onPressed: () { @@ -1684,7 +1684,7 @@ class _ContactUsDialogState extends State { setState(() => _isSaving = true); WebClient() - .post(state.credentials.url + '/support/messages/send', + .post(state.credentials.url! + '/support/messages/send', state.credentials.token, data: json.encode({ 'message': _message, @@ -1697,9 +1697,9 @@ class _ContactUsDialogState extends State { await showDialog( context: context, builder: (BuildContext context) { - return MessageDialog(localization.yourMessageHasBeenReceived); + return MessageDialog(localization!.yourMessageHasBeenReceived); }); - Navigator.pop(navigatorKey.currentContext); + Navigator.pop(navigatorKey.currentContext!); }).catchError((dynamic error) { print('## ERROR: $error'); setState(() => _isSaving = false); @@ -1709,9 +1709,9 @@ class _ContactUsDialogState extends State { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final state = StoreProvider.of(context).state; - final user = state.user; + final user = state.user!; return PointerInterceptor( child: AlertDialog( diff --git a/lib/ui/app/menu_drawer_vm.dart b/lib/ui/app/menu_drawer_vm.dart index f327dc4df..12f1fd541 100644 --- a/lib/ui/app/menu_drawer_vm.dart +++ b/lib/ui/app/menu_drawer_vm.dart @@ -25,7 +25,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/oauth.dart'; class MenuDrawerBuilder extends StatelessWidget { - const MenuDrawerBuilder({Key key}) : super(key: key); + const MenuDrawerBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -40,21 +40,21 @@ class MenuDrawerBuilder extends StatelessWidget { class MenuDrawerVM { MenuDrawerVM({ - @required this.state, - @required this.selectedCompany, - @required this.user, - @required this.selectedCompanyIndex, - @required this.onCompanyChanged, - @required this.isLoading, - @required this.onAddCompany, - @required this.onLogoutTap, + required this.state, + required this.selectedCompany, + required this.user, + required this.selectedCompanyIndex, + required this.onCompanyChanged, + required this.isLoading, + required this.onAddCompany, + required this.onLogoutTap, }); final AppState state; - final CompanyEntity selectedCompany; - final UserEntity user; + final CompanyEntity? selectedCompany; + final UserEntity? user; final String selectedCompanyIndex; - final Function(BuildContext context, int, CompanyEntity) onCompanyChanged; + final Function(BuildContext context, int, CompanyEntity?) onCompanyChanged; final Function(BuildContext context) onAddCompany; final Function(BuildContext) onLogoutTap; @@ -74,12 +74,12 @@ class MenuDrawerVM { return; } confirmCallback( - message: AppLocalization.of(context).logout, + message: AppLocalization.of(context)!.logout, context: context, callback: (_) async { store.dispatch(UserLogout()); - final user = store.state.user; + final user = store.state.user!; if (user.isConnectedToGoogle) { GoogleOAuth.signOut(); } @@ -97,12 +97,12 @@ class MenuDrawerVM { store.dispatch(ClearEntityFilter()); store.dispatch(DiscardChanges()); store.dispatch(SelectCompany(companyIndex: index)); - if (store.state.company.isLarge && !store.state.isLoaded) { + if (store.state.company!.isLarge && !store.state.isLoaded) { store.dispatch(LoadClients()); } else if (store.state.isStale) { store.dispatch(RefreshData()); } - AppBuilder.of(context).rebuild(); + AppBuilder.of(context)!.rebuild(); final uiState = state.uiState; if (uiState.isInSettings) { @@ -123,24 +123,24 @@ class MenuDrawerVM { onAddCompany: (BuildContext context) { if (state.isHosted && !state.isPaidAccount && - state.companies.length >= state.account.hostedCompanyCount) { + state.companies.length >= state.account!.hostedCompanyCount) { showMessageDialog( context: context, - message: AppLocalization.of(context).upgradeToAddCompany, + message: AppLocalization.of(context)!.upgradeToAddCompany, ); return; } confirmCallback( context: context, - message: AppLocalization.of(context).addCompany, + message: AppLocalization.of(context)!.addCompany, callback: (_) async { final completer = snackBarCompleter( - context, AppLocalization.of(context).addedCompany, + context, AppLocalization.of(context)!.addedCompany, shouldPop: true) ..future.then((value) { - AppBuilder.of(navigatorKey.currentContext).rebuild(); - }); + AppBuilder.of(navigatorKey.currentContext!)!.rebuild(); + } as FutureOr<_> Function(Null)); store .dispatch(AddCompany(context: context, completer: completer)); diff --git a/lib/ui/app/multiselect.dart b/lib/ui/app/multiselect.dart index bb5cb5b28..66d0b51b8 100644 --- a/lib/ui/app/multiselect.dart +++ b/lib/ui/app/multiselect.dart @@ -9,10 +9,10 @@ var _theState = RM.inject(() => _TheState()); class _SelectRow extends StatelessWidget { const _SelectRow({ - Key key, - @required this.onChange, - @required this.selected, - @required this.child, + Key? key, + required this.onChange, + required this.selected, + required this.child, }) : super(key: key); final Function(bool) onChange; @@ -55,11 +55,11 @@ class _SelectRow extends StatelessWidget { /// class DropDownMultiSelect extends StatefulWidget { const DropDownMultiSelect({ - Key key, - @required this.options, - @required this.selectedValues, - @required this.onChanged, - @required this.whenEmpty, + Key? key, + required this.options, + required this.selectedValues, + required this.onChanged, + required this.whenEmpty, this.childBuilder, this.menuItembuilder, this.isDense = false, @@ -72,7 +72,7 @@ class DropDownMultiSelect extends StatefulWidget { }) : super(key: key); /// The options form which a user can select - final List options; + final List? options; /// Selected Values final List selectedValues; @@ -87,33 +87,33 @@ class DropDownMultiSelect extends StatefulWidget { final bool enabled; /// Input decoration - final InputDecoration decoration; + final InputDecoration? decoration; /// this text is shown when there is no selection final String whenEmpty; /// a function to build custom childern - final Widget Function(List selectedValues) childBuilder; + final Widget Function(List selectedValues)? childBuilder; /// a function to build custom menu items - final Widget Function(dynamic option) menuItembuilder; + final Widget Function(dynamic option)? menuItembuilder; /// a function to validate - final String Function(dynamic selectedOptions) validator; + final String Function(dynamic selectedOptions)? validator; /// defines whether the widget is read-only final bool readOnly; final double height; - final Color fadeoutColor; + final Color? fadeoutColor; @override _DropDownMultiSelectState createState() => _DropDownMultiSelectState(); } class _DropDownMultiSelectState extends State { - Color fadeoutColor = Colors.white; + Color? fadeoutColor = Colors.white; @override void initState() { @@ -139,7 +139,7 @@ class _DropDownMultiSelectState extends State { children: [ _theState.rebuild( () => widget.childBuilder != null - ? widget.childBuilder(widget.selectedValues) + ? widget.childBuilder!(widget.selectedValues) : Align( child: Padding( padding: @@ -160,12 +160,12 @@ class _DropDownMultiSelectState extends State { return Row( mainAxisSize: MainAxisSize.min, children: [ - widget.menuItembuilder(e), + widget.menuItembuilder!(e), Text(',') ], ); } - return widget.menuItembuilder(e); + return widget.menuItembuilder!(e); }).toList(), ), ), @@ -199,19 +199,19 @@ class _DropDownMultiSelectState extends State { ? widget.selectedValues[0] : null, selectedItemBuilder: (context) { - return widget.options + return widget.options! .map((dynamic e) => DropdownMenuItem( child: Container(), )) .toList(); }, - items: widget.options + items: widget.options! .map((dynamic x) => DropdownMenuItem( child: _theState.rebuild(() { return _SelectRow( selected: widget.selectedValues.contains(x), child: widget.menuItembuilder != null - ? widget.menuItembuilder(x) + ? widget.menuItembuilder!(x) : Text( x.toString(), overflow: TextOverflow.ellipsis, diff --git a/lib/ui/app/pinput.dart b/lib/ui/app/pinput.dart index 20ab75ecd..10a24f088 100644 --- a/lib/ui/app/pinput.dart +++ b/lib/ui/app/pinput.dart @@ -3,9 +3,9 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:pinput/pinput.dart'; class AppPinput extends StatelessWidget { - const AppPinput({Key key, this.onCompleted}) : super(key: key); + const AppPinput({Key? key, this.onCompleted}) : super(key: key); - final ValueChanged onCompleted; + final ValueChanged? onCompleted; @override Widget build(BuildContext context) { @@ -18,7 +18,7 @@ class AppPinput extends StatelessWidget { showCursor: true, androidSmsAutofillMethod: AndroidSmsAutofillMethod.smsUserConsentApi, validator: (value) => - value.isEmpty ? localization.pleaseEnterACode : null, + value!.isEmpty ? localization!.pleaseEnterACode : null, ); } } diff --git a/lib/ui/app/portal_links.dart b/lib/ui/app/portal_links.dart index 19226c785..4d0091a77 100644 --- a/lib/ui/app/portal_links.dart +++ b/lib/ui/app/portal_links.dart @@ -16,17 +16,17 @@ enum PortalLinkStyle { class PortalLinks extends StatelessWidget { const PortalLinks({ - Key key, - @required this.viewLink, - @required this.copyLink, - @required this.client, + Key? key, + required this.viewLink, + required this.copyLink, + required this.client, this.style, }) : super(key: key); final String viewLink; final String copyLink; - final ClientEntity client; - final PortalLinkStyle style; + final ClientEntity? client; + final PortalLinkStyle? style; @override Widget build(BuildContext context) { @@ -40,7 +40,7 @@ class PortalLinks extends StatelessWidget { viewLinkWithHash += '?'; } if (client != null) { - viewLinkWithHash += '&client_hash=${client.clientHash}'; + viewLinkWithHash += '&client_hash=${client!.clientHash}'; } var copyLinkWithHash = copyLink; @@ -48,13 +48,13 @@ class PortalLinks extends StatelessWidget { copyLinkWithHash += '?'; } if (client != null) { - copyLinkWithHash += '&client_hash=${client.clientHash}'; + copyLinkWithHash += '&client_hash=${client!.clientHash}'; } final viewLinkPressed = () => launchUrl(Uri.parse(viewLinkWithHash)); final copyLinkPressed = () { Clipboard.setData(ClipboardData(text: copyLinkWithHash)); - showToast(localization.copiedToClipboard.replaceFirst(':value ', '')); + showToast(localization!.copiedToClipboard.replaceFirst(':value ', '')); }; if (style == PortalLinkStyle.icons) { @@ -64,12 +64,12 @@ class PortalLinks extends StatelessWidget { IconButton( onPressed: viewLinkPressed, icon: Icon(Icons.open_in_new), - tooltip: prefState.enableTooltips ? localization.viewPortal : '', + tooltip: prefState.enableTooltips ? localization!.viewPortal : '', ), IconButton( onPressed: copyLinkPressed, icon: Icon(Icons.copy), - tooltip: prefState.enableTooltips ? localization.copyLink : '', + tooltip: prefState.enableTooltips ? localization!.copyLink : '', ), ], ); @@ -78,7 +78,7 @@ class PortalLinks extends StatelessWidget { itemBuilder: (BuildContext context) => [ PopupMenuItem( child: IconText( - text: localization.viewPortal, icon: Icons.open_in_new), + text: localization!.viewPortal, icon: Icons.open_in_new), value: localization.viewPortal, ), PopupMenuItem( @@ -87,7 +87,7 @@ class PortalLinks extends StatelessWidget { ), ], onSelected: (value) { - if (value == localization.viewPortal) { + if (value == localization!.viewPortal) { viewLinkPressed(); } else { copyLinkPressed(); @@ -101,7 +101,7 @@ class PortalLinks extends StatelessWidget { child: OutlinedButton( onPressed: viewLinkPressed, child: Text( - localization.viewPortal, + localization!.viewPortal, maxLines: 2, overflow: TextOverflow.ellipsis, textAlign: TextAlign.center, diff --git a/lib/ui/app/presenters/entity_presenter.dart b/lib/ui/app/presenters/entity_presenter.dart index dc8dc8a10..fae1f2ead 100644 --- a/lib/ui/app/presenters/entity_presenter.dart +++ b/lib/ui/app/presenters/entity_presenter.dart @@ -12,20 +12,20 @@ import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class EntityPresenter { - EntityPresenter initialize(BaseEntity entity, BuildContext context) { + EntityPresenter initialize(BaseEntity? entity, BuildContext context) { this.entity = entity; this.context = context; return this; } - BaseEntity entity; - BuildContext context; + BaseEntity? entity; + late BuildContext context; - String title({bool isNarrow = false}) { - final localization = AppLocalization.of(context); - final type = localization.lookup('${entity.entityType}'); - var name = entity.listDisplayName; + String? title({bool isNarrow = false}) { + final localization = AppLocalization.of(context)!; + final type = localization.lookup('${entity!.entityType}'); + var name = entity!.listDisplayName; // TODO replace with this: https://github.com/flutter/flutter/issues/45336 if ((name ?? '').isEmpty) { @@ -41,7 +41,7 @@ class EntityPresenter { EntityType.product, EntityType.transaction, EntityType.document, - ].contains(entity.entityType) || + ].contains(entity!.entityType) || isNarrow) { return name; } else { @@ -61,7 +61,7 @@ class EntityPresenter { ]; } - Widget getField({String field, BuildContext context}) { + Widget getField({String? field, required BuildContext context}) { final localization = AppLocalization.of(context); final store = StoreProvider.of(context); final state = store.state; @@ -69,44 +69,44 @@ class EntityPresenter { switch (field) { case EntityFields.createdAt: return Text(formatDate( - convertTimestampToDateString(entity.createdAt), context, + convertTimestampToDateString(entity!.createdAt), context, showTime: true)); case EntityFields.updatedAt: - return Text(entity.updatedAt == 0 + return Text(entity!.updatedAt == 0 ? '' : formatDate( - convertTimestampToDateString(entity.updatedAt), context, + convertTimestampToDateString(entity!.updatedAt), context, showTime: true)); case EntityFields.archivedAt: - return Text(entity.archivedAt == 0 + return Text(entity!.archivedAt == 0 ? '' : formatDate( - convertTimestampToDateString(entity.archivedAt), context, + convertTimestampToDateString(entity!.archivedAt), context, showTime: true)); case EntityFields.state: - return Text(entity.isActive - ? localization.active - : entity.isArchived - ? localization.archived - : localization.deleted); + return Text(entity!.isActive + ? localization!.active + : entity!.isArchived + ? localization!.archived + : localization!.deleted); case EntityFields.createdBy: - final user = state.userState.get(entity.createdUserId); + final user = state.userState.get(entity!.createdUserId!); return LinkTextRelatedEntity(entity: user, relation: entity); case EntityFields.assignedTo: - final user = state.userState.get(entity.assignedUserId); + final user = state.userState.get(entity!.assignedUserId!); return LinkTextRelatedEntity(entity: user, relation: entity); case EntityFields.isDeleted: - return Text(entity.isDeleted ? localization.yes : localization.no); + return Text(entity!.isDeleted! ? localization!.yes : localization!.no); } return Text('Error: $field not found'); } - static bool isFieldLocalized(String field) => [ + static bool isFieldLocalized(String? field) => [ 'status', ].contains(field); - static bool isFieldAmount(String field) { + static bool isFieldAmount(String? field) { return [ 'quantity', 'stock_quantity', @@ -166,9 +166,9 @@ class EntityPresenter { return value; } - String presentCustomField(BuildContext context, String value) { + String? presentCustomField(BuildContext context, String value) { if (['yes', 'no'].contains(value)) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; return localization.lookup(value); } else if (RegExp('^\\d{4}-\\d{2}-\\d{2}\$').hasMatch(value)) { return formatDate(value, context); @@ -180,7 +180,7 @@ class EntityPresenter { class TableTooltip extends StatelessWidget { const TableTooltip({ - @required this.message, + required this.message, }); final String message; diff --git a/lib/ui/app/progress_button.dart b/lib/ui/app/progress_button.dart index 87c1c55ac..4a2ea1c03 100644 --- a/lib/ui/app/progress_button.dart +++ b/lib/ui/app/progress_button.dart @@ -6,17 +6,17 @@ import 'package:invoiceninja_flutter/ui/app/buttons/elevated_button.dart'; class ProgressButton extends StatelessWidget { const ProgressButton({ - Key key, - @required this.label, - @required this.isLoading, - @required this.onPressed, + Key? key, + required this.label, + required this.isLoading, + required this.onPressed, this.padding, }) : super(key: key); final String label; final bool isLoading; final Function onPressed; - final EdgeInsetsGeometry padding; + final EdgeInsetsGeometry? padding; @override Widget build(BuildContext context) { diff --git a/lib/ui/app/resources/cached_image.dart b/lib/ui/app/resources/cached_image.dart index e1405040c..ad4d90529 100644 --- a/lib/ui/app/resources/cached_image.dart +++ b/lib/ui/app/resources/cached_image.dart @@ -18,11 +18,11 @@ class CachedImage extends StatelessWidget { this.apiToken, }); - final String url; + final String? url; final bool showNinjaOnError; - final double width; - final double height; - final String apiToken; + final double? width; + final double? height; + final String? apiToken; @override Widget build(BuildContext context) { @@ -40,24 +40,24 @@ class CachedImage extends StatelessWidget { // TODO remove this if (kIsWeb) { return Image.network( - url, + url!, width: width, height: height, - key: ValueKey(url + (apiToken != null ? apiToken.substring(0, 8) : '')), + key: ValueKey(url! + (apiToken != null ? apiToken!.substring(0, 8) : '')), fit: BoxFit.contain, - headers: apiToken != null ? {'X-API-TOKEN': apiToken} : null, + headers: apiToken != null ? {'X-API-TOKEN': apiToken!} : null, ); } return CachedNetworkImage( width: width, height: height, - key: ValueKey(url + (apiToken != null ? apiToken.substring(0, 8) : '')), - imageUrl: url, + key: ValueKey(url! + (apiToken != null ? apiToken!.substring(0, 8) : '')), + imageUrl: url!, placeholder: (context, url) => Center(child: CircularProgressIndicator()), - errorWidget: (context, url, Object error) => + errorWidget: (context, url, Object? error) => Image.asset('assets/images/icon.png', width: 32, height: 30), - httpHeaders: apiToken != null ? {'X-API-TOKEN': apiToken} : null, + httpHeaders: apiToken != null ? {'X-API-TOKEN': apiToken!} : null, ); } } diff --git a/lib/ui/app/responsive_padding.dart b/lib/ui/app/responsive_padding.dart index 225c98fb6..4f599c075 100644 --- a/lib/ui/app/responsive_padding.dart +++ b/lib/ui/app/responsive_padding.dart @@ -8,7 +8,7 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class ResponsivePadding extends StatelessWidget { const ResponsivePadding({this.child}); - final Widget child; + final Widget? child; @override Widget build(BuildContext context) { diff --git a/lib/ui/app/review_app.dart b/lib/ui/app/review_app.dart index ebf2d0ae5..4a65980fe 100644 --- a/lib/ui/app/review_app.dart +++ b/lib/ui/app/review_app.dart @@ -10,7 +10,7 @@ import 'package:invoiceninja_flutter/utils/app_review.dart'; import 'package:url_launcher/url_launcher.dart'; class ReviewApp extends StatefulWidget { - const ReviewApp({Key key}) : super(key: key); + const ReviewApp({Key? key}) : super(key: key); @override State createState() => _ReviewAppState(); @@ -34,7 +34,7 @@ class _ReviewAppState extends State { children: [ SizedBox(height: 12), Text( - localization.wouldYouRateTheApp, + localization!.wouldYouRateTheApp!, style: Theme.of(context).textTheme.titleMedium, textAlign: TextAlign.center, ), @@ -67,7 +67,7 @@ class _ReviewAppState extends State { child: Padding( padding: const EdgeInsets.symmetric(vertical: 16), child: Text( - localization.sureHappyTo, + localization.sureHappyTo!, textAlign: TextAlign.center, ), ), @@ -88,7 +88,7 @@ class _ReviewAppState extends State { child: Padding( padding: const EdgeInsets.symmetric(vertical: 16), child: Text( - localization.noNotNow, + localization.noNotNow!, textAlign: TextAlign.center, ), ), diff --git a/lib/ui/app/scrollable_listview.dart b/lib/ui/app/scrollable_listview.dart index d59926a23..f1eaa7397 100644 --- a/lib/ui/app/scrollable_listview.dart +++ b/lib/ui/app/scrollable_listview.dart @@ -3,18 +3,18 @@ import 'package:flutter/material.dart'; class ScrollableListView extends StatefulWidget { const ScrollableListView({ - Key key, - @required this.children, + Key? key, + required this.children, this.scrollController, this.padding, this.primary, this.showScrollbar = false, }) : super(key: key); - final List children; - final ScrollController scrollController; - final EdgeInsetsGeometry padding; - final bool primary; + final List? children; + final ScrollController? scrollController; + final EdgeInsetsGeometry? padding; + final bool? primary; final bool showScrollbar; @override @@ -22,7 +22,7 @@ class ScrollableListView extends StatefulWidget { } class _ScrollableListViewState extends State { - ScrollController _scrollController; + ScrollController? _scrollController; @override void initState() { @@ -32,7 +32,7 @@ class _ScrollableListViewState extends State { @override void dispose() { - _scrollController.dispose(); + _scrollController!.dispose(); super.dispose(); } @@ -43,7 +43,7 @@ class _ScrollableListViewState extends State { : widget.scrollController ?? _scrollController; Widget child = ListView( padding: widget.padding, - children: widget.children, + children: widget.children!, controller: controller, shrinkWrap: true, primary: widget.primary, @@ -63,9 +63,9 @@ class _ScrollableListViewState extends State { class ScrollableListViewBuilder extends StatefulWidget { const ScrollableListViewBuilder({ - Key key, - @required this.itemBuilder, - @required this.itemCount, + Key? key, + required this.itemBuilder, + required this.itemCount, this.separatorBuilder, this.scrollController, this.padding, @@ -73,10 +73,10 @@ class ScrollableListViewBuilder extends StatefulWidget { }) : super(key: key); final IndexedWidgetBuilder itemBuilder; - final IndexedWidgetBuilder separatorBuilder; - final int itemCount; - final ScrollController scrollController; - final EdgeInsetsGeometry padding; + final IndexedWidgetBuilder? separatorBuilder; + final int? itemCount; + final ScrollController? scrollController; + final EdgeInsetsGeometry? padding; final bool primary; @override @@ -85,7 +85,7 @@ class ScrollableListViewBuilder extends StatefulWidget { } class _ScrollableListViewBuilderState extends State { - ScrollController _scrollController; + ScrollController? _scrollController; @override void initState() { @@ -95,7 +95,7 @@ class _ScrollableListViewBuilderState extends State { @override void dispose() { - _scrollController.dispose(); + _scrollController!.dispose(); super.dispose(); } @@ -104,10 +104,10 @@ class _ScrollableListViewBuilderState extends State { return widget.separatorBuilder != null ? ListView.separated( primary: widget.primary, - separatorBuilder: widget.separatorBuilder, + separatorBuilder: widget.separatorBuilder!, padding: widget.padding, itemBuilder: widget.itemBuilder, - itemCount: widget.itemCount, + itemCount: widget.itemCount!, controller: widget.primary ? null : widget.scrollController ?? _scrollController, diff --git a/lib/ui/app/search_text.dart b/lib/ui/app/search_text.dart index 30cb8fe99..4e14312f1 100644 --- a/lib/ui/app/search_text.dart +++ b/lib/ui/app/search_text.dart @@ -6,7 +6,7 @@ import 'package:invoiceninja_flutter/utils/colors.dart'; class SearchText extends StatelessWidget { const SearchText({ - Key key, + Key? key, this.filterController, this.focusNode, this.placeholder, @@ -14,21 +14,21 @@ class SearchText extends StatelessWidget { this.onCleared, }) : super(key: key); - final Function(String) onChanged; - final Function onCleared; - final TextEditingController filterController; - final FocusNode focusNode; - final String placeholder; + final Function(String)? onChanged; + final Function? onCleared; + final TextEditingController? filterController; + final FocusNode? focusNode; + final String? placeholder; @override Widget build(BuildContext context) { final store = StoreProvider.of(context); final state = store.state; final enableDarkMode = state.prefState.enableDarkMode; - final isFilterSet = filterController.text.isNotEmpty; - final textColor = Theme.of(context).textTheme.bodyLarge.color; + final isFilterSet = filterController!.text.isNotEmpty; + final textColor = Theme.of(context).textTheme.bodyLarge!.color; - Color color; + Color? color; if (enableDarkMode) { color = convertHexStringToColor( isFilterSet ? kDefaultDarkBorderColor : kDefaultDarkBorderColor); @@ -47,31 +47,31 @@ class SearchText extends StatelessWidget { ), child: TextField( focusNode: focusNode, - textAlign: filterController.text.isNotEmpty || focusNode.hasFocus + textAlign: filterController!.text.isNotEmpty || focusNode!.hasFocus ? TextAlign.start : TextAlign.center, textAlignVertical: TextAlignVertical.center, decoration: InputDecoration( contentPadding: EdgeInsets.only(left: 8, right: 8, bottom: 6), - suffixIcon: filterController.text.isNotEmpty || focusNode.hasFocus + suffixIcon: filterController!.text.isNotEmpty || focusNode!.hasFocus ? IconButton( icon: Icon( Icons.clear, color: textColor, ), onPressed: () { - filterController.text = ''; - focusNode.unfocus( + filterController!.text = ''; + focusNode!.unfocus( disposition: UnfocusDisposition.previouslyFocusedChild); - onCleared(); + onCleared!(); }, ) : Icon(Icons.search, color: textColor), border: InputBorder.none, - hintText: focusNode.hasFocus ? '' : placeholder, + hintText: focusNode!.hasFocus ? '' : placeholder, ), autocorrect: false, - onChanged: (value) => onChanged(value), + onChanged: (value) => onChanged!(value), controller: filterController, ), ); diff --git a/lib/ui/app/sms_verification.dart b/lib/ui/app/sms_verification.dart index f434a855f..f984bea42 100644 --- a/lib/ui/app/sms_verification.dart +++ b/lib/ui/app/sms_verification.dart @@ -37,7 +37,7 @@ class _AccountSmsVerificationState extends State { final FocusScopeNode _focusNode = FocusScopeNode(); void _sendCode() { - final bool isValid = _formKey.currentState.validate(); + final bool isValid = _formKey.currentState!.validate(); if (!isValid) { return; @@ -71,7 +71,7 @@ class _AccountSmsVerificationState extends State { } void _verifyCode() { - final bool isValid = _formKey.currentState.validate(); + final bool isValid = _formKey.currentState!.validate(); if (!isValid) { return; @@ -96,7 +96,7 @@ class _AccountSmsVerificationState extends State { if (navigator.canPop()) { navigator.pop(); } - showToast(localization.verifiedPhoneNumber); + showToast(localization!.verifiedPhoneNumber); store.dispatch(RefreshData()); }).catchError((dynamic error) { setState(() { @@ -114,17 +114,17 @@ class _AccountSmsVerificationState extends State { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final store = StoreProvider.of(context); final state = store.state; - var countryId = state.company.settings.countryId; + var countryId = state.company!.settings.countryId; if ((countryId ?? '').isEmpty) { countryId = kCountryUnitedStates; } final country = state.staticState.countryMap[countryId]; return AlertDialog( - title: Text(localization.verifyPhoneNumber), + title: Text(localization.verifyPhoneNumber!), content: _isLoading ? LoadingIndicator(height: 80) : AppForm( @@ -135,7 +135,7 @@ class _AccountSmsVerificationState extends State { mainAxisSize: MainAxisSize.min, children: [ if (_showCode) ...[ - Text(localization.codeWasSent), + Text(localization.codeWasSent!), SizedBox(height: 20), AppPinput( onCompleted: (code) => _code = code, @@ -149,9 +149,9 @@ class _AccountSmsVerificationState extends State { RegExp(r'[0-9]'), ), ], - initialCountryCode: country.iso2.toUpperCase(), + initialCountryCode: country!.iso2.toUpperCase(), onChanged: (phone) => _phone = phone.completeNumber, - validator: (value) => value.number.isEmpty + validator: (value) => value!.number.isEmpty ? localization.pleaseEnterAValue : null, ), @@ -169,20 +169,20 @@ class _AccountSmsVerificationState extends State { TextButton( onPressed: () => _sendCode(), child: Text( - localization.resend.toUpperCase(), + localization.resend!.toUpperCase(), ), ), TextButton( onPressed: () => _verifyCode(), child: Text( - localization.verify.toUpperCase(), + localization.verify!.toUpperCase(), ), ), ] else ...[ TextButton( onPressed: () => _sendCode(), child: Text( - localization.sendCode.toUpperCase(), + localization.sendCode!.toUpperCase(), ), ), ] @@ -193,13 +193,13 @@ class _AccountSmsVerificationState extends State { class UserSmsVerification extends StatefulWidget { const UserSmsVerification({ - Key key, + Key? key, this.email, this.showChangeNumber = false, }) : super(key: key); final bool showChangeNumber; - final String email; + final String? email; @override State createState() => _UserSmsVerificationState(); @@ -236,7 +236,7 @@ class _UserSmsVerificationState extends State { _webClient .post('$url/sms_reset', credentials.token, data: json.encode( - {'email': widget.email ?? state.user.email}, + {'email': widget.email ?? state.user!.email}, )) .then((dynamic data) { setState(() { @@ -251,7 +251,7 @@ class _UserSmsVerificationState extends State { } void _verifyCode() { - final bool isValid = _formKey.currentState.validate(); + final bool isValid = _formKey.currentState!.validate(); if (!isValid) { return; @@ -277,7 +277,7 @@ class _UserSmsVerificationState extends State { .post(url, credentials.token, data: json.encode({ 'code': _code, - 'email': widget.email ?? state.user.email, + 'email': widget.email ?? state.user!.email, })) .then((dynamic data) { setState(() { @@ -287,8 +287,8 @@ class _UserSmsVerificationState extends State { navigator.pop(); } showToast(widget.email == null - ? localization.verifiedPhoneNumber - : localization.disabledTwoFactor); + ? localization!.verifiedPhoneNumber + : localization!.disabledTwoFactor); store.dispatch(RefreshData()); }).catchError((dynamic error) { setState(() { @@ -306,13 +306,13 @@ class _UserSmsVerificationState extends State { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final store = StoreProvider.of(context); final state = store.state; return AlertDialog( title: Text(widget.email == null - ? localization.verifyPhoneNumber + ? localization.verifyPhoneNumber! : localization.disableTwoFactor), content: _isLoading ? LoadingIndicator(height: 80) @@ -323,8 +323,8 @@ class _UserSmsVerificationState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ - Text(localization.codeWasSentTo - .replaceFirst(':number', state.user.phone)), + Text(localization.codeWasSentTo! + .replaceFirst(':number', state.user!.phone)), SizedBox(height: 20), AppPinput( onCompleted: (code) => _code = code, @@ -347,19 +347,19 @@ class _UserSmsVerificationState extends State { Navigator.of(context).pop(); }, child: Text( - localization.changeNumber.toUpperCase(), + localization.changeNumber!.toUpperCase(), ), ), TextButton( onPressed: () => _sendCode(), child: Text( - localization.resendCode.toUpperCase(), + localization.resendCode!.toUpperCase(), ), ), TextButton( onPressed: () => _verifyCode(), child: Text( - localization.verify.toUpperCase(), + localization.verify!.toUpperCase(), ), ), ], diff --git a/lib/ui/app/snackbar_row.dart b/lib/ui/app/snackbar_row.dart index d3ae68108..4641a4c3c 100644 --- a/lib/ui/app/snackbar_row.dart +++ b/lib/ui/app/snackbar_row.dart @@ -7,7 +7,7 @@ class SnackBarRow extends StatelessWidget { this.icon = Icons.check_circle, }); - final String message; + final String? message; final IconData icon; @override @@ -17,7 +17,7 @@ class SnackBarRow extends StatelessWidget { Icon(icon), Padding( padding: EdgeInsets.only(left: 10.0), - child: Text(message), + child: Text(message!), ) ], ); diff --git a/lib/ui/app/system_log_viewer.dart b/lib/ui/app/system_log_viewer.dart index 01bd4ca50..1ec1dd591 100644 --- a/lib/ui/app/system_log_viewer.dart +++ b/lib/ui/app/system_log_viewer.dart @@ -20,7 +20,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class SystemLogViewer extends StatefulWidget { const SystemLogViewer({this.systemLogs}); - final BuiltList systemLogs; + final BuiltList? systemLogs; @override _SystemLogViewerState createState() => _SystemLogViewerState(); @@ -34,7 +34,7 @@ class _SystemLogViewerState extends State { final localization = AppLocalization.of(context); final state = StoreProvider.of(context).state; - var systemLogs = widget.systemLogs.where((log) { + var systemLogs = widget.systemLogs!.where((log) { return log.typeId != 800; }).toList(); if (systemLogs.length > 25) { @@ -54,7 +54,7 @@ class _SystemLogViewerState extends State { .where((systemLog) => systemLog.isVisible) .map((systemLog) { final client = state.clientState.get(systemLog.clientId); - Map logs; + Map? logs; if (_isExpanded[systemLog.id] == true && systemLog.log.isNotEmpty) { try { logs = json.decode(systemLog.log); @@ -67,12 +67,12 @@ class _SystemLogViewerState extends State { headerBuilder: (BuildContext context, bool isExpanded) { return ListTile( leading: Icon(getActivityIcon(systemLog.categoryId)), - title: Text(localization.lookup(systemLog.category) + + title: Text(localization!.lookup(systemLog.category)! + ' › ' + - localization.lookup(systemLog.type)), + localization.lookup(systemLog.type)!), isThreeLine: true, - subtitle: Text(localization.lookup(systemLog.event) + - (client.isOld ? ' • ${client.displayName}' : '') + + subtitle: Text(localization.lookup(systemLog.event)! + + (client!.isOld ? ' • ${client.displayName}' : '') + '\n' + formatDate( convertTimestampToDateString(systemLog.createdAt), @@ -82,7 +82,7 @@ class _SystemLogViewerState extends State { setState(() { _isExpanded[systemLog.id] = _isExpanded.containsKey(systemLog.id) - ? !_isExpanded[systemLog.id] + ? !_isExpanded[systemLog.id]! : true; }); }, diff --git a/lib/ui/app/tables/app_data_table.dart b/lib/ui/app/tables/app_data_table.dart index 92ffc4870..d33cf05bd 100644 --- a/lib/ui/app/tables/app_data_table.dart +++ b/lib/ui/app/tables/app_data_table.dart @@ -27,7 +27,7 @@ class DataColumn { /// /// The [label] argument must not be null. const DataColumn({ - @required this.label, + required this.label, this.tooltip, this.numeric = false, this.onSort, @@ -51,7 +51,7 @@ class DataColumn { /// This is a longer description of the column heading, for cases /// where the heading might have been abbreviated to keep the column /// width to a reasonable size. - final String tooltip; + final String? tooltip; /// Whether this column represents numeric data or not. /// @@ -64,7 +64,7 @@ class DataColumn { /// If null, the column will not be considered sortable. /// /// See [DataTable.sortColumnIndex] and [DataTable.sortAscending]. - final DataColumnSortCallback onSort; + final DataColumnSortCallback? onSort; bool get _debugInteractive => onSort != null; } @@ -86,7 +86,7 @@ class DataRow { this.key, this.selected = false, this.onSelectChanged, - @required this.cells, + required this.cells, }) : assert(cells != null); /// Creates the configuration for a row of a [DataTable], deriving @@ -94,12 +94,12 @@ class DataRow { /// /// The [cells] argument must not be null. DataRow.byIndex({ - int index, + int? index, this.selected = false, this.onSelectChanged, - @required this.cells, + required this.cells, }) : assert(cells != null), - key = ValueKey(index); + key = ValueKey(index); /// A [Key] that uniquely identifies this row. This is used to /// ensure that if a row is added or removed, any stateful widgets @@ -107,7 +107,7 @@ class DataRow { /// remain on the right row visually. /// /// If the table never changes once created, no key is necessary. - final LocalKey key; + final LocalKey? key; /// Called when the user selects or unselects a selectable row. /// @@ -122,7 +122,7 @@ class DataRow { /// A row whose [onSelectChanged] callback is null is ignored for /// the purposes of determining the state of the "all" checkbox, /// and its checkbox is disabled. - final ValueChanged onSelectChanged; + final ValueChanged? onSelectChanged; /// Whether the row is selected. /// @@ -205,11 +205,11 @@ class DataCell { /// If non-null, tapping the cell will call this callback. If /// null, tapping the cell will attempt to select the row (if /// [DataRow.onSelectChanged] is provided). - final VoidCallback onTap; + final VoidCallback? onTap; - final VoidCallback onLongPress; + final VoidCallback? onLongPress; - final Color backgroundColor; + final Color? backgroundColor; bool get _debugInteractive => onTap != null; } @@ -324,8 +324,8 @@ class AppDataTable extends StatelessWidget { /// the sort order is ascending, this should be true (the default), /// otherwise it should be false. AppDataTable({ - Key key, - @required this.columns, + Key? key, + required this.columns, this.sortColumnIndex, this.sortAscending = true, this.onSelectAll, @@ -336,7 +336,7 @@ class AppDataTable extends StatelessWidget { this.showCheckboxColumn = true, this.dividerThickness = 1.0, this.hasActionsColumn = false, - @required this.rows, + required this.rows, }) : assert(columns != null), assert(columns.isNotEmpty), assert(sortColumnIndex == null || @@ -367,7 +367,7 @@ class AppDataTable extends StatelessWidget { /// /// When this is null, it implies that the table's sort order does /// not correspond to any of the columns. - final int sortColumnIndex; + final int? sortColumnIndex; /// Whether the column mentioned in [sortColumnIndex], if any, is sorted /// in ascending order. @@ -390,7 +390,7 @@ class AppDataTable extends StatelessWidget { /// To control whether a particular row is selectable or not, see /// [DataRow.onSelectChanged]. This callback is only relevant if any /// row is selectable. - final ValueSetter onSelectAll; + final ValueSetter? onSelectAll; /// The height of each row (excluding the row that contains column headings). /// @@ -436,12 +436,12 @@ class AppDataTable extends StatelessWidget { // Set by the constructor to the index of the only Column that is // non-numeric, if there is exactly one, otherwise null. - final int _onlyTextColumn; + final int? _onlyTextColumn; final bool hasActionsColumn; - static int _initOnlyTextColumn(List columns) { - int result; + static int? _initOnlyTextColumn(List columns) { + int? result; for (int index = 0; index < columns.length; index += 1) { final DataColumn column = columns[index]; if (!column.numeric) { @@ -461,13 +461,13 @@ class AppDataTable extends StatelessWidget { static final LocalKey _headingRowKey = UniqueKey(); - void _handleSelectAll(bool checked) { + void _handleSelectAll(bool? checked) { if (onSelectAll != null) { - onSelectAll(checked); + onSelectAll!(checked); } else { for (final DataRow row in rows) { if ((row.onSelectChanged != null) && (row.selected != checked)) - row.onSelectChanged(checked); + row.onSelectChanged!(checked); } } } @@ -488,10 +488,10 @@ class AppDataTable extends StatelessWidget { final double dividerThickness; Widget _buildCheckbox({ - Color color, - bool checked, - VoidCallback onRowTap, - ValueChanged onCheckboxChanged, + Color? color, + bool? checked, + VoidCallback? onRowTap, + ValueChanged? onCheckboxChanged, }) { Widget contents = Semantics( container: true, @@ -520,14 +520,14 @@ class AppDataTable extends StatelessWidget { } Widget _buildHeadingCell({ - BuildContext context, - EdgeInsetsGeometry padding, - Widget label, - String tooltip, - bool numeric, - VoidCallback onSort, - bool sorted, - bool ascending, + required BuildContext context, + EdgeInsetsGeometry? padding, + required Widget label, + String? tooltip, + required bool numeric, + VoidCallback? onSort, + bool? sorted, + bool? ascending, }) { List arrowWithPadding() { return onSort == null @@ -535,7 +535,7 @@ class AppDataTable extends StatelessWidget { : [ _SortArrow( visible: sorted, - down: sorted ? ascending : null, + down: sorted! ? ascending : null, duration: _sortArrowAnimationDuration, ), const SizedBox(width: _sortArrowPadding), @@ -562,8 +562,8 @@ class AppDataTable extends StatelessWidget { fontSize: _headingFontSize, height: math.min(1.0, headingRowHeight / _headingFontSize), color: (Theme.of(context).brightness == Brightness.light) - ? ((onSort != null && sorted) ? Colors.black87 : Colors.black54) - : ((onSort != null && sorted) ? Colors.white : Colors.white70), + ? ((onSort != null && sorted!) ? Colors.black87 : Colors.black54) + : ((onSort != null && sorted!) ? Colors.white : Colors.white70), ), softWrap: false, duration: _sortArrowAnimationDuration, @@ -586,21 +586,21 @@ class AppDataTable extends StatelessWidget { } Widget _buildDataCell({ - BuildContext context, - EdgeInsetsGeometry padding, - Widget label, - bool numeric, - bool placeholder, - bool showEditIcon, - Color backgroundColor, - VoidCallback onTap, - VoidCallback onLongPress, - VoidCallback onSelectChanged, + required BuildContext context, + EdgeInsetsGeometry? padding, + Widget? label, + required bool numeric, + bool? placeholder, + required bool showEditIcon, + Color? backgroundColor, + VoidCallback? onTap, + VoidCallback? onLongPress, + VoidCallback? onSelectChanged, }) { final bool isLightTheme = Theme.of(context).brightness == Brightness.light; if (showEditIcon) { const Widget icon = Icon(Icons.edit, size: 18.0); - label = Expanded(child: label); + label = Expanded(child: label!); label = Row( textDirection: numeric ? TextDirection.rtl : null, children: [label, icon], @@ -617,14 +617,14 @@ class AppDataTable extends StatelessWidget { // textTheme/DataTableTheme, https://github.com/flutter/flutter/issues/56079 fontSize: 13.0, color: isLightTheme - ? (placeholder ? Colors.black38 : Colors.black87) - : (placeholder ? Colors.white38 : Colors.white70), + ? (placeholder! ? Colors.black38 : Colors.black87) + : (placeholder! ? Colors.white38 : Colors.white70), ), child: IconTheme.merge( data: IconThemeData( color: isLightTheme ? Colors.black54 : Colors.white70, ), - child: DropdownButtonHideUnderline(child: label), + child: DropdownButtonHideUnderline(child: label!), ), ), ); @@ -694,18 +694,18 @@ class AppDataTable extends StatelessWidget { if (displayCheckboxColumn) { tableColumns[0] = FixedColumnWidth( horizontalMargin + Checkbox.width + horizontalMargin / 2.0); - tableRows[0].children[0] = _buildCheckbox( + tableRows[0].children![0] = _buildCheckbox( color: theme.colorScheme.secondary, checked: allChecked, onCheckboxChanged: _handleSelectAll, ); rowIndex = 1; for (final DataRow row in rows) { - tableRows[rowIndex].children[0] = _buildCheckbox( + tableRows[rowIndex].children![0] = _buildCheckbox( color: theme.colorScheme.secondary, checked: row.selected, onRowTap: () => row.onSelectChanged != null - ? row.onSelectChanged(!row.selected) + ? row.onSelectChanged!(!row.selected) : null, onCheckboxChanged: row.onSelectChanged, ); @@ -749,14 +749,14 @@ class AppDataTable extends StatelessWidget { } else { tableColumns[displayColumnIndex] = const IntrinsicColumnWidth(); } - tableRows[0].children[displayColumnIndex] = _buildHeadingCell( + tableRows[0].children![displayColumnIndex] = _buildHeadingCell( context: context, padding: padding, label: column.label, tooltip: column.tooltip, numeric: column.numeric, onSort: column.onSort != null - ? () => column.onSort(dataColumnIndex, + ? () => column.onSort!(dataColumnIndex, sortColumnIndex != dataColumnIndex || !sortAscending) : null, // IGNORE SORTING ON FIRST COLUMN @@ -768,7 +768,7 @@ class AppDataTable extends StatelessWidget { rowIndex = 1; for (final DataRow row in rows) { final DataCell cell = row.cells[dataColumnIndex]; - tableRows[rowIndex].children[displayColumnIndex] = _buildDataCell( + tableRows[rowIndex].children![displayColumnIndex] = _buildDataCell( context: context, padding: padding, label: cell.child, @@ -779,7 +779,7 @@ class AppDataTable extends StatelessWidget { onLongPress: cell.onLongPress, backgroundColor: cell.backgroundColor, onSelectChanged: () => row.onSelectChanged != null - ? row.onSelectChanged(!row.selected) + ? row.onSelectChanged!(!row.selected) : null, ); rowIndex += 1; @@ -810,12 +810,12 @@ class AppDataTable extends StatelessWidget { class TableRowInkWell extends InkResponse { /// Creates an ink well for a table row. const TableRowInkWell({ - Key key, - Widget child, - GestureTapCallback onTap, - GestureTapCallback onDoubleTap, - GestureLongPressCallback onLongPress, - ValueChanged onHighlightChanged, + Key? key, + Widget? child, + GestureTapCallback? onTap, + GestureTapCallback? onDoubleTap, + GestureLongPressCallback? onLongPress, + ValueChanged? onHighlightChanged, }) : super( key: key, child: child, @@ -831,10 +831,10 @@ class TableRowInkWell extends InkResponse { RectCallback getRectCallback(RenderBox referenceBox) { return () { RenderObject cell = referenceBox; - AbstractNode table = cell.parent; + AbstractNode? table = cell.parent; final Matrix4 transform = Matrix4.identity(); while (table is RenderObject && table is! RenderTable) { - final RenderObject parentBox = table as RenderObject; + final RenderObject parentBox = table; parentBox.applyPaintTransform(cell, transform); assert(table == cell.parent); cell = parentBox; @@ -844,11 +844,11 @@ class TableRowInkWell extends InkResponse { final TableCellParentData cellParentData = cell.parentData as TableCellParentData; assert(cellParentData.y != null); - final Rect rect = table.getRowBox(cellParentData.y); + final Rect rect = table.getRowBox(cellParentData.y!); // The rect is in the table's coordinate space. We need to change it to the // TableRowInkWell's coordinate space. table.applyPaintTransform(cell, transform); - final Offset offset = MatrixUtils.getAsTranslation(transform); + final Offset? offset = MatrixUtils.getAsTranslation(transform); if (offset != null) { return rect.shift(-offset); } @@ -866,31 +866,31 @@ class TableRowInkWell extends InkResponse { class _SortArrow extends StatefulWidget { const _SortArrow({ - Key key, + Key? key, this.visible, this.down, this.duration, }) : super(key: key); - final bool visible; + final bool? visible; - final bool down; + final bool? down; - final Duration duration; + final Duration? duration; @override _SortArrowState createState() => _SortArrowState(); } class _SortArrowState extends State<_SortArrow> with TickerProviderStateMixin { - AnimationController _opacityController; - Animation _opacityAnimation; + late AnimationController _opacityController; + late Animation _opacityAnimation; - AnimationController _orientationController; - Animation _orientationAnimation; + late AnimationController _orientationController; + late Animation _orientationAnimation; double _orientationOffset = 0.0; - bool _down; + bool? _down; static final Animatable _turnTween = Tween(begin: 0.0, end: math.pi) @@ -906,7 +906,7 @@ class _SortArrowState extends State<_SortArrow> with TickerProviderStateMixin { ), curve: Curves.fastOutSlowIn, )..addListener(_rebuild); - _opacityController.value = widget.visible ? 1.0 : 0.0; + _opacityController.value = widget.visible! ? 1.0 : 0.0; _orientationController = AnimationController( duration: widget.duration, vsync: this, @@ -914,8 +914,8 @@ class _SortArrowState extends State<_SortArrow> with TickerProviderStateMixin { _orientationAnimation = _orientationController.drive(_turnTween) ..addListener(_rebuild) ..addStatusListener(_resetOrientationAnimation); - if (widget.visible) { - _orientationOffset = widget.down ? 0.0 : math.pi; + if (widget.visible!) { + _orientationOffset = widget.down! ? 0.0 : math.pi; } } @@ -938,16 +938,16 @@ class _SortArrowState extends State<_SortArrow> with TickerProviderStateMixin { void didUpdateWidget(_SortArrow oldWidget) { super.didUpdateWidget(oldWidget); bool skipArrow = false; - final bool newDown = widget.down ?? _down; + final bool? newDown = widget.down ?? _down; if (oldWidget.visible != widget.visible) { - if (widget.visible && + if (widget.visible! && (_opacityController.status == AnimationStatus.dismissed)) { _orientationController.stop(); _orientationController.value = 0.0; - _orientationOffset = newDown ? 0.0 : math.pi; + _orientationOffset = newDown! ? 0.0 : math.pi; skipArrow = true; } - if (widget.visible) { + if (widget.visible!) { _opacityController.forward(); } else { _opacityController.reverse(); diff --git a/lib/ui/app/tables/app_paginated_data_table.dart b/lib/ui/app/tables/app_paginated_data_table.dart index 8a4871ff1..25325b404 100644 --- a/lib/ui/app/tables/app_paginated_data_table.dart +++ b/lib/ui/app/tables/app_paginated_data_table.dart @@ -57,10 +57,10 @@ class AppPaginatedDataTable extends StatefulWidget { /// The [rowsPerPage] and [availableRowsPerPage] must not be null (they /// both have defaults, though, so don't have to be specified). AppPaginatedDataTable({ - Key key, + Key? key, this.header, this.actions, - @required this.columns, + required this.columns, this.sortColumnIndex, this.sortAscending = true, this.onSelectAll, @@ -82,7 +82,7 @@ class AppPaginatedDataTable extends StatefulWidget { ], this.onRowsPerPageChanged, this.dragStartBehavior = DragStartBehavior.start, - @required this.source, + required this.source, }) : assert(columns != null), assert(dragStartBehavior != null), assert(columns.isNotEmpty), @@ -113,7 +113,7 @@ class AppPaginatedDataTable extends StatefulWidget { /// /// If items in the table are selectable, then, when the selection is not /// empty, the header is replaced by a count of the selected items. - final Widget header; + final Widget? header; /// Icon buttons to show at the top right of the table. /// @@ -121,7 +121,7 @@ class AppPaginatedDataTable extends StatefulWidget { /// whether any rows are selected or not. /// /// These should be size 24.0 with default padding (8.0). - final List actions; + final List? actions; /// The configuration and labels for the columns in the table. final List columns; @@ -129,7 +129,7 @@ class AppPaginatedDataTable extends StatefulWidget { /// The current primary sort key's column. /// /// See [DataTable.sortColumnIndex]. - final int sortColumnIndex; + final int? sortColumnIndex; /// Whether the column mentioned in [sortColumnIndex], if any, is sorted /// in ascending order. @@ -141,7 +141,7 @@ class AppPaginatedDataTable extends StatefulWidget { /// checkbox in the heading row. /// /// See [DataTable.onSelectAll]. - final ValueSetter onSelectAll; + final ValueSetter? onSelectAll; /// The height of each row (excluding the row that contains column headings). /// @@ -177,7 +177,7 @@ class AppPaginatedDataTable extends StatefulWidget { /// Invoked when the user switches to another page. /// /// The value is the index of the first row on the currently displayed page. - final ValueChanged onPageChanged; + final ValueChanged? onPageChanged; /// The number of rows to show on each page. /// @@ -204,7 +204,7 @@ class AppPaginatedDataTable extends StatefulWidget { /// /// If this is null, then the value given by [rowsPerPage] will be used /// and no affordance will be provided to change the value. - final ValueChanged onRowsPerPageChanged; + final ValueChanged? onRowsPerPageChanged; /// The data source which provides data to show in each row. Must be non-null. /// @@ -227,17 +227,17 @@ class AppPaginatedDataTable extends StatefulWidget { /// /// The table can be programmatically paged using the [pageTo] method. class AppPaginatedDataTableState extends State { - int _firstRowIndex; - int _rowCount; - bool _rowCountApproximate; - ScrollController _controller; + int? _firstRowIndex; + late int _rowCount; + late bool _rowCountApproximate; + ScrollController? _controller; final Map _rows = {}; @override void initState() { super.initState(); _controller = ScrollController(); - _firstRowIndex = PageStorage.of(context)?.readState(context) as int ?? + _firstRowIndex = PageStorage.of(context).readState(context) as int? ?? widget.initialFirstRowIndex ?? 0; widget.source.addListener(_handleDataSourceChanged); @@ -256,7 +256,7 @@ class AppPaginatedDataTableState extends State { @override void dispose() { - _controller.dispose(); + _controller!.dispose(); widget.source.removeListener(_handleDataSourceChanged); super.dispose(); } @@ -271,13 +271,13 @@ class AppPaginatedDataTableState extends State { /// Ensures that the given row is visible. void pageTo(int rowIndex) { - final int oldFirstRowIndex = _firstRowIndex; + final int? oldFirstRowIndex = _firstRowIndex; setState(() { final int rowsPerPage = widget.rowsPerPage; _firstRowIndex = (rowIndex ~/ rowsPerPage) * rowsPerPage; }); if ((widget.onPageChanged != null) && (oldFirstRowIndex != _firstRowIndex)) - widget.onPageChanged(_firstRowIndex); + widget.onPageChanged!(_firstRowIndex); } DataRow _getProgressIndicatorRowFor(int index) { @@ -305,7 +305,7 @@ class AppPaginatedDataTableState extends State { final int nextPageFirstRowIndex = firstRowIndex + rowsPerPage; bool haveProgressIndicator = false; for (int index = firstRowIndex; index < nextPageFirstRowIndex; index += 1) { - DataRow row; + DataRow? row; if (index < _rowCount || _rowCountApproximate) { row = _rows.putIfAbsent(index, () => widget.source.getRow(index)); if (row == null && !haveProgressIndicator) { @@ -321,11 +321,11 @@ class AppPaginatedDataTableState extends State { } void _handlePrevious() { - pageTo(math.max(_firstRowIndex - widget.rowsPerPage, 0)); + pageTo(math.max(_firstRowIndex! - widget.rowsPerPage, 0)); } void _handleNext() { - pageTo(_firstRowIndex + widget.rowsPerPage); + pageTo(_firstRowIndex! + widget.rowsPerPage); } final GlobalKey _tableKey = GlobalKey(); @@ -368,7 +368,7 @@ class AppPaginatedDataTableState extends State { */ // FOOTER - final TextStyle footerTextStyle = themeData.textTheme.bodySmall; + final TextStyle? footerTextStyle = themeData.textTheme.bodySmall; final List footerWidgets = []; final realRowCount = widget.subtractOneFromCount ? _rowCount - 1 : _rowCount; @@ -408,8 +408,8 @@ class AppPaginatedDataTableState extends State { Container(width: 32.0), Text( localizations.pageRowsInfoTitle( - realRowCount > 0 ? _firstRowIndex + 1 : 0, - _firstRowIndex + math.min(widget.rowsPerPage, realRowCount), + realRowCount > 0 ? _firstRowIndex! + 1 : 0, + _firstRowIndex! + math.min(widget.rowsPerPage, realRowCount), realRowCount, _rowCountApproximate, ), @@ -419,7 +419,7 @@ class AppPaginatedDataTableState extends State { icon: const Icon(Icons.chevron_left), padding: EdgeInsets.zero, tooltip: localizations.previousPageTooltip, - onPressed: _firstRowIndex <= 0 ? null : _handlePrevious, + onPressed: _firstRowIndex! <= 0 ? null : _handlePrevious, ), Container(width: 24.0), IconButton( @@ -427,7 +427,7 @@ class AppPaginatedDataTableState extends State { padding: EdgeInsets.zero, tooltip: localizations.nextPageTooltip, onPressed: (!_rowCountApproximate && - (_firstRowIndex + widget.rowsPerPage >= _rowCount)) + (_firstRowIndex! + widget.rowsPerPage >= _rowCount)) ? null : _handleNext, ), @@ -494,14 +494,14 @@ class AppPaginatedDataTableState extends State { horizontalMargin: widget.horizontalMargin, columnSpacing: widget.columnSpacing, showCheckboxColumn: widget.showCheckboxColumn, - rows: _getRows(_firstRowIndex, widget.rowsPerPage), + rows: _getRows(_firstRowIndex!, widget.rowsPerPage), hasActionsColumn: widget.hasActionsColumn, ), ), ), ), DefaultTextStyle( - style: footerTextStyle, + style: footerTextStyle!, child: IconTheme.merge( data: const IconThemeData(opacity: 0.54), child: Container( diff --git a/lib/ui/app/tables/entity_datatable.dart b/lib/ui/app/tables/entity_datatable.dart index 2c8e018b5..e2a0ea5dd 100644 --- a/lib/ui/app/tables/entity_datatable.dart +++ b/lib/ui/app/tables/entity_datatable.dart @@ -22,22 +22,22 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class EntityDataTableSource extends AppDataTableSource { EntityDataTableSource( - {@required this.context, - @required this.editingId, - @required this.entityList, - @required this.entityMap, - @required this.entityPresenter, - @required this.tableColumns, - @required this.entityType, - @required this.onTap}); + {required this.context, + required this.editingId, + required this.entityList, + required this.entityMap, + required this.entityPresenter, + required this.tableColumns, + required this.entityType, + required this.onTap}); EntityType entityType; String editingId; BuildContext context; - List entityList; - EntityPresenter entityPresenter; - BuiltMap entityMap; - List tableColumns; + List entityList; + EntityPresenter? entityPresenter; + BuiltMap? entityMap; + List? tableColumns; final Function(BaseEntity entity) onTap; @@ -54,8 +54,8 @@ class EntityDataTableSource extends AppDataTableSource { DataRow getRow(int index) { final state = StoreProvider.of(context).state; final prefState = state.prefState; - final entity = entityMap[entityList[index]]; - entityPresenter.initialize(entity, context); + final entity = entityMap![entityList[index]]; + entityPresenter!.initialize(entity, context); final listState = state.getListState(entityType); final uIState = state.getUIState(entityType); @@ -63,7 +63,7 @@ class EntityDataTableSource extends AppDataTableSource { if (entity == null) { return DataRow(cells: [ DataCell(SizedBox()), - ...tableColumns.map( + ...tableColumns!.map( (field) => DataCell( SizedBox(), ), @@ -76,12 +76,12 @@ class EntityDataTableSource extends AppDataTableSource { (state.prefState.isPreviewVisible || state.uiState.isEditing)) { if (state.uiState.isEditing ? entity.id == editingId - : entity.id == uIState.selectedId) { + : entity.id == uIState!.selectedId) { isSelected = true; } } - Color backgroundColor; + Color? backgroundColor; final rowColor = state.prefState.activeCustomColors[ PrefState.THEME_TABLE_ALTERNATE_ROW_BACKGROUND_COLOR] ?? ''; @@ -115,7 +115,7 @@ class EntityDataTableSource extends AppDataTableSource { children: [ IconButton( tooltip: prefState.enableTooltips - ? AppLocalization.of(context).longPressToSelect + ? AppLocalization.of(context)!.longPressToSelect : null, onPressed: () => editEntity(entity: entity), icon: GestureDetector( @@ -142,10 +142,10 @@ class EntityDataTableSource extends AppDataTableSource { onTap: () => onTap(entity), backgroundColor: backgroundColor, ), - ...tableColumns.map( + ...tableColumns!.map( (field) => DataCell( ConstrainedBox( - child: entityPresenter.getField(field: field, context: context), + child: entityPresenter!.getField(field: field, context: context), constraints: BoxConstraints( maxWidth: wideFields.contains(field) ? kTableColumnWidthMax * 1.5 diff --git a/lib/ui/app/tables/entity_list.dart b/lib/ui/app/tables/entity_list.dart index d3373887e..aded81db4 100644 --- a/lib/ui/app/tables/entity_list.dart +++ b/lib/ui/app/tables/entity_list.dart @@ -3,6 +3,7 @@ import 'dart:async'; import 'dart:math'; // Flutter imports: +import 'package:collection/collection.dart' show IterableNullableExtension; import 'package:flutter/material.dart' hide DataRow, DataCell, DataColumn; // Package imports: @@ -33,25 +34,25 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class EntityList extends StatefulWidget { EntityList({ - @required this.state, - @required this.entityType, - @required this.entityList, - @required this.onRefreshed, - @required this.onSortColumn, - @required this.itemBuilder, - @required this.onClearMultiselect, + required this.state, + required this.entityType, + required this.entityList, + required this.onRefreshed, + required this.onSortColumn, + required this.itemBuilder, + required this.onClearMultiselect, this.presenter, this.tableColumns, }) : super( key: ValueKey( - '__${entityType}_${tableColumns}_${state.uiState.filterEntityId}_${state.getUIState(entityType).listUIState.tableHashCode}__')); + '__${entityType}_${tableColumns}_${state.uiState.filterEntityId}_${state.getUIState(entityType)!.listUIState.tableHashCode}__')); final AppState state; final EntityType entityType; - final List tableColumns; - final List entityList; + final List? tableColumns; + final List entityList; final Function(BuildContext) onRefreshed; - final EntityPresenter presenter; + final EntityPresenter? presenter; final Function(String) onSortColumn; final Function(BuildContext, int) itemBuilder; final Function onClearMultiselect; @@ -61,7 +62,7 @@ class EntityList extends StatefulWidget { } class _EntityListState extends State { - EntityDataTableSource dataTableSource; + late EntityDataTableSource dataTableSource; int _firstRowIndex = 0; @@ -73,7 +74,7 @@ class _EntityListState extends State { final state = widget.state; final entityList = widget.entityList; final entityMap = state.getEntityMap(entityType); - final entityState = state.getUIState(entityType); + final entityState = state.getUIState(entityType)!; dataTableSource = EntityDataTableSource( context: context, @@ -81,7 +82,7 @@ class _EntityListState extends State { editingId: entityState.editingId, tableColumns: widget.tableColumns, entityList: entityList.toList(), - entityMap: entityMap, + entityMap: entityMap as BuiltMap?, entityPresenter: widget.presenter, onTap: (BaseEntity entity) => selectEntity(entity: entity), ); @@ -91,7 +92,7 @@ class _EntityListState extends State { final rowsPerPage = state.prefState.rowsPerPage; if (widget.entityList.isNotEmpty) { - if ((entityUIState.selectedId ?? '').isNotEmpty) { + if ((entityUIState!.selectedId ?? '').isNotEmpty) { final selectedIndex = widget.entityList.indexOf(entityUIState.selectedId); @@ -101,7 +102,7 @@ class _EntityListState extends State { } else { final history = state.historyList.first; if (history.page != null) { - _firstRowIndex = history.page * rowsPerPage; + _firstRowIndex = history.page! * rowsPerPage; } } } @@ -112,10 +113,10 @@ class _EntityListState extends State { super.didUpdateWidget(oldWidget); final state = widget.state; - final uiState = state.getUIState(widget.entityType); + final uiState = state.getUIState(widget.entityType)!; dataTableSource.editingId = uiState.editingId; dataTableSource.entityList = widget.entityList; - dataTableSource.entityMap = state.getEntityMap(widget.entityType); + dataTableSource.entityMap = state.getEntityMap(widget.entityType) as BuiltMap?; // ignore: invalid_use_of_visible_for_testing_member, invalid_use_of_protected_member dataTableSource.notifyListeners(); @@ -128,7 +129,7 @@ class _EntityListState extends State { final state = widget.state; final uiState = state.uiState; final entityType = widget.entityType; - final listUIState = state.getUIState(entityType).listUIState; + final listUIState = state.getUIState(entityType)!.listUIState; final isInMultiselect = listUIState.isInMultiselect(); final entityList = widget.entityList; final entityMap = state.getEntityMap(entityType); @@ -145,7 +146,7 @@ class _EntityListState extends State { // null is a special case which means we need to reselect // the current selection to add it to the history final entityId = shouldSelectEntity == null - ? state.getUIState(entityType).selectedId + ? state.getUIState(entityType)!.selectedId : (entityList.isEmpty ? null : entityList.first); WidgetsBinding.instance.addPostFrameCallback((duration) { @@ -173,7 +174,7 @@ class _EntityListState extends State { Expanded( child: entityList.isEmpty ? HelpText( - AppLocalization.of(context).clickPlusToCreateRecord) + AppLocalization.of(context)!.clickPlusToCreateRecord) : ScrollableListViewBuilder( primary: true, padding: const EdgeInsets.symmetric(vertical: 20), @@ -253,28 +254,28 @@ class _EntityListState extends State { min(_firstRowIndex + rowsPerPage, entityList.length); final entities = entityList .sublist(startIndex, endIndex) - .map( - (String entityId) => entityMap[entityId]) + .map( + (String? entityId) => entityMap![entityId] as BaseEntity?) .where((invoice) => - value != listUIState.isSelected(invoice.id)) + value != listUIState.isSelected(invoice!.id)) .toList(); handleEntitiesActions( entities, EntityAction.toggleMultiselect); }, columns: [ if (!isInMultiselect) DataColumn(label: SizedBox()), - ...widget.tableColumns.map((field) { - String label = - AppLocalization.of(context).lookup(field); + ...widget.tableColumns!.map((field) { + String? label = + AppLocalization.of(context)!.lookup(field); if (field.startsWith('custom')) { final key = field.replaceFirst( 'custom', entityType.snakeCase); - label = state.company.getCustomFieldLabel(key); + label = state.company!.getCustomFieldLabel(key); } return DataColumn( label: Container( child: Text( - label, + label!, overflow: TextOverflow.ellipsis, ), ), @@ -285,8 +286,8 @@ class _EntityListState extends State { ], source: dataTableSource, sortColumnIndex: - widget.tableColumns.contains(listUIState.sortField) - ? widget.tableColumns.indexOf(listUIState.sortField) + widget.tableColumns!.contains(listUIState.sortField) + ? widget.tableColumns!.indexOf(listUIState.sortField) : 0, sortAscending: listUIState.sortAscending, rowsPerPage: state.prefState.rowsPerPage, @@ -316,8 +317,8 @@ class _EntityListState extends State { final entities = listUIState.selectedIds == null ? [] - : listUIState.selectedIds - .map((entityId) => entityMap[entityId]) + : listUIState.selectedIds! + .map((entityId) => entityMap![entityId] as BaseEntity?) .toList(); final firstEntity = entities.isEmpty ? null : entities.first; final actions = (firstEntity?.getActions( @@ -326,11 +327,11 @@ class _EntityListState extends State { userCompany: state.userCompany, client: (firstEntity is BelongsToClient) ? state.clientState - .get((firstEntity as BelongsToClient).clientId) + .get((firstEntity as BelongsToClient).clientId!) : null, ) ?? []) - .where((action) => action != null); + .whereNotNull(); return RefreshIndicator( onRefresh: () => widget.onRefreshed(context), @@ -357,8 +358,8 @@ class _EntityListState extends State { min(entityList.length, kMaxEntitiesPerBulkAction); final entities = entityList .sublist(0, endIndex) - .map( - (entityId) => entityMap[entityId]) + .map( + (entityId) => entityMap![entityId] as BaseEntity?) .toList(); handleEntitiesActions( entities, EntityAction.toggleMultiselect); @@ -372,7 +373,7 @@ class _EntityListState extends State { padding: const EdgeInsets.symmetric(horizontal: 4), child: Text(isList ? '($countSelected)' - : localization.countSelected + : localization!.countSelected .replaceFirst(':count', '$countSelected')), ), Expanded( @@ -385,7 +386,7 @@ class _EntityListState extends State { (action) => OutlinedButton( child: IconText( icon: getEntityActionIcon(action), - text: localization.lookup('$action'), + text: localization!.lookup('$action'), ), onPressed: () { handleEntitiesActions(entities, action); @@ -402,7 +403,7 @@ class _EntityListState extends State { child: Row( children: [ Text( - localization.more, + localization!.more, style: TextStyle( color: state.prefState.enableDarkMode @@ -436,7 +437,7 @@ class _EntityListState extends State { .colorScheme .secondary), SizedBox(width: 16.0), - Text(AppLocalization.of(context) + Text(AppLocalization.of(context)! .lookup( action.toString()) ?? ''), @@ -452,7 +453,7 @@ class _EntityListState extends State { ] else ...[ SizedBox(width: 16), Expanded( - child: Text(localization.countSelected + child: Text(localization!.countSelected .replaceFirst(':count', '$countSelected')), ), SaveCancelButtons( @@ -466,7 +467,7 @@ class _EntityListState extends State { multiselect: true, completer: Completer() ..future.then( - (_) => widget.onClearMultiselect()), + ((_) => widget.onClearMultiselect()) as FutureOr Function(Null)), ); }, onCancelPressed: (_) => widget.onClearMultiselect(), diff --git a/lib/ui/app/upgrade_dialog.dart b/lib/ui/app/upgrade_dialog.dart index 2ac566e10..09d43b1f9 100644 --- a/lib/ui/app/upgrade_dialog.dart +++ b/lib/ui/app/upgrade_dialog.dart @@ -30,13 +30,13 @@ class UpgradeDialog extends StatefulWidget { class _UpgradeDialogState extends State { final _scrollController = ScrollController(); final InAppPurchase _inAppPurchase = InAppPurchase.instance; - StreamSubscription> _subscription; + late StreamSubscription> _subscription; List _products = []; List _purchases = []; bool _isAvailable = false; bool _purchasePending = false; bool _loading = true; - String _queryProductError; + String? _queryProductError; @override void initState() { @@ -78,7 +78,7 @@ class _UpgradeDialogState extends State { await _inAppPurchase.queryProductDetails(kProductPlans.toSet()); if (productDetailResponse.error != null) { setState(() { - _queryProductError = productDetailResponse.error.message; + _queryProductError = productDetailResponse.error!.message; _isAvailable = isAvailable; _products = productDetailResponse.productDetails; _purchases = []; @@ -123,7 +123,7 @@ class _UpgradeDialogState extends State { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final List stack = []; if (_queryProductError == null) { stack.add( @@ -151,7 +151,7 @@ class _UpgradeDialogState extends State { ); } else { stack.add(Center( - child: Text(_queryProductError), + child: Text(_queryProductError!), )); } if (_purchasePending) { @@ -183,7 +183,7 @@ class _UpgradeDialogState extends State { onPressed: () { _inAppPurchase.restorePurchases(); }, - child: Text(localization.restorePurchases)), + child: Text(localization.restorePurchases!)), TextButton( child: Text(localization.termsOfService), onPressed: () => launchUrl(Uri.parse(kTermsOfServiceURL)), @@ -221,7 +221,7 @@ class _UpgradeDialogState extends State { _products.sort((p1, p2) => p1.rawPrice.compareTo(p2.rawPrice)); productList.addAll(_products.map( (ProductDetails productDetails) { - final PurchaseDetails previousPurchase = purchases[productDetails.id]; + final PurchaseDetails? previousPurchase = purchases[productDetails.id]; return ListTile( title: Text(productDetails.description), @@ -244,11 +244,11 @@ class _UpgradeDialogState extends State { if (Platform.isAndroid) { purchaseParam = GooglePlayPurchaseParam( productDetails: productDetails, - applicationUserName: account.id); + applicationUserName: account!.id); } else { purchaseParam = PurchaseParam( productDetails: productDetails, - applicationUserName: account.id, + applicationUserName: account!.id, ); } @@ -258,7 +258,7 @@ class _UpgradeDialogState extends State { } }, child: Text(previousPurchase != null - ? AppLocalization.of(context).activate + ? AppLocalization.of(context)!.activate! : productDetails.price), ), SizedBox(height: 20), @@ -292,9 +292,9 @@ class _UpgradeDialogState extends State { final data = { 'inapp_transaction_id': purchaseDetails.purchaseID, - 'key': state.account.key, + 'key': state.account!.key, 'plan': purchaseDetails.productID.replaceAll('-', '_'), - 'plan_paid': (int.parse(purchaseDetails.transactionDate) / 1000).floor(), + 'plan_paid': (int.parse(purchaseDetails.transactionDate!) / 1000).floor(), }; await WebClient() @@ -309,7 +309,7 @@ class _UpgradeDialogState extends State { */ } - void handleError(IAPError error) { + void handleError(IAPError? error) { setState(() { _purchasePending = false; }); @@ -346,11 +346,11 @@ class _UpgradeDialogState extends State { ); if (priceChangeConfirmationResult.responseCode == BillingResponse.ok) { - showToast(localization.priceChangeAccepted); + showToast(localization!.priceChangeAccepted); } else { showErrorDialog( message: priceChangeConfirmationResult.debugMessage ?? - localization.priceChangeFailed + + localization!.priceChangeFailed! + ' ${priceChangeConfirmationResult.responseCode}'); } } diff --git a/lib/ui/app/variables.dart b/lib/ui/app/variables.dart index c8e955e32..4994e4e9d 100644 --- a/lib/ui/app/variables.dart +++ b/lib/ui/app/variables.dart @@ -29,7 +29,7 @@ class VariablesHelp extends StatefulWidget { class _VariablesHelpState extends State with SingleTickerProviderStateMixin { - TabController _controller; + TabController? _controller; @override void initState() { @@ -39,16 +39,16 @@ class _VariablesHelpState extends State @override void dispose() { - _controller.dispose(); + _controller!.dispose(); super.dispose(); } @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final store = StoreProvider.of(context); final state = store.state; - final company = state.company; + final company = state.company!; return FormCard( children: [ @@ -211,11 +211,11 @@ class _VariablesHelpState extends State class _VariableGrid extends StatelessWidget { const _VariableGrid({this.fields}); - final List fields; + final List? fields; @override Widget build(BuildContext context) { - fields.sort((a, b) => a.compareTo(b)); + fields!.sort((a, b) => a.compareTo(b)); return Padding( padding: const EdgeInsets.only(top: 16), @@ -227,7 +227,7 @@ class _VariableGrid extends StatelessWidget { primary: true, crossAxisCount: 2, childAspectRatio: ((constraints.maxWidth / 2) - 8) / 50, - children: fields + children: fields! .map( (field) => TextButton( child: Align( @@ -241,7 +241,7 @@ class _VariableGrid extends StatelessWidget { ), onPressed: () { Clipboard.setData(ClipboardData(text: '\$$field')); - showToast(AppLocalization.of(context) + showToast(AppLocalization.of(context)! .copiedToClipboard .replaceFirst(':value', '\$$field')); }, diff --git a/lib/ui/app/view_scaffold.dart b/lib/ui/app/view_scaffold.dart index 2f6a699e5..0a983ee22 100644 --- a/lib/ui/app/view_scaffold.dart +++ b/lib/ui/app/view_scaffold.dart @@ -20,8 +20,8 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class ViewScaffold extends StatelessWidget { const ViewScaffold({ - @required this.body, - @required this.entity, + required this.body, + required this.entity, this.appBarBottom, this.isFilter = false, this.onBackPressed, @@ -30,11 +30,11 @@ class ViewScaffold extends StatelessWidget { }); final bool isFilter; - final BaseEntity entity; + final BaseEntity? entity; final Widget body; - final Function onBackPressed; - final Widget appBarBottom; - final String title; + final Function? onBackPressed; + final Widget? appBarBottom; + final String? title; final bool isEditable; @override @@ -43,22 +43,22 @@ class ViewScaffold extends StatelessWidget { final store = StoreProvider.of(context); final state = store.state; final userCompany = state.userCompany; - final isSettings = entity.entityType.isSetting; + final isSettings = entity!.entityType!.isSetting; - String appBarTitle; + String? appBarTitle; if (title != null) { appBarTitle = title; - } else if (entity.isNew) { + } else if (entity!.isNew) { appBarTitle = ''; } else { final presenter = EntityPresenter().initialize(entity, context); appBarTitle = presenter.title(isNarrow: isMobile(context)); } - Widget leading; + Widget? leading; if (isDesktop(context)) { if (isFilter == true && - entity.entityType == state.uiState.filterEntityType) { + entity!.entityType == state.uiState.filterEntityType) { if (state.uiState.filterStack.length > 1 && !isFilter) { leading = IconButton( icon: Icon(Icons.arrow_back), @@ -74,11 +74,11 @@ class ViewScaffold extends StatelessWidget { } } else if (state.uiState.previewStack.isNotEmpty) { leading = IconButton( - tooltip: localization.back, + tooltip: localization!.back, icon: Icon(Icons.arrow_back), onPressed: () => store.dispatch(PopPreviewStack())); } else if (isDesktop(context) && - !entity.entityType.isSetting && + !entity!.entityType!.isSetting && state.prefState.isModuleTable) { leading = IconButton( icon: Icon(Icons.close), @@ -102,37 +102,37 @@ class ViewScaffold extends StatelessWidget { automaticallyImplyLeading: isMobile(context), title: CopyToClipboard( value: appBarTitle, - child: Text(appBarTitle), + child: Text(appBarTitle!), ), - bottom: appBarBottom, - actions: entity.isNew + bottom: appBarBottom as PreferredSizeWidget?, + actions: entity!.isNew ? [] : [ if (isSettings && isDesktop(context) && !isFilter) TextButton( onPressed: () { onBackPressed != null - ? onBackPressed() + ? onBackPressed!() : store.dispatch(UpdateCurrentRoute( state.uiState.previousRoute)); }, child: Text( - localization.back, + localization!.back, style: TextStyle(color: state.headerTextColor), )), - if (isEditable && userCompany.canEditEntity(entity)) + if (isEditable && userCompany!.canEditEntity(entity)) Builder(builder: (context) { final isDisabled = state.uiState.isEditing && state.uiState.mainRoute == state.uiState.filterEntityType.toString(); return AppTextButton( - label: localization.edit, + label: localization!.edit, isInHeader: true, onPressed: isDisabled ? null : () { - editEntity(entity: entity); + editEntity(entity: entity!); }, ); }), @@ -141,7 +141,7 @@ class ViewScaffold extends StatelessWidget { entity: entity, onSelected: (context, action) => handleEntityAction(entity, action, autoPop: true), - entityActions: entity.getActions( + entityActions: entity!.getActions( userCompany: userCompany, client: entity is BelongsToClient ? state.clientState @@ -152,8 +152,8 @@ class ViewScaffold extends StatelessWidget { ], ), body: SafeArea( - child: entity.isNew - ? BlankScreen(localization.noRecordSelected) + child: entity!.isNew + ? BlankScreen(localization!.noRecordSelected) : body, ), ), diff --git a/lib/ui/app/web_session_timeout.dart b/lib/ui/app/web_session_timeout.dart index df417006f..4fcf02272 100644 --- a/lib/ui/app/web_session_timeout.dart +++ b/lib/ui/app/web_session_timeout.dart @@ -19,14 +19,14 @@ import 'package:invoiceninja_flutter/utils/web_stub.dart' class WebSessionTimeout extends StatefulWidget { const WebSessionTimeout({this.child}); - final Widget child; + final Widget? child; @override _WebSessionTimeoutState createState() => _WebSessionTimeoutState(); } class _WebSessionTimeoutState extends State { - Timer _timer; + Timer? _timer; @override void initState() { @@ -41,7 +41,7 @@ class _WebSessionTimeoutState extends State { (Timer timer) { final store = StoreProvider.of(context); final state = store.state; - final sessionTimeout = state.company.sessionTimeout; + final sessionTimeout = state.company!.sessionTimeout; if (sessionTimeout == 0) { return; @@ -66,6 +66,6 @@ class _WebSessionTimeoutState extends State { @override Widget build(BuildContext context) { - return widget.child; + return widget.child!; } } diff --git a/lib/ui/app/web_socket_refresh.dart b/lib/ui/app/web_socket_refresh.dart index 27ec6b956..5188bd509 100644 --- a/lib/ui/app/web_socket_refresh.dart +++ b/lib/ui/app/web_socket_refresh.dart @@ -15,13 +15,13 @@ import 'package:flutter/material.dart'; class WebSocketRefresh extends StatefulWidget { const WebSocketRefresh({ - Key key, + Key? key, this.child, this.companyId, }) : super(key: key); - final Widget child; - final String companyId; + final Widget? child; + final String? companyId; @override _WebSocketRefreshState createState() => _WebSocketRefreshState(); @@ -91,5 +91,5 @@ class _WebSocketRefreshState extends State { } @override - Widget build(BuildContext context) => widget.child; + Widget build(BuildContext context) => widget.child!; } diff --git a/lib/ui/app/window_manager.dart b/lib/ui/app/window_manager.dart index 056229967..e0532084c 100644 --- a/lib/ui/app/window_manager.dart +++ b/lib/ui/app/window_manager.dart @@ -9,9 +9,9 @@ import 'package:shared_preferences/shared_preferences.dart'; import 'package:window_manager/window_manager.dart'; class WindowManager extends StatefulWidget { - const WindowManager({Key key, this.child}) : super(key: key); + const WindowManager({Key? key, this.child}) : super(key: key); - final Widget child; + final Widget? child; @override State createState() => _WindowManagerState(); @@ -61,7 +61,7 @@ class _WindowManagerState extends State with WindowListener { return; } - final store = StoreProvider.of(navigatorKey.currentContext); + final store = StoreProvider.of(navigatorKey.currentContext!); if (await windowManager.isPreventClose()) { checkForChanges( @@ -83,5 +83,5 @@ class _WindowManagerState extends State with WindowListener { } @override - Widget build(BuildContext context) => widget.child; + Widget build(BuildContext context) => widget.child!; } diff --git a/lib/ui/auth/lock_screen.dart b/lib/ui/auth/lock_screen.dart index 6defd0964..4d6fa8393 100644 --- a/lib/ui/auth/lock_screen.dart +++ b/lib/ui/auth/lock_screen.dart @@ -8,14 +8,14 @@ import 'package:material_design_icons_flutter/material_design_icons_flutter.dart import 'package:invoiceninja_flutter/utils/localization.dart'; class LockScreen extends StatelessWidget { - const LockScreen({@required this.onAuthenticatePressed}); + const LockScreen({required this.onAuthenticatePressed}); final Function onAuthenticatePressed; @override Widget build(BuildContext context) { //final localization = AppLocalization(Locale(Intl.defaultLocale)); - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; return Material( color: Colors.grey, @@ -43,7 +43,7 @@ class LockScreen extends StatelessWidget { ], ), ElevatedButton( - onPressed: onAuthenticatePressed, + onPressed: onAuthenticatePressed as void Function()?, child: Text(localization.authenticate), ) ], diff --git a/lib/ui/auth/login_view.dart b/lib/ui/auth/login_view.dart index 17d9f3feb..712cdb3c1 100644 --- a/lib/ui/auth/login_view.dart +++ b/lib/ui/auth/login_view.dart @@ -36,8 +36,8 @@ import 'package:invoiceninja_flutter/utils/web_stub.dart' class LoginView extends StatefulWidget { const LoginView({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final LoginVM viewModel; @@ -71,7 +71,7 @@ class _LoginState extends State { String _loginError = ''; String _loginType = LOGIN_TYPE_EMAIL; - List _loginTypes; + List? _loginTypes; bool _tokenLogin = false; bool _isSelfHosted = false; @@ -79,8 +79,8 @@ class _LoginState extends State { bool _recoverPassword = false; bool _disable2FA = false; - bool _termsChecked = false; - bool _privacyChecked = false; + bool? _termsChecked = false; + bool? _privacyChecked = false; @override void initState() { @@ -145,7 +145,7 @@ class _LoginState extends State { } void _submitSignUpForm() { - final isValid = _formKey.currentState.validate(); + final isValid = _formKey.currentState!.validate(); final localization = AppLocalization.of(context); final viewModel = widget.viewModel; final url = _getUrl(); @@ -159,21 +159,21 @@ class _LoginState extends State { return; } - if (_createAccount && (!_termsChecked || !_privacyChecked)) { + if (_createAccount && (!_termsChecked! || !_privacyChecked!)) { _buttonController.reset(); showDialog( context: context, builder: (BuildContext context) { return AlertDialog( - title: Text(!_termsChecked - ? localization.termsOfService - : localization.privacyPolicy), + title: Text(!_termsChecked! + ? localization!.termsOfService + : localization!.privacyPolicy), content: Text(localization.pleaseAgreeToTermsAndPrivacy), actions: [ Padding( padding: const EdgeInsets.only(right: 8), child: TextButton( - child: Text(AppLocalization.of(context).close), + child: Text(AppLocalization.of(context)!.close), onPressed: () => Navigator.of(context).pop(), ), ) @@ -188,7 +188,7 @@ class _LoginState extends State { setState(() { _loginError = ''; }); - }).catchError((Object error) { + } as FutureOr<_> Function(Null)).catchError((Object error) { setState(() { _buttonController.reset(); _loginError = error.toString(); @@ -212,7 +212,7 @@ class _LoginState extends State { } void _submitLoginForm() { - final isValid = _formKey.currentState.validate(); + final isValid = _formKey.currentState!.validate(); final viewModel = widget.viewModel; setState(() { @@ -236,11 +236,11 @@ class _LoginState extends State { context: context, builder: (BuildContext context) { return MessageDialog( - AppLocalization.of(context).recoverPasswordEmailSent); + AppLocalization.of(context)!.recoverPasswordEmailSent); }); } }); - }).catchError((Object error) { + } as FutureOr<_> Function(Null)).catchError((Object error) { setState(() { _buttonController.reset(); _loginError = error.toString(); @@ -326,8 +326,8 @@ class _LoginState extends State { final state = viewModel.state; final ThemeData themeData = Theme.of(context); - final TextStyle aboutTextStyle = themeData.textTheme.bodyMedium; - final TextStyle linkStyle = themeData.textTheme.bodyMedium + final TextStyle? aboutTextStyle = themeData.textTheme.bodyMedium; + final TextStyle linkStyle = themeData.textTheme.bodyMedium! .copyWith(color: convertHexStringToColor(kDefaultAccentColor)); final double horizontalPadding = @@ -374,7 +374,7 @@ class _LoginState extends State { children: [ DecoratedFormField( autofocus: true, - label: localization.token, + label: localization!.token, controller: _tokenController, keyboardType: TextInputType.text, ), @@ -403,7 +403,7 @@ class _LoginState extends State { SizedBox(height: 20), if (!_recoverPassword && (!kIsWeb || !kReleaseMode)) ...[ - RuledText(localization.selectPlatform), + RuledText(localization!.selectPlatform), Padding( padding: const EdgeInsets.only(bottom: 20), child: AppToggleButtons( @@ -425,16 +425,16 @@ class _LoginState extends State { ), ), ], - if (!_isSelfHosted && _loginTypes.length > 1) ...[ - RuledText(localization.selectMethod), + if (!_isSelfHosted && _loginTypes!.length > 1) ...[ + RuledText(localization!.selectMethod), Padding( padding: const EdgeInsets.only(bottom: 20), child: AppToggleButtons( tabLabels: _loginTypes, - selectedIndex: _loginTypes.indexOf(_loginType), + selectedIndex: _loginTypes!.indexOf(_loginType), onTabChanged: (index) { setState(() { - _loginType = _loginTypes[index]; + _loginType = _loginTypes![index]; _loginError = ''; }); }, @@ -449,7 +449,7 @@ class _LoginState extends State { if (_loginType == LOGIN_TYPE_EMAIL) DecoratedFormField( controller: _emailController, - label: localization.email, + label: localization!.email, keyboardType: TextInputType.emailAddress, validator: (val) => val.isEmpty || val.trim().isEmpty @@ -470,7 +470,7 @@ class _LoginState extends State { DecoratedFormField( controller: _oneTimePasswordController, label: - '2FA - ${localization.oneTimePassword} (${localization.optional})', + '2FA - ${localization!.oneTimePassword} (${localization.optional})', onSavePressed: (_) => _submitForm(), keyboardType: TextInputType.number, autofillHints: [AutofillHints.oneTimeCode], @@ -478,7 +478,7 @@ class _LoginState extends State { if (_isSelfHosted && !kIsWeb) DecoratedFormField( controller: _urlController, - label: localization.url, + label: localization!.url, validator: (val) => val.isEmpty || val.trim().isEmpty ? localization.pleaseEnterYourUrl @@ -489,7 +489,7 @@ class _LoginState extends State { if (_isSelfHosted && !_recoverPassword) PasswordFormField( labelText: - '${localization.secret} (${localization.optional})', + '${localization!.secret} (${localization.optional})', controller: _secretController, validate: false, onSavePressed: (_) => _submitForm(), @@ -512,7 +512,7 @@ class _LoginState extends State { children: [ TextSpan( style: aboutTextStyle, - text: localization.iAgreeToThe + + text: localization!.iAgreeToThe + ' ', ), LinkTextSpan( @@ -578,7 +578,7 @@ class _LoginState extends State { ), IconButton( icon: Icon(Icons.content_copy), - tooltip: localization.copyError, + tooltip: localization!.copyError, onPressed: () { Clipboard.setData( ClipboardData(text: _loginError)); @@ -628,27 +628,27 @@ class _LoginState extends State { SizedBox(width: 10), Text( _disable2FA - ? localization.sendCode + ? localization!.sendCode! : _recoverPassword - ? localization.recoverPassword + ? localization!.recoverPassword : _createAccount ? (_loginType == LOGIN_TYPE_EMAIL - ? localization.emailSignUp + ? localization!.emailSignUp : _loginType == LOGIN_TYPE_MICROSOFT - ? localization - .microsoftSignUp - : localization + ? localization! + .microsoftSignUp! + : localization! .googleSignUp) : (_loginType == LOGIN_TYPE_EMAIL - ? localization.emailSignIn + ? localization!.emailSignIn : _loginType == LOGIN_TYPE_MICROSOFT - ? localization - .microsoftSignIn - : localization + ? localization! + .microsoftSignIn! + : localization! .googleSignIn), style: TextStyle( fontSize: 18, color: Colors.white), @@ -665,8 +665,8 @@ class _LoginState extends State { child: TextButton( child: Text( _createAccount - ? localization.loginLabel - : localization.registerLabel, + ? localization!.loginLabel! + : localization!.registerLabel!, textAlign: TextAlign.center, ), onPressed: () { @@ -710,7 +710,7 @@ class _LoginState extends State { children: [ Icon(Icons.lock, size: 16), SizedBox(width: 8), - Text(localization.disable2fa), + Text(localization!.disable2fa!), ]), ), ), @@ -732,7 +732,7 @@ class _LoginState extends State { children: [ Icon(Icons.cancel, size: 16), SizedBox(width: 8), - Text(localization.cancel), + Text(localization!.cancel), ]), ), ), @@ -754,8 +754,8 @@ class _LoginState extends State { Icon(MdiIcons.lock, size: 16), SizedBox(width: 8), Text(_recoverPassword - ? localization.cancel - : localization.recoverPassword), + ? localization!.cancel + : localization!.recoverPassword), ]), ), ), @@ -772,7 +772,7 @@ class _LoginState extends State { children: [ Icon(Icons.security, size: 16), SizedBox(width: 8), - Text(localization.checkStatus) + Text(localization!.checkStatus!) ], ), ), @@ -790,7 +790,7 @@ class _LoginState extends State { children: [ Icon(getNativeAppIcon(platform), size: 16), SizedBox(width: 8), - Text('$platform ${localization.app}') + Text('$platform ${localization!.app}') ], ), ), @@ -806,7 +806,7 @@ class _LoginState extends State { children: [ Icon(Icons.book, size: 16), SizedBox(width: 8), - Text(localization.documentation) + Text(localization!.documentation) ], ), ), @@ -826,7 +826,7 @@ class _LoginState extends State { class RuledText extends StatelessWidget { const RuledText(this.text); - final String text; + final String? text; @override Widget build(BuildContext context) { @@ -851,7 +851,7 @@ class RuledText extends StatelessWidget { Padding( padding: const EdgeInsets.symmetric(horizontal: 16), child: Text( - text, + text!, style: TextStyle( color: Colors.grey, fontSize: 15, diff --git a/lib/ui/auth/login_vm.dart b/lib/ui/auth/login_vm.dart index 74d5cd142..930e456c1 100644 --- a/lib/ui/auth/login_vm.dart +++ b/lib/ui/auth/login_vm.dart @@ -31,7 +31,7 @@ import 'package:invoiceninja_flutter/utils/web_stub.dart' if (dart.library.html) 'package:invoiceninja_flutter/utils/web.dart'; class LoginScreen extends StatelessWidget { - const LoginScreen({Key key}) : super(key: key); + const LoginScreen({Key? key}) : super(key: key); static const String route = '/login'; @@ -52,19 +52,19 @@ class LoginScreen extends StatelessWidget { class LoginVM { LoginVM({ - @required this.state, - @required this.isLoading, - @required this.authState, - @required this.onLoginPressed, - @required this.onRecoverPressed, - @required this.onSignUpPressed, - @required this.onGoogleLoginPressed, - @required this.onGoogleSignUpPressed, - @required this.onMicrosoftLoginPressed, - @required this.onMicrosoftSignUpPressed, - @required this.onAppleLoginPressed, - @required this.onAppleSignUpPressed, - @required this.onTokenLoginPressed, + required this.state, + required this.isLoading, + required this.authState, + required this.onLoginPressed, + required this.onRecoverPressed, + required this.onSignUpPressed, + required this.onGoogleLoginPressed, + required this.onGoogleSignUpPressed, + required this.onMicrosoftLoginPressed, + required this.onMicrosoftSignUpPressed, + required this.onAppleLoginPressed, + required this.onAppleSignUpPressed, + required this.onTokenLoginPressed, }); AppState state; @@ -74,32 +74,32 @@ class LoginVM { final Function( BuildContext, Completer completer, { - @required String email, - @required String password, - @required String url, - @required String secret, - @required String oneTimePassword, + required String email, + required String password, + required String url, + required String secret, + required String oneTimePassword, }) onLoginPressed; final Function( BuildContext, Completer completer, { - @required String email, - @required String url, - @required String secret, + required String email, + required String url, + required String secret, }) onRecoverPressed; final Function( BuildContext, Completer completer, { - @required String email, - @required String password, + required String email, + required String password, }) onSignUpPressed; final Function( BuildContext, Completer completer, { - @required String token, + required String token, }) onTokenLoginPressed; final Function(BuildContext, Completer completer, @@ -115,12 +115,12 @@ class LoginVM { onMicrosoftSignUpPressed; final Function(BuildContext, Completer completer, - {String url, String secret, String oneTimePassword}) onAppleLoginPressed; - final Function(BuildContext, Completer completer, String url) + {String url, String? secret, String? oneTimePassword}) onAppleLoginPressed; + final Function(BuildContext, Completer completer, String? url) onAppleSignUpPressed; static LoginVM fromStore(Store store) { - void _handleLogin({BuildContext context, bool isSignUp = false}) { + void _handleLogin({required BuildContext context, bool isSignUp = false}) { final layout = calculateLayout(context); final moduleLayout = layout == AppLayout.desktop ? ModuleLayout.table : ModuleLayout.list; @@ -128,7 +128,7 @@ class LoginVM { appLayout: layout, moduleLayout: isSignUp ? moduleLayout : null, )); - AppBuilder.of(context).rebuild(); + AppBuilder.of(context)!.rebuild(); WidgetsBinding.instance.addPostFrameCallback((duration) { if (layout == AppLayout.mobile) { @@ -162,9 +162,9 @@ class LoginVM { onGoogleLoginPressed: ( BuildContext context, Completer completer, { - @required String url, - @required String secret, - @required String oneTimePassword, + required String url, + required String secret, + required String oneTimePassword, }) async { try { await GoogleOAuth.signOut(); @@ -172,7 +172,7 @@ class LoginVM { if (idToken.isEmpty || accessToken.isEmpty) { GoogleOAuth.signOut(); completer.completeError( - AppLocalization.of(context).anErrorOccurredTryAgain); + AppLocalization.of(context)!.anErrorOccurredTryAgain); } else { store.dispatch(OAuthLoginRequest( completer: completer, @@ -184,12 +184,12 @@ class LoginVM { provider: UserEntity.OAUTH_PROVIDER_GOOGLE, oneTimePassword: oneTimePassword, )); - completer.future.then((_) => _handleLogin(context: context)); + completer.future.then(((_) => _handleLogin(context: context)) as FutureOr<_> Function(Null)); } }); if (!signedIn) { completer.completeError( - AppLocalization.of(navigatorKey.currentContext) + AppLocalization.of(navigatorKey.currentContext!)! .anErrorOccurredTryAgain); } } catch (error) { @@ -205,7 +205,7 @@ class LoginVM { if (idToken.isEmpty || accessToken.isEmpty) { GoogleOAuth.signOut(); completer.completeError( - AppLocalization.of(context).anErrorOccurredTryAgain); + AppLocalization.of(context)!.anErrorOccurredTryAgain); } else { store.dispatch(OAuthSignUpRequest( url: url, @@ -215,12 +215,12 @@ class LoginVM { provider: UserEntity.OAUTH_PROVIDER_GOOGLE, )); completer.future - .then((_) => _handleLogin(context: context, isSignUp: true)); + .then(((_) => _handleLogin(context: context, isSignUp: true)) as FutureOr<_> Function(Null)); } }); if (!signedIn) { completer.completeError( - AppLocalization.of(navigatorKey.currentContext) + AppLocalization.of(navigatorKey.currentContext!)! .anErrorOccurredTryAgain); } } catch (error) { @@ -231,9 +231,9 @@ class LoginVM { onMicrosoftLoginPressed: ( BuildContext context, Completer completer, { - @required String url, - @required String secret, - @required String oneTimePassword, + required String url, + required String secret, + required String oneTimePassword, }) async { try { WebUtils.microsoftLogin((idToken, accessToken) { @@ -247,7 +247,7 @@ class LoginVM { provider: UserEntity.OAUTH_PROVIDER_MICROSOFT, oneTimePassword: oneTimePassword, )); - completer.future.then((_) => _handleLogin(context: context)); + completer.future.then(((_) => _handleLogin(context: context)) as FutureOr<_> Function(Null)); }, (dynamic error) { completer.completeError(error); }); @@ -268,7 +268,7 @@ class LoginVM { accessToken: accessToken, )); completer.future - .then((_) => _handleLogin(context: context, isSignUp: true)); + .then(((_) => _handleLogin(context: context, isSignUp: true)) as FutureOr<_> Function(Null)); }, (dynamic error) { completer.completeError(error); }); @@ -280,9 +280,9 @@ class LoginVM { onAppleLoginPressed: ( BuildContext context, Completer completer, { - @required String url, - @required String secret, - @required String oneTimePassword, + required String url, + required String secret, + required String oneTimePassword, }) async { try { final credentials = await SignInWithApple.getAppleIDCredential( @@ -300,14 +300,14 @@ class LoginVM { completer: completer, url: _formatApiUrl(url), secret: secret.trim(), - platform: getPlatform(navigatorKey.currentContext), + platform: getPlatform(navigatorKey.currentContext!), provider: UserEntity.OAUTH_PROVIDER_APPLE, oneTimePassword: oneTimePassword, email: credentials.email, authCode: credentials.authorizationCode, idToken: credentials.identityToken, )); - completer.future.then((_) => _handleLogin(context: context)); + completer.future.then(((_) => _handleLogin(context: context)) as FutureOr<_> Function(Null)); } catch (error) { completer.completeError(error); print('## onAppleLoginPressed: $error'); @@ -336,7 +336,7 @@ class LoginVM { lastName: credentials.familyName, )); completer.future - .then((_) => _handleLogin(context: context, isSignUp: true)); + .then(((_) => _handleLogin(context: context, isSignUp: true)) as FutureOr<_> Function(Null)); } catch (error) { completer.completeError(error); print('## onAppleSignUpPressed: $error'); @@ -345,8 +345,8 @@ class LoginVM { onSignUpPressed: ( BuildContext context, Completer completer, { - @required String email, - @required String password, + required String email, + required String password, }) async { if (store.state.isLoading) { return; @@ -358,14 +358,14 @@ class LoginVM { password: password.trim(), )); completer.future - .then((_) => _handleLogin(context: context, isSignUp: true)); + .then(((_) => _handleLogin(context: context, isSignUp: true)) as FutureOr<_> Function(Null)); }, onRecoverPressed: ( BuildContext context, Completer completer, { - @required String email, - @required String url, - @required String secret, + required String email, + required String url, + required String secret, }) async { if (store.state.isLoading) { return; @@ -381,11 +381,11 @@ class LoginVM { onLoginPressed: ( BuildContext context, Completer completer, { - @required String email, - @required String password, - @required String url, - @required String secret, - @required String oneTimePassword, + required String email, + required String password, + required String url, + required String secret, + required String oneTimePassword, }) async { if (store.state.isLoading) { return; @@ -400,10 +400,10 @@ class LoginVM { platform: getPlatform(context), oneTimePassword: oneTimePassword.trim(), )); - completer.future.then((_) => _handleLogin(context: context)); + completer.future.then(((_) => _handleLogin(context: context)) as FutureOr<_> Function(Null)); }, onTokenLoginPressed: (BuildContext context, Completer completer, - {@required String token}) async { + {required String token}) async { final SharedPreferences prefs = await SharedPreferences.getInstance(); prefs.setString(kSharedPrefToken, TokenEntity.obscureToken(token)); prefs.setString(kSharedPrefUrl, kAppProductionUrl); diff --git a/lib/ui/bank_account/bank_account_list_item.dart b/lib/ui/bank_account/bank_account_list_item.dart index 0b4f134ac..b234eef51 100644 --- a/lib/ui/bank_account/bank_account_list_item.dart +++ b/lib/ui/bank_account/bank_account_list_item.dart @@ -11,21 +11,21 @@ import 'package:invoiceninja_flutter/utils/strings.dart'; class BankAccountListItem extends StatelessWidget { const BankAccountListItem({ - @required this.user, - @required this.bankAccount, - @required this.filter, + required this.user, + required this.bankAccount, + required this.filter, this.onTap, this.onLongPress, this.onCheckboxChanged, this.isChecked = false, }); - final UserEntity user; - final GestureTapCallback onTap; - final GestureTapCallback onLongPress; - final BankAccountEntity bankAccount; - final String filter; - final Function(bool) onCheckboxChanged; + final UserEntity? user; + final GestureTapCallback? onTap; + final GestureTapCallback? onLongPress; + final BankAccountEntity? bankAccount; + final String? filter; + final Function(bool?)? onCheckboxChanged; final bool isChecked; @override @@ -42,23 +42,23 @@ class BankAccountListItem extends StatelessWidget { return DismissibleEntity( userCompany: state.userCompany, entity: bankAccount, - isSelected: bankAccount.id == + isSelected: bankAccount!.id == (uiState.isEditing - ? bankAccountUIState.editing.id + ? bankAccountUIState.editing!.id : bankAccountUIState.selectedId), child: ListTile( onTap: () => - onTap != null ? onTap() : selectEntity(entity: bankAccount), + onTap != null ? onTap!() : selectEntity(entity: bankAccount!), onLongPress: () => onLongPress != null - ? onLongPress() - : selectEntity(entity: bankAccount, longPress: true), + ? onLongPress!() + : selectEntity(entity: bankAccount!, longPress: true), leading: showCheckbox ? IgnorePointer( ignoring: listUIState.isInMultiselect(), child: Checkbox( value: isChecked, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, - onChanged: (value) => onCheckboxChanged(value), + onChanged: (value) => onCheckboxChanged!(value), activeColor: Theme.of(context).colorScheme.secondary, ), ) @@ -69,12 +69,12 @@ class BankAccountListItem extends StatelessWidget { children: [ Expanded( child: Text( - bankAccount.name, + bankAccount!.name, style: Theme.of(context).textTheme.titleMedium, ), ), - if (bankAccount.isConnected) - Text(formatNumber(bankAccount.balance, context), + if (bankAccount!.isConnected) + Text(formatNumber(bankAccount!.balance, context)!, style: Theme.of(context).textTheme.titleMedium), ], ), @@ -82,9 +82,9 @@ class BankAccountListItem extends StatelessWidget { subtitle: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text(toTitleCase(bankAccount.type) + - (bankAccount.disabledUpstream - ? ' • ${localization.disabled}' + Text(toTitleCase(bankAccount!.type) + + (bankAccount!.disabledUpstream + ? ' • ${localization!.disabled}' : '')), EntityStateLabel(bankAccount), ], diff --git a/lib/ui/bank_account/bank_account_list_vm.dart b/lib/ui/bank_account/bank_account_list_vm.dart index 5cc17d391..55f5f5bfa 100644 --- a/lib/ui/bank_account/bank_account_list_vm.dart +++ b/lib/ui/bank_account/bank_account_list_vm.dart @@ -17,7 +17,7 @@ import 'package:invoiceninja_flutter/redux/app/app_state.dart'; import 'package:invoiceninja_flutter/redux/bank_account/bank_account_actions.dart'; class BankAccountListBuilder extends StatelessWidget { - const BankAccountListBuilder({Key key}) : super(key: key); + const BankAccountListBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -45,7 +45,7 @@ class BankAccountListBuilder extends StatelessWidget { filter: viewModel.filter, bankAccount: bankAccount, isChecked: - isInMultiselect && listState.isSelected(bankAccount.id), + isInMultiselect && listState.isSelected(bankAccount!.id), ); }); }, @@ -55,18 +55,18 @@ class BankAccountListBuilder extends StatelessWidget { class BankAccountListVM { BankAccountListVM({ - @required this.state, - @required this.userCompany, - @required this.bankAccountList, - @required this.bankAccountMap, - @required this.filter, - @required this.isLoading, - @required this.listState, - @required this.onRefreshed, - @required this.onEntityAction, - @required this.tableColumns, - @required this.onSortColumn, - @required this.onClearMultielsect, + required this.state, + required this.userCompany, + required this.bankAccountList, + required this.bankAccountMap, + required this.filter, + required this.isLoading, + required this.listState, + required this.onRefreshed, + required this.onEntityAction, + required this.tableColumns, + required this.onSortColumn, + required this.onClearMultielsect, }); static BankAccountListVM fromStore(Store store) { @@ -75,7 +75,7 @@ class BankAccountListVM { return Future(null); } final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(RefreshData(completer: completer)); return completer.future; } @@ -99,7 +99,7 @@ class BankAccountListVM { handleBankAccountAction(context, bankAccounts, action), onRefreshed: (context) => _handleRefresh(context), tableColumns: - state.userCompany.settings?.getTableColumns(EntityType.bankAccount) ?? + state.userCompany!.settings?.getTableColumns(EntityType.bankAccount) ?? BankAccountPresenter.getDefaultTableFields(state.userCompany), onSortColumn: (field) => store.dispatch(SortBankAccounts(field)), onClearMultielsect: () => store.dispatch(ClearBankAccountMultiselect()), @@ -107,11 +107,11 @@ class BankAccountListVM { } final AppState state; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List bankAccountList; - final BuiltMap bankAccountMap; + final BuiltMap bankAccountMap; final ListUIState listState; - final String filter; + final String? filter; final bool isLoading; final Function(BuildContext) onRefreshed; final Function(BuildContext, List, EntityAction) onEntityAction; diff --git a/lib/ui/bank_account/bank_account_presenter.dart b/lib/ui/bank_account/bank_account_presenter.dart index 110080967..e221ba239 100644 --- a/lib/ui/bank_account/bank_account_presenter.dart +++ b/lib/ui/bank_account/bank_account_presenter.dart @@ -3,11 +3,11 @@ import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/ui/app/presenters/entity_presenter.dart'; class BankAccountPresenter extends EntityPresenter { - static List getDefaultTableFields(UserCompanyEntity userCompany) { + static List getDefaultTableFields(UserCompanyEntity? userCompany) { return []; } - static List getAllTableFields(UserCompanyEntity userCompany) { + static List getAllTableFields(UserCompanyEntity? userCompany) { return [ ...getDefaultTableFields(userCompany), ...EntityPresenter.getBaseFields(), @@ -15,7 +15,7 @@ class BankAccountPresenter extends EntityPresenter { } @override - Widget getField({String field, BuildContext context}) { + Widget getField({String? field, required BuildContext context}) { //final state = StoreProvider.of(context).state; //final bankAccount = entity as InvoiceEntity; diff --git a/lib/ui/bank_account/bank_account_screen.dart b/lib/ui/bank_account/bank_account_screen.dart index d54b2ea86..f848e22d7 100644 --- a/lib/ui/bank_account/bank_account_screen.dart +++ b/lib/ui/bank_account/bank_account_screen.dart @@ -25,8 +25,8 @@ import 'bank_account_screen_vm.dart'; class BankAccountScreen extends StatelessWidget { const BankAccountScreen({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); static const String route = '/$kSettings/$kSettingsBankAccounts'; @@ -98,7 +98,7 @@ class BankAccountScreen extends StatelessWidget { if (state.isEnterprisePlan) ...[ Expanded( child: AppButton( - label: localization.connect.toUpperCase(), + label: localization!.connect!.toUpperCase(), onPressed: () => connectAccounts(context), iconData: Icons.link, ), @@ -119,7 +119,7 @@ class BankAccountScreen extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - HelpText(localization.upgradeToConnectBankAccount), + HelpText(localization!.upgradeToConnectBankAccount), SizedBox(height: 16), Row( children: [ @@ -149,8 +149,8 @@ class BankAccountScreen extends StatelessWidget { Expanded( child: AppButton( label: (state.isHosted - ? localization.rules - : localization.manageRules) + ? localization!.rules + : localization!.manageRules)! .toUpperCase(), onPressed: () { store.dispatch( diff --git a/lib/ui/bank_account/bank_account_screen_vm.dart b/lib/ui/bank_account/bank_account_screen_vm.dart index 1d734dd71..3588e069b 100644 --- a/lib/ui/bank_account/bank_account_screen_vm.dart +++ b/lib/ui/bank_account/bank_account_screen_vm.dart @@ -15,7 +15,7 @@ import 'package:invoiceninja_flutter/utils/dialogs.dart'; import 'bank_account_screen.dart'; class BankAccountScreenBuilder extends StatelessWidget { - const BankAccountScreenBuilder({Key key}) : super(key: key); + const BankAccountScreenBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -32,19 +32,19 @@ class BankAccountScreenBuilder extends StatelessWidget { class BankAccountScreenVM { BankAccountScreenVM({ - @required this.isInMultiselect, - @required this.bankAccountList, - @required this.userCompany, - @required this.onEntityAction, - @required this.bankAccountMap, - @required this.onRefreshAccounts, + required this.isInMultiselect, + required this.bankAccountList, + required this.userCompany, + required this.onEntityAction, + required this.bankAccountMap, + required this.onRefreshAccounts, }); final bool isInMultiselect; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List bankAccountList; final Function(BuildContext, List, EntityAction) onEntityAction; - final BuiltMap bankAccountMap; + final BuiltMap bankAccountMap; final Function(BuildContext) onRefreshAccounts; static BankAccountScreenVM fromStore(Store store) { @@ -74,7 +74,7 @@ class BankAccountScreenVM { webClient.post(url, credentials.token).then((dynamic response) { store.dispatch(StopSaving()); store.dispatch(RefreshData()); - showToast(localization.refreshComplete); + showToast(localization!.refreshComplete); }).catchError((dynamic error) { store.dispatch(StopSaving()); showErrorDialog(message: '$error'); diff --git a/lib/ui/bank_account/edit/bank_account_edit.dart b/lib/ui/bank_account/edit/bank_account_edit.dart index a3bb7ef30..d37d2683c 100644 --- a/lib/ui/bank_account/edit/bank_account_edit.dart +++ b/lib/ui/bank_account/edit/bank_account_edit.dart @@ -14,8 +14,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class BankAccountEdit extends StatefulWidget { const BankAccountEdit({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final BankAccountEditVM viewModel; @@ -74,7 +74,7 @@ class _BankAccountEditState extends State { } void _onSavePressed() { - final bool isValid = _formKey.currentState.validate(); + final bool isValid = _formKey.currentState!.validate(); if (!isValid) { return; @@ -85,7 +85,7 @@ class _BankAccountEditState extends State { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; final bankAccount = viewModel.bankAccount; @@ -127,7 +127,7 @@ class _BankAccountEditState extends State { SizedBox(height: 16), SwitchListTile( activeColor: Theme.of(context).colorScheme.secondary, - title: Text(localization.autoSync), + title: Text(localization.autoSync!), value: bankAccount.autoSync, onChanged: (value) => viewModel.onChanged( bankAccount.rebuild((b) => b..autoSync = value)), diff --git a/lib/ui/bank_account/edit/bank_account_edit_vm.dart b/lib/ui/bank_account/edit/bank_account_edit_vm.dart index 48a22b1ce..3439d8e89 100644 --- a/lib/ui/bank_account/edit/bank_account_edit_vm.dart +++ b/lib/ui/bank_account/edit/bank_account_edit_vm.dart @@ -23,7 +23,7 @@ import 'package:invoiceninja_flutter/ui/bank_account/view/bank_account_view_vm.d import 'package:invoiceninja_flutter/utils/completers.dart'; class BankAccountEditScreen extends StatelessWidget { - const BankAccountEditScreen({Key key}) : super(key: key); + const BankAccountEditScreen({Key? key}) : super(key: key); static const String route = '/$kSettings/$kSettingsBankAccountsEdit'; @@ -45,21 +45,21 @@ class BankAccountEditScreen extends StatelessWidget { class BankAccountEditVM { BankAccountEditVM({ - @required this.state, - @required this.company, - @required this.bankAccount, - @required this.origBankAccount, - @required this.onChanged, - @required this.onSavePressed, - @required this.onCancelPressed, - @required this.onEntityAction, - @required this.isSaving, - @required this.isDirty, + required this.state, + required this.company, + required this.bankAccount, + required this.origBankAccount, + required this.onChanged, + required this.onSavePressed, + required this.onCancelPressed, + required this.onEntityAction, + required this.isSaving, + required this.isDirty, }); factory BankAccountEditVM.fromStore(Store store) { final state = store.state; - final bankAccount = state.bankAccountUIState.editing; + final bankAccount = state.bankAccountUIState.editing!; return BankAccountEditVM( state: state, @@ -86,23 +86,23 @@ class BankAccountEditVM { store.dispatch(SaveBankAccountRequest( completer: completer, bankAccount: bankAccount)); return completer.future.then((savedBankAccount) { - showToast(bankAccount.isNew - ? localization.createdBankAccount - : localization.updatedBankAccount); + showToast(bankAccount!.isNew + ? localization!.createdBankAccount + : localization!.updatedBankAccount); if (state.prefState.isMobile) { store.dispatch(UpdateCurrentRoute(BankAccountViewScreen.route)); if (bankAccount.isNew) { - navigator.pushReplacementNamed(BankAccountViewScreen.route); + navigator!.pushReplacementNamed(BankAccountViewScreen.route); } else { - navigator.pop(savedBankAccount); + navigator!.pop(savedBankAccount); } } else { viewEntity(entity: savedBankAccount); } }).catchError((Object error) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { return ErrorDialog(error); }); @@ -125,9 +125,9 @@ class BankAccountEditVM { } final AppState state; - final CompanyEntity company; + final CompanyEntity? company; final BankAccountEntity bankAccount; - final BankAccountEntity origBankAccount; + final BankAccountEntity? origBankAccount; final Function(BankAccountEntity) onChanged; final Function(BuildContext) onSavePressed; final Function(BuildContext) onCancelPressed; diff --git a/lib/ui/bank_account/view/bank_account_view.dart b/lib/ui/bank_account/view/bank_account_view.dart index 0d77ceb8b..1069338bc 100644 --- a/lib/ui/bank_account/view/bank_account_view.dart +++ b/lib/ui/bank_account/view/bank_account_view.dart @@ -14,9 +14,9 @@ import 'package:invoiceninja_flutter/utils/strings.dart'; class BankAccountView extends StatefulWidget { const BankAccountView({ - Key key, - @required this.viewModel, - @required this.isFilter, + Key? key, + required this.viewModel, + required this.isFilter, }) : super(key: key); final BankAccountViewVM viewModel; @@ -29,7 +29,7 @@ class BankAccountView extends StatefulWidget { class _BankAccountViewState extends State { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; final bankAccount = viewModel.bankAccount; final state = viewModel.state; diff --git a/lib/ui/bank_account/view/bank_account_view_vm.dart b/lib/ui/bank_account/view/bank_account_view_vm.dart index 49b1a9733..a06d8029b 100644 --- a/lib/ui/bank_account/view/bank_account_view_vm.dart +++ b/lib/ui/bank_account/view/bank_account_view_vm.dart @@ -15,7 +15,7 @@ import 'package:invoiceninja_flutter/redux/app/app_state.dart'; class BankAccountViewScreen extends StatelessWidget { const BankAccountViewScreen({ - Key key, + Key? key, this.isFilter = false, }) : super(key: key); @@ -41,15 +41,15 @@ class BankAccountViewScreen extends StatelessWidget { class BankAccountViewVM { BankAccountViewVM({ - @required this.state, - @required this.bankAccount, - @required this.company, - @required this.onEntityAction, - @required this.onRefreshed, - @required this.onBackPressed, - @required this.isSaving, - @required this.isLoading, - @required this.isDirty, + required this.state, + required this.bankAccount, + required this.company, + required this.onEntityAction, + required this.onRefreshed, + required this.onBackPressed, + required this.isSaving, + required this.isLoading, + required this.isDirty, }); factory BankAccountViewVM.fromStore(Store store) { @@ -60,7 +60,7 @@ class BankAccountViewVM { Future _handleRefresh(BuildContext context) { final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch( LoadBankAccount(completer: completer, bankAccountId: bankAccount.id)); return completer.future; @@ -84,7 +84,7 @@ class BankAccountViewVM { final AppState state; final BankAccountEntity bankAccount; - final CompanyEntity company; + final CompanyEntity? company; final Function(BuildContext, EntityAction) onEntityAction; final Function(BuildContext) onRefreshed; final Function onBackPressed; diff --git a/lib/ui/client/client_list_item.dart b/lib/ui/client/client_list_item.dart index 811499acb..dfa24d802 100644 --- a/lib/ui/client/client_list_item.dart +++ b/lib/ui/client/client_list_item.dart @@ -17,21 +17,21 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class ClientListItem extends StatelessWidget { const ClientListItem({ - @required this.user, - @required this.client, - @required this.filter, + required this.user, + required this.client, + required this.filter, this.onTap, this.onLongPress, this.onCheckboxChanged, this.isChecked = false, }); - final UserEntity user; - final GestureTapCallback onTap; - final GestureTapCallback onLongPress; - final ClientEntity client; - final String filter; - final Function(bool) onCheckboxChanged; + final UserEntity? user; + final GestureTapCallback? onTap; + final GestureTapCallback? onLongPress; + final ClientEntity? client; + final String? filter; + final Function(bool?)? onCheckboxChanged; final bool isChecked; @override @@ -40,8 +40,8 @@ class ClientListItem extends StatelessWidget { final state = store.state; final uiState = state.uiState; final clientUIState = uiState.clientUIState; - final filterMatch = filter != null && filter.isNotEmpty - ? client.matchesFilterValue(filter) + final filterMatch = filter != null && filter!.isNotEmpty + ? client!.matchesFilterValue(filter) : null; final listUIState = clientUIState.listUIState; final isInMultiselect = listUIState.isInMultiselect(); @@ -50,9 +50,9 @@ class ClientListItem extends StatelessWidget { return DismissibleEntity( isSelected: isDesktop(context) && - client.id == + client!.id == (uiState.isEditing - ? clientUIState.editing.id + ? clientUIState.editing!.id : clientUIState.selectedId), userCompany: store.state.userCompany, entity: client, @@ -61,10 +61,10 @@ class ClientListItem extends StatelessWidget { return constraints.maxWidth > kTableListWidthCutoff ? InkWell( onTap: () => - onTap != null ? onTap() : selectEntity(entity: client), + onTap != null ? onTap!() : selectEntity(entity: client!), onLongPress: () => onLongPress != null - ? onLongPress() - : selectEntity(entity: client, longPress: true), + ? onLongPress!() + : selectEntity(entity: client!, longPress: true), child: Padding( padding: const EdgeInsets.only( left: 10, @@ -86,14 +86,14 @@ class ClientListItem extends StatelessWidget { materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, onChanged: (value) => - onCheckboxChanged(value), + onCheckboxChanged!(value), activeColor: Theme.of(context).colorScheme.secondary, ), ), ) : ActionMenuButton( - entityActions: client.getActions( + entityActions: client!.getActions( userCompany: state.userCompany, includeEdit: true, ), @@ -109,11 +109,11 @@ class ClientListItem extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - client.number, + client!.number, style: textStyle, overflow: TextOverflow.ellipsis, ), - if (!client.isActive) EntityStateLabel(client) + if (!client!.isActive) EntityStateLabel(client) ], ), ), @@ -123,8 +123,8 @@ class ClientListItem extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - client.displayName + - (client.documents.isNotEmpty ? ' 📎' : ''), + client!.displayName + + (client!.documents.isNotEmpty ? ' 📎' : ''), style: textStyle), if (filterMatch != null) Text( @@ -138,8 +138,8 @@ class ClientListItem extends StatelessWidget { ), SizedBox(width: 10), Text( - formatNumber(client.balance, context, - clientId: client.id), + formatNumber(client!.balance, context, + clientId: client!.id)!, style: textStyle, textAlign: TextAlign.end, ), @@ -149,10 +149,10 @@ class ClientListItem extends StatelessWidget { ) : ListTile( onTap: () => - onTap != null ? onTap() : selectEntity(entity: client), + onTap != null ? onTap!() : selectEntity(entity: client!), onLongPress: () => onLongPress != null - ? onLongPress() - : selectEntity(entity: client, longPress: true), + ? onLongPress!() + : selectEntity(entity: client!, longPress: true), leading: showCheckbox ? IgnorePointer( ignoring: listUIState.isInMultiselect(), @@ -160,7 +160,7 @@ class ClientListItem extends StatelessWidget { value: isChecked, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, - onChanged: (value) => onCheckboxChanged(value), + onChanged: (value) => onCheckboxChanged!(value), activeColor: Theme.of(context).colorScheme.secondary, ), ) @@ -171,14 +171,14 @@ class ClientListItem extends StatelessWidget { children: [ Expanded( child: Text( - client.displayName + - (client.documents.isNotEmpty ? ' 📎' : ''), + client!.displayName + + (client!.documents.isNotEmpty ? ' 📎' : ''), style: Theme.of(context).textTheme.titleMedium, ), ), Text( - formatNumber(client.balance, context, - clientId: client.id), + formatNumber(client!.balance, context, + clientId: client!.id)!, style: Theme.of(context).textTheme.titleMedium), ], ), @@ -192,7 +192,7 @@ class ClientListItem extends StatelessWidget { maxLines: 3, overflow: TextOverflow.ellipsis, ) - : Text(client.number), + : Text(client!.number), EntityStateLabel(client), ], ), diff --git a/lib/ui/client/client_list_vm.dart b/lib/ui/client/client_list_vm.dart index 6b14f429a..0f50753d0 100644 --- a/lib/ui/client/client_list_vm.dart +++ b/lib/ui/client/client_list_vm.dart @@ -23,7 +23,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class ClientListBuilder extends StatelessWidget { - const ClientListBuilder({Key key}) : super(key: key); + const ClientListBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -49,8 +49,8 @@ class ClientListBuilder extends StatelessWidget { return ClientListItem( user: viewModel.state.user, filter: viewModel.filter, - client: client, - isChecked: isInMultiselect && listState.isSelected(client.id), + client: client as ClientEntity?, + isChecked: isInMultiselect && listState.isSelected(client!.id), ); }); }, @@ -60,22 +60,22 @@ class ClientListBuilder extends StatelessWidget { class ClientListVM { ClientListVM({ - @required this.state, - @required this.clientList, - @required this.clientMap, - @required this.isLoading, - @required this.filter, - @required this.onRefreshed, - @required this.tableColumns, - @required this.onEntityAction, - @required this.onSortColumn, - @required this.onClearMultielsect, + required this.state, + required this.clientList, + required this.clientMap, + required this.isLoading, + required this.filter, + required this.onRefreshed, + required this.tableColumns, + required this.onEntityAction, + required this.onSortColumn, + required this.onClearMultielsect, }); final AppState state; final List clientList; - final BuiltMap clientMap; - final String filter; + final BuiltMap clientMap; + final String? filter; final bool isLoading; final Function(BuildContext) onRefreshed; final Function(BuildContext, List, EntityAction) onEntityAction; @@ -89,7 +89,7 @@ class ClientListVM { return Future(null); } final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(RefreshData(completer: completer)); return completer.future; } @@ -114,7 +114,7 @@ class ClientListVM { EntityAction action) => handleClientAction(context, client, action), tableColumns: - state.userCompany.settings?.getTableColumns(EntityType.client) ?? + state.userCompany!.settings?.getTableColumns(EntityType.client) ?? ClientPresenter.getDefaultTableFields(state.userCompany), onSortColumn: (field) => store.dispatch(SortClients(field)), onClearMultielsect: () => store.dispatch(ClearClientMultiselect()), diff --git a/lib/ui/client/client_pdf.dart b/lib/ui/client/client_pdf.dart index 27b1b9e17..ea5390d17 100644 --- a/lib/ui/client/client_pdf.dart +++ b/lib/ui/client/client_pdf.dart @@ -45,8 +45,8 @@ import 'package:share_plus/share_plus.dart'; class ClientPdfView extends StatefulWidget { const ClientPdfView({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, this.showAppBar = true, }) : super(key: key); @@ -59,14 +59,14 @@ class ClientPdfView extends StatefulWidget { class _ClientPdfViewState extends State { bool _isLoading = false; - http.Response _response; + http.Response? _response; //int _pageCount = 1; //int _currentPage = 1; DateRange _dateRange = DateRange.thisQuarter; - String _startDate = + String? _startDate = convertDateTimeToSqlDate(DateTime.now().subtract(Duration(days: 365))); - String _endDate = convertDateTimeToSqlDate(); + String? _endDate = convertDateTimeToSqlDate(); String _status = kStatementStatusAll; @override @@ -99,8 +99,8 @@ class _ClientPdfViewState extends State { _loadPDF(sendEmail: sendEmail).then((response) { setState(() { if (sendEmail) { - if (response.statusCode >= 200) { - showToast(localization.emailedStatement); + if (response!.statusCode >= 200) { + showToast(localization!.emailedStatement); } } else { _response = response; @@ -114,16 +114,16 @@ class _ClientPdfViewState extends State { }); showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { return ErrorDialog(error); }); }); } - Future _loadPDF({bool sendEmail = false}) async { - final client = widget.viewModel.client; - http.Response response; + Future _loadPDF({bool sendEmail = false}) async { + final client = widget.viewModel.client!; + http.Response? response; final store = StoreProvider.of(context); final state = store.state; @@ -134,17 +134,17 @@ class _ClientPdfViewState extends State { url += '?send_email=true'; } - String startDate = ''; - String endDate = ''; + String? startDate = ''; + String? endDate = ''; if (_dateRange != null) { startDate = calculateStartDate( - company: state.company, + company: state.company!, dateRange: _dateRange, customStartDate: _startDate, customEndDate: _endDate); endDate = calculateEndDate( - company: state.company, + company: state.company!, dateRange: _dateRange, customStartDate: _startDate, customEndDate: _endDate); @@ -166,14 +166,14 @@ class _ClientPdfViewState extends State { 'status': _status, }); - response = await webClient.post( + response = await (webClient.post( url, state.credentials.token, data: data, rawResponse: true, - ); + ) as FutureOr); - if (response.statusCode >= 400) { + if (response!.statusCode >= 400) { String errorMessage = '${response.statusCode}: ${response.reasonPhrase}\n\n'; @@ -253,7 +253,7 @@ class _ClientPdfViewState extends State { ? ThemeData.dark() : ThemeData.light(), child: AppDropdownButton( - labelText: localization.dateRange, + labelText: localization!.dateRange, blankValue: null, //showBlank: true, value: _dateRange, @@ -270,7 +270,7 @@ class _ClientPdfViewState extends State { .where((value) => value != DateRange.allTime) .map((dateRange) => DropdownMenuItem( child: Text(localization - .lookup(dateRange.toString())), + .lookup(dateRange.toString())!), value: dateRange, )) .toList(), @@ -300,7 +300,7 @@ class _ClientPdfViewState extends State { kStatementStatusUnpaid, ] .map((value) => DropdownMenuItem( - child: Text(localization.lookup(value)), + child: Text(localization.lookup(value)!), value: value, )) .toList()), @@ -323,7 +323,7 @@ class _ClientPdfViewState extends State { selectedValues: state.prefState.statementIncludes.toList(), menuItembuilder: (dynamic option) => Text( - localization.lookup(option), + localization.lookup(option)!, style: TextStyle(fontSize: 14), ), isDense: true, @@ -348,14 +348,14 @@ class _ClientPdfViewState extends State { : () async { final fileName = localization.statement + '_' + - (client.number) + + (client!.number) + '.pdf'; if (kIsWeb) { WebUtils.downloadBinaryFile( - fileName, _response.bodyBytes); + fileName, _response!.bodyBytes); } else { final directory = await (isDesktopOS() - ? getDownloadsDirectory() + ? getDownloadsDirectory() as FutureOr : getApplicationDocumentsDirectory()); String filePath = '${directory.path}${file.Platform.pathSeparator}$fileName'; @@ -368,10 +368,10 @@ class _ClientPdfViewState extends State { } final pdfData = file.File(filePath); - await pdfData.writeAsBytes(_response.bodyBytes); + await pdfData.writeAsBytes(_response!.bodyBytes); if (isDesktopOS()) { - showToast(localization.fileSavedInPath + showToast(localization.fileSavedInPath! .replaceFirst(':path', directory.path)); } else { await Share.shareXFiles([XFile(filePath)]); @@ -385,7 +385,7 @@ class _ClientPdfViewState extends State { onPressed: _response == null ? null : () async { - if (!client.hasEmailAddress) { + if (!client!.hasEmailAddress) { showMessageDialog( context: context, message: localization.clientEmailNotSet, @@ -395,7 +395,7 @@ class _ClientPdfViewState extends State { Navigator.of(context).pop(); editEntity( entity: state.clientState - .get(client.id)); + .get(client.id)!); }, child: Text(localization.editClient .toUpperCase())) @@ -434,7 +434,7 @@ class _ClientPdfViewState extends State { entity: ScheduleEntity( ScheduleEntity.TEMPLATE_EMAIL_STATEMENT) .rebuild((b) => b - ..parameters.clients.add(client.id) + ..parameters.clients.add(client!.id) ..parameters.showAgingTable = includes.contains(localization.aging) ..parameters.showPaymentsTable = @@ -451,7 +451,7 @@ class _ClientPdfViewState extends State { child: Text(localization.close, style: TextStyle(color: state.headerTextColor)), onPressed: () { - viewEntity(entity: client); + viewEntity(entity: client!); }, ), ], @@ -471,7 +471,7 @@ class _ClientPdfViewState extends State { padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), child: DatePicker( - labelText: localization.startDate, + labelText: localization!.startDate, onSelected: (value, _) { setState(() { _startDate = value; @@ -508,13 +508,13 @@ class _ClientPdfViewState extends State { child: _isLoading || _response == null ? LoadingIndicator() : PdfPreview( - build: (format) => _response.bodyBytes, + build: (format) => _response!.bodyBytes, canChangeOrientation: false, canChangePageFormat: false, canDebug: false, maxPageWidth: 800, pdfFileName: - localization.statement + '_' + client.number + '.pdf', + localization!.statement + '_' + client!.number + '.pdf', ), ), ], diff --git a/lib/ui/client/client_pdf_vm.dart b/lib/ui/client/client_pdf_vm.dart index 75a39190c..7063e3cc9 100644 --- a/lib/ui/client/client_pdf_vm.dart +++ b/lib/ui/client/client_pdf_vm.dart @@ -11,7 +11,7 @@ import 'package:invoiceninja_flutter/redux/app/app_state.dart'; import 'package:invoiceninja_flutter/ui/client/client_pdf.dart'; class ClientPdfScreen extends StatelessWidget { - const ClientPdfScreen({Key key, this.showAppBar = true}) : super(key: key); + const ClientPdfScreen({Key? key, this.showAppBar = true}) : super(key: key); final bool showAppBar; @@ -25,7 +25,7 @@ class ClientPdfScreen extends StatelessWidget { }, builder: (context, vm) { return ClientPdfView( - key: ValueKey('__client_pdf_${vm.client.id}__'), + key: ValueKey('__client_pdf_${vm.client!.id}__'), viewModel: vm, showAppBar: showAppBar, ); @@ -36,14 +36,14 @@ class ClientPdfScreen extends StatelessWidget { class ClientPdfVM { ClientPdfVM({ - @required this.state, - @required this.client, + required this.state, + required this.client, }); factory ClientPdfVM.fromStore(Store store) { final state = store.state; final clientUIState = state.uiState.clientUIState; - final clientId = clientUIState.selectedId; + final clientId = clientUIState.selectedId!; final client = state.clientState.get(clientId); return ClientPdfVM( @@ -53,5 +53,5 @@ class ClientPdfVM { } final AppState state; - final ClientEntity client; + final ClientEntity? client; } diff --git a/lib/ui/client/client_presenter.dart b/lib/ui/client/client_presenter.dart index af29d2baa..777630674 100644 --- a/lib/ui/client/client_presenter.dart +++ b/lib/ui/client/client_presenter.dart @@ -15,7 +15,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:url_launcher/url_launcher.dart'; class ClientPresenter extends EntityPresenter { - static List getDefaultTableFields(UserCompanyEntity userCompany) { + static List getDefaultTableFields(UserCompanyEntity? userCompany) { return [ ClientFields.number, ClientFields.name, @@ -54,10 +54,10 @@ class ClientPresenter extends EntityPresenter { ClientFields.group, ClientFields.contactPhone, ClientFields.contacts, - if (userCompany.company.settings.enableEInvoice) ...[ + if (userCompany.company!.settings.enableEInvoice!) ...[ ClientFields.routingId, ], - if (userCompany.company.calculateTaxes) ...[ + if (userCompany.company!.calculateTaxes) ...[ ClientFields.isTaxExempt, ClientFields.classification, ] @@ -65,36 +65,36 @@ class ClientPresenter extends EntityPresenter { } @override - Widget getField({String field, BuildContext context}) { - final client = entity as ClientEntity; + Widget getField({String? field, required BuildContext context}) { + final client = entity as ClientEntity?; final store = StoreProvider.of(context); final localization = AppLocalization.of(context); final state = store.state; switch (field) { case ClientFields.name: - return Text(client.displayName); + return Text(client!.displayName); case ClientFields.contactName: - return Text(client.primaryContact.fullName); + return Text(client!.primaryContact!.fullName); case ClientFields.contactEmail: return CopyToClipboard( - value: client.primaryContact.email, + value: client!.primaryContact!.email, showBorder: true, onLongPress: () => - launchUrl(Uri.parse('mailto:${client.primaryContact.email}')), + launchUrl(Uri.parse('mailto:${client.primaryContact!.email}')), ); case ClientFields.contactPhone: - return Text(client.primaryContact.phone); + return Text(client!.primaryContact!.phone); case ClientFields.address1: - return Text(client.address1); + return Text(client!.address1); case ClientFields.address2: - return Text(client.address2); + return Text(client!.address2); case ClientFields.number: - return Text(client.number); + return Text(client!.number); case ClientFields.idNumber: - return Text(client.idNumber); + return Text(client!.idNumber); case ClientFields.lastLoginAt: - return Text(client.lastLogin == 0 + return Text(client!.lastLogin == 0 ? '' : formatDate( convertTimestampToDateString(client.lastLogin), context)); @@ -102,68 +102,68 @@ class ClientPresenter extends EntityPresenter { return Align( alignment: Alignment.centerRight, child: Text( - formatNumber(client.balance, context, clientId: client.id))); + formatNumber(client!.balance, context, clientId: client.id)!)); case ClientFields.creditBalance: return Align( alignment: Alignment.centerRight, - child: Text(formatNumber(client.creditBalance, context, - clientId: client.id))); + child: Text(formatNumber(client!.creditBalance, context, + clientId: client.id)!)); case ClientFields.paymentBalance: return Align( alignment: Alignment.centerRight, - child: Text(formatNumber(client.paymentBalance, context, - clientId: client.id))); + child: Text(formatNumber(client!.paymentBalance, context, + clientId: client.id)!)); case ClientFields.paidToDate: return Align( alignment: Alignment.centerRight, child: Text( - formatNumber(client.paidToDate, context, clientId: client.id)), + formatNumber(client!.paidToDate, context, clientId: client.id)!), ); case ClientFields.country: - return Text(state.staticState.countryMap[client.countryId]?.name ?? ''); + return Text(state.staticState.countryMap[client!.countryId]?.name ?? ''); case ClientFields.language: return Text( - state.staticState.languageMap[client.languageId]?.name ?? ''); + state.staticState.languageMap[client!.languageId]?.name ?? ''); case ClientFields.currency: return Text( - state.staticState.currencyMap[client.currencyId]?.name ?? ''); + state.staticState.currencyMap[client!.currencyId]?.name ?? ''); case ClientFields.vatNumber: - return Text(client.vatNumber); + return Text(client!.vatNumber); case ClientFields.state: - return Text(client.state); + return Text(client!.state); case ClientFields.phone: - return Text(client.phone); + return Text(client!.phone); case ClientFields.website: - return Text(client.website); + return Text(client!.website); case ClientFields.custom1: - return Text(presentCustomField(context, client.customValue1)); + return Text(presentCustomField(context, client!.customValue1)!); case ClientFields.custom2: - return Text(presentCustomField(context, client.customValue2)); + return Text(presentCustomField(context, client!.customValue2)!); case ClientFields.custom3: - return Text(presentCustomField(context, client.customValue3)); + return Text(presentCustomField(context, client!.customValue3)!); case ClientFields.custom4: - return Text(presentCustomField(context, client.customValue4)); + return Text(presentCustomField(context, client!.customValue4)!); case ClientFields.routingId: - return Text(client.routingId); + return Text(client!.routingId); case ClientFields.isTaxExempt: - return Text(client.isTaxExempt ? localization.yes : localization.no); + return Text(client!.isTaxExempt ? localization!.yes : localization!.no); case ClientFields.publicNotes: - return TableTooltip(message: client.publicNotes); + return TableTooltip(message: client!.publicNotes); case ClientFields.privateNotes: - return TableTooltip(message: client.privateNotes); + return TableTooltip(message: client!.privateNotes); case ClientFields.taskRate: - return Text(formatNumber(client.settings.defaultTaskRate, context)); + return Text(formatNumber(client!.settings.defaultTaskRate, context)!); case ClientFields.documents: - return Text('${client.documents.length}'); + return Text('${client!.documents.length}'); case ClientFields.group: - final group = state.groupState.get(client.groupId); + final group = state.groupState.get(client!.groupId); return LinkTextRelatedEntity(entity: group, relation: client); case ClientFields.contacts: final contacts = - client.contacts.map((contact) => contact.fullName).join('\n'); + client!.contacts.map((contact) => contact!.fullName).join('\n'); return TableTooltip(message: contacts); case ClientFields.classification: - return Text(localization.lookup(client.classification)); + return Text(localization!.lookup(client!.classification)!); } return super.getField(field: field, context: context); diff --git a/lib/ui/client/client_screen.dart b/lib/ui/client/client_screen.dart index 43490a374..8dffcc987 100644 --- a/lib/ui/client/client_screen.dart +++ b/lib/ui/client/client_screen.dart @@ -19,8 +19,8 @@ import 'client_screen_vm.dart'; class ClientScreen extends StatelessWidget { const ClientScreen({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); static const String route = '/client'; @@ -31,8 +31,8 @@ class ClientScreen extends StatelessWidget { Widget build(BuildContext context) { final store = StoreProvider.of(context); final state = store.state; - final company = state.company; - final userCompany = state.userCompany; + final company = state.company!; + final userCompany = state.userCompany!; final localization = AppLocalization.of(context); return ListScaffold( @@ -111,7 +111,7 @@ class ClientScreen extends StatelessWidget { Icons.add, color: Colors.white, ), - tooltip: localization.newClient, + tooltip: localization!.newClient, ) : null, ); diff --git a/lib/ui/client/client_screen_vm.dart b/lib/ui/client/client_screen_vm.dart index 1ce7fa311..36846f072 100644 --- a/lib/ui/client/client_screen_vm.dart +++ b/lib/ui/client/client_screen_vm.dart @@ -14,7 +14,7 @@ import 'package:invoiceninja_flutter/redux/client/client_selectors.dart'; import 'client_screen.dart'; class ClientScreenBuilder extends StatelessWidget { - const ClientScreenBuilder({Key key}) : super(key: key); + const ClientScreenBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -31,16 +31,16 @@ class ClientScreenBuilder extends StatelessWidget { class ClientScreenVM { ClientScreenVM({ - @required this.isInMultiselect, - @required this.clientList, - @required this.userCompany, - @required this.clientMap, + required this.isInMultiselect, + required this.clientList, + required this.userCompany, + required this.clientMap, }); final bool isInMultiselect; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List clientList; - final BuiltMap clientMap; + final BuiltMap clientMap; static ClientScreenVM fromStore(Store store) { final state = store.state; diff --git a/lib/ui/client/edit/client_edit.dart b/lib/ui/client/edit/client_edit.dart index 80f60d052..41d92e4ea 100644 --- a/lib/ui/client/edit/client_edit.dart +++ b/lib/ui/client/edit/client_edit.dart @@ -18,8 +18,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class ClientEdit extends StatefulWidget { const ClientEdit({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final ClientEditVM viewModel; @@ -30,7 +30,7 @@ class ClientEdit extends StatefulWidget { class _ClientEditState extends State with SingleTickerProviderStateMixin { - TabController _controller; + TabController? _controller; static final GlobalKey _formKey = GlobalKey(debugLabel: '_clientEdit'); @@ -42,13 +42,13 @@ class _ClientEditState extends State @override void dispose() { - _controller.dispose(); + _controller!.dispose(); super.dispose(); } @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; final client = viewModel.client; final state = viewModel.state; @@ -61,7 +61,7 @@ class _ClientEditState extends State title: client.isNew ? localization.newClient : localization.editClient, onCancelPressed: (context) => viewModel.onCancelPressed(context), onSavePressed: (context) { - final bool isValid = _formKey.currentState.validate(); + final bool isValid = _formKey.currentState!.validate(); setState(() { //autoValidate = !isValid; }); diff --git a/lib/ui/client/edit/client_edit_billing_address.dart b/lib/ui/client/edit/client_edit_billing_address.dart index 8f93d852f..8d3c330a5 100644 --- a/lib/ui/client/edit/client_edit_billing_address.dart +++ b/lib/ui/client/edit/client_edit_billing_address.dart @@ -15,8 +15,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class ClientEditBillingAddress extends StatefulWidget { const ClientEditBillingAddress({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final ClientEditVM viewModel; @@ -89,7 +89,7 @@ class ClientEditBillingAddressState extends State { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; final client = viewModel.client; final isFullscreen = diff --git a/lib/ui/client/edit/client_edit_contacts.dart b/lib/ui/client/edit/client_edit_contacts.dart index 28ffbb657..bc97d0e37 100644 --- a/lib/ui/client/edit/client_edit_contacts.dart +++ b/lib/ui/client/edit/client_edit_contacts.dart @@ -18,9 +18,9 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class ClientEditContacts extends StatefulWidget { const ClientEditContacts({ - Key key, - @required this.viewModel, - @required this.clientViewModel, + Key? key, + required this.viewModel, + required this.clientViewModel, }) : super(key: key); final ClientEditContactsVM viewModel; @@ -31,23 +31,23 @@ class ClientEditContacts extends StatefulWidget { } class _ClientEditContactsState extends State { - ClientContactEntity selectedContact; + ClientContactEntity? selectedContact; - void _showContactEditor(ClientContactEntity contact, BuildContext context) { + void _showContactEditor(ClientContactEntity? contact, BuildContext context) { showDialog( context: context, builder: (BuildContext context) { final viewModel = widget.viewModel; - final client = viewModel.client; + final client = viewModel.client!; return ContactEditDetails( viewModel: viewModel, clientViewModel: widget.clientViewModel, - key: Key(contact.entityKey), + key: Key(contact!.entityKey), contact: contact, isDialog: client.contacts.length > 1, index: client.contacts - .indexOf(client.contacts.firstWhere((c) => c.id == contact.id)), + .indexOf(client.contacts.firstWhere((c) => c!.id == contact.id)), ); }); } @@ -56,7 +56,7 @@ class _ClientEditContactsState extends State { Widget build(BuildContext context) { final localization = AppLocalization.of(context); final viewModel = widget.viewModel; - final client = viewModel.client; + final client = viewModel.client!; final state = widget.clientViewModel.state; final prefState = state.prefState; final isFullscreen = prefState.isEditorFullScreen(EntityType.client); @@ -71,7 +71,7 @@ class _ClientEditContactsState extends State { )) .toList(); } else { - final contact = client.contacts[0]; + final contact = client.contacts[0]!; contacts = [ ContactEditDetails( viewModel: viewModel, @@ -105,8 +105,8 @@ class _ClientEditContactsState extends State { ), child: AppButton( label: (client.contacts.length == 1 - ? localization.addSecondContact - : localization.addContact) + ? localization!.addSecondContact + : localization!.addContact)! .toUpperCase(), onPressed: () => viewModel.onAddContactPressed(), ), @@ -125,12 +125,12 @@ class _ClientEditContactsState extends State { class ContactListTile extends StatelessWidget { const ContactListTile({ - @required this.contact, - @required this.onTap, + required this.contact, + required this.onTap, }); final Function onTap; - final ClientContactEntity contact; + final ClientContactEntity? contact; @override Widget build(BuildContext context) { @@ -141,15 +141,15 @@ class ContactListTile extends StatelessWidget { child: Column( children: [ ListTile( - onTap: onTap, - title: contact.fullName.isNotEmpty - ? Text(contact.fullName) - : Text(AppLocalization.of(context).blankContact, + onTap: onTap as void Function()?, + title: contact!.fullName.isNotEmpty + ? Text(contact!.fullName) + : Text(AppLocalization.of(context)!.blankContact, style: TextStyle( fontStyle: FontStyle.italic, )), subtitle: Text( - contact.email.isNotEmpty ? contact.email : contact.phone), + contact!.email.isNotEmpty ? contact!.email : contact!.phone), trailing: Icon(Icons.navigate_next), ), Divider( @@ -163,16 +163,16 @@ class ContactListTile extends StatelessWidget { class ContactEditDetails extends StatefulWidget { const ContactEditDetails({ - Key key, - @required this.index, - @required this.contact, - @required this.viewModel, - @required this.clientViewModel, - @required this.isDialog, + Key? key, + required this.index, + required this.contact, + required this.viewModel, + required this.clientViewModel, + required this.isDialog, }) : super(key: key); final int index; - final ClientContactEntity contact; + final ClientContactEntity? contact; final ClientEditContactsVM viewModel; final ClientEditVM clientViewModel; final bool isDialog; @@ -194,7 +194,7 @@ class ContactEditDetailsState extends State { final _debouncer = Debouncer(); List _controllers = []; - ClientContactEntity _contact; + ClientContactEntity? _contact; void _onDoneContactPressed() { if (widget.isDialog) { @@ -227,7 +227,7 @@ class ContactEditDetailsState extends State { _controllers .forEach((dynamic controller) => controller.removeListener(_onChanged)); - final contact = _contact = widget.contact; + final contact = (_contact = widget.contact)!; _firstNameController.text = contact.firstName; _lastNameController.text = contact.lastName; _emailController.text = contact.email; @@ -256,7 +256,7 @@ class ContactEditDetailsState extends State { void _onChanged() { final viewModel = widget.viewModel; - final contact = _contact = widget.contact.rebuild((b) => b + final contact = _contact = widget.contact!.rebuild((b) => b ..firstName = _firstNameController.text.trim() ..lastName = _lastNameController.text.trim() ..email = _emailController.text.trim() @@ -275,9 +275,9 @@ class ContactEditDetailsState extends State { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; - final company = viewModel.company; + final company = viewModel.company!; final state = widget.clientViewModel.state; final isFullscreen = state.prefState.isEditorFullScreen(EntityType.client); @@ -288,8 +288,8 @@ class ContactEditDetailsState extends State { autofocus: widget.isDialog, controller: _firstNameController, validator: (String val) => - val.trim().isEmpty && !viewModel.client.hasNameSet - ? AppLocalization.of(context).pleaseEnterAClientOrContactName + val.trim().isEmpty && !viewModel.client!.hasNameSet + ? AppLocalization.of(context)!.pleaseEnterAClientOrContactName : null, onSavePressed: (_) => _onDoneContactPressed(), label: localization.firstName, @@ -299,8 +299,8 @@ class ContactEditDetailsState extends State { controller: _lastNameController, label: localization.lastName, validator: (String val) => - val.trim().isEmpty && !viewModel.client.hasNameSet - ? AppLocalization.of(context).pleaseEnterAClientOrContactName + val.trim().isEmpty && !viewModel.client!.hasNameSet + ? AppLocalization.of(context)!.pleaseEnterAClientOrContactName : null, onSavePressed: (_) => _onDoneContactPressed(), keyboardType: TextInputType.name, @@ -336,25 +336,25 @@ class ContactEditDetailsState extends State { CustomField( controller: _custom1Controller, field: CustomFieldType.contact1, - value: widget.contact.customValue1, + value: widget.contact!.customValue1, onSavePressed: (_) => _onDoneContactPressed(), ), CustomField( controller: _custom2Controller, field: CustomFieldType.contact2, - value: widget.contact.customValue2, + value: widget.contact!.customValue2, onSavePressed: (_) => _onDoneContactPressed(), ), CustomField( controller: _custom3Controller, field: CustomFieldType.contact3, - value: widget.contact.customValue3, + value: widget.contact!.customValue3, onSavePressed: (_) => _onDoneContactPressed(), ), CustomField( controller: _custom4Controller, field: CustomFieldType.contact4, - value: widget.contact.customValue4, + value: widget.contact!.customValue4, onSavePressed: (_) => _onDoneContactPressed(), ), if (widget.isDialog) @@ -362,14 +362,14 @@ class ContactEditDetailsState extends State { padding: const EdgeInsets.only(top: 20), child: SwitchListTile( activeColor: Theme.of(context).colorScheme.secondary, - title: Text(localization.addToInvoices), - value: _contact.sendEmail, + title: Text(localization.addToInvoices!), + value: _contact!.sendEmail, onChanged: (value) { setState(() => - _contact = _contact.rebuild((b) => b..sendEmail = value)); + _contact = _contact!.rebuild((b) => b..sendEmail = value)); viewModel.onChangedContact( - _contact.rebuild((b) => b..sendEmail = value), + _contact!.rebuild((b) => b..sendEmail = value), widget.index, ); }), diff --git a/lib/ui/client/edit/client_edit_contacts_vm.dart b/lib/ui/client/edit/client_edit_contacts_vm.dart index 494678393..b39d2f68d 100644 --- a/lib/ui/client/edit/client_edit_contacts_vm.dart +++ b/lib/ui/client/edit/client_edit_contacts_vm.dart @@ -13,7 +13,7 @@ import 'package:invoiceninja_flutter/ui/client/edit/client_edit_contacts.dart'; import 'package:invoiceninja_flutter/ui/client/edit/client_edit_vm.dart'; class ClientEditContactsScreen extends StatelessWidget { - const ClientEditContactsScreen({Key key, @required this.viewModel}) + const ClientEditContactsScreen({Key? key, required this.viewModel}) : super(key: key); final ClientEditVM viewModel; @@ -36,13 +36,13 @@ class ClientEditContactsScreen extends StatelessWidget { class ClientEditContactsVM { ClientEditContactsVM({ - @required this.company, - @required this.client, - @required this.contact, - @required this.onAddContactPressed, - @required this.onRemoveContactPressed, - @required this.onDoneContactPressed, - @required this.onChangedContact, + required this.company, + required this.client, + required this.contact, + required this.onAddContactPressed, + required this.onRemoveContactPressed, + required this.onDoneContactPressed, + required this.onChangedContact, }); factory ClientEditContactsVM.fromStore(Store store) { @@ -67,9 +67,9 @@ class ClientEditContactsVM { }); } - final CompanyEntity company; - final ClientEntity client; - final ClientContactEntity contact; + final CompanyEntity? company; + final ClientEntity? client; + final ClientContactEntity? contact; final Function() onAddContactPressed; final Function(int) onRemoveContactPressed; final Function(BuildContext) onDoneContactPressed; diff --git a/lib/ui/client/edit/client_edit_desktop.dart b/lib/ui/client/edit/client_edit_desktop.dart index b0e4623c7..9bd01a1d9 100644 --- a/lib/ui/client/edit/client_edit_desktop.dart +++ b/lib/ui/client/edit/client_edit_desktop.dart @@ -14,8 +14,8 @@ import 'package:invoiceninja_flutter/ui/client/edit/client_edit_vm.dart'; class ClientEditDesktop extends StatelessWidget { const ClientEditDesktop({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final ClientEditVM viewModel; diff --git a/lib/ui/client/edit/client_edit_details.dart b/lib/ui/client/edit/client_edit_details.dart index 60e048167..5637d21c3 100644 --- a/lib/ui/client/edit/client_edit_details.dart +++ b/lib/ui/client/edit/client_edit_details.dart @@ -25,8 +25,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class ClientEditDetails extends StatefulWidget { const ClientEditDetails({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final ClientEditVM viewModel; @@ -51,7 +51,7 @@ class ClientEditDetailsState extends State { static final GlobalKey _formKey = GlobalKey(debugLabel: '_clientEditDetails'); final _debouncer = Debouncer(); - List _controllers; + late List _controllers; @override void didChangeDependencies() { @@ -123,7 +123,7 @@ class ClientEditDetailsState extends State { } void _onSavePressed(BuildContext context) { - final bool isValid = _formKey.currentState.validate(); + final bool isValid = _formKey.currentState!.validate(); if (!isValid) { return; @@ -137,15 +137,15 @@ class ClientEditDetailsState extends State { final client = viewModel.client; final contactEmail = - contact.emails.isNotEmpty ? contact.emails.first : null; + contact.emails!.isNotEmpty ? contact.emails!.first : null; final contactPhone = - contact.phones.isNotEmpty ? contact.phones.first : null; - final contactAddress = contact.postalAddresses.isNotEmpty - ? contact.postalAddresses.first + contact.phones!.isNotEmpty ? contact.phones!.first : null; + final contactAddress = contact.postalAddresses!.isNotEmpty + ? contact.postalAddresses!.first : null; final countryMap = viewModel.state.staticState.countryMap; - String countryId; + String? countryId; countryMap.keys.forEach((countryId) { final country = countryMap[countryId] ?? CountryEntity(); @@ -162,7 +162,7 @@ class ClientEditDetailsState extends State { ..state = (contactAddress?.region ?? '').trim() ..postalCode = (contactAddress?.postcode ?? '').trim() ..countryId = countryId ?? '' - ..contacts[0] = client.contacts[0].rebuild((b) => b + ..contacts[0] = client.contacts[0]!.rebuild((b) => b ..firstName = (contact?.givenName ?? '').trim() ..lastName = (contact?.familyName ?? '').trim() ..email = (contactEmail?.value ?? '').trim() @@ -172,7 +172,7 @@ class ClientEditDetailsState extends State { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; final state = viewModel.state; final client = viewModel.client; @@ -194,7 +194,7 @@ class ClientEditDetailsState extends State { autofocus: true, controller: _nameController, validator: (String val) => val.trim().isEmpty && !client.hasNameSet - ? AppLocalization.of(context).pleaseEnterAClientOrContactName + ? AppLocalization.of(context)!.pleaseEnterAClientOrContactName : null, onSavePressed: _onSavePressed, label: localization.name, @@ -288,14 +288,14 @@ class ClientEditDetailsState extends State { value: client.customValue4, onSavePressed: _onSavePressed, ), - if (state.company.settings.enableEInvoice == true) + if (state.company!.settings.enableEInvoice == true) DecoratedFormField( label: localization.routingId, controller: _routingIdController, keyboardType: TextInputType.text, onSavePressed: _onSavePressed, ), - if (state.company.calculateTaxes) ...[ + if (state.company!.calculateTaxes) ...[ AppDropdownButton( labelText: localization.classification, showBlank: true, @@ -306,14 +306,14 @@ class ClientEditDetailsState extends State { }, items: kTaxClassifications .map((classification) => DropdownMenuItem( - child: Text(localization.lookup(classification)), + child: Text(localization.lookup(classification)!), value: classification, )) .toList(), ), SizedBox(height: 20), SwitchListTile( - title: Text(localization.isTaxExempt), + title: Text(localization.isTaxExempt!), value: client.isTaxExempt, onChanged: (value) { viewModel diff --git a/lib/ui/client/edit/client_edit_footer.dart b/lib/ui/client/edit/client_edit_footer.dart index 1fd5e7c6c..07c14f6e8 100644 --- a/lib/ui/client/edit/client_edit_footer.dart +++ b/lib/ui/client/edit/client_edit_footer.dart @@ -15,7 +15,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/platforms.dart'; class ClientEditFooter extends StatelessWidget { - const ClientEditFooter({@required this.client}); + const ClientEditFooter({required this.client}); final ClientEntity client; @@ -42,8 +42,8 @@ class ClientEditFooter extends StatelessWidget { if (showLayoutToggle) Tooltip( message: useSidebarEditor - ? localization.fullscreenEditor - : localization.sidebarEditor, + ? localization!.fullscreenEditor + : localization!.sidebarEditor, child: InkWell( onTap: () => store.dispatch(ToggleEditorLayout(EntityType.client)), diff --git a/lib/ui/client/edit/client_edit_notes.dart b/lib/ui/client/edit/client_edit_notes.dart index cac646b36..03aa3d2b6 100644 --- a/lib/ui/client/edit/client_edit_notes.dart +++ b/lib/ui/client/edit/client_edit_notes.dart @@ -15,8 +15,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class ClientEditNotes extends StatefulWidget { const ClientEditNotes({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final ClientEditVM viewModel; @@ -29,7 +29,7 @@ class ClientEditNotesState extends State { final _publicNotesController = TextEditingController(); final _privateNotesController = TextEditingController(); - List _controllers; + late List _controllers; final _debouncer = Debouncer(); @override @@ -76,7 +76,7 @@ class ClientEditNotesState extends State { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; final state = viewModel.state; final client = viewModel.client; @@ -109,7 +109,7 @@ class ClientEditNotesState extends State { labelText: localization.size, items: memoizedSizeList(state.staticState.sizeMap) .map((sizeId) => DropdownMenuItem( - child: Text(state.staticState.sizeMap[sizeId].name), + child: Text(state.staticState.sizeMap[sizeId]!.name), value: sizeId, )) .toList(), diff --git a/lib/ui/client/edit/client_edit_settings.dart b/lib/ui/client/edit/client_edit_settings.dart index b3f1b1f15..278e4c742 100644 --- a/lib/ui/client/edit/client_edit_settings.dart +++ b/lib/ui/client/edit/client_edit_settings.dart @@ -17,8 +17,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class ClientEditSettings extends StatefulWidget { const ClientEditSettings({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final ClientEditVM viewModel; @@ -30,7 +30,7 @@ class ClientEditSettings extends StatefulWidget { class ClientEditSettingsState extends State { final _taskRateController = TextEditingController(); - List _controllers; + late List _controllers; final _debouncer = Debouncer(); @override @@ -45,7 +45,7 @@ class ClientEditSettingsState extends State { final client = widget.viewModel.client; _taskRateController.text = formatNumber( client.settings.defaultTaskRate, context, - formatNumberType: FormatNumberType.inputMoney); + formatNumberType: FormatNumberType.inputMoney)!; _controllers .forEach((dynamic controller) => controller.addListener(_onChanged)); @@ -77,10 +77,10 @@ class ClientEditSettingsState extends State { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; final state = viewModel.state; - final company = state.company; + final company = state.company!; final client = viewModel.client; final isFullscreen = state.prefState.isEditorFullScreen(EntityType.client); @@ -117,10 +117,10 @@ class ClientEditSettingsState extends State { items: memoizedDropdownPaymentTermList( state.paymentTermState.map, state.paymentTermState.list) .map((paymentTermId) { - final paymentTerm = state.paymentTermState.map[paymentTermId]; + final paymentTerm = state.paymentTermState.map[paymentTermId]!; return DropdownMenuItem( child: Text(paymentTerm.numDays == 0 - ? localization.dueOnReceipt + ? localization.dueOnReceipt! : paymentTerm.name), value: paymentTerm.numDays.toString(), ); @@ -139,10 +139,10 @@ class ClientEditSettingsState extends State { items: memoizedDropdownPaymentTermList( state.paymentTermState.map, state.paymentTermState.list) .map((paymentTermId) { - final paymentTerm = state.paymentTermState.map[paymentTermId]; + final paymentTerm = state.paymentTermState.map[paymentTermId]!; return DropdownMenuItem( child: Text(paymentTerm.numDays == 0 - ? localization.dueOnReceipt + ? localization.dueOnReceipt! : paymentTerm.name), value: paymentTerm.numDays.toString(), ); diff --git a/lib/ui/client/edit/client_edit_shipping_address.dart b/lib/ui/client/edit/client_edit_shipping_address.dart index 4e5c16ebd..dea9ad0f8 100644 --- a/lib/ui/client/edit/client_edit_shipping_address.dart +++ b/lib/ui/client/edit/client_edit_shipping_address.dart @@ -15,8 +15,8 @@ import '../../app/form_card.dart'; class ClientEditShippingAddress extends StatefulWidget { const ClientEditShippingAddress({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final ClientEditVM viewModel; @@ -89,7 +89,7 @@ class ClientEditShippingAddressState extends State { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; final client = viewModel.client; final isFullscreen = diff --git a/lib/ui/client/edit/client_edit_vm.dart b/lib/ui/client/edit/client_edit_vm.dart index 9f8cff4a0..85e3ba366 100644 --- a/lib/ui/client/edit/client_edit_vm.dart +++ b/lib/ui/client/edit/client_edit_vm.dart @@ -24,7 +24,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class ClientEditScreen extends StatelessWidget { - const ClientEditScreen({Key key}) : super(key: key); + const ClientEditScreen({Key? key}) : super(key: key); static const String route = '/client/edit'; @@ -45,22 +45,22 @@ class ClientEditScreen extends StatelessWidget { class ClientEditVM { ClientEditVM({ - @required this.state, - @required this.company, - @required this.isSaving, - @required this.client, - @required this.origClient, - @required this.onChanged, - @required this.onSavePressed, - @required this.onCancelPressed, - @required this.staticState, - @required this.copyBillingAddress, - @required this.copyShippingAddress, + required this.state, + required this.company, + required this.isSaving, + required this.client, + required this.origClient, + required this.onChanged, + required this.onSavePressed, + required this.onCancelPressed, + required this.staticState, + required this.copyBillingAddress, + required this.copyShippingAddress, }); factory ClientEditVM.fromStore(Store store) { final state = store.state; - final client = state.clientUIState.editing; + final client = state.clientUIState.editing!; return ClientEditVM( state: state, @@ -90,20 +90,20 @@ class ClientEditVM { onCancelPressed: (BuildContext context) { createEntity(context: context, entity: ClientEntity(), force: true); if (state.clientUIState.cancelCompleter != null) { - state.clientUIState.cancelCompleter.complete(); + state.clientUIState.cancelCompleter!.complete(); } else { store.dispatch(UpdateCurrentRoute(state.uiState.previousRoute)); } }, onSavePressed: (BuildContext context) { Debouncer.runOnComplete(() { - final client = store.state.clientUIState.editing; + final client = store.state.clientUIState.editing!; if (!client.hasNameSet) { showDialog( context: context, builder: (BuildContext context) { return ErrorDialog( - AppLocalization.of(navigatorKey.currentContext) + AppLocalization.of(navigatorKey.currentContext!)! .pleaseEnterAClientOrContactName); }); return null; @@ -115,14 +115,14 @@ class ClientEditVM { SaveClientRequest(completer: completer, client: client)); return completer.future.then((savedClient) { showToast(client.isNew - ? localization.createdClient - : localization.updatedClient); + ? localization!.createdClient + : localization!.updatedClient); if (state.prefState.isMobile) { store.dispatch(UpdateCurrentRoute(ClientViewScreen.route)); if (client.isNew && state.clientUIState.saveCompleter == null) { - navigator.pushReplacementNamed(ClientViewScreen.route); + navigator!.pushReplacementNamed(ClientViewScreen.route); } else { - navigator.pop(savedClient); + navigator!.pop(savedClient); } } else if (state.clientUIState.saveCompleter == null) { if (!state.prefState.isPreviewVisible) { @@ -132,7 +132,7 @@ class ClientEditVM { } }).catchError((Object error) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { return ErrorDialog(error); }); @@ -142,10 +142,10 @@ class ClientEditVM { } final AppState state; - final CompanyEntity company; + final CompanyEntity? company; final bool isSaving; final ClientEntity client; - final ClientEntity origClient; + final ClientEntity? origClient; final Function(ClientEntity) onChanged; final Function(BuildContext) onSavePressed; final Function(BuildContext) onCancelPressed; diff --git a/lib/ui/client/view/client_view.dart b/lib/ui/client/view/client_view.dart index 6ef21b171..be9cf1d52 100644 --- a/lib/ui/client/view/client_view.dart +++ b/lib/ui/client/view/client_view.dart @@ -24,11 +24,11 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class ClientView extends StatefulWidget { const ClientView({ - Key key, - @required this.viewModel, - @required this.isFilter, - @required this.isTopFilter, - @required this.tabIndex, + Key? key, + required this.viewModel, + required this.isFilter, + required this.isTopFilter, + required this.tabIndex, }) : super(key: key); final ClientViewVM viewModel; @@ -42,7 +42,7 @@ class ClientView extends StatefulWidget { class _ClientViewState extends State with SingleTickerProviderStateMixin { - TabController _controller; + TabController? _controller; @override void initState() { @@ -51,9 +51,9 @@ class _ClientViewState extends State final state = widget.viewModel.state; _controller = TabController( vsync: this, - length: state.company.isModuleEnabled(EntityType.document) ? 6 : 5, + length: state.company!.isModuleEnabled(EntityType.document) ? 6 : 5, initialIndex: widget.isFilter ? 0 : state.clientUIState.tabIndex); - _controller.addListener(_onTabChanged); + _controller!.addListener(_onTabChanged); } void _onTabChanged() { @@ -62,7 +62,7 @@ class _ClientViewState extends State } final store = StoreProvider.of(context); - store.dispatch(UpdateClientTab(tabIndex: _controller.index)); + store.dispatch(UpdateClientTab(tabIndex: _controller!.index)); } @override @@ -70,14 +70,14 @@ class _ClientViewState extends State super.didUpdateWidget(oldWidget); if (oldWidget.tabIndex != widget.tabIndex) { - _controller.index = widget.tabIndex; + _controller!.index = widget.tabIndex; } } @override void dispose() { - _controller.removeListener(_onTabChanged); - _controller.dispose(); + _controller!.removeListener(_onTabChanged); + _controller!.dispose(); super.dispose(); } @@ -118,12 +118,12 @@ class _ClientViewState extends State isScrollable: true, tabs: [ Tab( - text: localization.overview, + text: localization!.overview, ), Tab( text: localization.details, ), - if (company.isModuleEnabled(EntityType.document)) + if (company!.isModuleEnabled(EntityType.document)) Tab( text: documents.isEmpty ? localization.documents diff --git a/lib/ui/client/view/client_view_activity.dart b/lib/ui/client/view/client_view_activity.dart index 4e7c6c513..0c82b1e14 100644 --- a/lib/ui/client/view/client_view_activity.dart +++ b/lib/ui/client/view/client_view_activity.dart @@ -9,9 +9,9 @@ import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart'; import 'package:invoiceninja_flutter/ui/client/view/client_view_vm.dart'; class ClientViewActivity extends StatefulWidget { - const ClientViewActivity({Key key, this.viewModel}) : super(key: key); + const ClientViewActivity({Key? key, this.viewModel}) : super(key: key); - final ClientViewVM viewModel; + final ClientViewVM? viewModel; @override _ClientViewActivityState createState() => _ClientViewActivityState(); @@ -20,15 +20,15 @@ class ClientViewActivity extends StatefulWidget { class _ClientViewActivityState extends State { @override void didChangeDependencies() { - if (widget.viewModel.client.isStale) { - widget.viewModel.onRefreshed(context); + if (widget.viewModel!.client.isStale) { + widget.viewModel!.onRefreshed(context); } super.didChangeDependencies(); } @override Widget build(BuildContext context) { - final client = widget.viewModel.client; + final client = widget.viewModel!.client; final activities = client.activities; if (!client.isLoaded) { diff --git a/lib/ui/client/view/client_view_details.dart b/lib/ui/client/view/client_view_details.dart index 52887f9e9..e79c4fee1 100644 --- a/lib/ui/client/view/client_view_details.dart +++ b/lib/ui/client/view/client_view_details.dart @@ -21,14 +21,14 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class ClientViewDetails extends StatefulWidget { const ClientViewDetails({this.client}); - final ClientEntity client; + final ClientEntity? client; @override _ClientViewDetailsState createState() => _ClientViewDetailsState(); } class _ClientViewDetailsState extends State { - Future _launched; + Future? _launched; Future _launchURL(BuildContext context, String url) async { await launchUrl(Uri.parse(url)); @@ -37,7 +37,7 @@ class _ClientViewDetailsState extends State { Widget _launchStatus(BuildContext context, AsyncSnapshot snapshot) { final localization = AppLocalization.of(context); if (snapshot.hasError) { - return Text('${localization.error}: ${snapshot.error}'); + return Text('${localization!.error}: ${snapshot.error}'); } else { return const Text(''); } @@ -52,14 +52,14 @@ class _ClientViewDetailsState extends State { List _buildDetailsList() { final listTiles = []; - final contacts = client.contacts; + final contacts = client!.contacts; contacts.forEach((contact) { final subtitleParts = []; - if (contact.email.isNotEmpty) { + if (contact!.email.isNotEmpty) { subtitleParts.add(contact.email); } - if (company.hasCustomField(CustomFieldType.contact1) && + if (company!.hasCustomField(CustomFieldType.contact1) && contact.customValue1.isNotEmpty) { subtitleParts.add(company.formatCustomFieldValue( CustomFieldType.contact1, contact.customValue1)); @@ -88,7 +88,7 @@ class _ClientViewDetailsState extends State { ), icon: Icons.email, title: contact.fullName.isEmpty - ? localization.blankContact + ? localization!.blankContact : contact.fullName, subtitle: subtitleParts.join('\n'), copyValue: contact.email, @@ -105,12 +105,12 @@ class _ClientViewDetailsState extends State { listTiles.add(AppListTile( icon: Icons.phone, title: (contact.fullName.isEmpty - ? localization.blankContact + ? localization!.blankContact : contact.fullName) + '\n' + contact.phone, copyValue: contact.phone, - subtitle: localization.phone, + subtitle: localization!.phone, /* trailing: isApple() || isAndroid() ? IconButton( @@ -138,7 +138,7 @@ class _ClientViewDetailsState extends State { listTiles.add(AppListTile( icon: Icons.link, title: client.website, - subtitle: localization.website, + subtitle: localization!.website, onLongPress: () => setState(() { _launched = _launchURL(context, formatURL(client.website)); }), @@ -149,7 +149,7 @@ class _ClientViewDetailsState extends State { listTiles.add(AppListTile( icon: Icons.phone, title: client.phone, - subtitle: localization.phone, + subtitle: localization!.phone, /* trailing: isApple() || isAndroid() ? IconButton( @@ -187,7 +187,7 @@ class _ClientViewDetailsState extends State { listTiles.add(AppListTile( icon: Icons.location_city, title: client.vatNumber, - subtitle: localization.vatNumber, + subtitle: localization!.vatNumber, )); } @@ -195,7 +195,7 @@ class _ClientViewDetailsState extends State { listTiles.add(AppListTile( icon: Icons.business, title: client.idNumber, - subtitle: localization.idNumber, + subtitle: localization!.idNumber, )); } @@ -209,7 +209,7 @@ class _ClientViewDetailsState extends State { listTiles.add(AppListTile( icon: Icons.pin_drop, title: billingAddress, - subtitle: localization.billingAddress, + subtitle: localization!.billingAddress, onLongPress: () { _launched = _launchURL( context, @@ -223,7 +223,7 @@ class _ClientViewDetailsState extends State { listTiles.add(AppListTile( icon: Icons.pin_drop, title: shippingAddress, - subtitle: localization.shippingAddress, + subtitle: localization!.shippingAddress, onLongPress: () { _launched = _launchURL( context, diff --git a/lib/ui/client/view/client_view_documents.dart b/lib/ui/client/view/client_view_documents.dart index 4a30ad92a..df931ffe1 100644 --- a/lib/ui/client/view/client_view_documents.dart +++ b/lib/ui/client/view/client_view_documents.dart @@ -9,7 +9,7 @@ import 'package:invoiceninja_flutter/ui/app/document_grid.dart'; import 'package:invoiceninja_flutter/ui/client/view/client_view_vm.dart'; class ClientViewDocuments extends StatelessWidget { - const ClientViewDocuments({Key key, @required this.viewModel}) + const ClientViewDocuments({Key? key, required this.viewModel}) : super(key: key); final ClientViewVM viewModel; diff --git a/lib/ui/client/view/client_view_fullwidth.dart b/lib/ui/client/view/client_view_fullwidth.dart index c962b7c42..53cb2ca69 100644 --- a/lib/ui/client/view/client_view_fullwidth.dart +++ b/lib/ui/client/view/client_view_fullwidth.dart @@ -26,8 +26,8 @@ import 'package:url_launcher/url_launcher.dart'; class ClientViewFullwidth extends StatefulWidget { const ClientViewFullwidth({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final ClientViewVM viewModel; @@ -38,9 +38,9 @@ class ClientViewFullwidth extends StatefulWidget { class _ClientViewFullwidthState extends State with TickerProviderStateMixin { - ScrollController _scrollController1; - ScrollController _scrollController2; - ScrollController _scrollController3; + ScrollController? _scrollController1; + ScrollController? _scrollController2; + ScrollController? _scrollController3; @override void initState() { @@ -53,9 +53,9 @@ class _ClientViewFullwidthState extends State @override void dispose() { - _scrollController1.dispose(); - _scrollController2.dispose(); - _scrollController3.dispose(); + _scrollController1!.dispose(); + _scrollController2!.dispose(); + _scrollController3!.dispose(); super.dispose(); } @@ -65,7 +65,7 @@ class _ClientViewFullwidthState extends State final store = StoreProvider.of(context); final state = store.state; final company = state.company; - final client = state.clientState.get(state.uiState.filterEntityId); + final client = state.clientState.get(state.uiState.filterEntityId!)!; final documents = client.documents; final viewModel = widget.viewModel; final billingAddress = formatAddress(state, object: client); @@ -85,8 +85,8 @@ class _ClientViewFullwidthState extends State client.gatewayTokens.forEach((gatewayToken) { final companyGateway = - state.companyGatewayState.get(gatewayToken.companyGatewayId); - if (companyGateway.isOld && !companyGateway.isDeleted) { + state.companyGatewayState.get(gatewayToken.companyGatewayId)!; + if (companyGateway.isOld && !companyGateway.isDeleted!) { final customerReference = gatewayToken.customerReference; gatewayMap[customerReference] = companyGateway; final clientUrl = GatewayEntity.getClientUrl( @@ -97,7 +97,7 @@ class _ClientViewFullwidthState extends State linkMap[customerReference] = clientUrl; } if (tokenMap.containsKey(customerReference)) { - tokenMap[customerReference].add(gatewayToken); + tokenMap[customerReference]!.add(gatewayToken); } else { tokenMap[customerReference] = [gatewayToken]; } @@ -124,21 +124,21 @@ class _ClientViewFullwidthState extends State controller: _scrollController1, children: [ Text( - localization.details, + localization!.details, style: Theme.of(context).textTheme.titleLarge, ), SizedBox(height: 8), - if (client.isTaxExempt) Text(localization.isTaxExempt), + if (client.isTaxExempt) Text(localization.isTaxExempt!), if (client.paymentBalance != 0) Text(localization.payments + ': ' + formatNumber(client.paymentBalance, context, - clientId: client.id)), + clientId: client.id)!), if (client.creditBalance != 0) Text(localization.credit + ': ' + formatNumber(client.creditBalance, context, - clientId: client.id)), + clientId: client.id)!), if (client.idNumber.isNotEmpty) Padding( padding: const EdgeInsets.only(bottom: 1), @@ -174,7 +174,7 @@ class _ClientViewFullwidthState extends State ), ), SizedBox(height: 4), - if (client.currencyId != state.company.currencyId) + if (client.currencyId != state.company!.currencyId) Padding( padding: const EdgeInsets.only(bottom: 1), child: Text( @@ -186,7 +186,7 @@ class _ClientViewFullwidthState extends State ), ), if ((client.languageId ?? '').isNotEmpty && - client.languageId != state.company.languageId) + client.languageId != state.company!.languageId) Padding( padding: const EdgeInsets.only(bottom: 1), child: Text( @@ -201,16 +201,16 @@ class _ClientViewFullwidthState extends State Text( '${localization.taskRate}: ${client.settings.defaultTaskRate}'), if (client.customValue1.isNotEmpty) - Text(company.formatCustomFieldValue( + Text(company!.formatCustomFieldValue( CustomFieldType.client1, client.customValue1)), if (client.customValue2.isNotEmpty) - Text(company.formatCustomFieldValue( + Text(company!.formatCustomFieldValue( CustomFieldType.client2, client.customValue2)), if (client.customValue3.isNotEmpty) - Text(company.formatCustomFieldValue( + Text(company!.formatCustomFieldValue( CustomFieldType.client3, client.customValue3)), if (client.customValue4.isNotEmpty) - Text(company.formatCustomFieldValue( + Text(company!.formatCustomFieldValue( CustomFieldType.client4, client.customValue4)), ], ), @@ -340,7 +340,7 @@ class _ClientViewFullwidthState extends State crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - contact.fullName, + contact!.fullName, style: Theme.of(context).textTheme.titleMedium, ), if (contact.email.isNotEmpty) @@ -363,7 +363,7 @@ class _ClientViewFullwidthState extends State icon: Icons.phone, text: contact.phone), ), ), - if (company.hasCustomField( + if (company!.hasCustomField( CustomFieldType.contact1) && contact.customValue1.isNotEmpty) Text(company.formatCustomFieldValue( @@ -429,7 +429,7 @@ class _ClientViewFullwidthState extends State bottom: kMobileDialogPadding, left: kMobileDialogPadding / 2), child: DefaultTabController( - length: company.isModuleEnabled(EntityType.document) ? 5 : 4, + length: company!.isModuleEnabled(EntityType.document) ? 5 : 4, child: SizedBox( height: minHeight, child: Column( @@ -439,7 +439,7 @@ class _ClientViewFullwidthState extends State isScrollable: true, tabs: [ Tab( - child: Text(localization.standing), + child: Text(localization.standing!), ), if (tokenMap.keys.isNotEmpty) Tab( diff --git a/lib/ui/client/view/client_view_ledger.dart b/lib/ui/client/view/client_view_ledger.dart index e7f1ea596..383f48c11 100644 --- a/lib/ui/client/view/client_view_ledger.dart +++ b/lib/ui/client/view/client_view_ledger.dart @@ -19,9 +19,9 @@ import 'package:invoiceninja_flutter/utils/icons.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class ClientViewLedger extends StatefulWidget { - const ClientViewLedger({Key key, this.viewModel}) : super(key: key); + const ClientViewLedger({Key? key, this.viewModel}) : super(key: key); - final ClientViewVM viewModel; + final ClientViewVM? viewModel; @override _ClientViewLedgerState createState() => _ClientViewLedgerState(); @@ -30,15 +30,15 @@ class ClientViewLedger extends StatefulWidget { class _ClientViewLedgerState extends State { @override void didChangeDependencies() { - if (widget.viewModel.client.isStale) { - widget.viewModel.onRefreshed(context); + if (widget.viewModel!.client.isStale) { + widget.viewModel!.onRefreshed(context); } super.didChangeDependencies(); } @override Widget build(BuildContext context) { - final client = widget.viewModel.client; + final client = widget.viewModel!.client; final ledgers = client.ledger.where((ledger) => ledger.adjustment != 0).toList(); @@ -62,7 +62,7 @@ class _ClientViewLedgerState extends State { mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Flexible(child: Text(localization.clientCreated)), + Flexible(child: Text(localization!.clientCreated)), Padding( padding: const EdgeInsets.only(right: 2), child: Text( @@ -70,7 +70,7 @@ class _ClientViewLedgerState extends State { 0, context, clientId: client.id, - ), + )!, textAlign: TextAlign.end, ), ), @@ -86,7 +86,7 @@ class _ClientViewLedgerState extends State { } final ledger = ledgers[index]; - final entity = state.getEntityMap(ledger.entityType)[ledger.entityId]; + final entity = state.getEntityMap(ledger.entityType)![ledger.entityId]; if (entity == null) { print('Error: unable to find entity $ledger'); @@ -94,15 +94,15 @@ class _ClientViewLedgerState extends State { } return ListTile( - onTap: () => viewEntity(entity: entity), - onLongPress: () => showEntityActionsDialog(entities: [entity]), + onTap: () => viewEntity(entity: entity as BaseEntity), + onLongPress: () => showEntityActionsDialog(entities: [entity as BaseEntity?]), title: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Flexible( child: Text( - '${localization.lookup('${ledger.entityType}')} › ${entity.listDisplayName}', + '${localization!.lookup('${ledger.entityType}')} › ${entity.listDisplayName}', ), ), Padding( @@ -112,7 +112,7 @@ class _ClientViewLedgerState extends State { ledger.balance, context, clientId: client.id, - ), + )!, textAlign: TextAlign.end, ), ), @@ -136,8 +136,8 @@ class _ClientViewLedgerState extends State { child: DecoratedBox( decoration: BoxDecoration( color: ledger.adjustment <= 0 - ? state.prefState.colorThemeModel.colorSuccess - : state.prefState.colorThemeModel.colorDanger, + ? state.prefState.colorThemeModel!.colorSuccess + : state.prefState.colorThemeModel!.colorDanger, borderRadius: BorderRadius.all(Radius.circular(kBorderRadius)), ), @@ -149,7 +149,7 @@ class _ClientViewLedgerState extends State { ledger.adjustment, context, clientId: client.id, - ), + )!, style: TextStyle(color: Colors.white), textAlign: TextAlign.end, ), diff --git a/lib/ui/client/view/client_view_overview.dart b/lib/ui/client/view/client_view_overview.dart index 6d6f6be65..4934472a6 100644 --- a/lib/ui/client/view/client_view_overview.dart +++ b/lib/ui/client/view/client_view_overview.dart @@ -31,9 +31,9 @@ import 'package:invoiceninja_flutter/utils/formatting.dart'; class ClientOverview extends StatelessWidget { const ClientOverview({ - Key key, - @required this.viewModel, - @required this.isFilter, + Key? key, + required this.viewModel, + required this.isFilter, }) : super(key: key); final ClientViewVM viewModel; @@ -41,16 +41,16 @@ class ClientOverview extends StatelessWidget { @override Widget build(BuildContext context) { - final localization = context.localization; + final localization = context.localization!; final client = viewModel.client; - final company = viewModel.company; + final company = viewModel.company!; final state = context.state; final statics = state.staticState; - final fields = {}; + final fields = {}; final group = client.hasGroup ? state.groupState.map[client.groupId] : null; - final contact = client.primaryContact; + final contact = client.primaryContact!; final user = - client.hasUser ? state.userState.get(client.assignedUserId) : null; + client.hasUser ? state.userState.get(client.assignedUserId!) : null; // Group gateway tokens by the customerReference final tokenMap = >{}; @@ -59,8 +59,8 @@ class ClientOverview extends StatelessWidget { client.gatewayTokens.forEach((gatewayToken) { final companyGateway = - state.companyGatewayState.get(gatewayToken.companyGatewayId); - if (companyGateway.isOld && !companyGateway.isDeleted) { + state.companyGatewayState.get(gatewayToken.companyGatewayId)!; + if (companyGateway.isOld && !companyGateway.isDeleted!) { final customerReference = gatewayToken.customerReference; gatewayMap[customerReference] = companyGateway; final clientUrl = GatewayEntity.getClientUrl( @@ -71,7 +71,7 @@ class ClientOverview extends StatelessWidget { linkMap[customerReference] = clientUrl; } if (tokenMap.containsKey(customerReference)) { - tokenMap[customerReference].add(gatewayToken); + tokenMap[customerReference]!.add(gatewayToken); } else { tokenMap[customerReference] = [gatewayToken]; } @@ -146,12 +146,12 @@ class ClientOverview extends StatelessWidget { Text(localization.payments + ': ' + formatNumber(client.paymentBalance, context, - clientId: client.id)), + clientId: client.id)!), if (client.creditBalance != 0) Text(localization.credit + ': ' + formatNumber(client.creditBalance, context, - clientId: client.id)), + clientId: client.id)!), ]), ), ListDivider(), @@ -177,17 +177,17 @@ class ClientOverview extends StatelessWidget { for (var customerReference in tokenMap.keys) ...[ ListTile( title: Text( - '${localization.gateway} › ${gatewayMap[customerReference].label}'), + '${localization.gateway} › ${gatewayMap[customerReference]!.label}'), subtitle: Column( mainAxisSize: MainAxisSize.min, - children: tokenMap[customerReference] + children: tokenMap[customerReference]! .map((token) => TokenMeta( meta: token.meta, )) .toList(), ), onTap: linkMap.containsKey(customerReference) - ? () => launchUrl(Uri.parse(linkMap[customerReference])) + ? () => launchUrl(Uri.parse(linkMap[customerReference]!)) : null, leading: IgnorePointer( child: IconButton( diff --git a/lib/ui/client/view/client_view_payment_methods.dart b/lib/ui/client/view/client_view_payment_methods.dart index ec26bbb16..435a531ec 100644 --- a/lib/ui/client/view/client_view_payment_methods.dart +++ b/lib/ui/client/view/client_view_payment_methods.dart @@ -13,11 +13,11 @@ import 'package:url_launcher/url_launcher.dart'; class ClientViewPaymentMethods extends StatelessWidget { const ClientViewPaymentMethods({ - Key key, - @required this.viewModel, - @required this.tokenMap, - @required this.gatewayMap, - @required this.linkMap, + Key? key, + required this.viewModel, + required this.tokenMap, + required this.gatewayMap, + required this.linkMap, }) : super(key: key); final ClientViewVM viewModel; @@ -38,17 +38,17 @@ class ClientViewPaymentMethods extends StatelessWidget { final customerReference = customerReferences[index]; return ListTile( title: Text( - '${localization.gateway} › ${gatewayMap[customerReference].label}'), + '${localization!.gateway} › ${gatewayMap[customerReference]!.label}'), subtitle: Column( mainAxisSize: MainAxisSize.min, - children: tokenMap[customerReference] + children: tokenMap[customerReference]! .map((token) => TokenMeta( meta: token.meta, )) .toList(), ), onTap: linkMap.containsKey(customerReference) - ? () => launchUrl(Uri.parse(linkMap[customerReference])) + ? () => launchUrl(Uri.parse(linkMap[customerReference]!)) : null, leading: IgnorePointer( child: IconButton( diff --git a/lib/ui/client/view/client_view_system_logs.dart b/lib/ui/client/view/client_view_system_logs.dart index 05a9bcf72..73f6e5bd6 100644 --- a/lib/ui/client/view/client_view_system_logs.dart +++ b/lib/ui/client/view/client_view_system_logs.dart @@ -8,9 +8,9 @@ import 'package:invoiceninja_flutter/ui/app/system_log_viewer.dart'; import 'package:invoiceninja_flutter/ui/client/view/client_view_vm.dart'; class ClientViewSystemLogs extends StatefulWidget { - const ClientViewSystemLogs({Key key, this.viewModel}) : super(key: key); + const ClientViewSystemLogs({Key? key, this.viewModel}) : super(key: key); - final ClientViewVM viewModel; + final ClientViewVM? viewModel; @override _ClientViewSystemLogsState createState() => _ClientViewSystemLogsState(); @@ -19,15 +19,15 @@ class ClientViewSystemLogs extends StatefulWidget { class _ClientViewSystemLogsState extends State { @override void didChangeDependencies() { - if (widget.viewModel.client.isStale) { - widget.viewModel.onRefreshed(context); + if (widget.viewModel!.client.isStale) { + widget.viewModel!.onRefreshed(context); } super.didChangeDependencies(); } @override Widget build(BuildContext context) { - final client = widget.viewModel.client; + final client = widget.viewModel!.client; if (client.isStale) { return LoadingIndicator(); diff --git a/lib/ui/client/view/client_view_vm.dart b/lib/ui/client/view/client_view_vm.dart index 87fa1d572..43efd05ff 100644 --- a/lib/ui/client/view/client_view_vm.dart +++ b/lib/ui/client/view/client_view_vm.dart @@ -22,7 +22,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class ClientViewScreen extends StatelessWidget { const ClientViewScreen({ - Key key, + Key? key, this.isFilter = false, this.isTopFilter = false, }) : super(key: key); @@ -52,15 +52,15 @@ class ClientViewScreen extends StatelessWidget { class ClientViewVM { ClientViewVM({ - @required this.state, - @required this.client, - @required this.company, - @required this.onEntityAction, - @required this.isSaving, - @required this.isLoading, - @required this.isDirty, - @required this.onRefreshed, - @required this.onUploadDocuments, + required this.state, + required this.client, + required this.company, + required this.onEntityAction, + required this.isSaving, + required this.isLoading, + required this.isDirty, + required this.onRefreshed, + required this.onUploadDocuments, }); factory ClientViewVM.fromStore(Store store) { @@ -70,7 +70,7 @@ class ClientViewVM { Future _handleRefresh(BuildContext context) { final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(LoadClient( completer: completer, clientId: client.id, @@ -97,7 +97,7 @@ class ClientViewVM { client: client, completer: completer)); completer.future.then((client) { - showToast(AppLocalization.of(context).uploadedDocument); + showToast(AppLocalization.of(context)!.uploadedDocument); }).catchError((Object error) { showDialog( context: context, @@ -111,7 +111,7 @@ class ClientViewVM { final AppState state; final ClientEntity client; - final CompanyEntity company; + final CompanyEntity? company; final Function(BuildContext, EntityAction) onEntityAction; final Function(BuildContext) onRefreshed; final Function(BuildContext, List, bool) onUploadDocuments; diff --git a/lib/ui/company_gateway/company_gateway_list.dart b/lib/ui/company_gateway/company_gateway_list.dart index ca39c7f30..a33b28c9a 100644 --- a/lib/ui/company_gateway/company_gateway_list.dart +++ b/lib/ui/company_gateway/company_gateway_list.dart @@ -14,8 +14,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class CompanyGatewayList extends StatefulWidget { const CompanyGatewayList({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final CompanyGatewayListVM viewModel; @@ -26,7 +26,7 @@ class CompanyGatewayList extends StatefulWidget { class _CompanyGatewayListState extends State { // TODO remove this https://github.com/flutter/flutter/issues/71946 - ScrollController _controller; + ScrollController? _controller; @override void initState() { @@ -36,7 +36,7 @@ class _CompanyGatewayListState extends State { @override void dispose() { - _controller.dispose(); + _controller!.dispose(); super.dispose(); } @@ -54,7 +54,7 @@ class _CompanyGatewayListState extends State { if (viewModel.companyGatewayList.isEmpty) { return Center( - child: HelpText(AppLocalization.of(context).noRecordsFound)); + child: HelpText(AppLocalization.of(context)!.noRecordsFound)); } return Stack( @@ -85,7 +85,7 @@ class _CompanyGatewayListState extends State { widget.viewModel.companyGatewayMap[companyGatewayId]; return CompanyGatewayListItem( key: ValueKey('__company_gateway_$companyGatewayId'), - user: state.userCompany.user, + user: state.userCompany!.user, filter: widget.viewModel.filter, companyGateway: companyGateway, onRemovePressed: widget @@ -94,7 +94,7 @@ class _CompanyGatewayListState extends State { widget.viewModel.onRemovePressed(companyGatewayId) : null, isChecked: isInMultiselect && - listUIState.isSelected(companyGateway.id)); + listUIState.isSelected(companyGateway!.id)); }).toList(), ), ), diff --git a/lib/ui/company_gateway/company_gateway_list_item.dart b/lib/ui/company_gateway/company_gateway_list_item.dart index d1717aee3..e8c12b580 100644 --- a/lib/ui/company_gateway/company_gateway_list_item.dart +++ b/lib/ui/company_gateway/company_gateway_list_item.dart @@ -16,20 +16,20 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class CompanyGatewayListItem extends StatelessWidget { const CompanyGatewayListItem({ - Key key, - @required this.user, - @required this.companyGateway, - @required this.filter, + Key? key, + required this.user, + required this.companyGateway, + required this.filter, this.onRemovePressed, this.onCheckboxChanged, this.isChecked = false, }) : super(key: key); - final UserEntity user; - final CompanyGatewayEntity companyGateway; - final String filter; - final Function(bool) onCheckboxChanged; - final Function onRemovePressed; + final UserEntity? user; + final CompanyGatewayEntity? companyGateway; + final String? filter; + final Function(bool?)? onCheckboxChanged; + final Function? onRemovePressed; final bool isChecked; static final companyGatewayItemKey = @@ -41,8 +41,8 @@ class CompanyGatewayListItem extends StatelessWidget { final state = store.state; final localization = AppLocalization.of(context); - final filterMatch = filter != null && filter.isNotEmpty - ? companyGateway.matchesFilterValue(filter) + final filterMatch = filter != null && filter!.isNotEmpty + ? companyGateway!.matchesFilterValue(filter) : null; final subtitle = filterMatch; final listUIState = state.uiState.companyGatewayUIState.listUIState; @@ -50,13 +50,13 @@ class CompanyGatewayListItem extends StatelessWidget { final showCheckbox = onCheckboxChanged != null || isInMultiselect; final child = ListTile( - onTap: () => selectEntity(entity: companyGateway), + onTap: () => selectEntity(entity: companyGateway!), trailing: onRemovePressed == null ? null : Padding( padding: const EdgeInsets.only(right: 16), child: AppTextButton( - label: AppLocalization.of(context).remove, + label: AppLocalization.of(context)!.remove, onPressed: onRemovePressed, ), ), @@ -66,7 +66,7 @@ class CompanyGatewayListItem extends StatelessWidget { child: Checkbox( value: isChecked, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, - onChanged: (value) => onCheckboxChanged(value), + onChanged: (value) => onCheckboxChanged!(value), activeColor: Theme.of(context).colorScheme.secondary, ), ) @@ -77,11 +77,11 @@ class CompanyGatewayListItem extends StatelessWidget { children: [ Expanded( child: Text( - companyGateway.listDisplayName, + companyGateway!.listDisplayName, style: Theme.of(context).textTheme.titleMedium, ), ), - Text(formatNumber(companyGateway.listDisplayAmount, context), + Text(formatNumber(companyGateway!.listDisplayAmount, context)!, style: Theme.of(context).textTheme.titleMedium), ], ), @@ -90,7 +90,7 @@ class CompanyGatewayListItem extends StatelessWidget { mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ - if (companyGateway.isTestMode) Text(localization.testMode), + if (companyGateway!.isTestMode) Text(localization!.testMode), subtitle != null && subtitle.isNotEmpty ? Text( subtitle, diff --git a/lib/ui/company_gateway/company_gateway_list_vm.dart b/lib/ui/company_gateway/company_gateway_list_vm.dart index 3edf35fb5..80843d735 100644 --- a/lib/ui/company_gateway/company_gateway_list_vm.dart +++ b/lib/ui/company_gateway/company_gateway_list_vm.dart @@ -24,7 +24,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class CompanyGatewayListBuilder extends StatelessWidget { - const CompanyGatewayListBuilder({Key key}) : super(key: key); + const CompanyGatewayListBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -41,15 +41,15 @@ class CompanyGatewayListBuilder extends StatelessWidget { class CompanyGatewayListVM { CompanyGatewayListVM({ - @required this.state, - @required this.companyGatewayList, - @required this.companyGatewayMap, - @required this.filter, - @required this.onCompanyGatewayTap, - @required this.listState, - @required this.onRefreshed, - @required this.onSortChanged, - @required this.onRemovePressed, + required this.state, + required this.companyGatewayList, + required this.companyGatewayMap, + required this.filter, + required this.onCompanyGatewayTap, + required this.listState, + required this.onRefreshed, + required this.onSortChanged, + required this.onRemovePressed, }); static CompanyGatewayListVM fromStore(Store store) { @@ -58,14 +58,14 @@ class CompanyGatewayListVM { return Future(null); } final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(RefreshData(completer: completer)); return completer.future; } final state = store.state; final uiState = state.uiState.settingsUIState; - String companyGatewayIds = + String? companyGatewayIds = state.uiState.settingsUIState.settings.companyGatewayIds; if ((companyGatewayIds ?? '').isEmpty) { companyGatewayIds = state.companyGatewayState.list.join(','); @@ -115,9 +115,9 @@ class CompanyGatewayListVM { final AppState state; final List companyGatewayList; - final BuiltMap companyGatewayMap; + final BuiltMap companyGatewayMap; final ListUIState listState; - final String filter; + final String? filter; final Function(BuildContext, CompanyGatewayEntity) onCompanyGatewayTap; final Function(BuildContext) onRefreshed; final Function(int, int) onSortChanged; diff --git a/lib/ui/company_gateway/company_gateway_screen.dart b/lib/ui/company_gateway/company_gateway_screen.dart index 68390c510..b8e85da5a 100644 --- a/lib/ui/company_gateway/company_gateway_screen.dart +++ b/lib/ui/company_gateway/company_gateway_screen.dart @@ -26,8 +26,8 @@ import 'company_gateway_screen_vm.dart'; class CompanyGatewayScreen extends StatelessWidget { const CompanyGatewayScreen({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); static const String route = '/$kSettings/$kSettingsCompanyGateways'; @@ -38,7 +38,7 @@ class CompanyGatewayScreen extends StatelessWidget { Widget build(BuildContext context) { final store = StoreProvider.of(context); final state = store.state; - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final listUIState = state.uiState.companyGatewayUIState.listUIState; final settingsUIState = state.uiState.settingsUIState; @@ -60,11 +60,11 @@ class CompanyGatewayScreen extends StatelessWidget { SaveCancelButtons( isHeader: true, saveLabel: localization.actions, - onSavePressed: listUIState.selectedIds.isEmpty + onSavePressed: listUIState.selectedIds!.isEmpty ? null : (context) async { - final companyGateways = listUIState.selectedIds - .map((companyGatewayId) => + final companyGateways = listUIState.selectedIds! + .map((companyGatewayId) => viewModel.companyGatewayMap[companyGatewayId]) .toList(); @@ -72,8 +72,8 @@ class CompanyGatewayScreen extends StatelessWidget { entities: companyGateways, multiselect: true, completer: Completer() - ..future.then((_) => - store.dispatch(ClearCompanyGatewayMultiselect())), + ..future.then(((_) => + store.dispatch(ClearCompanyGatewayMultiselect())) as FutureOr Function(Null)), ); }, onCancelPressed: (context) => @@ -133,7 +133,7 @@ class CompanyGatewayScreen extends StatelessWidget { }, ), floatingActionButton: - state.prefState.isMobile && state.userCompany.isAdmin + state.prefState.isMobile && state.userCompany!.isAdmin ? FloatingActionButton( heroTag: 'company_gateway_fab', backgroundColor: Theme.of(context).primaryColorDark, diff --git a/lib/ui/company_gateway/company_gateway_screen_vm.dart b/lib/ui/company_gateway/company_gateway_screen_vm.dart index efedbfd3d..ba089add1 100644 --- a/lib/ui/company_gateway/company_gateway_screen_vm.dart +++ b/lib/ui/company_gateway/company_gateway_screen_vm.dart @@ -21,7 +21,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; import 'company_gateway_screen.dart'; class CompanyGatewayScreenBuilder extends StatelessWidget { - const CompanyGatewayScreenBuilder({Key key}) : super(key: key); + const CompanyGatewayScreenBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -38,17 +38,17 @@ class CompanyGatewayScreenBuilder extends StatelessWidget { class CompanyGatewayScreenVM { CompanyGatewayScreenVM({ - @required this.isInMultiselect, - @required this.companyGatewayList, - @required this.userCompany, - @required this.companyGatewayMap, - @required this.onSavePressed, + required this.isInMultiselect, + required this.companyGatewayList, + required this.userCompany, + required this.companyGatewayMap, + required this.onSavePressed, }); final bool isInMultiselect; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List companyGatewayList; - final BuiltMap companyGatewayMap; + final BuiltMap companyGatewayMap; final Function(BuildContext) onSavePressed; static CompanyGatewayScreenVM fromStore(Store store) { @@ -72,19 +72,19 @@ class CompanyGatewayScreenVM { switch (settingsUIState.entityType) { case EntityType.company: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch(SaveCompanyRequest( completer: completer, company: settingsUIState.company)); break; case EntityType.group: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch(SaveGroupRequest( completer: completer, group: settingsUIState.group)); break; case EntityType.client: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch(SaveClientRequest( completer: completer, client: settingsUIState.client)); break; diff --git a/lib/ui/company_gateway/edit/company_gateway_edit.dart b/lib/ui/company_gateway/edit/company_gateway_edit.dart index ba2b36bbf..d712e8caf 100644 --- a/lib/ui/company_gateway/edit/company_gateway_edit.dart +++ b/lib/ui/company_gateway/edit/company_gateway_edit.dart @@ -35,8 +35,8 @@ import 'package:invoiceninja_flutter/utils/strings.dart'; class CompanyGatewayEdit extends StatefulWidget { const CompanyGatewayEdit({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final CompanyGatewayEditVM viewModel; @@ -51,7 +51,7 @@ class _CompanyGatewayEditState extends State GlobalKey(debugLabel: '_companyGatewayEdit'); final FocusScopeNode _focusNode = FocusScopeNode(); - TabController _controller; + TabController? _controller; // ignore: unused_field String _gatewayTypeId = kGatewayTypeCreditCard; @@ -84,7 +84,7 @@ class _CompanyGatewayEditState extends State @override void dispose() { - _controller.dispose(); + _controller!.dispose(); _focusNode.dispose(); super.dispose(); } @@ -94,12 +94,12 @@ class _CompanyGatewayEditState extends State final viewModel = widget.viewModel; final state = viewModel.state; final company = state.company; - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final companyGateway = viewModel.companyGateway; final origCompanyGateway = state.companyGatewayState.get(companyGateway.id); final gateway = state.staticState.gatewayMap[companyGateway.gatewayId]; final accountId = - (companyGateway.parsedConfig['account_id'] ?? '').toString(); + (companyGateway.parsedConfig!['account_id'] ?? '').toString(); final connectGateways = [ kGatewayStripeConnect, @@ -118,7 +118,7 @@ class _CompanyGatewayEditState extends State entity: companyGateway, title: viewModel.companyGateway.isNew ? localization.newCompanyGateway - : origCompanyGateway.listDisplayName, + : origCompanyGateway!.listDisplayName, onSavePressed: disableSave ? null : viewModel.onSavePressed, onCancelPressed: viewModel.onCancelPressed, appBarBottom: TabBar( @@ -174,7 +174,7 @@ class _CompanyGatewayEditState extends State (companyGateway.gatewayId == kGatewayStripeConnect && accountId.isEmpty)) ...[ AppButton( - label: localization.gatewaySetup.toUpperCase(), + label: localization.gatewaySetup!.toUpperCase(), onPressed: viewModel.state.isSaving ? null : () { @@ -247,7 +247,7 @@ class _CompanyGatewayEditState extends State SettingsEntity.AUTO_BILL_OFF, ] .map( - (type) => Text(localization.lookup(type))) + (type) => Text(localization.lookup(type)!)) .toList(), onChanged: (dynamic value) => viewModel.onChanged( companyGateway @@ -270,7 +270,7 @@ class _CompanyGatewayEditState extends State SwitchListTile( title: Text(kGatewayTypes.containsKey(gatewayTypeId) ? localization - .lookup(kGatewayTypes[gatewayTypeId] ?? '') + .lookup(kGatewayTypes[gatewayTypeId] ?? '')! : '$gatewayTypeId'), activeColor: Theme.of(context).colorScheme.secondary, value: companyGateway @@ -327,7 +327,7 @@ class _CompanyGatewayEditState extends State .rebuild((b) => b..requireContactEmail = value)), controlAffinity: ListTileControlAffinity.leading, ), - if (company.hasCustomField(CustomFieldType.client1)) + if (company!.hasCustomField(CustomFieldType.client1)) CheckboxListTile( activeColor: Theme.of(context).colorScheme.secondary, title: Text(company @@ -469,7 +469,7 @@ class _CompanyGatewayEditState extends State items: enabledGatewayIds .map((gatewayTypeId) => DropdownMenuItem( child: Text(localization.lookup( - kGatewayTypes[gatewayTypeId] ?? '')), + kGatewayTypes[gatewayTypeId] ?? '')!), value: gatewayTypeId, )) .toList(), @@ -506,21 +506,21 @@ class _CompanyGatewayEditState extends State class CardListTile extends StatelessWidget { const CardListTile({this.viewModel, this.paymentType, this.cardType}); - final CompanyGatewayEditVM viewModel; - final String paymentType; - final int cardType; + final CompanyGatewayEditVM? viewModel; + final String? paymentType; + final int? cardType; @override Widget build(BuildContext context) { - final staticState = viewModel.state.staticState; - final companyGateway = viewModel.companyGateway; + final staticState = viewModel!.state.staticState; + final companyGateway = viewModel!.companyGateway; return CheckboxListTile( controlAffinity: ListTileControlAffinity.leading, activeColor: Theme.of(context).colorScheme.secondary, title: Text(staticState.paymentTypeMap[paymentType]?.name ?? ''), - value: companyGateway.supportsCard(cardType), - onChanged: (value) => viewModel.onChanged(value + value: companyGateway.supportsCard(cardType!), + onChanged: (value) => viewModel!.onChanged(value! ? companyGateway.addCard(cardType) : companyGateway.removeCard(cardType)), ); @@ -529,21 +529,21 @@ class CardListTile extends StatelessWidget { class GatewayConfigSettings extends StatelessWidget { const GatewayConfigSettings({ - Key key, + Key? key, this.companyGateway, this.viewModel, this.disasbledFields = const [], }) : super(key: key); - final CompanyGatewayEntity companyGateway; - final CompanyGatewayEditVM viewModel; + final CompanyGatewayEntity? companyGateway; + final CompanyGatewayEditVM? viewModel; final List disasbledFields; @override Widget build(BuildContext context) { - final state = viewModel.state; + final state = viewModel!.state; final localization = AppLocalization.of(context); - final gateway = state.staticState.gatewayMap[companyGateway.gatewayId]; + final gateway = state.staticState.gatewayMap[companyGateway!.gatewayId]; if (gateway == null) { return SizedBox(); @@ -560,22 +560,22 @@ class GatewayConfigSettings extends StatelessWidget { padding: const EdgeInsets.symmetric(vertical: 8), child: IconText( icon: MdiIcons.openInNew, - text: localization.learnMore.toUpperCase(), + text: localization!.learnMore.toUpperCase(), ), ), onPressed: () => launchUrl(Uri.parse(gateway.siteUrl)), ), ), - ...gateway.parsedFields.keys + ...gateway.parsedFields!.keys .map((field) => GatewayConfigField( field: field, - value: companyGateway.parsedConfig[field], + value: companyGateway!.parsedConfig![field], gateway: gateway, - defaultValue: gateway.parsedFields[field], + defaultValue: gateway.parsedFields![field], enabled: !disasbledFields.contains(field), onChanged: (dynamic value) { - viewModel - .onChanged(companyGateway.updateConfig(field, value)); + viewModel! + .onChanged(companyGateway!.updateConfig(field, value)); }, )) .toList() @@ -586,13 +586,13 @@ class GatewayConfigSettings extends StatelessWidget { class GatewayConfigField extends StatefulWidget { const GatewayConfigField({ - Key key, - @required this.gateway, - @required this.field, - @required this.value, - @required this.defaultValue, - @required this.onChanged, - @required this.enabled, + Key? key, + required this.gateway, + required this.field, + required this.value, + required this.defaultValue, + required this.onChanged, + required this.enabled, }) : super(key: key); final GatewayEntity gateway; @@ -608,7 +608,7 @@ class GatewayConfigField extends StatefulWidget { class _GatewayConfigFieldState extends State { bool autoValidate = false; - TextEditingController _textController; + TextEditingController? _textController; @override void initState() { @@ -618,23 +618,23 @@ class _GatewayConfigFieldState extends State { @override void dispose() { - _textController.dispose(); + _textController!.dispose(); super.dispose(); } @override void didChangeDependencies() { - _textController.removeListener(_onChanged); + _textController!.removeListener(_onChanged); - _textController.text = (widget.value ?? widget.defaultValue).toString(); + _textController!.text = (widget.value ?? widget.defaultValue).toString(); - _textController.addListener(_onChanged); + _textController!.addListener(_onChanged); super.didChangeDependencies(); } void _onChanged() { - widget.onChanged(_textController.text.trim()); + widget.onChanged(_textController!.text.trim()); } bool _obscureText(String field) { @@ -716,12 +716,12 @@ class _GatewayConfigFieldState extends State { class LimitEditor extends StatefulWidget { const LimitEditor( - {Key key, this.companyGateway, this.viewModel, this.gatewayTypeId}) + {Key? key, this.companyGateway, this.viewModel, this.gatewayTypeId}) : super(key: key); - final CompanyGatewayEntity companyGateway; - final CompanyGatewayEditVM viewModel; - final String gatewayTypeId; + final CompanyGatewayEntity? companyGateway; + final CompanyGatewayEditVM? viewModel; + final String? gatewayTypeId; @override _LimitEditorState createState() => _LimitEditorState(); @@ -730,11 +730,11 @@ class LimitEditor extends StatefulWidget { class _LimitEditorState extends State { final _debouncer = Debouncer(); - bool _enableMin = false; - bool _enableMax = false; + bool? _enableMin = false; + bool? _enableMax = false; - TextEditingController _minController; - TextEditingController _maxController; + TextEditingController? _minController; + TextEditingController? _maxController; @override void initState() { @@ -745,17 +745,17 @@ class _LimitEditorState extends State { @override void dispose() { - _minController.dispose(); - _maxController.dispose(); + _minController!.dispose(); + _maxController!.dispose(); super.dispose(); } @override void didChangeDependencies() { - _minController.removeListener(_onTextChange); - _maxController.removeListener(_onTextChange); + _minController!.removeListener(_onTextChange); + _maxController!.removeListener(_onTextChange); - final companyGateway = widget.companyGateway; + final companyGateway = widget.companyGateway!; final settings = companyGateway.getSettingsForGatewayTypeId(widget.gatewayTypeId); @@ -767,30 +767,30 @@ class _LimitEditorState extends State { _enableMax = true; } - _minController.text = settings.minLimit == -1 + _minController!.text = settings.minLimit == -1 ? '' : formatNumber((settings.minLimit ?? 0).toDouble(), context, - formatNumberType: FormatNumberType.inputMoney); - _maxController.text = settings.maxLimit == -1 + formatNumberType: FormatNumberType.inputMoney)!; + _maxController!.text = settings.maxLimit == -1 ? '' : formatNumber((settings.maxLimit ?? 0).toDouble(), context, - formatNumberType: FormatNumberType.inputMoney); + formatNumberType: FormatNumberType.inputMoney)!; - _minController.addListener(_onTextChange); - _maxController.addListener(_onTextChange); + _minController!.addListener(_onTextChange); + _maxController!.addListener(_onTextChange); super.didChangeDependencies(); } void _onChanged() { - final viewModel = widget.viewModel; + final viewModel = widget.viewModel!; final companyGateway = viewModel.companyGateway; final settings = companyGateway.getSettingsForGatewayTypeId(widget.gatewayTypeId); final updatedSettings = settings.rebuild((b) => b - ..minLimit = _enableMin ? parseDouble(_minController.text.trim()) : -1 - ..maxLimit = _enableMax ? parseDouble(_maxController.text.trim()) : -1); + ..minLimit = _enableMin! ? parseDouble(_minController!.text.trim()) : -1 + ..maxLimit = _enableMax! ? parseDouble(_maxController!.text.trim()) : -1); if (settings != updatedSettings) { viewModel.onChanged(companyGateway.rebuild( @@ -806,7 +806,7 @@ class _LimitEditorState extends State { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; return FormCard( children: [ @@ -837,8 +837,8 @@ class _LimitEditorState extends State { setState(() { _enableMin = value; _onChanged(); - if (!value) { - _minController.text = ''; + if (!value!) { + _minController!.text = ''; } }); }, @@ -872,8 +872,8 @@ class _LimitEditorState extends State { setState(() { _enableMax = value; _onChanged(); - if (!value) { - _maxController.text = ''; + if (!value!) { + _maxController!.text = ''; } }); }, @@ -890,12 +890,12 @@ class _LimitEditorState extends State { class FeesEditor extends StatefulWidget { const FeesEditor( - {Key key, this.companyGateway, this.viewModel, this.gatewayTypeId}) + {Key? key, this.companyGateway, this.viewModel, this.gatewayTypeId}) : super(key: key); - final CompanyGatewayEntity companyGateway; - final CompanyGatewayEditVM viewModel; - final String gatewayTypeId; + final CompanyGatewayEntity? companyGateway; + final CompanyGatewayEditVM? viewModel; + final String? gatewayTypeId; @override _FeesEditorState createState() => _FeesEditorState(); @@ -906,7 +906,7 @@ class _FeesEditorState extends State { final _percentController = TextEditingController(); final _capController = TextEditingController(); - List _controllers; + late List _controllers; final _debouncer = Debouncer(); @override @@ -927,7 +927,7 @@ class _FeesEditorState extends State { _capController, ]; - final companyGateway = widget.companyGateway; + final companyGateway = widget.companyGateway!; final settings = companyGateway.getSettingsForGatewayTypeId(widget.gatewayTypeId); @@ -935,11 +935,11 @@ class _FeesEditorState extends State { .forEach((dynamic controller) => controller.removeListener(_onChanged)); _amountController.text = formatNumber(settings.feeAmount, context, - formatNumberType: FormatNumberType.inputMoney); + formatNumberType: FormatNumberType.inputMoney)!; _percentController.text = formatNumber(settings.feePercent, context, - formatNumberType: FormatNumberType.inputMoney); + formatNumberType: FormatNumberType.inputMoney)!; _capController.text = formatNumber(settings.feeCap, context, - formatNumberType: FormatNumberType.inputMoney); + formatNumberType: FormatNumberType.inputMoney)!; _controllers .forEach((dynamic controller) => controller.addListener(_onChanged)); @@ -948,7 +948,7 @@ class _FeesEditorState extends State { } void _onChanged() { - final viewModel = widget.viewModel; + final viewModel = widget.viewModel!; final companyGateway = viewModel.companyGateway; final settings = companyGateway.getSettingsForGatewayTypeId(widget.gatewayTypeId); @@ -971,8 +971,8 @@ class _FeesEditorState extends State { } String _sampleFee() { - final localization = AppLocalization.of(context); - final viewModel = widget.viewModel; + final localization = AppLocalization.of(context)!; + final viewModel = widget.viewModel!; final companyGateway = viewModel.companyGateway; final settings = companyGateway.getSettingsForGatewayTypeId(widget.gatewayTypeId); @@ -980,17 +980,17 @@ class _FeesEditorState extends State { const double amount = 100; final fee = settings.calculateSampleFee(100); - return localization.feesSample - .replaceFirst(':amount', formatNumber(amount, context)) - .replaceFirst(':total', formatNumber(fee, context)); + return localization.feesSample! + .replaceFirst(':amount', formatNumber(amount, context)!) + .replaceFirst(':total', formatNumber(fee, context)!); } @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); - final viewModel = widget.viewModel; + final localization = AppLocalization.of(context)!; + final viewModel = widget.viewModel!; final companyGateway = viewModel.companyGateway; - final company = viewModel.state.company; + final company = viewModel.state.company!; final settings = companyGateway.getSettingsForGatewayTypeId(widget.gatewayTypeId); diff --git a/lib/ui/company_gateway/edit/company_gateway_edit_vm.dart b/lib/ui/company_gateway/edit/company_gateway_edit_vm.dart index 154432fa8..eef660de1 100644 --- a/lib/ui/company_gateway/edit/company_gateway_edit_vm.dart +++ b/lib/ui/company_gateway/edit/company_gateway_edit_vm.dart @@ -30,7 +30,7 @@ import 'package:invoiceninja_flutter/utils/dialogs.dart'; import 'package:invoiceninja_flutter/utils/formatting.dart'; class CompanyGatewayEditScreen extends StatelessWidget { - const CompanyGatewayEditScreen({Key key}) : super(key: key); + const CompanyGatewayEditScreen({Key? key}) : super(key: key); static const String route = '/$kSettings/$kSettingsCompanyGatewaysEdit'; @override @@ -51,20 +51,20 @@ class CompanyGatewayEditScreen extends StatelessWidget { class CompanyGatewayEditVM { CompanyGatewayEditVM({ - @required this.state, - @required this.companyGateway, - @required this.company, - @required this.onChanged, - @required this.isSaving, - @required this.origCompanyGateway, - @required this.onSavePressed, - @required this.onCancelPressed, - @required this.isLoading, - @required this.onGatewaySignUpPressed, + required this.state, + required this.companyGateway, + required this.company, + required this.onChanged, + required this.isSaving, + required this.origCompanyGateway, + required this.onSavePressed, + required this.onCancelPressed, + required this.isLoading, + required this.onGatewaySignUpPressed, }); factory CompanyGatewayEditVM.fromStore(Store store) { - final companyGateway = store.state.companyGatewayUIState.editing; + final companyGateway = store.state.companyGatewayUIState.editing!; final state = store.state; return CompanyGatewayEditVM( @@ -92,11 +92,11 @@ class CompanyGatewayEditVM { store.dispatch(SaveCompanyGatewayRequest( completer: completer, companyGateway: companyGateway)); return completer.future.then((savedCompanyGateway) { - showToast(companyGateway.isNew - ? localization.createdCompanyGateway - : localization.updatedCompanyGateway); + showToast(companyGateway!.isNew + ? localization!.createdCompanyGateway + : localization!.updatedCompanyGateway); - final company = store.state.company; + final company = store.state.company!; if ((company.settings.companyGatewayIds ?? '').isNotEmpty) { store.dispatch(SaveCompanyRequest( completer: Completer(), @@ -109,10 +109,10 @@ class CompanyGatewayEditVM { store.dispatch( UpdateCurrentRoute(CompanyGatewayViewScreen.route)); if (companyGateway.isNew) { - navigator + navigator! .pushReplacementNamed(CompanyGatewayViewScreen.route); } else { - navigator.pop(savedCompanyGateway); + navigator!.pop(savedCompanyGateway); } } else { viewEntityById( @@ -122,7 +122,7 @@ class CompanyGatewayEditVM { } }).catchError((Object error) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { return ErrorDialog(error); }); @@ -161,13 +161,13 @@ class CompanyGatewayEditVM { } final CompanyGatewayEntity companyGateway; - final CompanyEntity company; + final CompanyEntity? company; final Function(CompanyGatewayEntity) onChanged; final Function(BuildContext) onSavePressed; final Function(BuildContext) onCancelPressed; final bool isLoading; final bool isSaving; - final CompanyGatewayEntity origCompanyGateway; + final CompanyGatewayEntity? origCompanyGateway; final AppState state; final Function(String) onGatewaySignUpPressed; } diff --git a/lib/ui/company_gateway/view/company_gateway_view.dart b/lib/ui/company_gateway/view/company_gateway_view.dart index bb7def5ee..b74ca2dfa 100644 --- a/lib/ui/company_gateway/view/company_gateway_view.dart +++ b/lib/ui/company_gateway/view/company_gateway_view.dart @@ -26,9 +26,9 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class CompanyGatewayView extends StatefulWidget { const CompanyGatewayView({ - Key key, - @required this.viewModel, - @required this.isFilter, + Key? key, + required this.viewModel, + required this.isFilter, }) : super(key: key); final CompanyGatewayViewVM viewModel; @@ -40,7 +40,7 @@ class CompanyGatewayView extends StatefulWidget { class _CompanyGatewayViewState extends State with SingleTickerProviderStateMixin { - TabController _controller; + TabController? _controller; @override void initState() { @@ -50,13 +50,13 @@ class _CompanyGatewayViewState extends State @override void dispose() { - _controller.dispose(); + _controller!.dispose(); super.dispose(); } @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; final companyGateway = viewModel.companyGateway; @@ -94,9 +94,9 @@ class _CompanyGatewayViewState extends State class _CompanyGatewayOverview extends StatelessWidget { const _CompanyGatewayOverview({ - Key key, - @required this.viewModel, - @required this.isFilter, + Key? key, + required this.viewModel, + required this.isFilter, }) : super(key: key); final bool isFilter; @@ -106,16 +106,16 @@ class _CompanyGatewayOverview extends StatelessWidget { Widget build(BuildContext context) { final state = viewModel.state; final companyGateway = viewModel.companyGateway; - final gateway = state.staticState.gatewayMap[companyGateway.gatewayId]; - final localization = AppLocalization.of(context); + final gateway = state.staticState.gatewayMap[companyGateway.gatewayId]!; + final localization = AppLocalization.of(context)!; final processed = memoizedCalculateCompanyGatewayProcessed( companyGateway.id, viewModel.state.paymentState.map); final webhookUrl = - '${state.account.defaultUrl}/payment_webhook/${state.company.companyKey}/${companyGateway.id}'; + '${state.account!.defaultUrl}/payment_webhook/${state.company!.companyKey}/${companyGateway.id}'; - final allFields = >{}; + final Map> allFields = >{}; for (var gatewayTypeId in kGatewayTypes.keys) { - final Map fields = {}; + final Map fields = {}; if (companyGateway.feesAndLimitsMap.containsKey(gatewayTypeId)) { final settings = companyGateway.getSettingsForGatewayTypeId(gatewayTypeId); @@ -160,7 +160,7 @@ class _CompanyGatewayOverview extends StatelessWidget { child: AppButton( iconData: isDesktop(context) ? MdiIcons.checkCircleOutline : null, - label: localization.verifyCustomers.toUpperCase(), + label: localization.verifyCustomers!.toUpperCase(), onPressed: () => viewModel.onStripeVerifyPressed(context), ), ), @@ -168,7 +168,7 @@ class _CompanyGatewayOverview extends StatelessWidget { Expanded( child: AppButton( iconData: isDesktop(context) ? MdiIcons.import : null, - label: localization.importCustomers.toUpperCase(), + label: localization.importCustomers!.toUpperCase(), onPressed: () => viewModel.onStripeImportPressed(context), ), ), @@ -230,7 +230,7 @@ class _CompanyGatewayOverview extends StatelessWidget { Padding( padding: const EdgeInsets.only(top: 20, left: 20), child: Text( - localization.lookup(kGatewayTypes[entry.key]), + localization.lookup(kGatewayTypes[entry.key])!, style: Theme.of(context).textTheme.titleLarge, ), ), @@ -242,8 +242,8 @@ class _CompanyGatewayOverview extends StatelessWidget { class _CompanyGatewaySystemLog extends StatefulWidget { const _CompanyGatewaySystemLog({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final CompanyGatewayViewVM viewModel; diff --git a/lib/ui/company_gateway/view/company_gateway_view_vm.dart b/lib/ui/company_gateway/view/company_gateway_view_vm.dart index 6e21067c1..04ffcdf8d 100644 --- a/lib/ui/company_gateway/view/company_gateway_view_vm.dart +++ b/lib/ui/company_gateway/view/company_gateway_view_vm.dart @@ -26,7 +26,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class CompanyGatewayViewScreen extends StatelessWidget { const CompanyGatewayViewScreen({ - Key key, + Key? key, this.isFilter = false, }) : super(key: key); final bool isFilter; @@ -51,17 +51,17 @@ class CompanyGatewayViewScreen extends StatelessWidget { class CompanyGatewayViewVM { CompanyGatewayViewVM({ - @required this.state, - @required this.companyGateway, - @required this.company, - @required this.onEntityAction, - @required this.onBackPressed, - @required this.onRefreshed, - @required this.isSaving, - @required this.isLoading, - @required this.isDirty, - @required this.onStripeImportPressed, - @required this.onStripeVerifyPressed, + required this.state, + required this.companyGateway, + required this.company, + required this.onEntityAction, + required this.onBackPressed, + required this.onRefreshed, + required this.isSaving, + required this.isLoading, + required this.isDirty, + required this.onStripeImportPressed, + required this.onStripeVerifyPressed, }); factory CompanyGatewayViewVM.fromStore(Store store) { @@ -72,7 +72,7 @@ class CompanyGatewayViewVM { Future _handleRefresh(BuildContext context) { final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(LoadCompanyGateway( completer: completer, companyGatewayId: companyGateway.id)); return completer.future; @@ -108,10 +108,10 @@ class CompanyGatewayViewVM { store.dispatch(StopSaving()); showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { return AlertDialog( - title: Text(localization.customerCount), + title: Text(localization!.customerCount!), actions: [ TextButton( onPressed: () => Navigator.of(context).pop(), @@ -169,7 +169,7 @@ class CompanyGatewayViewVM { .then((dynamic response) { store.dispatch(StopSaving()); showMessageDialog( - context: context, message: localization.importedCustomers); + context: context, message: localization!.importedCustomers); }).catchError((dynamic error) { store.dispatch(StopSaving()); showErrorDialog(message: error); @@ -181,7 +181,7 @@ class CompanyGatewayViewVM { final AppState state; final CompanyGatewayEntity companyGateway; - final CompanyEntity company; + final CompanyEntity? company; final Function(BuildContext, EntityAction) onEntityAction; final Function onBackPressed; final Function(BuildContext) onRefreshed; diff --git a/lib/ui/credit/credit_email_vm.dart b/lib/ui/credit/credit_email_vm.dart index ce7c2df5d..5aea904d2 100644 --- a/lib/ui/credit/credit_email_vm.dart +++ b/lib/ui/credit/credit_email_vm.dart @@ -18,7 +18,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/platforms.dart'; class CreditEmailScreen extends StatelessWidget { - const CreditEmailScreen({Key key}) : super(key: key); + const CreditEmailScreen({Key? key}) : super(key: key); static const String route = '/credit/email'; @@ -28,8 +28,8 @@ class CreditEmailScreen extends StatelessWidget { onInit: (Store store) { final state = store.state; final creditId = state.uiState.creditUIState.selectedId; - final credit = state.creditState.map[creditId]; - final client = state.clientState.map[credit.clientId]; + final credit = state.creditState.map[creditId]!; + final client = state.clientState.map[credit.clientId]!; if (client.isStale) { store.dispatch(LoadClient(clientId: client.id)); } @@ -37,7 +37,7 @@ class CreditEmailScreen extends StatelessWidget { converter: (Store store) { final state = store.state; final creditId = state.uiState.creditUIState.selectedId; - final credit = state.creditState.map[creditId]; + final credit = state.creditState.map[creditId]!; return EmailCreditVM.fromStore(store, credit); }, builder: (context, viewModel) { @@ -51,15 +51,15 @@ class CreditEmailScreen extends StatelessWidget { class EmailCreditVM extends EmailEntityVM { EmailCreditVM({ - AppState state, - bool isLoading, - bool isSaving, - CompanyEntity company, - InvoiceEntity invoice, - ClientEntity client, - VendorEntity vendor, - Function loadClient, - Function(BuildContext, EmailTemplate, String, String, String) onSendPressed, + AppState? state, + bool? isLoading, + bool? isSaving, + CompanyEntity? company, + InvoiceEntity? invoice, + ClientEntity? client, + VendorEntity? vendor, + Function? loadClient, + Function(BuildContext, EmailTemplate, String, String, String)? onSendPressed, }) : super( state: state, isLoading: isLoading, @@ -86,12 +86,12 @@ class EmailCreditVM extends EmailEntityVM { }, onSendPressed: (context, template, subject, body, ccEmail) { final completer = snackBarCompleter( - context, AppLocalization.of(context).emailedCredit, + context, AppLocalization.of(context)!.emailedCredit, shouldPop: isMobile(context)); if (!isMobile(context)) { completer.future.then((value) { viewEntity(entity: credit); - }); + } as FutureOr<_> Function(Null)); } store.dispatch(EmailCreditRequest( completer: completer, diff --git a/lib/ui/credit/credit_list_item.dart b/lib/ui/credit/credit_list_item.dart index 47818ecaa..27e006986 100644 --- a/lib/ui/credit/credit_list_item.dart +++ b/lib/ui/credit/credit_list_item.dart @@ -19,23 +19,23 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class CreditListItem extends StatelessWidget { const CreditListItem({ - @required this.user, - @required this.credit, - @required this.client, - @required this.filter, + required this.user, + required this.credit, + required this.client, + required this.filter, this.onTap, this.onLongPress, this.onCheckboxChanged, this.isChecked = false, }); - final UserEntity user; - final GestureTapCallback onTap; - final GestureTapCallback onLongPress; + final UserEntity? user; + final GestureTapCallback? onTap; + final GestureTapCallback? onLongPress; final InvoiceEntity credit; final ClientEntity client; - final String filter; - final Function(bool) onCheckboxChanged; + final String? filter; + final Function(bool?)? onCheckboxChanged; final bool isChecked; @override @@ -43,16 +43,16 @@ class CreditListItem extends StatelessWidget { final state = StoreProvider.of(context).state; final uiState = state.uiState; final creditUIState = uiState.creditUIState; - final listUIState = state.getUIState(credit.entityType).listUIState; + final listUIState = state.getUIState(credit.entityType)!.listUIState; final isInMultiselect = listUIState.isInMultiselect(); final showCheckbox = onCheckboxChanged != null || isInMultiselect; final textStyle = TextStyle(fontSize: 16); final localization = AppLocalization.of(context); - final filterMatch = filter != null && filter.isNotEmpty + final filterMatch = filter != null && filter!.isNotEmpty ? (credit.matchesFilterValue(filter) ?? client.matchesFilterValue(filter)) : null; - final textColor = Theme.of(context).textTheme.bodyLarge.color; + final textColor = Theme.of(context).textTheme.bodyLarge!.color; String subtitle = ''; if (credit.date.isNotEmpty) { @@ -62,7 +62,7 @@ class CreditListItem extends StatelessWidget { return DismissibleEntity( isSelected: credit.id == (uiState.isEditing - ? creditUIState.editing.id + ? creditUIState.editing!.id : creditUIState.selectedId), userCompany: state.userCompany, entity: credit, @@ -71,9 +71,9 @@ class CreditListItem extends StatelessWidget { return constraints.maxWidth > kTableListWidthCutoff ? InkWell( onTap: () => - onTap != null ? onTap() : selectEntity(entity: credit), + onTap != null ? onTap!() : selectEntity(entity: credit), onLongPress: () => onLongPress != null - ? onLongPress() + ? onLongPress!() : selectEntity(entity: credit, longPress: true), child: Padding( padding: const EdgeInsets.only( @@ -94,7 +94,7 @@ class CreditListItem extends StatelessWidget { materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, onChanged: (value) => - onCheckboxChanged(value), + onCheckboxChanged!(value), activeColor: Theme.of(context).colorScheme.secondary, ), @@ -117,7 +117,7 @@ class CreditListItem extends StatelessWidget { children: [ Text( (credit.number ?? '').isEmpty - ? localization.pending + ? localization!.pending : credit.number, style: textStyle, overflow: TextOverflow.ellipsis, @@ -141,10 +141,10 @@ class CreditListItem extends StatelessWidget { overflow: TextOverflow.ellipsis, style: Theme.of(context) .textTheme - .titleSmall + .titleSmall! .copyWith( color: - textColor.withOpacity(kLighterOpacity), + textColor!.withOpacity(kLighterOpacity), ), ), ], @@ -153,7 +153,7 @@ class CreditListItem extends StatelessWidget { SizedBox(width: 10), Text( formatNumber(credit.amount, context, - clientId: client.id), + clientId: client.id)!, style: textStyle, textAlign: TextAlign.end, ), @@ -165,9 +165,9 @@ class CreditListItem extends StatelessWidget { ) : ListTile( onTap: () => - onTap != null ? onTap() : selectEntity(entity: credit), + onTap != null ? onTap!() : selectEntity(entity: credit), onLongPress: () => onLongPress != null - ? onLongPress() + ? onLongPress!() : selectEntity(entity: credit, longPress: true), leading: showCheckbox ? IgnorePointer( @@ -176,7 +176,7 @@ class CreditListItem extends StatelessWidget { value: isChecked, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, - onChanged: (value) => onCheckboxChanged(value), + onChanged: (value) => onCheckboxChanged!(value), activeColor: Theme.of(context).colorScheme.secondary, ), ) @@ -199,7 +199,7 @@ class CreditListItem extends StatelessWidget { ? credit.balance : credit.amount, context, - clientId: credit.clientId), + clientId: credit.clientId)!, style: Theme.of(context).textTheme.titleMedium), ], ), @@ -212,7 +212,7 @@ class CreditListItem extends StatelessWidget { Expanded( child: filterMatch == null ? Text((((credit.number ?? '').isEmpty - ? localization.pending + ? localization!.pending : credit.number) + ' • ' + formatDate(credit.date, context) + @@ -227,8 +227,8 @@ class CreditListItem extends StatelessWidget { ), ), Text( - localization.lookup( - kCreditStatuses[credit.calculatedStatusId]), + localization!.lookup( + kCreditStatuses[credit.calculatedStatusId])!, style: TextStyle( color: !credit.isSent ? textColor diff --git a/lib/ui/credit/credit_list_vm.dart b/lib/ui/credit/credit_list_vm.dart index bb7798bb8..4f9cc8d78 100644 --- a/lib/ui/credit/credit_list_vm.dart +++ b/lib/ui/credit/credit_list_vm.dart @@ -24,7 +24,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class CreditListBuilder extends StatelessWidget { - const CreditListBuilder({Key key}) : super(key: key); + const CreditListBuilder({Key? key}) : super(key: key); static const String route = '/credits/edit'; @@ -45,7 +45,7 @@ class CreditListBuilder extends StatelessWidget { itemBuilder: (BuildContext context, index) { final state = viewModel.state; final invoiceId = viewModel.invoiceList[index]; - final invoice = viewModel.invoiceMap[invoiceId]; + final invoice = viewModel.invoiceMap[invoiceId]!; final listUIState = state.getListState(EntityType.credit); final isInMultiselect = listUIState.isInMultiselect(); @@ -65,20 +65,20 @@ class CreditListBuilder extends StatelessWidget { class CreditListVM extends EntityListVM { CreditListVM({ - @required AppState state, - @required List invoiceList, - @required BuiltMap invoiceMap, - @required BuiltMap clientMap, - @required String filter, - @required bool isLoading, - @required Function(BuildContext) onRefreshed, - @required + required AppState state, + required List invoiceList, + required BuiltMap invoiceMap, + required BuiltMap clientMap, + required String? filter, + required bool isLoading, + required Function(BuildContext) onRefreshed, + required Function(BuildContext, List, EntityAction) onEntityAction, - @required List tableColumns, - @required EntityType entityType, - @required Function(String) onSortColumn, - @required Function onClearMultiselect, + required List tableColumns, + required EntityType entityType, + required Function(String) onSortColumn, + required Function onClearMultiselect, }) : super( state: state, invoiceList: invoiceList, @@ -99,7 +99,7 @@ class CreditListVM extends EntityListVM { return Future(null); } final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(RefreshData(completer: completer)); return completer.future; } @@ -126,7 +126,7 @@ class CreditListVM extends EntityListVM { EntityAction action) => handleCreditAction(context, credits, action), tableColumns: - state.userCompany.settings?.getTableColumns(EntityType.credit) ?? + state.userCompany!.settings?.getTableColumns(EntityType.credit) ?? CreditPresenter.getDefaultTableFields(state.userCompany), entityType: EntityType.credit, onSortColumn: (field) => store.dispatch(SortCredits(field)), diff --git a/lib/ui/credit/credit_pdf_vm.dart b/lib/ui/credit/credit_pdf_vm.dart index 93aca6530..1d63f3d7a 100644 --- a/lib/ui/credit/credit_pdf_vm.dart +++ b/lib/ui/credit/credit_pdf_vm.dart @@ -12,7 +12,7 @@ import 'package:invoiceninja_flutter/ui/invoice/invoice_pdf.dart'; import 'package:invoiceninja_flutter/ui/invoice/invoice_pdf_vm.dart'; class CreditPdfScreen extends StatelessWidget { - const CreditPdfScreen({Key key, this.showAppBar = true}) : super(key: key); + const CreditPdfScreen({Key? key, this.showAppBar = true}) : super(key: key); final bool showAppBar; @@ -26,7 +26,7 @@ class CreditPdfScreen extends StatelessWidget { }, builder: (context, vm) { return InvoicePdfView( - key: ValueKey('__credit_pdf_${vm.invoice.id}__'), + key: ValueKey('__credit_pdf_${vm.invoice!.id}__'), viewModel: vm, showAppBar: showAppBar, ); @@ -37,9 +37,9 @@ class CreditPdfScreen extends StatelessWidget { class CreditPdfVM extends EntityPdfVM { CreditPdfVM({ - AppState state, - InvoiceEntity invoice, - String activityId, + AppState? state, + InvoiceEntity? invoice, + String? activityId, }) : super( state: state, invoice: invoice, @@ -49,7 +49,7 @@ class CreditPdfVM extends EntityPdfVM { factory CreditPdfVM.fromStore(Store store) { final state = store.state; final creditUIState = state.uiState.creditUIState; - final invoiceId = creditUIState.selectedId; + final invoiceId = creditUIState.selectedId!; final invoice = state.creditState.get(invoiceId); return CreditPdfVM( diff --git a/lib/ui/credit/credit_presenter.dart b/lib/ui/credit/credit_presenter.dart index 4638c0feb..1bc129979 100644 --- a/lib/ui/credit/credit_presenter.dart +++ b/lib/ui/credit/credit_presenter.dart @@ -17,7 +17,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:url_launcher/url_launcher.dart'; class CreditPresenter extends EntityPresenter { - static List getDefaultTableFields(UserCompanyEntity userCompany) { + static List getDefaultTableFields(UserCompanyEntity? userCompany) { return [ CreditFields.status, CreditFields.number, @@ -28,7 +28,7 @@ class CreditPresenter extends EntityPresenter { ]; } - static List getAllTableFields(UserCompanyEntity userCompany) { + static List getAllTableFields(UserCompanyEntity? userCompany) { return [ ...getDefaultTableFields(userCompany), ...EntityPresenter.getBaseFields(), @@ -60,7 +60,7 @@ class CreditPresenter extends EntityPresenter { } @override - Widget getField({String field, BuildContext context}) { + Widget getField({String? field, required BuildContext context}) { final localization = AppLocalization.of(context); final state = StoreProvider.of(context).state; final credit = entity as InvoiceEntity; @@ -71,7 +71,7 @@ class CreditPresenter extends EntityPresenter { return EntityStatusChip(entity: credit, showState: true); case CreditFields.number: return Text((credit.number ?? '').isEmpty - ? localization.pending + ? localization!.pending : credit.number); case CreditFields.client: return LinkTextRelatedEntity(entity: client, relation: credit); @@ -85,22 +85,22 @@ class CreditPresenter extends EntityPresenter { return Align( alignment: Alignment.centerRight, child: Text( - formatNumber(credit.amount, context, clientId: credit.clientId)), + formatNumber(credit.amount, context, clientId: credit.clientId)!), ); case CreditFields.remaining: case CreditFields.balance: return Align( alignment: Alignment.centerRight, child: Text(formatNumber(credit.balanceOrAmount, context, - clientId: credit.clientId))); + clientId: credit.clientId)!)); case CreditFields.customValue1: - return Text(presentCustomField(context, credit.customValue1)); + return Text(presentCustomField(context, credit.customValue1)!); case CreditFields.customValue2: - return Text(presentCustomField(context, credit.customValue2)); + return Text(presentCustomField(context, credit.customValue2)!); case CreditFields.customValue3: - return Text(presentCustomField(context, credit.customValue3)); + return Text(presentCustomField(context, credit.customValue3)!); case CreditFields.customValue4: - return Text(presentCustomField(context, credit.customValue4)); + return Text(presentCustomField(context, credit.customValue4)!); case CreditFields.publicNotes: return TableTooltip(message: credit.publicNotes); case CreditFields.privateNotes: @@ -109,21 +109,21 @@ class CreditPresenter extends EntityPresenter { return Text(credit.isAmountDiscount ? formatNumber(credit.discount, context, formatNumberType: FormatNumberType.money, - clientId: credit.clientId) + clientId: credit.clientId)! : formatNumber(credit.discount, context, - formatNumberType: FormatNumberType.percent)); + formatNumberType: FormatNumberType.percent)!); case CreditFields.poNumber: return Text(credit.poNumber); case CreditFields.documents: return Text('${credit.documents.length}'); case CreditFields.taxAmount: return Text( - formatNumber(credit.taxAmount, context, clientId: credit.clientId)); + formatNumber(credit.taxAmount, context, clientId: credit.clientId)!); case CreditFields.exchangeRate: return Text(formatNumber(credit.exchangeRate, context, - formatNumberType: FormatNumberType.double)); + formatNumberType: FormatNumberType.double)!); case CreditFields.isViewed: - return Text(credit.isViewed ? localization.yes : localization.no); + return Text(credit.isViewed ? localization!.yes : localization!.no); case CreditFields.project: final project = state.projectState.get(credit.projectId); return LinkTextRelatedEntity(entity: project, relation: credit); @@ -131,17 +131,17 @@ class CreditPresenter extends EntityPresenter { final vendor = state.vendorState.get(credit.vendorId); return LinkTextRelatedEntity(entity: vendor, relation: credit); case CreditFields.clientState: - return Text(client.state); + return Text(client!.state); case CreditFields.clientCity: - return Text(client.city); + return Text(client!.city); case CreditFields.clientPostalCode: - return Text(client.postalCode); + return Text(client!.postalCode); case CreditFields.clientCountry: - return Text(state.staticState.countryMap[client.countryId]?.name ?? ''); + return Text(state.staticState.countryMap[client!.countryId]?.name ?? ''); case CreditFields.contactName: case CreditFields.contactEmail: final contact = creditContactSelector( - credit, state.clientState.get(credit.clientId)); + credit, state.clientState.get(credit.clientId)!); if (contact == null) { return SizedBox(); } @@ -154,7 +154,7 @@ class CreditPresenter extends EntityPresenter { onLongPress: () => launchUrl(Uri.parse('mailto:${contact.email}')), ); case CreditFields.partial: - return Text(formatNumber(credit.partial, context)); + return Text(formatNumber(credit.partial, context)!); case CreditFields.partialDueDate: return Text(formatDate(credit.partialDueDate, context)); } diff --git a/lib/ui/credit/credit_screen.dart b/lib/ui/credit/credit_screen.dart index b74ec7f44..8c664758d 100644 --- a/lib/ui/credit/credit_screen.dart +++ b/lib/ui/credit/credit_screen.dart @@ -19,8 +19,8 @@ import 'credit_screen_vm.dart'; class CreditScreen extends StatelessWidget { const CreditScreen({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); static const String route = '/credit'; @@ -31,7 +31,7 @@ class CreditScreen extends StatelessWidget { Widget build(BuildContext context) { final store = StoreProvider.of(context); final state = store.state; - final company = state.company; + final company = state.company!; final userCompany = state.userCompany; final localization = AppLocalization.of(context); @@ -98,7 +98,7 @@ class CreditScreen extends StatelessWidget { store.dispatch(FilterCreditsByCustom4(value)), ), floatingActionButton: state.prefState.isMenuFloated && - userCompany.canCreate(EntityType.credit) + userCompany!.canCreate(EntityType.credit) ? FloatingActionButton( heroTag: 'credit_fab', backgroundColor: Theme.of(context).primaryColorDark, @@ -110,7 +110,7 @@ class CreditScreen extends StatelessWidget { Icons.add, color: Colors.white, ), - tooltip: localization.newCredit, + tooltip: localization!.newCredit, ) : null, ); diff --git a/lib/ui/credit/credit_screen_vm.dart b/lib/ui/credit/credit_screen_vm.dart index ae748a053..6331cd8dd 100644 --- a/lib/ui/credit/credit_screen_vm.dart +++ b/lib/ui/credit/credit_screen_vm.dart @@ -15,7 +15,7 @@ import 'package:invoiceninja_flutter/redux/credit/credit_selectors.dart'; import 'credit_screen.dart'; class CreditScreenBuilder extends StatelessWidget { - const CreditScreenBuilder({Key key}) : super(key: key); + const CreditScreenBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -32,18 +32,18 @@ class CreditScreenBuilder extends StatelessWidget { class CreditScreenVM { CreditScreenVM({ - @required this.isInMultiselect, - @required this.creditList, - @required this.userCompany, - @required this.onEntityAction, - @required this.creditMap, + required this.isInMultiselect, + required this.creditList, + required this.userCompany, + required this.onEntityAction, + required this.creditMap, }); final bool isInMultiselect; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List creditList; final Function(BuildContext, List, EntityAction) onEntityAction; - final BuiltMap creditMap; + final BuiltMap creditMap; static CreditScreenVM fromStore(Store store) { final state = store.state; diff --git a/lib/ui/credit/edit/credit_edit.dart b/lib/ui/credit/edit/credit_edit.dart index f1452eee6..a1b82c43b 100644 --- a/lib/ui/credit/edit/credit_edit.dart +++ b/lib/ui/credit/edit/credit_edit.dart @@ -16,8 +16,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class CreditEdit extends StatefulWidget { const CreditEdit({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final AbstractInvoiceEditVM viewModel; @@ -28,7 +28,7 @@ class CreditEdit extends StatefulWidget { class _CreditEditState extends State with SingleTickerProviderStateMixin { - TabController _controller; + TabController? _controller; static final GlobalKey _formKey = GlobalKey(debugLabel: '_creditEdit'); @@ -54,18 +54,18 @@ class _CreditEditState extends State super.didUpdateWidget(oldWidget); if (widget.viewModel.invoiceItemIndex != null) { - _controller.animateTo(kItemScreen); + _controller!.animateTo(kItemScreen); } } @override void dispose() { - _controller.dispose(); + _controller!.dispose(); super.dispose(); } - void _onSavePressed(BuildContext context, [EntityAction action]) { - final bool isValid = _formKey.currentState.validate(); + void _onSavePressed(BuildContext context, [EntityAction? action]) { + final bool isValid = _formKey.currentState!.validate(); /* setState(() { @@ -77,15 +77,15 @@ class _CreditEditState extends State return; } - widget.viewModel.onSavePressed(context, action); + widget.viewModel.onSavePressed!(context, action); } @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; - final invoice = viewModel.invoice; - final state = viewModel.state; + final invoice = viewModel.invoice!; + final state = viewModel.state!; final prefState = state.prefState; final isFullscreen = prefState.isEditorFullScreen(EntityType.invoice); final client = state.clientState.get(invoice.clientId); @@ -94,7 +94,7 @@ class _CreditEditState extends State isFullscreen: isFullscreen, entity: invoice, title: invoice.isNew ? localization.newCredit : localization.editCredit, - onCancelPressed: (context) => viewModel.onCancelPressed(context), + onCancelPressed: (context) => viewModel.onCancelPressed!(context), onSavePressed: (context) => _onSavePressed(context), actions: invoice.getActions( userCompany: state.userCompany, @@ -158,16 +158,16 @@ class _CreditEditState extends State invoice: invoice, showTasksAndExpenses: false, excluded: invoice.lineItems - .where((item) => item.isTask || item.isExpense) - .map((item) => item.isTask - ? viewModel.state.taskState.map[item.taskId] - : viewModel.state.expenseState.map[item.expenseId]) + .where((item) => item!.isTask || item.isExpense) + .map((item) => item!.isTask + ? viewModel.state!.taskState.map[item.taskId] + : viewModel.state!.expenseState.map[item.expenseId]) .toList(), clientId: invoice.clientId, onItemsSelected: (items, [clientId, projectId]) { - viewModel.onItemsAdded(items, clientId, projectId); + viewModel.onItemsAdded!(items, clientId, projectId); if (!isFullscreen) { - _controller.animateTo(kItemScreen); + _controller!.animateTo(kItemScreen); } }, ); diff --git a/lib/ui/credit/edit/credit_edit_details_vm.dart b/lib/ui/credit/edit/credit_edit_details_vm.dart index 29aebfcc0..b6de23c2a 100644 --- a/lib/ui/credit/edit/credit_edit_details_vm.dart +++ b/lib/ui/credit/edit/credit_edit_details_vm.dart @@ -22,7 +22,7 @@ import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_details_vm.dar import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_vm.dart'; class CreditEditDetailsScreen extends StatelessWidget { - const CreditEditDetailsScreen({Key key, @required this.viewModel}) + const CreditEditDetailsScreen({Key? key, required this.viewModel}) : super(key: key); final AbstractInvoiceEditVM viewModel; @@ -34,11 +34,11 @@ class CreditEditDetailsScreen extends StatelessWidget { return CreditEditDetailsVM.fromStore(store); }, builder: (context, viewModel) { - if (viewModel.state.prefState.isEditorFullScreen(EntityType.invoice)) { + if (viewModel.state!.prefState.isEditorFullScreen(EntityType.invoice)) { return InvoiceEditDesktop( viewModel: viewModel, entityViewModel: this.viewModel, - key: ValueKey('__credit_${viewModel.invoice.id}__'), + key: ValueKey('__credit_${viewModel.invoice!.id}__'), ); } else { return InvoiceEditDetails( @@ -53,17 +53,17 @@ class CreditEditDetailsScreen extends StatelessWidget { class CreditEditDetailsVM extends EntityEditDetailsVM { CreditEditDetailsVM({ - AppState state, - CompanyEntity company, - InvoiceEntity invoice, - Function(InvoiceEntity) onChanged, - Function(BuildContext, InvoiceEntity, ClientEntity) onClientChanged, - Function(BuildContext, InvoiceEntity, VendorEntity) onVendorChanged, - BuiltMap clientMap, - BuiltList clientList, - Function(BuildContext context, Completer completer) + AppState? state, + CompanyEntity? company, + InvoiceEntity? invoice, + Function(InvoiceEntity)? onChanged, + Function(BuildContext, InvoiceEntity, ClientEntity)? onClientChanged, + Function(BuildContext, InvoiceEntity, VendorEntity)? onVendorChanged, + BuiltMap? clientMap, + BuiltList? clientList, + Function(BuildContext context, Completer completer)? onAddClientPressed, - Function(BuildContext context, Completer completer) + Function(BuildContext context, Completer completer)? onAddVendorPressed, }) : super( state: state, @@ -103,7 +103,7 @@ class CreditEditDetailsVM extends EntityEditDetailsVM { cancelCompleter: Completer() ..future.then((_) { store.dispatch(UpdateCurrentRoute(CreditEditScreen.route)); - })); + } as FutureOr<_> Function(Null))); completer.future.then((SelectableEntity client) { store.dispatch(UpdateCurrentRoute(CreditEditScreen.route)); }); diff --git a/lib/ui/credit/edit/credit_edit_items_vm.dart b/lib/ui/credit/edit/credit_edit_items_vm.dart index 9922fd56c..e92bf45d7 100644 --- a/lib/ui/credit/edit/credit_edit_items_vm.dart +++ b/lib/ui/credit/edit/credit_edit_items_vm.dart @@ -16,8 +16,8 @@ import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_vm.dart'; class CreditEditItemsScreen extends StatelessWidget { const CreditEditItemsScreen({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, this.isTasks = false, }) : super(key: key); @@ -31,7 +31,7 @@ class CreditEditItemsScreen extends StatelessWidget { return CreditEditItemsVM.fromStore(store, isTasks); }, builder: (context, viewModel) { - if (viewModel.state.prefState.isEditorFullScreen(EntityType.invoice)) { + if (viewModel.state!.prefState.isEditorFullScreen(EntityType.invoice)) { return InvoiceEditItemsDesktop( viewModel: viewModel, entityViewModel: this.viewModel, @@ -50,16 +50,16 @@ class CreditEditItemsScreen extends StatelessWidget { class CreditEditItemsVM extends EntityEditItemsVM { CreditEditItemsVM({ - AppState state, - CompanyEntity company, - InvoiceEntity invoice, - int invoiceItemIndex, - Function addLineItem, - Function deleteLineItem, - Function(int) onRemoveInvoiceItemPressed, - Function onDoneInvoiceItemPressed, - Function(InvoiceItemEntity, int) onChangedInvoiceItem, - Function(int, int) onMovedInvoiceItem, + AppState? state, + CompanyEntity? company, + InvoiceEntity? invoice, + int? invoiceItemIndex, + Function? addLineItem, + Function? deleteLineItem, + Function(int)? onRemoveInvoiceItemPressed, + Function? onDoneInvoiceItemPressed, + Function(InvoiceItemEntity, int)? onChangedInvoiceItem, + Function(int, int)? onMovedInvoiceItem, }) : super( state: state, company: company, @@ -86,7 +86,7 @@ class CreditEditItemsVM extends EntityEditItemsVM { store.dispatch(EditCreditItem()); }, onChangedInvoiceItem: (creditItem, index) { - final credit = store.state.creditUIState.editing; + final credit = store.state.creditUIState.editing!; if (index == credit.lineItems.length) { store.dispatch(AddCreditItem( creditItem: creditItem.rebuild((b) => b diff --git a/lib/ui/credit/edit/credit_edit_notes_vm.dart b/lib/ui/credit/edit/credit_edit_notes_vm.dart index 0543bf8ea..252a62944 100644 --- a/lib/ui/credit/edit/credit_edit_notes_vm.dart +++ b/lib/ui/credit/edit/credit_edit_notes_vm.dart @@ -13,7 +13,7 @@ import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_notes.dart'; import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_notes_vm.dart'; class CreditEditNotesScreen extends StatelessWidget { - const CreditEditNotesScreen({Key key}) : super(key: key); + const CreditEditNotesScreen({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -32,10 +32,10 @@ class CreditEditNotesScreen extends StatelessWidget { class CreditEditNotesVM extends EntityEditNotesVM { CreditEditNotesVM({ - CompanyEntity company, - InvoiceEntity invoice, - Function(InvoiceEntity) onChanged, - AppState state, + CompanyEntity? company, + InvoiceEntity? invoice, + Function(InvoiceEntity)? onChanged, + AppState? state, }) : super( company: company, invoice: invoice, diff --git a/lib/ui/credit/edit/credit_edit_pdf_vm.dart b/lib/ui/credit/edit/credit_edit_pdf_vm.dart index a4b4640bd..a8a5c0ec8 100644 --- a/lib/ui/credit/edit/credit_edit_pdf_vm.dart +++ b/lib/ui/credit/edit/credit_edit_pdf_vm.dart @@ -12,7 +12,7 @@ import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_pdf.dart'; import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_pdf_vm.dart'; class CreditEditPDFScreen extends StatelessWidget { - const CreditEditPDFScreen({Key key}) : super(key: key); + const CreditEditPDFScreen({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -31,9 +31,9 @@ class CreditEditPDFScreen extends StatelessWidget { class CreditEditPDFVM extends EntityEditPDFVM { CreditEditPDFVM({ - @required CompanyEntity company, - @required InvoiceEntity invoice, - @required AppState state, + required CompanyEntity? company, + required InvoiceEntity? invoice, + required AppState state, }) : super( company: company, invoice: invoice, diff --git a/lib/ui/credit/edit/credit_edit_vm.dart b/lib/ui/credit/edit/credit_edit_vm.dart index 0869363d8..35fa14e20 100644 --- a/lib/ui/credit/edit/credit_edit_vm.dart +++ b/lib/ui/credit/edit/credit_edit_vm.dart @@ -25,7 +25,7 @@ import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_vm.dart'; import 'package:invoiceninja_flutter/utils/completers.dart'; class CreditEditScreen extends StatelessWidget { - const CreditEditScreen({Key key}) : super(key: key); + const CreditEditScreen({Key? key}) : super(key: key); static const String route = '/credit/edit'; @@ -38,7 +38,7 @@ class CreditEditScreen extends StatelessWidget { builder: (context, viewModel) { return CreditEdit( viewModel: viewModel, - key: ValueKey(viewModel.invoice.updatedAt), + key: ValueKey(viewModel.invoice!.updatedAt), ); }, ); @@ -47,16 +47,16 @@ class CreditEditScreen extends StatelessWidget { class CreditEditVM extends AbstractInvoiceEditVM { CreditEditVM({ - AppState state, - CompanyEntity company, - InvoiceEntity invoice, - int invoiceItemIndex, - InvoiceEntity origInvoice, - Function(BuildContext, [EntityAction]) onSavePressed, - Function(List, String, String) onItemsAdded, - bool isSaving, - Function(BuildContext) onCancelPressed, - Function(BuildContext, List, bool) onUploadDocuments, + AppState? state, + CompanyEntity? company, + InvoiceEntity? invoice, + int? invoiceItemIndex, + InvoiceEntity? origInvoice, + Function(BuildContext, [EntityAction])? onSavePressed, + Function(List, String, String)? onItemsAdded, + bool? isSaving, + Function(BuildContext)? onCancelPressed, + Function(BuildContext, List, bool?)? onUploadDocuments, }) : super( state: state, company: company, @@ -72,7 +72,7 @@ class CreditEditVM extends AbstractInvoiceEditVM { factory CreditEditVM.fromStore(Store store) { final AppState state = store.state; - final credit = state.creditUIState.editing; + final credit = state.creditUIState.editing!; return CreditEditVM( state: state, @@ -81,16 +81,16 @@ class CreditEditVM extends AbstractInvoiceEditVM { invoice: credit, invoiceItemIndex: state.creditUIState.editingItemIndex, origInvoice: store.state.creditState.map[credit.id], - onSavePressed: (BuildContext context, [EntityAction action]) { + onSavePressed: (BuildContext context, [EntityAction? action]) { Debouncer.runOnComplete(() { - final credit = store.state.creditUIState.editing; + final credit = store.state.creditUIState.editing!; final localization = navigatorKey.localization; final navigator = navigatorKey.currentState; if (credit.clientId.isEmpty) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { - return ErrorDialog(localization.pleaseSelectAClient); + return ErrorDialog(localization!.pleaseSelectAClient); }); return null; } @@ -110,15 +110,15 @@ class CreditEditVM extends AbstractInvoiceEditVM { )); return completer.future.then((savedCredit) { showToast(credit.isNew - ? localization.createdCredit - : localization.updatedCredit); + ? localization!.createdCredit + : localization!.updatedCredit); if (state.prefState.isMobile) { store.dispatch(UpdateCurrentRoute(CreditViewScreen.route)); if (credit.isNew) { - navigator.pushReplacementNamed(CreditViewScreen.route); + navigator!.pushReplacementNamed(CreditViewScreen.route); } else { - navigator.pop(savedCredit); + navigator!.pop(savedCredit); } } else { if (!state.prefState.isPreviewVisible) { @@ -141,7 +141,7 @@ class CreditEditVM extends AbstractInvoiceEditVM { } }).catchError((Object error) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { return ErrorDialog(error); }); @@ -164,7 +164,7 @@ class CreditEditVM extends AbstractInvoiceEditVM { } }, onUploadDocuments: (BuildContext context, - List multipartFile, bool isPrivate) { + List multipartFile, bool? isPrivate) { final Completer completer = Completer(); store.dispatch(SaveCreditDocumentRequest( isPrivate: isPrivate, @@ -172,7 +172,7 @@ class CreditEditVM extends AbstractInvoiceEditVM { credit: credit, completer: completer)); completer.future.then((client) { - showToast(AppLocalization.of(context).uploadedDocument); + showToast(AppLocalization.of(context)!.uploadedDocument); }).catchError((Object error) { showDialog( context: context, diff --git a/lib/ui/credit/view/credit_view_vm.dart b/lib/ui/credit/view/credit_view_vm.dart index 95e9cb1c8..a953e5eee 100644 --- a/lib/ui/credit/view/credit_view_vm.dart +++ b/lib/ui/credit/view/credit_view_vm.dart @@ -23,7 +23,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class CreditViewScreen extends StatelessWidget { const CreditViewScreen({ - Key key, + Key? key, this.isFilter = false, }) : super(key: key); final bool isFilter; @@ -40,7 +40,7 @@ class CreditViewScreen extends StatelessWidget { return InvoiceView( viewModel: viewModel, isFilter: isFilter, - tabIndex: viewModel.state.creditUIState.tabIndex, + tabIndex: viewModel.state!.creditUIState.tabIndex, ); }, ); @@ -49,22 +49,22 @@ class CreditViewScreen extends StatelessWidget { class CreditViewVM extends AbstractInvoiceViewVM { CreditViewVM({ - AppState state, - CompanyEntity company, - InvoiceEntity invoice, - ClientEntity client, - bool isSaving, - bool isDirty, - Function(BuildContext, EntityAction) onEntityAction, - Function(BuildContext, [int]) onEditPressed, - Function(BuildContext, [bool]) onClientPressed, - Function(BuildContext, [bool]) onUserPressed, - Function(BuildContext) onPaymentsPressed, - Function(BuildContext, PaymentEntity) onPaymentPressed, - Function(BuildContext) onRefreshed, - Function(BuildContext, List, bool) onUploadDocuments, - Function(BuildContext, DocumentEntity) onViewExpense, - Function(BuildContext, InvoiceEntity, [String]) onViewPdf, + AppState? state, + CompanyEntity? company, + InvoiceEntity? invoice, + ClientEntity? client, + bool? isSaving, + bool? isDirty, + Function(BuildContext, EntityAction)? onEntityAction, + Function(BuildContext, [int])? onEditPressed, + Function(BuildContext, [bool])? onClientPressed, + Function(BuildContext, [bool])? onUserPressed, + Function(BuildContext)? onPaymentsPressed, + Function(BuildContext, PaymentEntity)? onPaymentPressed, + Function(BuildContext)? onRefreshed, + Function(BuildContext, List, bool)? onUploadDocuments, + Function(BuildContext, DocumentEntity)? onViewExpense, + Function(BuildContext, InvoiceEntity, [String?])? onViewPdf, }) : super( state: state, company: company, @@ -90,7 +90,7 @@ class CreditViewVM extends AbstractInvoiceViewVM { Future _handleRefresh(BuildContext context) { final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(LoadCredit(completer: completer, creditId: credit.id)); return completer.future; } @@ -102,12 +102,12 @@ class CreditViewVM extends AbstractInvoiceViewVM { isDirty: credit.isNew, invoice: credit, client: client, - onEditPressed: (BuildContext context, [int index]) { + onEditPressed: (BuildContext context, [int? index]) { editEntity( entity: credit, subIndex: index, completer: snackBarCompleter( - context, AppLocalization.of(context).updatedCredit)); + context, AppLocalization.of(context)!.updatedCredit)); }, onRefreshed: (context) => _handleRefresh(context), onEntityAction: (BuildContext context, EntityAction action) => @@ -121,7 +121,7 @@ class CreditViewVM extends AbstractInvoiceViewVM { credit: credit, completer: completer)); completer.future.then((client) { - showToast(AppLocalization.of(context).uploadedDocument); + showToast(AppLocalization.of(context)!.uploadedDocument); }).catchError((Object error) { showDialog( context: context, diff --git a/lib/ui/dashboard/dashboard_activity.dart b/lib/ui/dashboard/dashboard_activity.dart index ebdf84ab9..9456237fd 100644 --- a/lib/ui/dashboard/dashboard_activity.dart +++ b/lib/ui/dashboard/dashboard_activity.dart @@ -9,15 +9,15 @@ import 'package:invoiceninja_flutter/ui/dashboard/dashboard_screen_vm.dart'; class DashboardActivity extends StatelessWidget { const DashboardActivity({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final DashboardVM viewModel; @override Widget build(BuildContext context) { - final company = viewModel.state.company; + final company = viewModel.state.company!; final activities = company.activities; return Material( diff --git a/lib/ui/dashboard/dashboard_chart.dart b/lib/ui/dashboard/dashboard_chart.dart index 20556ad1a..ff48e87f6 100644 --- a/lib/ui/dashboard/dashboard_chart.dart +++ b/lib/ui/dashboard/dashboard_chart.dart @@ -14,18 +14,18 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class DashboardChart extends StatefulWidget { const DashboardChart({ - @required this.data, - @required this.title, - @required this.currencyId, - @required this.onDateSelected, - @required this.onSelected, + required this.data, + required this.title, + required this.currencyId, + required this.onDateSelected, + required this.onSelected, this.isOverview = false, }); - final List data; + final List? data; final String title; final String currencyId; - final Function(int, String) onDateSelected; + final Function(int, String)? onDateSelected; final Function() onSelected; final bool isOverview; @@ -41,15 +41,15 @@ class DashboardChart extends StatefulWidget { } class _DashboardChartState extends State { - String _selected; + String? _selected; int _selectedIndex = 0; void _onSelectionChanged(charts.SelectionModel model) { final selectedDatum = model.selectedDatum; - DateTime date; + DateTime? date; double total = 0.0; - final measures = {}; + final measures = {}; if (selectedDatum.isNotEmpty) { date = selectedDatum.first.datum.date; @@ -66,13 +66,13 @@ class _DashboardChartState extends State { if (date != null) { _selected = formatDate(date.toIso8601String(), context) + ' • ' + - formatNumber(total, context, currencyId: widget.currencyId); + formatNumber(total, context, currencyId: widget.currencyId)!; } else { _selected = null; } }); - widget.onDateSelected(_selectedIndex, convertDateTimeToSqlDate(date)); + widget.onDateSelected!(_selectedIndex, convertDateTimeToSqlDate(date)); } @override @@ -84,7 +84,7 @@ class _DashboardChartState extends State { ? charts.MaterialPalette.white : charts.MaterialPalette.gray.shade700; - final series = widget.data[_selectedIndex]; + final series = widget.data![_selectedIndex]; final settings = state.dashboardUIState.settings; final chart = charts.TimeSeriesChart( @@ -138,8 +138,8 @@ class _DashboardChartState extends State { child: ListView( shrinkWrap: true, scrollDirection: Axis.horizontal, - children: widget.data.map((dataGroup) { - final int index = widget.data.indexOf(dataGroup); + children: widget.data!.map((dataGroup) { + final int index = widget.data!.indexOf(dataGroup); final bool isSelected = index == _selectedIndex; final bool isIncrease = dataGroup.periodTotal > dataGroup.previousTotal; @@ -147,7 +147,7 @@ class _DashboardChartState extends State { formatNumber( dataGroup.periodTotal - dataGroup.previousTotal, context, - currencyId: widget.currencyId); + currencyId: widget.currencyId)!; final changePercent = (isIncrease ? '+' : '') + formatNumber( dataGroup.periodTotal != 0 && @@ -161,7 +161,7 @@ class _DashboardChartState extends State { : 0.0, context, formatNumberType: FormatNumberType.percent, - currencyId: widget.currencyId); + currencyId: widget.currencyId)!; final String changeString = dataGroup.periodTotal == 0 || dataGroup.previousTotal == 0 || dataGroup.periodTotal == dataGroup.previousTotal @@ -182,15 +182,15 @@ class _DashboardChartState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text(localization.lookup(dataGroup.name), - style: theme.textTheme.titleLarge.copyWith( + Text(localization!.lookup(dataGroup.name)!, + style: theme.textTheme.titleLarge!.copyWith( color: isSelected ? Colors.white : null, )), SizedBox(height: 4), Text( formatNumber(dataGroup.periodTotal, context, - currencyId: widget.currencyId), - style: theme.textTheme.headlineSmall.copyWith( + currencyId: widget.currencyId)!, + style: theme.textTheme.headlineSmall!.copyWith( color: isSelected ? Colors.white : null)), SizedBox(height: 4), changeString.isNotEmpty @@ -233,16 +233,16 @@ class _DashboardChartState extends State { children: [ Expanded( child: Text( - localization.average + + localization!.average + ': ' + formatNumber(series.average, context, - currencyId: widget.currencyId), + currencyId: widget.currencyId)!, style: theme.textTheme.titleLarge, ), ), _selected != null ? Text( - _selected, + _selected!, style: theme.textTheme.titleLarge, ) : SizedBox(), diff --git a/lib/ui/dashboard/dashboard_date_range_picker.dart b/lib/ui/dashboard/dashboard_date_range_picker.dart index c943872a6..578e67379 100644 --- a/lib/ui/dashboard/dashboard_date_range_picker.dart +++ b/lib/ui/dashboard/dashboard_date_range_picker.dart @@ -13,11 +13,11 @@ import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class DashboardDateRangePicker extends StatefulWidget { - const DashboardDateRangePicker({Key key, this.state, this.onSettingsChanged}) + const DashboardDateRangePicker({Key? key, this.state, this.onSettingsChanged}) : super(key: key); - final DashboardUIState state; - final Function(DashboardSettings) onSettingsChanged; + final DashboardUIState? state; + final Function(DashboardSettings?)? onSettingsChanged; @override _DashboardDateRangePickerState createState() => @@ -25,28 +25,28 @@ class DashboardDateRangePicker extends StatefulWidget { } class _DashboardDateRangePickerState extends State { - DashboardSettings _settings; + DashboardSettings? _settings; @override void didChangeDependencies() { super.didChangeDependencies(); - _settings = DashboardSettings.fromState(widget.state); + _settings = DashboardSettings.fromState(widget.state!); - if (_settings.dateRange != DateRange.custom) { - _settings.startDate = ''; - _settings.endDate = convertDateTimeToSqlDate(); + if (_settings!.dateRange != DateRange.custom) { + _settings!.startDate = ''; + _settings!.endDate = convertDateTimeToSqlDate(); } - if (_settings.compareDateRange != DateRangeComparison.customRange) { - _settings.compareStartDate = ''; - _settings.compareEndDate = convertDateTimeToSqlDate(); + if (_settings!.compareDateRange != DateRangeComparison.customRange) { + _settings!.compareStartDate = ''; + _settings!.compareEndDate = convertDateTimeToSqlDate(); } } @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; return ResponsivePadding( child: Column(children: [ Material( @@ -67,14 +67,14 @@ class _DashboardDateRangePickerState extends State { .where((value) => value != DateRange.allTime) .map((dateRange) => DropdownMenuItem( child: Text(localization - .lookup(dateRange.toString())), + .lookup(dateRange.toString())!), value: dateRange, )) .toList(), onChanged: (dateRange) { - setState(() => _settings.dateRange = dateRange); + setState(() => _settings!.dateRange = dateRange); }, - value: _settings.dateRange, + value: _settings!.dateRange, ), ), Expanded(child: Container()), @@ -83,40 +83,40 @@ class _DashboardDateRangePickerState extends State { children: [ Text(localization.compare), Switch( - value: _settings.enableComparison, + value: _settings!.enableComparison!, activeColor: Theme.of(context).colorScheme.secondary, onChanged: (value) { setState( - () => _settings.enableComparison = value); + () => _settings!.enableComparison = value); }, ), ], ) ], ), - _settings.dateRange != DateRange.custom + _settings!.dateRange != DateRange.custom ? Container() : DatePicker( - selectedDate: _settings.startDate, + selectedDate: _settings!.startDate, labelText: localization.startDate, onSelected: (date, _) { setState(() { - _settings.startDate = date; + _settings!.startDate = date; }); }), - _settings.dateRange != DateRange.custom + _settings!.dateRange != DateRange.custom ? Container() : DatePicker( - selectedDate: _settings.endDate, + selectedDate: _settings!.endDate, labelText: localization.endDate, onSelected: (date, _) { setState(() { - _settings.endDate = date; + _settings!.endDate = date; }); }), SizedBox(height: 6.0), - _settings.enableComparison + _settings!.enableComparison! ? Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -133,39 +133,39 @@ class _DashboardDateRangePickerState extends State { .map((dateRange) => DropdownMenuItem< DateRangeComparison>( child: Text(localization.lookup( - dateRange.toString())), + dateRange.toString())!), value: dateRange, )) .toList(), onChanged: (dateRange) { - setState(() => _settings + setState(() => _settings! .compareDateRange = dateRange); }, - value: _settings.compareDateRange, + value: _settings!.compareDateRange, ), ), ], ), - _settings.compareDateRange != + _settings!.compareDateRange != DateRangeComparison.customRange ? Container() : DatePicker( labelText: localization.startDate, - selectedDate: _settings.compareStartDate, + selectedDate: _settings!.compareStartDate, onSelected: (date, _) { setState(() { - _settings.compareStartDate = date; + _settings!.compareStartDate = date; }); }), - _settings.compareDateRange != + _settings!.compareDateRange != DateRangeComparison.customRange ? Container() : DatePicker( labelText: localization.endDate, - selectedDate: _settings.compareEndDate, + selectedDate: _settings!.compareEndDate, onSelected: (date, _) { setState(() { - _settings.compareEndDate = date; + _settings!.compareEndDate = date; }); }, ), @@ -181,9 +181,9 @@ class _DashboardDateRangePickerState extends State { label: localization.done, onPressed: () { // TODO replace with form validation - if (_settings.dateRange == DateRange.custom && - _settings.startDate - .compareTo(_settings.endDate) == + if (_settings!.dateRange == DateRange.custom && + _settings!.startDate! + .compareTo(_settings!.endDate!) == 1) { showDialog( context: context, @@ -194,10 +194,10 @@ class _DashboardDateRangePickerState extends State { return; } - if (_settings.compareDateRange == + if (_settings!.compareDateRange == DateRange.custom && - _settings.compareStartDate - .compareTo(_settings.compareEndDate) == + _settings!.compareStartDate! + .compareTo(_settings!.compareEndDate!) == 1) { showDialog( context: context, @@ -208,7 +208,7 @@ class _DashboardDateRangePickerState extends State { return; } - widget.onSettingsChanged(_settings); + widget.onSettingsChanged!(_settings); Navigator.of(context).pop(); }, ), diff --git a/lib/ui/dashboard/dashboard_overview.dart b/lib/ui/dashboard/dashboard_overview.dart index 6e37e44c4..6815eeef0 100644 --- a/lib/ui/dashboard/dashboard_overview.dart +++ b/lib/ui/dashboard/dashboard_overview.dart @@ -6,8 +6,8 @@ import 'package:invoiceninja_flutter/ui/dashboard/dashboard_screen_vm.dart'; class DashboardOverview extends StatelessWidget { const DashboardOverview({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final DashboardVM viewModel; diff --git a/lib/ui/dashboard/dashboard_panels.dart b/lib/ui/dashboard/dashboard_panels.dart index ffb7b1253..07e05706b 100644 --- a/lib/ui/dashboard/dashboard_panels.dart +++ b/lib/ui/dashboard/dashboard_panels.dart @@ -53,15 +53,15 @@ enum DashboardSections { class DashboardPanels extends StatelessWidget { const DashboardPanels({ - Key key, - @required this.viewModel, - @required this.scrollController, - @required this.tabController, + Key? key, + required this.viewModel, + required this.scrollController, + required this.tabController, }) : super(key: key); final DashboardVM viewModel; - final ScrollController scrollController; - final TabController tabController; + final ScrollController? scrollController; + final TabController? tabController; void _showDateOptions(BuildContext context) { showDialog( @@ -99,7 +99,7 @@ class DashboardPanels extends StatelessWidget { child: DropdownButton( items: [ DropdownMenuItem( - child: Text(localization.day), + child: Text(localization!.day), value: kReportGroupDay, ), DropdownMenuItem( @@ -149,8 +149,8 @@ class DashboardPanels extends StatelessWidget { children: [ Flexible( child: Text( - formatDateRange(settings.startDate(company), - settings.endDate(company), context), + formatDateRange(settings.startDate(company!)!, + settings.endDate(company)!, context), style: Theme.of(context).textTheme.titleMedium, ), ), @@ -164,7 +164,7 @@ class DashboardPanels extends StatelessWidget { .map((dateRange) => PopupMenuItem( child: Text(dateRange == DateRange.custom ? '${localization.more}...' - : localization.lookup(dateRange.toString())), + : localization.lookup(dateRange.toString())!), value: dateRange, )) .toList(), @@ -189,9 +189,9 @@ class DashboardPanels extends StatelessWidget { child: DropdownButton( items: memoizedGetCurrencyIds(company, clientMap, groupMap) .map((currencyId) => DropdownMenuItem( - child: Text(currencyId == kCurrencyAll + child: Text((currencyId == kCurrencyAll ? localization.all - : viewModel.currencyMap[currencyId]?.code), + : viewModel.currencyMap[currencyId]?.code)!), value: currencyId, )) .toList(), @@ -263,11 +263,11 @@ class DashboardPanels extends StatelessWidget { }); } - Widget _runningTasks(BuildContext context) { + Widget? _runningTasks(BuildContext context) { final state = viewModel.state; final runningTasks = - memoizedRunningTasks(state.taskState.map, state.user.id); + memoizedRunningTasks(state.taskState.map, state.user!.id); if (runningTasks.isEmpty) { return null; @@ -278,7 +278,7 @@ class DashboardPanels extends StatelessWidget { child: Wrap( spacing: 8, children: runningTasks.map((task) { - final client = state.clientState.map[task.clientId]; + final client = state.clientState.map[task!.clientId]; return Card( elevation: 4, shape: RoundedRectangleBorder( @@ -327,7 +327,7 @@ class DashboardPanels extends StatelessWidget { final company = state.company; final localization = AppLocalization.of(context); final settings = viewModel.dashboardUIState.settings; - final userCompanySettings = state.userCompany.settings; + final userCompanySettings = state.userCompany!.settings; final runningTasks = _runningTasks(context); if (!state.staticState.isLoaded) { @@ -420,7 +420,7 @@ class DashboardPanels extends StatelessWidget { final sections = [ DashboardSections.messages, - if (company.isModuleEnabled(EntityType.task) && runningTasks != null) + if (company!.isModuleEnabled(EntityType.task) && runningTasks != null) DashboardSections.runningTasks, DashboardSections.overview, if (company.isModuleEnabled(EntityType.invoice)) @@ -464,8 +464,8 @@ class DashboardPanels extends StatelessWidget { state.showOneYearReviewApp || state.showTwoYearReviewApp) ReviewApp(), - if (state.userCompany.isAdmin && - state.company.daysActive < 30 && + if (state.userCompany!.isAdmin && + state.company!.daysActive < 30 && !state.prefState.hideGatewayWarning && state.companyGatewayState.list.isEmpty) Padding( @@ -482,7 +482,7 @@ class DashboardPanels extends StatelessWidget { children: [ Expanded( child: - Text(localization.addGatewayHelpMessage), + Text(localization!.addGatewayHelpMessage!), ), if (isDesktop(context)) TextButton( @@ -492,7 +492,7 @@ class DashboardPanels extends StatelessWidget { entityType: EntityType.companyGateway, ); }, - child: Text(localization.addGateway)), + child: Text(localization.addGateway!)), IconButton( onPressed: () { final store = @@ -606,34 +606,34 @@ class DashboardPanels extends StatelessWidget { padding: const EdgeInsets.symmetric(horizontal: 12), child: StaggeredGrid.count( crossAxisCount: isMobile(context) - ? userCompanySettings.dashboardFieldsPerRowMobile - : userCompanySettings + ? userCompanySettings!.dashboardFieldsPerRowMobile + : userCompanySettings! .dashboardFieldsPerRowDesktop, crossAxisSpacing: 8, mainAxisSpacing: 12, - children: state.userCompany.settings.dashboardFields + children: state.userCompany!.settings!.dashboardFields .map((dashboardField) { double value = 0; if (dashboardField.period == DashboardUISettings.PERIOD_CURRENT) { final data = - currentFieldMap[dashboardField.field]; + currentFieldMap[dashboardField.field]!; value = data.periodTotal; } else if (dashboardField.period == DashboardUISettings.PERIOD_PREVIOUS) { final data = - previousFieldMap[dashboardField.field]; + previousFieldMap[dashboardField.field]!; value = data.periodTotal; } else if (dashboardField.period == DashboardUISettings.PERIOD_TOTAL) { final data = - currentFieldMap[dashboardField.field]; + currentFieldMap[dashboardField.field]!; value = data.total; } return FormCard( padding: const EdgeInsets.all(0), children: [ - Text(localization.lookup(dashboardField.field), + Text(localization!.lookup(dashboardField.field)!, style: textTheme.titleMedium, textAlign: TextAlign.center), SizedBox(height: 6), @@ -643,11 +643,11 @@ class DashboardPanels extends StatelessWidget { context, currencyId: state .dashboardUIState.settings.currencyId, - ), + )!, style: textTheme.headlineSmall, textAlign: TextAlign.center), SizedBox(height: 6), - Text(localization.lookup(dashboardField.period), + Text(localization.lookup(dashboardField.period)!, style: textTheme.bodySmall, textAlign: TextAlign.center), ], @@ -657,7 +657,7 @@ class DashboardPanels extends StatelessWidget { ), _OverviewPanel( viewModel: viewModel, - title: localization.overview, + title: localization!.overview, invoiceData: invoiceData, paymentData: paymentData, expenseData: expenseData, @@ -672,11 +672,11 @@ class DashboardPanels extends StatelessWidget { previousData: previousInvoiceData, isLoaded: state.isLoaded || state.invoiceState.list.isNotEmpty, - title: AppLocalization.of(context).invoices, - onSelected: () => tabController + title: AppLocalization.of(context)!.invoices, + onSelected: () => tabController! .animateTo(sidebarTabs.indexOf(EntityType.invoice)), onDateSelected: (index, date) { - tabController + tabController! .animateTo(sidebarTabs.indexOf(EntityType.invoice)); viewModel.onSelectionChanged(EntityType.invoice, currentInvoiceData[index].entityMap[date]); @@ -688,11 +688,11 @@ class DashboardPanels extends StatelessWidget { previousData: previousPaymentData, isLoaded: state.isLoaded || state.paymentState.list.isNotEmpty, - title: AppLocalization.of(context).payments, - onSelected: () => tabController + title: AppLocalization.of(context)!.payments, + onSelected: () => tabController! .animateTo(sidebarTabs.indexOf(EntityType.payment)), onDateSelected: (index, date) { - tabController + tabController! .animateTo(sidebarTabs.indexOf(EntityType.payment)); viewModel.onSelectionChanged(EntityType.payment, @@ -705,11 +705,11 @@ class DashboardPanels extends StatelessWidget { previousData: previousQuoteData, isLoaded: state.isLoaded || state.quoteState.list.isNotEmpty, - title: AppLocalization.of(context).quotes, - onSelected: () => tabController + title: AppLocalization.of(context)!.quotes, + onSelected: () => tabController! .animateTo(sidebarTabs.indexOf(EntityType.quote)), onDateSelected: (index, date) { - tabController + tabController! .animateTo(sidebarTabs.indexOf(EntityType.quote)); viewModel.onSelectionChanged(EntityType.quote, @@ -722,11 +722,11 @@ class DashboardPanels extends StatelessWidget { previousData: previousTaskData, isLoaded: state.isLoaded || state.taskState.list.isNotEmpty, - title: AppLocalization.of(context).tasks, - onSelected: () => tabController + title: AppLocalization.of(context)!.tasks, + onSelected: () => tabController! .animateTo(sidebarTabs.indexOf(EntityType.task)), onDateSelected: (index, date) { - tabController + tabController! .animateTo(sidebarTabs.indexOf(EntityType.task)); viewModel.onSelectionChanged(EntityType.task, @@ -739,17 +739,17 @@ class DashboardPanels extends StatelessWidget { previousData: previousExpenseData, isLoaded: state.isLoaded || state.expenseState.list.isNotEmpty, - title: AppLocalization.of(context).expenses, - onSelected: () => tabController + title: AppLocalization.of(context)!.expenses, + onSelected: () => tabController! .animateTo(sidebarTabs.indexOf(EntityType.expense)), onDateSelected: (index, date) { - tabController + tabController! .animateTo(sidebarTabs.indexOf(EntityType.expense)); viewModel.onSelectionChanged(EntityType.expense, currentExpenseData[index].entityMap[date]); }); case DashboardSections.runningTasks: - return runningTasks; + return runningTasks!; } return SizedBox(); @@ -765,13 +765,13 @@ class DashboardPanels extends StatelessWidget { class _DashboardPanel extends StatefulWidget { const _DashboardPanel({ - @required this.viewModel, - @required this.title, - @required this.currentData, - @required this.previousData, - @required this.isLoaded, - @required this.onDateSelected, - @required this.onSelected, + required this.viewModel, + required this.title, + required this.currentData, + required this.previousData, + required this.isLoaded, + required this.onDateSelected, + required this.onSelected, }); final DashboardVM viewModel; @@ -787,9 +787,9 @@ class _DashboardPanel extends StatefulWidget { } class __DashboardPanelState extends State<_DashboardPanel> { - List _currentData; - List _previousData; - Widget _chart; + List? _currentData; + List? _previousData; + Widget? _chart; @override Widget build(BuildContext context) { @@ -807,7 +807,7 @@ class __DashboardPanelState extends State<_DashboardPanel> { if (_chart != null && _currentData == widget.currentData && _previousData == widget.previousData) { - return _chart; + return _chart!; } _currentData = widget.currentData; @@ -839,7 +839,7 @@ class __DashboardPanelState extends State<_DashboardPanel> { charts.MaterialPalette.gray.shadeDefault, strokeWidthPxFn: (_a, _b) => 2.5, id: DashboardChart.PERIOD_PREVIOUS, - displayName: localization.previous, + displayName: localization!.previous, data: previous, ), ); @@ -849,11 +849,11 @@ class __DashboardPanelState extends State<_DashboardPanel> { domainFn: (ChartMoneyData chartData, _) => chartData.date, measureFn: (ChartMoneyData chartData, _) => chartData.amount, colorFn: (ChartMoneyData chartData, _) => - charts.ColorUtil.fromDartColor(state.accentColor), + charts.ColorUtil.fromDartColor(state.accentColor!), strokeWidthPxFn: (_a, _b) => 2.5, id: DashboardChart.PERIOD_CURRENT, displayName: - settings.enableComparison ? localization.current : widget.title, + settings.enableComparison ? localization!.current : widget.title, data: dataGroup.rawSeries, )); }); @@ -862,25 +862,25 @@ class __DashboardPanelState extends State<_DashboardPanel> { data: widget.currentData, title: widget.title, onDateSelected: widget.onDateSelected, - onSelected: widget.onSelected, + onSelected: widget.onSelected as dynamic Function(), currencyId: (settings.currencyId ?? '').isNotEmpty ? settings.currencyId - : state.company.currencyId, + : state.company!.currencyId, ); - return _chart; + return _chart!; } } class _OverviewPanel extends StatefulWidget { const _OverviewPanel({ - @required this.viewModel, - @required this.title, - @required this.invoiceData, - @required this.paymentData, - @required this.expenseData, - @required this.isLoaded, - @required this.onDateSelected, + required this.viewModel, + required this.title, + required this.invoiceData, + required this.paymentData, + required this.expenseData, + required this.isLoaded, + required this.onDateSelected, }); final DashboardVM viewModel; @@ -889,17 +889,17 @@ class _OverviewPanel extends StatefulWidget { final List paymentData; final List expenseData; final bool isLoaded; - final Function(int, String) onDateSelected; + final Function(int, String)? onDateSelected; @override __OverviewPanelState createState() => __OverviewPanelState(); } class __OverviewPanelState extends State<_OverviewPanel> { - List invoiceData; - List paymentData; - List expenseData; - Widget chart; + List? invoiceData; + List? paymentData; + List? expenseData; + Widget? chart; @override Widget build(BuildContext context) { @@ -918,7 +918,7 @@ class __OverviewPanelState extends State<_OverviewPanel> { widget.invoiceData == invoiceData && widget.paymentData == paymentData && widget.expenseData == expenseData) { - return chart; + return chart!; } invoiceData = widget.invoiceData; @@ -928,13 +928,13 @@ class __OverviewPanelState extends State<_OverviewPanel> { widget.invoiceData.forEach((dataGroup) { dataGroup.chartSeries = >[]; - final index = invoiceData.indexOf(dataGroup); + final index = invoiceData!.indexOf(dataGroup); final invoiceSeries = dataGroup.rawSeries; - if (state.company.isModuleEnabled(EntityType.expense)) { + if (state.company!.isModuleEnabled(EntityType.expense)) { final List expenses = []; - final expenseSeries = expenseData[index].rawSeries; - dataGroup.previousTotal = expenseData[index].periodTotal; + final expenseSeries = expenseData![index].rawSeries; + dataGroup.previousTotal = expenseData![index].periodTotal; for (int i = 0; i < min(invoiceSeries.length, expenseSeries.length); @@ -950,14 +950,14 @@ class __OverviewPanelState extends State<_OverviewPanel> { charts.ColorUtil.fromDartColor(Colors.grey), strokeWidthPxFn: (_a, _b) => 2.5, id: DashboardChart.PERIOD_EXPENSES, - displayName: localization.expenses, + displayName: localization!.expenses, data: expenses, )); } final List payments = []; - final paymentSeries = paymentData[index].rawSeries; - dataGroup.previousTotal = paymentData[index].periodTotal; + final paymentSeries = paymentData![index].rawSeries; + dataGroup.previousTotal = paymentData![index].periodTotal; for (int i = 0; i < min(invoiceSeries.length, paymentSeries.length); @@ -973,7 +973,7 @@ class __OverviewPanelState extends State<_OverviewPanel> { charts.ColorUtil.fromDartColor(Colors.green), strokeWidthPxFn: (_a, _b) => 2.5, id: DashboardChart.PERIOD_PAYMENTS, - displayName: localization.payments, + displayName: localization!.payments, data: payments, )); @@ -981,7 +981,7 @@ class __OverviewPanelState extends State<_OverviewPanel> { domainFn: (ChartMoneyData chartData, _) => chartData.date, measureFn: (ChartMoneyData chartData, _) => chartData.amount, colorFn: (ChartMoneyData chartData, _) => - charts.ColorUtil.fromDartColor(state.accentColor), + charts.ColorUtil.fromDartColor(state.accentColor!), strokeWidthPxFn: (_a, _b) => 2.5, id: DashboardChart.PERIOD_INVOICES, displayName: localization.invoices, @@ -996,19 +996,19 @@ class __OverviewPanelState extends State<_OverviewPanel> { onDateSelected: widget.onDateSelected, currencyId: (settings.currencyId ?? '').isNotEmpty ? settings.currencyId - : state.company.currencyId, + : state.company!.currencyId, isOverview: true, ); - return chart; + return chart!; } } class _DashboardSettings extends StatefulWidget { const _DashboardSettings({ - Key key, - @required this.viewModel, - @required this.isWide, + Key? key, + required this.viewModel, + required this.isWide, }) : super(key: key); final bool isWide; @@ -1021,7 +1021,7 @@ class _DashboardSettings extends StatefulWidget { class __DashboardSettingsState extends State<_DashboardSettings> { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final store = StoreProvider.of(context); final viewModel = widget.viewModel; final state = store.state; @@ -1029,7 +1029,7 @@ class __DashboardSettingsState extends State<_DashboardSettings> { final groupMap = state.groupState.map; final company = state.company; final settings = state.dashboardUIState.settings; - final userCompanySettings = state.userCompany.settings; + final userCompanySettings = state.userCompany!.settings!; final hasMultipleCurrencies = memoizedHasMultipleCurrencies(company, clientMap, groupMap); @@ -1092,9 +1092,9 @@ class __DashboardSettingsState extends State<_DashboardSettings> { child: DropdownButton( items: memoizedGetCurrencyIds(company, clientMap, groupMap) .map((currencyId) => DropdownMenuItem( - child: Text(currencyId == kCurrencyAll + child: Text((currencyId == kCurrencyAll ? localization.all - : viewModel.currencyMap[currencyId]?.code), + : viewModel.currencyMap[currencyId]?.code)!), value: currencyId, )) .toList(), @@ -1119,9 +1119,9 @@ class __DashboardSettingsState extends State<_DashboardSettings> { child: Text(localization.save.toUpperCase()), onPressed: () { final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); - final user = state.user - .rebuild((b) => b..userCompany.replace(state.userCompany)); + context, AppLocalization.of(context)!.savedSettings); + final user = state.user! + .rebuild((b) => b..userCompany.replace(state.userCompany!)); store.dispatch( SaveUserSettingsRequest( completer: completer, @@ -1154,7 +1154,7 @@ class __DashboardSettingsState extends State<_DashboardSettings> { currencySettings, ], ), - if (company.hasTaxes) + if (company!.hasTaxes) Row( children: [ Text(localization.taxes), @@ -1168,7 +1168,7 @@ class __DashboardSettingsState extends State<_DashboardSettings> { child: ReorderableListView( onReorder: (oldIndex, newIndex) { final fields = - store.state.userCompany.settings.dashboardFields; + store.state.userCompany!.settings!.dashboardFields; // https://stackoverflow.com/a/54164333/497368 // These two lines are workarounds for ReorderableListView problems @@ -1192,9 +1192,9 @@ class __DashboardSettingsState extends State<_DashboardSettings> { ListTile( key: ValueKey( '__${dashboardField.field}_${dashboardField.period}_'), - title: Text(localization.lookup(dashboardField.field)), + title: Text(localization.lookup(dashboardField.field)!), subtitle: - Text(localization.lookup(dashboardField.period)), + Text(localization.lookup(dashboardField.period)!), leading: IconButton( icon: Icon(Icons.close), onPressed: () { @@ -1247,7 +1247,7 @@ class __DashboardSettingsState extends State<_DashboardSettings> { } class _DashboardField extends StatefulWidget { - const _DashboardField({Key key}) : super(key: key); + const _DashboardField({Key? key}) : super(key: key); @override State<_DashboardField> createState() => _DashboardFieldState(); @@ -1259,12 +1259,12 @@ class _DashboardFieldState extends State<_DashboardField> { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final List> items = []; final store = StoreProvider.of(context); final state = store.state; final company = state.company; - final dashboardFields = state.userCompany.settings.dashboardFields; + final dashboardFields = state.userCompany!.settings!.dashboardFields; final fieldMap = { EntityType.invoice: [ @@ -1295,9 +1295,9 @@ class _DashboardFieldState extends State<_DashboardField> { fieldMap.forEach((entityType, fields) { fields.forEach((field) { - if (company.isModuleEnabled(entityType)) { + if (company!.isModuleEnabled(entityType)) { items.add(DropdownMenuItem( - child: Text(localization.lookup(field)), + child: Text(localization.lookup(field)!), value: field, )); } @@ -1375,7 +1375,7 @@ class _DashboardFieldState extends State<_DashboardField> { Navigator.of(context).pop(); }, - child: Text(localization.add.toUpperCase()), + child: Text(localization.add!.toUpperCase()), ), ], ); diff --git a/lib/ui/dashboard/dashboard_screen.dart b/lib/ui/dashboard/dashboard_screen.dart index e463284b2..1c96aee85 100644 --- a/lib/ui/dashboard/dashboard_screen.dart +++ b/lib/ui/dashboard/dashboard_screen.dart @@ -39,8 +39,8 @@ import 'package:url_launcher/url_launcher.dart'; class DashboardScreen extends StatefulWidget { const DashboardScreen({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final DashboardVM viewModel; @@ -51,9 +51,9 @@ class DashboardScreen extends StatefulWidget { class _DashboardScreenState extends State with TickerProviderStateMixin { - TabController _mainTabController; - TabController _sideTabController; - ScrollController _scrollController; + TabController? _mainTabController; + TabController? _sideTabController; + ScrollController? _scrollController; final List _tabs = []; @override @@ -71,7 +71,7 @@ class _DashboardScreenState extends State EntityType.task, EntityType.expense, ].forEach((entityType) { - if (company.isModuleEnabled(entityType)) { + if (company!.isModuleEnabled(entityType)) { _tabs.add(entityType); } }); @@ -93,11 +93,11 @@ class _DashboardScreenState extends State ) ..addListener(onScrollListener); - final companyName = state.company.settings.name ?? ''; + final companyName = state.company!.settings.name ?? ''; if (!state.isDemo && - state.userCompany.isAdmin && + state.userCompany!.isAdmin && (companyName.isEmpty || companyName == 'Untitled Company') && - state.company.isOld) { + state.company!.isOld) { WidgetsBinding.instance.addPostFrameCallback((duration) { showDialog( context: context, @@ -160,7 +160,7 @@ class _DashboardScreenState extends State @override void dispose() { - _mainTabController.dispose(); + _mainTabController!.dispose(); _sideTabController ..removeListener(onTabListener) ..dispose(); @@ -176,13 +176,13 @@ class _DashboardScreenState extends State final store = StoreProvider.of(context); final state = store.state; final company = state.company; - Widget leading; + Widget? leading; if (isMobile(context) || state.prefState.isMenuFloated) { leading = Builder( builder: (context) => InkWell( child: IconButton( - tooltip: localization.menuSidebar, + tooltip: localization!.menuSidebar, icon: Icon(Icons.menu), onPressed: () { Scaffold.of(context).openDrawer(); @@ -215,7 +215,7 @@ class _DashboardScreenState extends State isScrollable: true, tabs: [ Tab( - text: localization.overview, + text: localization!.overview, ), Tab( text: localization.activity, @@ -243,7 +243,7 @@ class _DashboardScreenState extends State ], ), actions: [ - if (state.userCompany.isOwner && + if (state.userCompany!.isOwner && state.isSelfHosted && !state.isDemo && !isPaidAccount(context) && @@ -252,7 +252,7 @@ class _DashboardScreenState extends State padding: const EdgeInsets.only(right: 10), child: IconButton( tooltip: state.prefState.enableTooltips - ? localization.upgrade + ? localization!.upgrade : null, onPressed: () => launchUrl(Uri.parse(kWhiteLabelUrl)), icon: Icon(Icons.rocket_launch)), @@ -260,15 +260,15 @@ class _DashboardScreenState extends State if (!kReleaseMode || (kIsWeb && state.isSelfHosted && - state.userCompany.isAdmin && + state.userCompany!.isAdmin && !state.isDemo)) Padding( padding: const EdgeInsets.only(right: 10), child: IconButton( - tooltip: localization.enableReactApp, + tooltip: localization!.enableReactApp, onPressed: () async { final credentials = state.credentials; - final account = state.account + final account = state.account! .rebuild((b) => b..setReactAsDefaultAP = true); final url = '${credentials.url}/accounts/${account.id}'; final data = serializers.serializeWith( @@ -286,7 +286,7 @@ class _DashboardScreenState extends State WebUtils.reloadBrowser(); }).catchError((Object error) { store.dispatch(StopSaving()); - showErrorDialog(message: error); + showErrorDialog(message: error as String?); }); }, icon: Icon(MdiIcons.react), @@ -297,7 +297,7 @@ class _DashboardScreenState extends State builder: (context) => IconButton( padding: const EdgeInsets.only(left: 4, right: 24), tooltip: state.prefState.enableTooltips - ? localization.history + ? localization!.history : null, icon: Icon(Icons.history), onPressed: () { @@ -317,7 +317,7 @@ class _DashboardScreenState extends State isScrollable: isMobile(context), tabs: [ Tab( - text: localization.overview, + text: localization!.overview, ), Tab( text: localization.activity, @@ -326,27 +326,27 @@ class _DashboardScreenState extends State text: localization.systemLogs, ), if (isMobile(context) && - company.isModuleEnabled(EntityType.invoice)) + company!.isModuleEnabled(EntityType.invoice)) Tab( text: localization.invoices, ), if (isMobile(context) && - company.isModuleEnabled(EntityType.payment)) + company!.isModuleEnabled(EntityType.payment)) Tab( text: localization.payments, ), if (isMobile(context) && - company.isModuleEnabled(EntityType.quote)) + company!.isModuleEnabled(EntityType.quote)) Tab( text: localization.quotes, ), if (isMobile(context) && - company.isModuleEnabled(EntityType.task)) + company!.isModuleEnabled(EntityType.task)) Tab( text: localization.tasks, ), if (isMobile(context) && - company.isModuleEnabled(EntityType.expense)) + company!.isModuleEnabled(EntityType.expense)) Tab( text: localization.expense, ), @@ -390,16 +390,16 @@ class _DashboardScreenState extends State class _CustomTabBarView extends StatelessWidget { const _CustomTabBarView({ - @required this.viewModel, - @required this.mainTabController, - @required this.sideTabController, - @required this.scrollController, + required this.viewModel, + required this.mainTabController, + required this.sideTabController, + required this.scrollController, }); final DashboardVM viewModel; - final TabController mainTabController; - final TabController sideTabController; - final ScrollController scrollController; + final TabController? mainTabController; + final TabController? sideTabController; + final ScrollController? scrollController; @override Widget build(BuildContext context) { @@ -410,16 +410,16 @@ class _CustomTabBarView extends StatelessWidget { itemCount: viewModel.filteredList.length, itemBuilder: (BuildContext context, index) { final localization = AppLocalization.of(context); - final entity = viewModel.filteredList[index]; + final entity = viewModel.filteredList[index]!; final subtitle = entity.matchesFilterValue(viewModel.filter); return ListTile( - title: Text(entity.listDisplayName), + title: Text(entity.listDisplayName!), leading: Icon(getEntityIcon(entity.entityType)), trailing: Icon(Icons.navigate_next), subtitle: Text(subtitle != null ? subtitle - : localization.lookup('${entity.entityType}')), + : localization!.lookup('${entity.entityType}')!), onTap: () => viewEntity(entity: entity), ); }); @@ -444,15 +444,15 @@ class _CustomTabBarView extends StatelessWidget { onRefresh: () => viewModel.onRefreshed(context), child: DashboardSystemLogs(viewModel: viewModel), ), - if (isMobile(context) && company.isModuleEnabled(EntityType.invoice)) + if (isMobile(context) && company!.isModuleEnabled(EntityType.invoice)) InvoiceSidebar(), - if (isMobile(context) && company.isModuleEnabled(EntityType.payment)) + if (isMobile(context) && company!.isModuleEnabled(EntityType.payment)) PaymentSidebar(), - if (isMobile(context) && company.isModuleEnabled(EntityType.quote)) + if (isMobile(context) && company!.isModuleEnabled(EntityType.quote)) QuoteSidebar(), - if (isMobile(context) && company.isModuleEnabled(EntityType.task)) + if (isMobile(context) && company!.isModuleEnabled(EntityType.task)) TaskSidebar(), - if (isMobile(context) && company.isModuleEnabled(EntityType.expense)) + if (isMobile(context) && company!.isModuleEnabled(EntityType.expense)) ExpenseSidbar(), ], ); diff --git a/lib/ui/dashboard/dashboard_screen_vm.dart b/lib/ui/dashboard/dashboard_screen_vm.dart index 3fa48c35c..0b203980f 100644 --- a/lib/ui/dashboard/dashboard_screen_vm.dart +++ b/lib/ui/dashboard/dashboard_screen_vm.dart @@ -25,7 +25,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class DashboardScreenBuilder extends StatelessWidget { - const DashboardScreenBuilder({Key key}) : super(key: key); + const DashboardScreenBuilder({Key? key}) : super(key: key); static const String route = '/dashboard'; @override @@ -45,7 +45,7 @@ class DashboardScreenBuilder extends StatelessWidget { return DashboardScreen( viewModel: viewModel, key: ValueKey( - '__${company.id}_${company.enabledModules}_${state.prefState.isDesktop}__'), + '__${company!.id}_${company.enabledModules}_${state.prefState.isDesktop}__'), ); }, ); @@ -54,21 +54,21 @@ class DashboardScreenBuilder extends StatelessWidget { class DashboardVM { DashboardVM({ - @required this.state, - @required this.dashboardUIState, - @required this.currencyMap, - @required this.isLoading, - @required this.filter, - @required this.filteredList, - @required this.onRefreshed, - @required this.onEntityTypeChanged, - @required this.onSettingsChanged, - @required this.onSelectionChanged, - @required this.onOffsetChanged, - @required this.onCurrencyChanged, - @required this.onTaxesChanged, - @required this.onGroupByChanged, - @required this.onShowSidebar, + required this.state, + required this.dashboardUIState, + required this.currencyMap, + required this.isLoading, + required this.filter, + required this.filteredList, + required this.onRefreshed, + required this.onEntityTypeChanged, + required this.onSettingsChanged, + required this.onSelectionChanged, + required this.onOffsetChanged, + required this.onCurrencyChanged, + required this.onTaxesChanged, + required this.onGroupByChanged, + required this.onShowSidebar, }); static DashboardVM fromStore(Store store) { @@ -77,7 +77,7 @@ class DashboardVM { return Future(null); } final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); // TODO just reload activities store.dispatch(RefreshData(completer: completer)); @@ -125,17 +125,17 @@ class DashboardVM { final AppState state; final DashboardUIState dashboardUIState; - final BuiltMap currencyMap; - final String filter; - final List filteredList; + final BuiltMap currencyMap; + final String? filter; + final List filteredList; final bool isLoading; final Function(BuildContext) onRefreshed; final Function(DashboardSettings) onSettingsChanged; - final Function(EntityType, List) onSelectionChanged; + final Function(EntityType, List?) onSelectionChanged; final Function(EntityType) onEntityTypeChanged; final Function(int) onOffsetChanged; - final Function(String) onCurrencyChanged; - final Function(bool) onTaxesChanged; - final Function(String) onGroupByChanged; + final Function(String?) onCurrencyChanged; + final Function(bool?) onTaxesChanged; + final Function(String?) onGroupByChanged; final Function onShowSidebar; } diff --git a/lib/ui/dashboard/dashboard_sidebar.dart b/lib/ui/dashboard/dashboard_sidebar.dart index 21bd7c7bb..bbb9ba2d4 100644 --- a/lib/ui/dashboard/dashboard_sidebar.dart +++ b/lib/ui/dashboard/dashboard_sidebar.dart @@ -22,17 +22,17 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class SidebarScaffold extends StatelessWidget { const SidebarScaffold({ - @required this.tabController, + required this.tabController, }); - final TabController tabController; + final TabController? tabController; @override Widget build(BuildContext context) { final localization = AppLocalization.of(context); final store = StoreProvider.of(context); final state = store.state; - final company = state.company; + final company = state.company!; return Scaffold( appBar: AppBar( @@ -46,23 +46,23 @@ class SidebarScaffold extends StatelessWidget { tabs: [ if (company.isModuleEnabled(EntityType.invoice)) Tab( - text: localization.invoices, + text: localization!.invoices, ), if (company.isModuleEnabled(EntityType.payment)) Tab( - text: localization.payments, + text: localization!.payments, ), if (company.isModuleEnabled(EntityType.quote)) Tab( - text: localization.quotes, + text: localization!.quotes, ), if (company.isModuleEnabled(EntityType.task)) Tab( - text: localization.tasks, + text: localization!.tasks, ), if (company.isModuleEnabled(EntityType.expense)) Tab( - text: localization.expenses, + text: localization!.expenses, ), ], ), @@ -95,7 +95,7 @@ class InvoiceSidebar extends StatelessWidget { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final store = StoreProvider.of(context); final state = store.state; final upcomingInvoices = memoizedUpcomingInvoices( @@ -141,13 +141,13 @@ class InvoiceSidebar extends StatelessWidget { ), label3: (selectedIds ?? []).isEmpty ? null - : localization.selectedInvoices + ' (${selectedIds.length})', + : localization.selectedInvoices + ' (${selectedIds!.length})', list3: (selectedIds ?? []).isEmpty ? null : ScrollableListViewBuilder( itemCount: selectedIds?.length, itemBuilder: (BuildContext context, int index) { - final invoice = state.invoiceState.map[selectedIds[index]]; + final invoice = state.invoiceState.map[selectedIds![index]]; return invoice == null ? SizedBox() : InvoiceListItem( @@ -166,7 +166,7 @@ class PaymentSidebar extends StatelessWidget { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final store = StoreProvider.of(context); final state = store.state; final recentPayments = memoizedRecentPayments( @@ -194,13 +194,13 @@ class PaymentSidebar extends StatelessWidget { ), label3: (selectedIds ?? []).isEmpty ? null - : localization.selectedPayments + ' (${selectedIds.length})', + : localization.selectedPayments + ' (${selectedIds!.length})', list3: (selectedIds ?? []).isEmpty ? null : ScrollableListViewBuilder( itemCount: selectedIds?.length, itemBuilder: (BuildContext context, int index) { - final payment = state.paymentState.map[selectedIds[index]]; + final payment = state.paymentState.map[selectedIds![index]]; return payment == null ? SizedBox() : PaymentListItem( @@ -219,7 +219,7 @@ class QuoteSidebar extends StatelessWidget { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final store = StoreProvider.of(context); final state = store.state; final upcomingQuotes = memoizedUpcomingQuotes( @@ -265,13 +265,13 @@ class QuoteSidebar extends StatelessWidget { ), label3: (selectedIds ?? []).isEmpty ? null - : localization.selectedQuotes + ' (${selectedIds.length})', + : localization.selectedQuotes + ' (${selectedIds!.length})', list3: (selectedIds ?? []).isEmpty ? null : ScrollableListViewBuilder( itemCount: selectedIds?.length, itemBuilder: (BuildContext context, int index) { - final quote = state.quoteState.map[selectedIds[index]]; + final quote = state.quoteState.map[selectedIds![index]]; return quote == null ? SizedBox() : QuoteListItem( @@ -290,7 +290,7 @@ class TaskSidebar extends StatelessWidget { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final store = StoreProvider.of(context); final state = store.state; final runningTasks = memoizedRunningTasks( @@ -336,13 +336,13 @@ class TaskSidebar extends StatelessWidget { ), label3: (selectedIds ?? []).isEmpty ? null - : localization.selectedTasks + ' (${selectedIds.length})', + : localization.selectedTasks + ' (${selectedIds!.length})', list3: (selectedIds ?? []).isEmpty ? null : ScrollableListViewBuilder( itemCount: selectedIds?.length, itemBuilder: (BuildContext context, int index) { - final task = state.taskState.map[selectedIds[index]]; + final task = state.taskState.map[selectedIds![index]]; return task == null ? SizedBox() : TaskListItem( @@ -361,7 +361,7 @@ class ExpenseSidbar extends StatelessWidget { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final store = StoreProvider.of(context); final state = store.state; @@ -414,13 +414,13 @@ class ExpenseSidbar extends StatelessWidget { ), label3: (selectedIds ?? []).isEmpty ? null - : localization.selectedExpenses + ' (${selectedIds.length})', + : localization.selectedExpenses + ' (${selectedIds!.length})', list3: (selectedIds ?? []).isEmpty ? null : ScrollableListViewBuilder( itemCount: selectedIds?.length, itemBuilder: (BuildContext context, int index) { - final expense = state.expenseState.map[selectedIds[index]]; + final expense = state.expenseState.map[selectedIds![index]]; return expense == null ? SizedBox() : ExpenseListItem( @@ -437,9 +437,9 @@ class ExpenseSidbar extends StatelessWidget { class _DashboardSidebar extends StatelessWidget { const _DashboardSidebar({ - @required this.entityType, - @required this.label1, - @required this.list1, + required this.entityType, + required this.label1, + required this.list1, this.label2, this.list2, this.label3, @@ -448,11 +448,11 @@ class _DashboardSidebar extends StatelessWidget { final EntityType entityType; final String label1; - final String label2; - final String label3; - final ScrollableListViewBuilder list1; - final ScrollableListViewBuilder list2; - final ScrollableListViewBuilder list3; + final String? label2; + final String? label3; + final ScrollableListViewBuilder? list1; + final ScrollableListViewBuilder? list2; + final ScrollableListViewBuilder? list3; @override Widget build(BuildContext context) { @@ -476,7 +476,7 @@ class _DashboardSidebar extends StatelessWidget { ), Expanded( child: list1 == null - ? HelpText(localization.noRecordsFound) + ? HelpText(localization!.noRecordsFound) : ClipRRect(child: list1), ), if (label2 != null) ...[ @@ -484,7 +484,7 @@ class _DashboardSidebar extends StatelessWidget { elevation: 4, color: Theme.of(context).scaffoldBackgroundColor, child: Container( - child: Text(label2, style: textTheme.bodyMedium), + child: Text(label2!, style: textTheme.bodyMedium), padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 16), width: double.infinity, @@ -492,7 +492,7 @@ class _DashboardSidebar extends StatelessWidget { ), Expanded( child: list2 == null - ? HelpText(localization.noRecordsFound) + ? HelpText(localization!.noRecordsFound) : ClipRRect(child: list2), ), ], diff --git a/lib/ui/dashboard/dashboard_system_logs.dart b/lib/ui/dashboard/dashboard_system_logs.dart index 932722123..df6aca60d 100644 --- a/lib/ui/dashboard/dashboard_system_logs.dart +++ b/lib/ui/dashboard/dashboard_system_logs.dart @@ -7,15 +7,15 @@ import 'package:invoiceninja_flutter/ui/dashboard/dashboard_screen_vm.dart'; class DashboardSystemLogs extends StatelessWidget { const DashboardSystemLogs({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final DashboardVM viewModel; @override Widget build(BuildContext context) { - final company = viewModel.state.company; + final company = viewModel.state.company!; final systemLogs = company.systemLogs; return SystemLogViewer( diff --git a/lib/ui/design/design_list_item.dart b/lib/ui/design/design_list_item.dart index 4da46baa0..95b14c5ba 100644 --- a/lib/ui/design/design_list_item.dart +++ b/lib/ui/design/design_list_item.dart @@ -15,19 +15,19 @@ import 'package:invoiceninja_flutter/utils/formatting.dart'; class DesignListItem extends StatelessWidget { const DesignListItem({ - @required this.design, - @required this.filter, + required this.design, + required this.filter, this.onTap, this.onLongPress, this.onCheckboxChanged, this.isChecked = false, }); - final GestureTapCallback onTap; - final GestureTapCallback onLongPress; - final DesignEntity design; - final String filter; - final Function(bool) onCheckboxChanged; + final GestureTapCallback? onTap; + final GestureTapCallback? onLongPress; + final DesignEntity? design; + final String? filter; + final Function(bool?)? onCheckboxChanged; final bool isChecked; @override @@ -40,8 +40,8 @@ class DesignListItem extends StatelessWidget { final isInMultiselect = listUIState.isInMultiselect(); final showCheckbox = onCheckboxChanged != null || isInMultiselect; - final filterMatch = filter != null && filter.isNotEmpty - ? design.matchesFilterValue(filter) + final filterMatch = filter != null && filter!.isNotEmpty + ? design!.matchesFilterValue(filter) : null; final subtitle = filterMatch; @@ -50,17 +50,17 @@ class DesignListItem extends StatelessWidget { entity: design, isSelected: false, child: ListTile( - onTap: () => onTap != null ? onTap() : selectEntity(entity: design), + onTap: () => onTap != null ? onTap!() : selectEntity(entity: design!), onLongPress: () => onLongPress != null - ? onLongPress() - : selectEntity(entity: design, longPress: true), + ? onLongPress!() + : selectEntity(entity: design!, longPress: true), leading: showCheckbox ? IgnorePointer( ignoring: listUIState.isInMultiselect(), child: Checkbox( value: isChecked, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, - onChanged: (value) => onCheckboxChanged(value), + onChanged: (value) => onCheckboxChanged!(value), activeColor: Theme.of(context).colorScheme.secondary, ), ) @@ -71,11 +71,11 @@ class DesignListItem extends StatelessWidget { children: [ Expanded( child: Text( - design.name, + design!.name, style: Theme.of(context).textTheme.titleMedium, ), ), - Text(formatNumber(design.listDisplayAmount, context), + Text(formatNumber(design!.listDisplayAmount, context)!, style: Theme.of(context).textTheme.titleMedium), ], ), diff --git a/lib/ui/design/design_list_vm.dart b/lib/ui/design/design_list_vm.dart index 0ab3829f9..32425e39b 100644 --- a/lib/ui/design/design_list_vm.dart +++ b/lib/ui/design/design_list_vm.dart @@ -24,7 +24,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class DesignListBuilder extends StatelessWidget { - const DesignListBuilder({Key key}) : super(key: key); + const DesignListBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -50,7 +50,7 @@ class DesignListBuilder extends StatelessWidget { return DesignListItem( filter: viewModel.filter, design: design, - isChecked: isInMultiselect && listState.isSelected(design.id), + isChecked: isInMultiselect && listState.isSelected(design!.id), ); }); }, @@ -60,18 +60,18 @@ class DesignListBuilder extends StatelessWidget { class DesignListVM { DesignListVM({ - @required this.state, - @required this.userCompany, - @required this.designList, - @required this.designMap, - @required this.filter, - @required this.isLoading, - @required this.listState, - @required this.onRefreshed, - @required this.onEntityAction, - @required this.tableColumns, - @required this.onSortColumn, - @required this.onClearMultielsect, + required this.state, + required this.userCompany, + required this.designList, + required this.designMap, + required this.filter, + required this.isLoading, + required this.listState, + required this.onRefreshed, + required this.onEntityAction, + required this.tableColumns, + required this.onSortColumn, + required this.onClearMultielsect, }); static DesignListVM fromStore(Store store) { @@ -80,7 +80,7 @@ class DesignListVM { return Future(null); } final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(RefreshData(completer: completer)); return completer.future; } @@ -107,11 +107,11 @@ class DesignListVM { } final AppState state; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List designList; - final BuiltMap designMap; + final BuiltMap designMap; final ListUIState listState; - final String filter; + final String? filter; final bool isLoading; final Function(BuildContext) onRefreshed; final Function(BuildContext, List, EntityAction) onEntityAction; diff --git a/lib/ui/design/design_presenter.dart b/lib/ui/design/design_presenter.dart index db6d5406d..6e2e072b5 100644 --- a/lib/ui/design/design_presenter.dart +++ b/lib/ui/design/design_presenter.dart @@ -6,7 +6,7 @@ import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/ui/app/presenters/entity_presenter.dart'; class DesignPresenter extends EntityPresenter { - static List getDefaultTableFields(UserCompanyEntity userCompany) { + static List getDefaultTableFields(UserCompanyEntity? userCompany) { return []; } @@ -17,7 +17,7 @@ class DesignPresenter extends EntityPresenter { } @override - Widget getField({String field, BuildContext context}) { + Widget getField({String? field, required BuildContext context}) { //final state = StoreProvider.of(context).state; //final design = entity as InvoiceEntity; diff --git a/lib/ui/design/design_screen.dart b/lib/ui/design/design_screen.dart index e8bbd00a9..cfbb4da6d 100644 --- a/lib/ui/design/design_screen.dart +++ b/lib/ui/design/design_screen.dart @@ -19,8 +19,8 @@ import 'design_screen_vm.dart'; class DesignScreen extends StatelessWidget { const DesignScreen({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); static const String route = '/$kSettings/$kSettingsCustomDesigns'; @@ -86,7 +86,7 @@ class DesignScreen extends StatelessWidget { onSelectedCustom4: (value) => store.dispatch(FilterDesignsByCustom4(value)), ), - floatingActionButton: state.prefState.isMobile && userCompany.isAdmin + floatingActionButton: state.prefState.isMobile && userCompany!.isAdmin ? FloatingActionButton( heroTag: 'design_fab', backgroundColor: Theme.of(context).primaryColorDark, @@ -101,7 +101,7 @@ class DesignScreen extends StatelessWidget { Icons.add, color: Colors.white, ), - tooltip: localization.newDesign, + tooltip: localization!.newDesign, ) : null, ); diff --git a/lib/ui/design/design_screen_vm.dart b/lib/ui/design/design_screen_vm.dart index 05c9e5470..04e32ac03 100644 --- a/lib/ui/design/design_screen_vm.dart +++ b/lib/ui/design/design_screen_vm.dart @@ -15,7 +15,7 @@ import 'package:invoiceninja_flutter/redux/design/design_selectors.dart'; import 'design_screen.dart'; class DesignScreenBuilder extends StatelessWidget { - const DesignScreenBuilder({Key key}) : super(key: key); + const DesignScreenBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -32,18 +32,18 @@ class DesignScreenBuilder extends StatelessWidget { class DesignScreenVM { DesignScreenVM({ - @required this.isInMultiselect, - @required this.designList, - @required this.userCompany, - @required this.onEntityAction, - @required this.designMap, + required this.isInMultiselect, + required this.designList, + required this.userCompany, + required this.onEntityAction, + required this.designMap, }); final bool isInMultiselect; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List designList; final Function(BuildContext, List, EntityAction) onEntityAction; - final BuiltMap designMap; + final BuiltMap designMap; static DesignScreenVM fromStore(Store store) { final state = store.state; diff --git a/lib/ui/design/edit/design_edit.dart b/lib/ui/design/edit/design_edit.dart index 8714ad4ea..42883c9df 100644 --- a/lib/ui/design/edit/design_edit.dart +++ b/lib/ui/design/edit/design_edit.dart @@ -39,8 +39,8 @@ import 'package:invoiceninja_flutter/utils/web_stub.dart' class DesignEdit extends StatefulWidget { const DesignEdit({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final DesignEditVM viewModel; @@ -66,14 +66,14 @@ class _DesignEditState extends State final _tasksController = TextEditingController(); final _includesController = TextEditingController(); - FocusScopeNode _focusNode; - TabController _tabController; - Uint8List _pdfBytes; + FocusScopeNode? _focusNode; + TabController? _tabController; + Uint8List? _pdfBytes; String _html = ''; bool _isLoading = false; bool _isDraftMode = false; - List _controllers; + late List _controllers; @override void initState() { @@ -100,12 +100,12 @@ class _DesignEditState extends State final design = widget.viewModel.design; _nameController.text = design.name; - _headerController.text = design.getSection(kDesignHeader); - _footerController.text = design.getSection(kDesignFooter); - _bodyController.text = design.getSection(kDesignBody); - _productsController.text = design.getSection(kDesignProducts); - _tasksController.text = design.getSection(kDesignTasks); - _includesController.text = design.getSection(kDesignIncludes); + _headerController.text = design.getSection(kDesignHeader)!; + _footerController.text = design.getSection(kDesignFooter)!; + _bodyController.text = design.getSection(kDesignBody)!; + _productsController.text = design.getSection(kDesignProducts)!; + _tasksController.text = design.getSection(kDesignTasks)!; + _includesController.text = design.getSection(kDesignIncludes)!; _controllers.forEach((controller) => controller.addListener(_onChanged)); @@ -118,8 +118,8 @@ class _DesignEditState extends State @override void dispose() { - _focusNode.dispose(); - _tabController.dispose(); + _focusNode!.dispose(); + _tabController!.dispose(); _htmlController.removeListener(_onHtmlChanged); _htmlController.dispose(); @@ -169,12 +169,12 @@ class _DesignEditState extends State _controllers.forEach((controller) => controller.removeListener(_onChanged)); final htmlDesign = design.design; - _headerController.text = htmlDesign[kDesignHeader]; - _bodyController.text = htmlDesign[kDesignBody]; - _footerController.text = htmlDesign[kDesignFooter]; - _productsController.text = htmlDesign[kDesignProducts]; - _tasksController.text = htmlDesign[kDesignTasks]; - _includesController.text = htmlDesign[kDesignIncludes]; + _headerController.text = htmlDesign[kDesignHeader]!; + _bodyController.text = htmlDesign[kDesignBody]!; + _footerController.text = htmlDesign[kDesignFooter]!; + _productsController.text = htmlDesign[kDesignProducts]!; + _tasksController.text = htmlDesign[kDesignTasks]!; + _includesController.text = htmlDesign[kDesignIncludes]!; _controllers.forEach((controller) => controller.addListener(_onChanged)); @@ -230,7 +230,7 @@ class _DesignEditState extends State return EditScaffold( entity: design, isFullscreen: true, - title: design.isNew ? localization.newDesign : localization.editDesign, + title: design.isNew ? localization!.newDesign : localization!.editDesign, onCancelPressed: (context) => viewModel.onCancelPressed(context), appBarBottom: isMobile(context) ? TabBar( @@ -252,7 +252,7 @@ class _DesignEditState extends State onSavePressed: _isLoading ? null : (context) { - final bool isValid = _formKey.currentState.validate(); + final bool isValid = _formKey.currentState!.validate(); if (!isValid) { return; @@ -359,7 +359,7 @@ class _DesignEditState extends State } class DesignSection extends StatelessWidget { - const DesignSection({@required this.textController}); + const DesignSection({required this.textController}); final TextEditingController textController; @@ -402,13 +402,13 @@ class DesignSection extends StatelessWidget { class DesignSettings extends StatefulWidget { const DesignSettings({ - @required this.viewModel, - @required this.nameController, - @required this.htmlController, - @required this.onLoadDesign, - @required this.draftMode, - @required this.onDraftModeChanged, - @required this.isLoading, + required this.viewModel, + required this.nameController, + required this.htmlController, + required this.onLoadDesign, + required this.draftMode, + required this.onDraftModeChanged, + required this.isLoading, }); final DesignEditVM viewModel; @@ -424,7 +424,7 @@ class DesignSettings extends StatefulWidget { } class _DesignSettingsState extends State { - DesignEntity _selectedDesign; + DesignEntity? _selectedDesign; @override void initState() { @@ -439,13 +439,13 @@ class _DesignSettingsState extends State { final state = viewModel.state; final designMap = state.designState.map; _selectedDesign = - designMap[state.company.settings.defaultInvoiceDesignId]; + designMap[state.company!.settings.defaultInvoiceDesignId]; } } @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; return ScrollableListView( children: [ @@ -470,8 +470,8 @@ class _DesignSettingsState extends State { SizedBox(height: 16), SwitchListTile( activeColor: Theme.of(context).colorScheme.secondary, - title: Text(localization.draftMode), - subtitle: Text(localization.draftModeHelp), + title: Text(localization.draftMode!), + subtitle: Text(localization.draftModeHelp!), value: widget.draftMode, onChanged: widget.isLoading ? null : widget.onDraftModeChanged, ), @@ -513,7 +513,7 @@ class _DesignSettingsState extends State { widget.onLoadDesign(design.rebuild((b) => b ..design.replace( - BuiltMap(jsonDecode(designStr))))); + BuiltMap(jsonDecode(designStr!))))); showToast(localization.importedDesign); }, ), @@ -554,7 +554,7 @@ class _DesignSettingsState extends State { Padding( padding: const EdgeInsets.only(top: 16, left: 30, right: 30), child: Text( - localization.htmlPreviewWarning, + localization.htmlPreviewWarning!, style: TextStyle(color: Colors.grey), ), ), @@ -593,11 +593,11 @@ class _DesignSettingsState extends State { class PdfDesignPreview extends StatefulWidget { const PdfDesignPreview({ - @required this.pdfBytes, - @required this.isLoading, + required this.pdfBytes, + required this.isLoading, }); - final Uint8List pdfBytes; + final Uint8List? pdfBytes; final bool isLoading; @@ -611,7 +611,7 @@ class _PdfDesignPreviewState extends State { return ''; } - return 'data:application/pdf;base64,' + base64Encode(widget.pdfBytes); + return 'data:application/pdf;base64,' + base64Encode(widget.pdfBytes!); } @override @@ -644,7 +644,7 @@ class _PdfDesignPreviewState extends State { HtmlElementView(viewType: _pdfString) else if (widget.pdfBytes != null) PdfPreview( - build: (format) => widget.pdfBytes, + build: (format) => widget.pdfBytes!, canChangeOrientation: false, canChangePageFormat: false, allowPrinting: false, @@ -672,8 +672,8 @@ class _PdfDesignPreviewState extends State { class HtmlDesignPreview extends StatelessWidget { const HtmlDesignPreview({ - @required this.html, - @required this.isLoading, + required this.html, + required this.isLoading, }); final String html; @@ -740,7 +740,7 @@ class InsertTabAction extends Action { } class _DesignImportDialog extends StatefulWidget { - const _DesignImportDialog({Key key}) : super(key: key); + const _DesignImportDialog({Key? key}) : super(key: key); @override State<_DesignImportDialog> createState() => __DesignImportDialogState(); @@ -751,10 +751,10 @@ class __DesignImportDialogState extends State<_DesignImportDialog> { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; return AlertDialog( - title: Text(localization.importDesign), + title: Text(localization.importDesign!), content: DecoratedFormField( autofocus: true, autocorrect: false, @@ -772,15 +772,15 @@ class __DesignImportDialogState extends State<_DesignImportDialog> { onPressed: () { final value = _design.trim(); try { - final Map map = jsonDecode(value); + final Map? map = jsonDecode(value); for (var field in [ kDesignBody, kDesignFooter, kDesignHeader, kDesignIncludes ]) { - if (!map.containsKey(field)) { - throw localization.invalidDesign + if (!map!.containsKey(field)) { + throw localization.invalidDesign! .replaceFirst(':value', field); } } diff --git a/lib/ui/design/edit/design_edit_vm.dart b/lib/ui/design/edit/design_edit_vm.dart index e73630eb4..79b34fba9 100644 --- a/lib/ui/design/edit/design_edit_vm.dart +++ b/lib/ui/design/edit/design_edit_vm.dart @@ -17,7 +17,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class DesignEditScreen extends StatelessWidget { - const DesignEditScreen({Key key}) : super(key: key); + const DesignEditScreen({Key? key}) : super(key: key); static const String route = '/$kSettings/$kSettingsCustomDesignsEdit'; @override @@ -40,20 +40,20 @@ class DesignEditScreen extends StatelessWidget { class DesignEditVM { DesignEditVM({ - @required this.state, - @required this.design, - @required this.company, - @required this.onChanged, - @required this.isSaving, - @required this.origDesign, - @required this.onSavePressed, - @required this.onCancelPressed, - @required this.isLoading, + required this.state, + required this.design, + required this.company, + required this.onChanged, + required this.isSaving, + required this.origDesign, + required this.onSavePressed, + required this.onCancelPressed, + required this.isLoading, }); factory DesignEditVM.fromStore(Store store) { final state = store.state; - final design = state.designUIState.editing; + final design = state.designUIState.editing!; return DesignEditVM( state: state, @@ -77,7 +77,7 @@ class DesignEditVM { Debouncer.runOnComplete(() { final design = store.state.designUIState.editing; final completer = snackBarCompleter( - context, AppLocalization.of(context).savedDesign); + context, AppLocalization.of(context)!.savedDesign); store.dispatch( SaveDesignRequest(completer: completer, design: design)); }); @@ -86,12 +86,12 @@ class DesignEditVM { } final DesignEntity design; - final CompanyEntity company; + final CompanyEntity? company; final Function(DesignEntity) onChanged; final Function(BuildContext) onSavePressed; final Function(BuildContext) onCancelPressed; final bool isLoading; final bool isSaving; - final DesignEntity origDesign; + final DesignEntity? origDesign; final AppState state; } diff --git a/lib/ui/design/view/design_view.dart b/lib/ui/design/view/design_view.dart index 2351d9203..38874edb9 100644 --- a/lib/ui/design/view/design_view.dart +++ b/lib/ui/design/view/design_view.dart @@ -22,9 +22,9 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class DesignView extends StatefulWidget { const DesignView({ - Key key, - @required this.viewModel, - @required this.isFilter, + Key? key, + required this.viewModel, + required this.isFilter, }) : super(key: key); final DesignViewVM viewModel; @@ -39,30 +39,30 @@ class _DesignViewState extends State { Widget build(BuildContext context) { final viewModel = widget.viewModel; final state = viewModel.state; - final company = state.company; + final company = state.company!; final design = viewModel.design; - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; int count = 0; count += state.invoiceState.list .map((invoiceId) => state.invoiceState.map[invoiceId]) - .where((invoice) => !invoice.isDeleted && invoice.designId == design.id) + .where((invoice) => !invoice!.isDeleted! && invoice.designId == design.id) .length; count += state.quoteState.list .map((quoteId) => state.quoteState.map[quoteId]) - .where((quote) => !quote.isDeleted && quote.designId == design.id) + .where((quote) => !quote!.isDeleted! && quote.designId == design.id) .length; count += state.creditState.list .map((creditId) => state.creditState.map[creditId]) - .where((credit) => !credit.isDeleted && credit.designId == design.id) + .where((credit) => !credit!.isDeleted! && credit.designId == design.id) .length; count += state.recurringInvoiceState.list .map((invoiceId) => state.recurringInvoiceState.map[invoiceId]) - .where((invoice) => !invoice.isDeleted && invoice.designId == design.id) + .where((invoice) => !invoice!.isDeleted! && invoice.designId == design.id) .length; return ViewScaffold( diff --git a/lib/ui/design/view/design_view_vm.dart b/lib/ui/design/view/design_view_vm.dart index 9e3f9d996..0539bc81b 100644 --- a/lib/ui/design/view/design_view_vm.dart +++ b/lib/ui/design/view/design_view_vm.dart @@ -22,7 +22,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class DesignViewScreen extends StatelessWidget { const DesignViewScreen({ - Key key, + Key? key, this.isFilter = false, }) : super(key: key); final bool isFilter; @@ -47,15 +47,15 @@ class DesignViewScreen extends StatelessWidget { class DesignViewVM { DesignViewVM({ - @required this.state, - @required this.design, - @required this.company, - @required this.onEntityAction, - @required this.onRefreshed, - @required this.isSaving, - @required this.onBackPressed, - @required this.isLoading, - @required this.isDirty, + required this.state, + required this.design, + required this.company, + required this.onEntityAction, + required this.onRefreshed, + required this.isSaving, + required this.onBackPressed, + required this.isLoading, + required this.isDirty, }); factory DesignViewVM.fromStore(Store store) { @@ -65,7 +65,7 @@ class DesignViewVM { Future _handleRefresh(BuildContext context) { final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(LoadDesign(completer: completer, designId: design.id)); return completer.future; } @@ -88,7 +88,7 @@ class DesignViewVM { final AppState state; final DesignEntity design; - final CompanyEntity company; + final CompanyEntity? company; final Function(BuildContext, EntityAction) onEntityAction; final Function(BuildContext) onRefreshed; final bool isSaving; diff --git a/lib/ui/document/document_list_item.dart b/lib/ui/document/document_list_item.dart index 219720175..e7835d6bf 100644 --- a/lib/ui/document/document_list_item.dart +++ b/lib/ui/document/document_list_item.dart @@ -18,25 +18,25 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class DocumentListItem extends StatelessWidget { const DocumentListItem({ - @required this.userCompany, + required this.userCompany, //@required this.onCheckboxChanged, - @required this.document, - @required this.filter, + required this.document, + required this.filter, this.onTap, this.onLongPress, this.onCheckboxChanged, this.isChecked = false, }); - final UserCompanyEntity userCompany; - final GestureTapCallback onTap; - final GestureTapCallback onLongPress; - final Function(bool) onCheckboxChanged; + final UserCompanyEntity? userCompany; + final GestureTapCallback? onTap; + final GestureTapCallback? onLongPress; + final Function(bool?)? onCheckboxChanged; final bool isChecked; //final ValueChanged onCheckboxChanged; - final DocumentEntity document; - final String filter; + final DocumentEntity? document; + final String? filter; @override Widget build(BuildContext context) { @@ -44,8 +44,8 @@ class DocumentListItem extends StatelessWidget { final state = store.state; final uiState = state.uiState; final documentUIState = uiState.documentUIState; - final filterMatch = filter != null && filter.isNotEmpty - ? document.matchesFilterValue(filter) + final filterMatch = filter != null && filter!.isNotEmpty + ? document!.matchesFilterValue(filter) : null; final subtitle = filterMatch; final listUIState = documentUIState.listUIState; @@ -54,9 +54,9 @@ class DocumentListItem extends StatelessWidget { return DismissibleEntity( isSelected: isDesktop(context) && - document.id == + document!.id == (uiState.isEditing - ? documentUIState.editing.id + ? documentUIState.editing!.id : documentUIState.selectedId), userCompany: userCompany, entity: document, @@ -64,10 +64,10 @@ class DocumentListItem extends StatelessWidget { return constraints.maxWidth > kTableListWidthCutoff ? InkWell( onTap: () => - onTap != null ? onTap() : selectEntity(entity: document), + onTap != null ? onTap!() : selectEntity(entity: document!), onLongPress: () => onLongPress != null - ? onLongPress() - : selectEntity(entity: document, longPress: true), + ? onLongPress!() + : selectEntity(entity: document!, longPress: true), child: Padding( padding: const EdgeInsets.only( left: 10, @@ -87,13 +87,13 @@ class DocumentListItem extends StatelessWidget { materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, onChanged: (value) => - onCheckboxChanged(value), + onCheckboxChanged!(value), activeColor: Theme.of(context).colorScheme.secondary, ), ) : ActionMenuButton( - entityActions: document.getActions( + entityActions: document!.getActions( userCompany: state.userCompany, includeEdit: true, ), @@ -107,23 +107,23 @@ class DocumentListItem extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - document.name, + document!.name, style: Theme.of(context).textTheme.titleMedium, ), Text( formatDate( convertTimestampToDateString( - document.createdAt), + document!.createdAt), context) + - (!document.isPublic - ? ' • ${AppLocalization.of(context).private}' + (!document!.isPublic + ? ' • ${AppLocalization.of(context)!.private}' : ''), style: Theme.of(context).textTheme.bodySmall, ), ], ), ), - Text(document.prettySize, + Text(document!.prettySize, style: Theme.of(context).textTheme.titleMedium), ], ), @@ -131,10 +131,10 @@ class DocumentListItem extends StatelessWidget { ) : ListTile( onTap: () => - onTap != null ? onTap() : selectEntity(entity: document), + onTap != null ? onTap!() : selectEntity(entity: document!), onLongPress: () => onLongPress != null - ? onLongPress() - : selectEntity(entity: document, longPress: true), + ? onLongPress!() + : selectEntity(entity: document!, longPress: true), leading: showCheckbox ? IgnorePointer( ignoring: listUIState.isInMultiselect(), @@ -142,7 +142,7 @@ class DocumentListItem extends StatelessWidget { value: isChecked, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, - onChanged: (value) => onCheckboxChanged(value), + onChanged: (value) => onCheckboxChanged!(value), activeColor: Theme.of(context).colorScheme.secondary, ), ) @@ -156,23 +156,23 @@ class DocumentListItem extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - document.name, + document!.name, style: Theme.of(context).textTheme.titleMedium, ), Text( formatDate( convertTimestampToDateString( - document.createdAt), + document!.createdAt), context) + - (!document.isPublic - ? ' • ${AppLocalization.of(context).private}' + (!document!.isPublic + ? ' • ${AppLocalization.of(context)!.private}' : ''), style: Theme.of(context).textTheme.bodySmall, ), ], ), ), - Text(document.prettySize, + Text(document!.prettySize, style: Theme.of(context).textTheme.titleMedium), ], ), diff --git a/lib/ui/document/document_list_vm.dart b/lib/ui/document/document_list_vm.dart index f6c8bc91f..ddcf5a1df 100644 --- a/lib/ui/document/document_list_vm.dart +++ b/lib/ui/document/document_list_vm.dart @@ -23,7 +23,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class DocumentListBuilder extends StatelessWidget { - const DocumentListBuilder({Key key}) : super(key: key); + const DocumentListBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -38,7 +38,7 @@ class DocumentListBuilder extends StatelessWidget { child: OutlinedButton( child: Padding( padding: const EdgeInsets.all(12), - child: Text(localization.refreshData), + child: Text(localization!.refreshData), ), onPressed: () => viewModel.onRefreshed(context, true), ), @@ -65,7 +65,7 @@ class DocumentListBuilder extends StatelessWidget { userCompany: state.userCompany, filter: viewModel.filter, document: document, - isChecked: isInMultiselect && listState.isSelected(document.id), + isChecked: isInMultiselect && listState.isSelected(document!.id), ); }); }, @@ -75,17 +75,17 @@ class DocumentListBuilder extends StatelessWidget { class DocumentListVM { DocumentListVM({ - @required this.state, - @required this.documentList, - @required this.documentMap, - @required this.filter, - @required this.isLoading, - @required this.listState, - @required this.onRefreshed, - @required this.onEntityAction, - @required this.onSortColumn, - @required this.onClearMultielsect, - @required this.tableColumns, + required this.state, + required this.documentList, + required this.documentMap, + required this.filter, + required this.isLoading, + required this.listState, + required this.onRefreshed, + required this.onEntityAction, + required this.onSortColumn, + required this.onClearMultielsect, + required this.tableColumns, }); static DocumentListVM fromStore(Store store) { @@ -94,7 +94,7 @@ class DocumentListVM { return Future(null); } final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(RefreshData(completer: completer, clearData: clearData)); return completer.future; } @@ -120,17 +120,17 @@ class DocumentListVM { onSortColumn: (field) => store.dispatch(SortDocuments(field)), onClearMultielsect: () => store.dispatch(ClearDocumentMultiselect()), tableColumns: - state.userCompany.settings?.getTableColumns(EntityType.document) ?? + state.userCompany!.settings?.getTableColumns(EntityType.document) ?? DocumentPresenter.getDefaultTableFields(state.userCompany), ); } final AppState state; final List documentList; - final BuiltMap documentMap; + final BuiltMap documentMap; final ListUIState listState; final List tableColumns; - final String filter; + final String? filter; final bool isLoading; final Function(BuildContext, bool) onRefreshed; final Function(BuildContext, List, EntityAction) diff --git a/lib/ui/document/document_presenter.dart b/lib/ui/document/document_presenter.dart index 2b53a49e1..2702fdd64 100644 --- a/lib/ui/document/document_presenter.dart +++ b/lib/ui/document/document_presenter.dart @@ -11,7 +11,7 @@ import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class DocumentPresenter extends EntityPresenter { - static List getDefaultTableFields(UserCompanyEntity userCompany) { + static List getDefaultTableFields(UserCompanyEntity? userCompany) { return [ DocumentFields.name, DocumentFields.linkedTo, @@ -23,7 +23,7 @@ class DocumentPresenter extends EntityPresenter { ]; } - static List getAllTableFields(UserCompanyEntity userCompany) { + static List getAllTableFields(UserCompanyEntity? userCompany) { return [ ...getDefaultTableFields(userCompany), DocumentFields.id, @@ -33,37 +33,37 @@ class DocumentPresenter extends EntityPresenter { } @override - Widget getField({String field, BuildContext context}) { + Widget getField({String? field, required BuildContext context}) { final store = StoreProvider.of(context); final state = store.state; final localization = AppLocalization.of(context); - final document = entity as DocumentEntity; + final document = entity as DocumentEntity?; switch (field) { case DocumentFields.name: - return Text(document.name); + return Text(document!.name); case DocumentFields.createdAt: return Text(formatDate( - convertTimestampToDateString(entity.createdAt), context, + convertTimestampToDateString(entity!.createdAt), context, showTime: true)); case DocumentFields.type: - return Text(document.type); + return Text(document!.type); case DocumentFields.size: - return Text(document.prettySize); + return Text(document!.prettySize); case DocumentFields.width: - return Text(document.width > 0 ? '${document.width}' : ''); + return Text(document!.width > 0 ? '${document.width}' : ''); case DocumentFields.height: - return Text(document.height > 0 ? '${document.height}' : ''); + return Text(document!.height > 0 ? '${document.height}' : ''); case DocumentFields.id: - return Text(document.id); + return Text(document!.id); case DocumentFields.hash: return Text(document.hash); case DocumentFields.linkedTo: final parentEntity = - state.getEntity(document.parentType, document.parentId); + state.getEntity(document!.parentType, document.parentId); return LinkTextRelatedEntity(entity: parentEntity, relation: document); case DocumentFields.isPrivate: - return Text(document.isPublic ? localization.no : localization.yes); + return Text(document!.isPublic ? localization!.no : localization!.yes); } return super.getField(field: field, context: context); diff --git a/lib/ui/document/document_screen.dart b/lib/ui/document/document_screen.dart index ec82e5868..a312979b2 100644 --- a/lib/ui/document/document_screen.dart +++ b/lib/ui/document/document_screen.dart @@ -21,8 +21,8 @@ import 'document_screen_vm.dart'; class DocumentScreen extends StatelessWidget { const DocumentScreen({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); static const String route = '/document'; @@ -40,27 +40,27 @@ class DocumentScreen extends StatelessWidget { DocumentStatusEntity().rebuild( (b) => b ..id = kDocumentStatusPublic - ..name = localization.public, + ..name = localization!.public, ), DocumentStatusEntity().rebuild( (b) => b ..id = kDocumentStatusPrivate - ..name = localization.private, + ..name = localization!.private, ), DocumentStatusEntity().rebuild( (b) => b ..id = kDocumentStatusImage - ..name = localization.image, + ..name = localization!.image, ), DocumentStatusEntity().rebuild( (b) => b ..id = kDocumentStatusPDF - ..name = localization.pdf, + ..name = localization!.pdf, ), DocumentStatusEntity().rebuild( (b) => b ..id = kDocumentStatusOther - ..name = localization.other, + ..name = localization!.other, ), ]; @@ -120,7 +120,7 @@ class DocumentScreen extends StatelessWidget { }, ), floatingActionButton: state.prefState.isMenuFloated && - userCompany.canCreate(EntityType.document) + userCompany!.canCreate(EntityType.document) ? FloatingActionButton( heroTag: 'document_fab', backgroundColor: Theme.of(context).primaryColorDark, @@ -132,7 +132,7 @@ class DocumentScreen extends StatelessWidget { Icons.add, color: Colors.white, ), - tooltip: localization.newDocument, + tooltip: localization!.newDocument, ) : null, ); diff --git a/lib/ui/document/document_screen_vm.dart b/lib/ui/document/document_screen_vm.dart index 2fee1d75e..56469dbab 100644 --- a/lib/ui/document/document_screen_vm.dart +++ b/lib/ui/document/document_screen_vm.dart @@ -14,7 +14,7 @@ import 'package:invoiceninja_flutter/redux/document/document_selectors.dart'; import 'document_screen.dart'; class DocumentScreenBuilder extends StatelessWidget { - const DocumentScreenBuilder({Key key}) : super(key: key); + const DocumentScreenBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -31,16 +31,16 @@ class DocumentScreenBuilder extends StatelessWidget { class DocumentScreenVM { DocumentScreenVM({ - @required this.isInMultiselect, - @required this.documentList, - @required this.userCompany, - @required this.documentMap, + required this.isInMultiselect, + required this.documentList, + required this.userCompany, + required this.documentMap, }); final bool isInMultiselect; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List documentList; - final BuiltMap documentMap; + final BuiltMap documentMap; static DocumentScreenVM fromStore(Store store) { final state = store.state; diff --git a/lib/ui/document/edit/document_edit.dart b/lib/ui/document/edit/document_edit.dart index dd20d6429..7fe1e1dcc 100644 --- a/lib/ui/document/edit/document_edit.dart +++ b/lib/ui/document/edit/document_edit.dart @@ -12,8 +12,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class DocumentEdit extends StatefulWidget { const DocumentEdit({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final DocumentEditVM viewModel; @@ -68,7 +68,7 @@ class _DocumentEditState extends State { } void _onSavePressed() { - final bool isValid = _formKey.currentState.validate(); + final bool isValid = _formKey.currentState!.validate(); if (!isValid) { return; @@ -86,7 +86,7 @@ class _DocumentEditState extends State { return EditScaffold( entity: document, title: - document.isNew ? localization.newDocument : localization.editDocument, + document.isNew ? localization!.newDocument : localization!.editDocument, onSavePressed: (_) => _onSavePressed(), onCancelPressed: (context) => viewModel.onCancelPressed(context), body: Form( diff --git a/lib/ui/document/edit/document_edit_vm.dart b/lib/ui/document/edit/document_edit_vm.dart index c43422023..0454eba66 100644 --- a/lib/ui/document/edit/document_edit_vm.dart +++ b/lib/ui/document/edit/document_edit_vm.dart @@ -21,7 +21,7 @@ import 'package:invoiceninja_flutter/redux/document/document_actions.dart'; import 'package:invoiceninja_flutter/ui/document/edit/document_edit.dart'; class DocumentEditScreen extends StatelessWidget { - const DocumentEditScreen({Key key}) : super(key: key); + const DocumentEditScreen({Key? key}) : super(key: key); static const String route = '/document/edit'; @override @@ -42,19 +42,19 @@ class DocumentEditScreen extends StatelessWidget { class DocumentEditVM { DocumentEditVM({ - @required this.state, - @required this.document, - @required this.company, - @required this.onChanged, - @required this.isSaving, - @required this.origDocument, - @required this.onSavePressed, - @required this.onCancelPressed, - @required this.isLoading, + required this.state, + required this.document, + required this.company, + required this.onChanged, + required this.isSaving, + required this.origDocument, + required this.onSavePressed, + required this.onCancelPressed, + required this.isLoading, }); factory DocumentEditVM.fromStore(Store store) { - final document = store.state.documentUIState.editing; + final document = store.state.documentUIState.editing!; final state = store.state; return DocumentEditVM( @@ -81,13 +81,13 @@ class DocumentEditVM { store.dispatch( SaveDocumentRequest(completer: completer, document: document)); return completer.future.then((savedDocument) { - showToast(localization.updatedDocument); + showToast(localization!.updatedDocument); if (state.prefState.isMobile) { store.dispatch(UpdateCurrentRoute(DocumentViewScreen.route)); - if (document.isNew) { - navigator.pushReplacementNamed(DocumentViewScreen.route); + if (document!.isNew) { + navigator!.pushReplacementNamed(DocumentViewScreen.route); } else { - navigator.pop(savedDocument); + navigator!.pop(savedDocument); } } else { viewEntityById( @@ -97,7 +97,7 @@ class DocumentEditVM { } }).catchError((Object error) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { return ErrorDialog(error); }); @@ -108,12 +108,12 @@ class DocumentEditVM { } final DocumentEntity document; - final CompanyEntity company; + final CompanyEntity? company; final Function(DocumentEntity) onChanged; final Function(BuildContext) onSavePressed; final Function(BuildContext) onCancelPressed; final bool isLoading; final bool isSaving; - final DocumentEntity origDocument; + final DocumentEntity? origDocument; final AppState state; } diff --git a/lib/ui/document/view/document_view.dart b/lib/ui/document/view/document_view.dart index 766c0c7c9..3645b4cc9 100644 --- a/lib/ui/document/view/document_view.dart +++ b/lib/ui/document/view/document_view.dart @@ -14,9 +14,9 @@ import 'package:printing/printing.dart'; class DocumentView extends StatefulWidget { const DocumentView({ - Key key, - @required this.viewModel, - @required this.isFilter, + Key? key, + required this.viewModel, + required this.isFilter, }) : super(key: key); final DocumentViewVM viewModel; @@ -50,10 +50,10 @@ class _DocumentViewState extends State { ? LoadingIndicator() : document.isImage ? PinchZoom( - child: Image.memory(document.data), + child: Image.memory(document.data!), ) : PdfPreview( - build: (format) => document.data, + build: (format) => document.data!, canChangeOrientation: false, canChangePageFormat: false, allowPrinting: false, diff --git a/lib/ui/document/view/document_view_vm.dart b/lib/ui/document/view/document_view_vm.dart index 20660b9c8..98f5f89d6 100644 --- a/lib/ui/document/view/document_view_vm.dart +++ b/lib/ui/document/view/document_view_vm.dart @@ -19,7 +19,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class DocumentViewScreen extends StatelessWidget { const DocumentViewScreen({ - Key key, + Key? key, this.isFilter = false, }) : super(key: key); final bool isFilter; @@ -44,14 +44,14 @@ class DocumentViewScreen extends StatelessWidget { class DocumentViewVM { DocumentViewVM({ - @required this.state, - @required this.document, - @required this.company, - @required this.onEntityAction, - @required this.onRefreshed, - @required this.isSaving, - @required this.isLoading, - @required this.isDirty, + required this.state, + required this.document, + required this.company, + required this.onEntityAction, + required this.onRefreshed, + required this.isSaving, + required this.isLoading, + required this.isDirty, }); factory DocumentViewVM.fromStore(Store store) { @@ -62,7 +62,7 @@ class DocumentViewVM { Future _handleRefresh(BuildContext context) { final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch( LoadDocument(completer: completer, documentId: document.id)); return completer.future; @@ -83,7 +83,7 @@ class DocumentViewVM { final AppState state; final DocumentEntity document; - final CompanyEntity company; + final CompanyEntity? company; final Function(BuildContext, EntityAction) onEntityAction; final Function(BuildContext) onRefreshed; final bool isSaving; diff --git a/lib/ui/expense/edit/expense_edit.dart b/lib/ui/expense/edit/expense_edit.dart index 25ef5b68d..37c4971d1 100644 --- a/lib/ui/expense/edit/expense_edit.dart +++ b/lib/ui/expense/edit/expense_edit.dart @@ -22,8 +22,8 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class ExpenseEdit extends StatefulWidget { const ExpenseEdit({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final AbstractExpenseEditVM viewModel; @@ -34,7 +34,7 @@ class ExpenseEdit extends StatefulWidget { class _ExpenseEditState extends State with SingleTickerProviderStateMixin { - TabController _controller; + TabController? _controller; static final GlobalKey _formKey = GlobalKey(debugLabel: '_expenseEdit'); @@ -46,15 +46,15 @@ class _ExpenseEditState extends State @override void dispose() { - _controller.dispose(); + _controller!.dispose(); super.dispose(); } - void _onSavePressed(BuildContext context, [EntityAction action]) { + void _onSavePressed(BuildContext context, [EntityAction? action]) { // Gives the exchange rate conversion a change to calculate // after the field loses focus WidgetsBinding.instance.addPostFrameCallback((duration) { - final bool isValid = _formKey.currentState.validate(); + final bool isValid = _formKey.currentState!.validate(); /* setState(() { @@ -66,24 +66,24 @@ class _ExpenseEditState extends State return; } - widget.viewModel.onSavePressed(context, action); + widget.viewModel.onSavePressed!(context, action); }); } @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; - final expense = viewModel.expense; - final state = viewModel.state; + final expense = viewModel.expense!; + final state = viewModel.state!; final store = StoreProvider.of(context); - final client = state.clientState.get(expense.clientId); + final client = state.clientState.get(expense.clientId!); final prefState = state.prefState; final isFullscreen = prefState.isEditorFullScreen(EntityType.expense); final footer = localization.expenseTotal + ': ' + formatNumber(expense.grossAmount, context, - currencyId: expense.currencyId); + currencyId: expense.currencyId)!; return EditScaffold( isFullscreen: isFullscreen, @@ -95,7 +95,7 @@ class _ExpenseEditState extends State : (expense.isNew ? localization.newExpense : localization.editExpense), - onCancelPressed: (context) => viewModel.onCancelPressed(context), + onCancelPressed: (context) => viewModel.onCancelPressed!(context), onSavePressed: (context) => _onSavePressed(context), actions: expense.getActions( userCompany: state.userCompany, @@ -178,7 +178,7 @@ class _ExpenseEditState extends State ? footer : '${expense.number} • $footer', style: TextStyle( - color: viewModel.state.prefState.enableDarkMode + color: viewModel.state!.prefState.enableDarkMode ? Colors.white : Colors.black, fontSize: 20.0, diff --git a/lib/ui/expense/edit/expense_edit_desktop.dart b/lib/ui/expense/edit/expense_edit_desktop.dart index 8370fb361..b0e805ff8 100644 --- a/lib/ui/expense/edit/expense_edit_desktop.dart +++ b/lib/ui/expense/edit/expense_edit_desktop.dart @@ -10,8 +10,8 @@ import 'package:invoiceninja_flutter/ui/expense/edit/expense_edit_vm.dart'; class ExpenseEditDesktop extends StatelessWidget { const ExpenseEditDesktop({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final AbstractExpenseEditVM viewModel; diff --git a/lib/ui/expense/edit/expense_edit_details.dart b/lib/ui/expense/edit/expense_edit_details.dart index 5d4e7183b..55600c62c 100644 --- a/lib/ui/expense/edit/expense_edit_details.dart +++ b/lib/ui/expense/edit/expense_edit_details.dart @@ -32,8 +32,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class ExpenseEditDetails extends StatefulWidget { const ExpenseEditDetails({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final AbstractExpenseEditVM viewModel; @@ -50,7 +50,7 @@ class ExpenseEditDetailsState extends State { final _custom3Controller = TextEditingController(); final _custom4Controller = TextEditingController(); - List _controllers; + late List _controllers; final _debouncer = Debouncer(); @override @@ -67,10 +67,10 @@ class ExpenseEditDetailsState extends State { _controllers .forEach((dynamic controller) => controller.removeListener(_onChanged)); - final expense = widget.viewModel.expense; + final expense = widget.viewModel.expense!; _numberController.text = expense.number; _amountController.text = formatNumber(expense.amount, context, - formatNumberType: FormatNumberType.inputMoney); + formatNumberType: FormatNumberType.inputMoney)!; _custom1Controller.text = expense.customValue1; _custom2Controller.text = expense.customValue2; _custom3Controller.text = expense.customValue3; @@ -94,7 +94,7 @@ class ExpenseEditDetailsState extends State { void _onChanged() { final viewModel = widget.viewModel; - final expense = viewModel.expense.rebuild((b) => b + final expense = viewModel.expense!.rebuild((b) => b ..number = _numberController.text.trim() ..amount = parseDouble(_amountController.text) ..customValue1 = _custom1Controller.text.trim() @@ -103,22 +103,22 @@ class ExpenseEditDetailsState extends State { ..customValue4 = _custom4Controller.text.trim()); if (expense != viewModel.expense) { _debouncer.run(() { - viewModel.onChanged(expense); + viewModel.onChanged!(expense); }); } } @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final store = StoreProvider.of(context); final state = store.state; final viewModel = widget.viewModel; - final expense = viewModel.expense; - final company = state.company; - final staticState = viewModel.state.staticState; - final vendorState = viewModel.state.vendorState; - final clientState = viewModel.state.clientState; + final expense = viewModel.expense!; + final company = state.company!; + final staticState = viewModel.state!.staticState; + final vendorState = viewModel.state!.vendorState; + final clientState = viewModel.state!.clientState; final isFullscreen = state.prefState.isEditorFullScreen(EntityType.expense); final amountField = DecoratedFormField( @@ -156,11 +156,11 @@ class ExpenseEditDetailsState extends State { entityList: memoizedDropdownVendorList(vendorState.map, vendorState.list, state.userState.map, state.staticState), onSelected: (vendor) { - viewModel.onChanged( + viewModel.onChanged!( expense.rebuild((b) => b..vendorId = vendor?.id ?? '')); }, onAddPressed: (completer) { - viewModel.onAddVendorPressed(context, completer); + viewModel.onAddVendorPressed!(context, completer); }, onCreateNew: (completer, name) { store.dispatch(SaveVendorRequest( @@ -179,12 +179,12 @@ class ExpenseEditDetailsState extends State { final currencyId = (client as ClientEntity)?.settings?.currencyId ?? company.currencyId; - viewModel.onChanged(expense.rebuild((b) => b + viewModel.onChanged!(expense.rebuild((b) => b ..clientId = client?.id ?? '' ..invoiceCurrencyId = currencyId)); }, onAddPressed: (completer) { - viewModel.onAddClientPressed(context, completer); + viewModel.onAddClientPressed!(context, completer); }, ), ProjectPicker( @@ -193,10 +193,10 @@ class ExpenseEditDetailsState extends State { clientId: expense.clientId, onChanged: (selectedId) { final project = store.state.projectState.get(selectedId); - viewModel.onChanged(expense.rebuild((b) => b + viewModel.onChanged!(expense.rebuild((b) => b ..projectId = project?.id ..clientId = (project?.clientId ?? '').isNotEmpty - ? project.clientId + ? project!.clientId : expense.clientId)); }, /* @@ -215,7 +215,7 @@ class ExpenseEditDetailsState extends State { state.expenseCategoryState.map, state.expenseCategoryState.list), onSelected: (category) { - viewModel.onChanged( + viewModel.onChanged!( expense.rebuild((b) => b..categoryId = category?.id ?? '')); }, onCreateNew: (completer, name) { @@ -227,7 +227,7 @@ class ExpenseEditDetailsState extends State { ), UserPicker( userId: expense.assignedUserId, - onChanged: (userId) => viewModel.onChanged( + onChanged: (userId) => viewModel.onChanged!( expense.rebuild((b) => b..assignedUserId = userId)), ), if (!expense.usesInclusiveTaxes) amountField, @@ -238,14 +238,14 @@ class ExpenseEditDetailsState extends State { initialTaxAmount: expense.taxAmount1, initialTaxName: expense.taxName1, onNameChanged: (name) => viewModel - .onChanged(expense.rebuild((b) => b..taxName1 = name)), - onAmountChanged: (amount) => viewModel.onChanged( + .onChanged!(expense.rebuild((b) => b..taxName1 = name)), + onAmountChanged: (amount) => viewModel.onChanged!( expense.rebuild((b) => b..taxAmount1 = amount)), ) else TaxRateDropdown( onSelected: (taxRate) => - viewModel.onChanged(expense.rebuild((b) => b + viewModel.onChanged!(expense.rebuild((b) => b ..taxRate1 = taxRate.rate ..taxName1 = taxRate.name)), labelText: localization.tax, @@ -259,14 +259,14 @@ class ExpenseEditDetailsState extends State { initialTaxAmount: expense.taxAmount2, initialTaxName: expense.taxName2, onNameChanged: (name) => viewModel - .onChanged(expense.rebuild((b) => b..taxName2 = name)), - onAmountChanged: (amount) => viewModel.onChanged( + .onChanged!(expense.rebuild((b) => b..taxName2 = name)), + onAmountChanged: (amount) => viewModel.onChanged!( expense.rebuild((b) => b..taxAmount2 = amount)), ) else TaxRateDropdown( onSelected: (taxRate) => - viewModel.onChanged(expense.rebuild((b) => b + viewModel.onChanged!(expense.rebuild((b) => b ..taxRate2 = taxRate.rate ..taxName2 = taxRate.name)), labelText: localization.tax, @@ -280,14 +280,14 @@ class ExpenseEditDetailsState extends State { initialTaxAmount: expense.taxAmount3, initialTaxName: expense.taxName3, onNameChanged: (name) => viewModel - .onChanged(expense.rebuild((b) => b..taxName3 = name)), - onAmountChanged: (amount) => viewModel.onChanged( + .onChanged!(expense.rebuild((b) => b..taxName3 = name)), + onAmountChanged: (amount) => viewModel.onChanged!( expense.rebuild((b) => b..taxAmount3 = amount)), ) else TaxRateDropdown( onSelected: (taxRate) => - viewModel.onChanged(expense.rebuild((b) => b + viewModel.onChanged!(expense.rebuild((b) => b ..taxRate3 = taxRate.rate ..taxName3 = taxRate.name)), labelText: localization.tax, @@ -300,15 +300,15 @@ class ExpenseEditDetailsState extends State { entityList: memoizedCurrencyList(staticState.currencyMap), labelText: localization.currency, entityId: expense.currencyId, - onSelected: (SelectableEntity currency) => viewModel.onChanged( - viewModel.expense + onSelected: (SelectableEntity currency) => viewModel.onChanged!( + viewModel.expense! .rebuild((b) => b..currencyId = currency?.id ?? '')), ), DatePicker( labelText: localization.date, selectedDate: expense.date, onSelected: (date, _) { - viewModel.onChanged(expense.rebuild((b) => b..date = date)); + viewModel.onChanged!(expense.rebuild((b) => b..date = date)); }, ), CustomField( @@ -351,13 +351,13 @@ class ExpenseEditDetailsState extends State { labelText: localization.frequency, value: expense.frequencyId, onChanged: (dynamic value) { - viewModel.onChanged( + viewModel.onChanged!( expense.rebuild((b) => b..frequencyId = value)); }, items: kFrequencies.entries .map((entry) => DropdownMenuItem( value: entry.key, - child: Text(localization.lookup(entry.value)), + child: Text(localization.lookup(entry.value)!), )) .toList()), DatePicker( @@ -365,7 +365,7 @@ class ExpenseEditDetailsState extends State { ? localization.nextSendDate : localization.startDate, onSelected: (date, _) { - viewModel.onChanged( + viewModel.onChanged!( expense.rebuild((b) => b..nextSendDate = date)); }, selectedDate: expense.nextSendDate, @@ -375,7 +375,7 @@ class ExpenseEditDetailsState extends State { labelText: localization.remainingCycles, value: expense.remainingCycles, blankValue: null, - onChanged: (dynamic value) => viewModel.onChanged( + onChanged: (dynamic value) => viewModel.onChanged!( expense.rebuild((b) => b..remainingCycles = value)), items: [ DropdownMenuItem( diff --git a/lib/ui/expense/edit/expense_edit_notes.dart b/lib/ui/expense/edit/expense_edit_notes.dart index 511a679e9..c30aa2aa2 100644 --- a/lib/ui/expense/edit/expense_edit_notes.dart +++ b/lib/ui/expense/edit/expense_edit_notes.dart @@ -19,8 +19,8 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class ExpenseEditNotes extends StatefulWidget { const ExpenseEditNotes({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final AbstractExpenseEditVM viewModel; @@ -33,7 +33,7 @@ class ExpenseEditNotesState extends State { final _publicNotesController = TextEditingController(); final _privateNotesController = TextEditingController(); - List _controllers; + late List _controllers; final _debouncer = Debouncer(); @override @@ -46,7 +46,7 @@ class ExpenseEditNotesState extends State { _controllers .forEach((dynamic controller) => controller.removeListener(_onChanged)); - final expense = widget.viewModel.expense; + final expense = widget.viewModel.expense!; _publicNotesController.text = expense.publicNotes; _privateNotesController.text = expense.privateNotes; @@ -68,12 +68,12 @@ class ExpenseEditNotesState extends State { void _onChanged() { final viewModel = widget.viewModel; - final expense = viewModel.expense.rebuild((b) => b + final expense = viewModel.expense!.rebuild((b) => b ..publicNotes = _publicNotesController.text.trim() ..privateNotes = _privateNotesController.text.trim()); if (expense != viewModel.expense) { _debouncer.run(() { - viewModel.onChanged(expense); + viewModel.onChanged!(expense); }); } } @@ -81,16 +81,16 @@ class ExpenseEditNotesState extends State { @override Widget build(BuildContext context) { final store = StoreProvider.of(context); - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; - final state = viewModel.state; + final state = viewModel.state!; final expense = viewModel.expense; final isFullscreen = state.prefState.isEditorFullScreen(EntityType.expense); final company = state.company; final showDocuments = isDesktop(context) && state.isEnterprisePlan && - company.isModuleEnabled(EntityType.document); + company!.isModuleEnabled(EntityType.document); return ScrollableListView( children: [ @@ -116,7 +116,7 @@ class ExpenseEditNotesState extends State { label: localization.privateNotes, ), if (showDocuments) - if (expense.isNew || state.hasChanges()) + if (expense!.isNew || state.hasChanges()) SizedBox( child: HelpText(localization.saveToUploadDocuments), height: 200, @@ -126,7 +126,7 @@ class ExpenseEditNotesState extends State { DocumentGrid( documents: expense.documents.toList(), onUploadDocument: (path, isPrivate) => widget.viewModel - .onUploadDocument(context, path, isPrivate), + .onUploadDocument!(context, path, isPrivate), onRenamedDocument: () => store.dispatch(LoadExpense(expenseId: expense.id)), ) diff --git a/lib/ui/expense/edit/expense_edit_settings.dart b/lib/ui/expense/edit/expense_edit_settings.dart index 2677b14c3..456dfaabb 100644 --- a/lib/ui/expense/edit/expense_edit_settings.dart +++ b/lib/ui/expense/edit/expense_edit_settings.dart @@ -25,8 +25,8 @@ import 'package:invoiceninja_flutter/utils/money.dart'; class ExpenseEditSettings extends StatefulWidget { const ExpenseEditSettings({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final AbstractExpenseEditVM viewModel; @@ -38,12 +38,12 @@ class ExpenseEditSettings extends StatefulWidget { class ExpenseEditSettingsState extends State { bool _showPaymentFields = false; bool _showConvertCurrencyFields = false; - double _convertedAmount = 0; + double? _convertedAmount = 0; final _transactionReferenceController = TextEditingController(); final _exchangeRateController = TextEditingController(); - List _controllers; + late List _controllers; final _debouncer = Debouncer(); @override @@ -56,10 +56,10 @@ class ExpenseEditSettingsState extends State { _controllers .forEach((dynamic controller) => controller.removeListener(_onChanged)); - final expense = widget.viewModel.expense; + final expense = widget.viewModel.expense!; _transactionReferenceController.text = expense.transactionReference; _exchangeRateController.text = formatNumber(expense.exchangeRate, context, - formatNumberType: FormatNumberType.inputAmount); + formatNumberType: FormatNumberType.inputAmount)!; _controllers .forEach((dynamic controller) => controller.addListener(_onChanged)); @@ -68,8 +68,8 @@ class ExpenseEditSettingsState extends State { _showConvertCurrencyFields = expense.exchangeRate != 0 && expense.exchangeRate != 1; - final state = widget.viewModel.state; - if (state.company.convertExpenseCurrency) { + final state = widget.viewModel.state!; + if (state.company!.convertExpenseCurrency) { _showConvertCurrencyFields = true; } @@ -88,33 +88,33 @@ class ExpenseEditSettingsState extends State { void _onChanged() { final viewModel = widget.viewModel; - final expense = viewModel.expense.rebuild((b) => b + final expense = viewModel.expense!.rebuild((b) => b ..transactionReference = _transactionReferenceController.text.trim() ..exchangeRate = parseDouble(_exchangeRateController.text)); if (expense != viewModel.expense) { _debouncer.run(() { - viewModel.onChanged(expense); + viewModel.onChanged!(expense); }); } } - void _setCurrency(CurrencyEntity currency) { + void _setCurrency(CurrencyEntity? currency) { final viewModel = widget.viewModel; - final expense = viewModel.expense; + final expense = viewModel.expense!; final exchangeRate = currency == null ? 1.0 - : getExchangeRate(viewModel.state.staticState.currencyMap, + : getExchangeRate(viewModel.state!.staticState.currencyMap, fromCurrencyId: expense.currencyId, toCurrencyId: currency.id); - viewModel.onChanged(expense.rebuild((b) => b + viewModel.onChanged!(expense.rebuild((b) => b ..invoiceCurrencyId = currency?.id ?? '' ..exchangeRate = exchangeRate)); WidgetsBinding.instance.addPostFrameCallback((duration) { _exchangeRateController.removeListener(_onChanged); _exchangeRateController.text = formatNumber(exchangeRate, context, - formatNumberType: FormatNumberType.inputAmount); + formatNumberType: FormatNumberType.inputAmount)!; _exchangeRateController.addListener(_onChanged); }); } @@ -125,27 +125,27 @@ class ExpenseEditSettingsState extends State { } final viewModel = widget.viewModel; - final expense = viewModel.expense; + final expense = viewModel.expense!; final amount = expense.grossAmount; - final exchangeRate = _convertedAmount / amount; + final exchangeRate = _convertedAmount! / amount; _exchangeRateController.removeListener(_onChanged); _exchangeRateController.text = formatNumber(exchangeRate, context, - formatNumberType: FormatNumberType.inputMoney); + formatNumberType: FormatNumberType.inputMoney)!; _exchangeRateController.addListener(_onChanged); - viewModel.onChanged(expense.rebuild((b) => b..exchangeRate = exchangeRate)); + viewModel.onChanged!(expense.rebuild((b) => b..exchangeRate = exchangeRate)); _convertedAmount = 0; } @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; - final staticState = viewModel.state.staticState; - final company = viewModel.state.company; - final expense = viewModel.expense; - final state = widget.viewModel.state; + final staticState = viewModel.state!.staticState; + final company = viewModel.state!.company!; + final expense = viewModel.expense!; + final state = widget.viewModel.state!; final isFullscreen = state.prefState.isEditorFullScreen(EntityType.expense); return ScrollableListView( @@ -167,7 +167,7 @@ class ExpenseEditSettingsState extends State { subtitle: Text(localization.shouldBeInvoicedHelp), value: expense.shouldBeInvoiced, onChanged: (value) { - viewModel.onChanged( + viewModel.onChanged!( expense.rebuild((b) => b..shouldBeInvoiced = value)); }, ), @@ -179,12 +179,12 @@ class ExpenseEditSettingsState extends State { onChanged: (value) { if (value) { if (expense.paymentDate.isEmpty) { - viewModel.onChanged(expense.rebuild( + viewModel.onChanged!(expense.rebuild( (b) => b..paymentDate = convertDateTimeToSqlDate())); } } else { viewModel - .onChanged(expense.rebuild((b) => b..paymentDate = '')); + .onChanged!(expense.rebuild((b) => b..paymentDate = '')); WidgetsBinding.instance.addPostFrameCallback((duration) { _transactionReferenceController.text = ''; }); @@ -202,7 +202,7 @@ class ExpenseEditSettingsState extends State { memoizedPaymentTypeList(staticState.paymentTypeMap), labelText: localization.paymentType, entityId: expense.paymentTypeId, - onSelected: (paymentType) => viewModel.onChanged( + onSelected: (paymentType) => viewModel.onChanged!( expense.rebuild((b) => b..paymentTypeId = paymentType?.id ?? '')), ), @@ -211,7 +211,7 @@ class ExpenseEditSettingsState extends State { labelText: localization.date, selectedDate: expense.paymentDate, onSelected: (date, _) { - viewModel.onChanged( + viewModel.onChanged!( expense.rebuild((b) => b..paymentDate = date)); }, ), @@ -238,7 +238,7 @@ class ExpenseEditSettingsState extends State { staticState.currencyMap[expense.invoiceCurrencyId]); } else { viewModel - .onChanged(expense.rebuild((b) => b..exchangeRate = 1)); + .onChanged!(expense.rebuild((b) => b..exchangeRate = 1)); WidgetsBinding.instance.addPostFrameCallback((duration) { _exchangeRateController.text = ''; }); @@ -253,7 +253,7 @@ class ExpenseEditSettingsState extends State { labelText: localization.currency, entityId: expense.invoiceCurrencyId, onSelected: (SelectableEntity currency) => - _setCurrency(currency), + _setCurrency(currency as CurrencyEntity?), ), DecoratedFormField( key: ValueKey('__rate_${expense.invoiceCurrencyId}__'), @@ -283,7 +283,7 @@ class ExpenseEditSettingsState extends State { }, onSavePressed: (context) { _calculateExchangeRate(); - viewModel.onSavePressed(context); + viewModel.onSavePressed!(context); }, ), ), @@ -295,7 +295,7 @@ class ExpenseEditSettingsState extends State { subtitle: Text(localization.addDocumentsToInvoiceHelp), value: expense.invoiceDocuments, onChanged: (value) { - viewModel.onChanged( + viewModel.onChanged!( expense.rebuild((b) => b..invoiceDocuments = value)); }) ], @@ -313,7 +313,7 @@ class ExpenseEditSettingsState extends State { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Flexible(child: Text(localization.expenseTaxHelp)), + Flexible(child: Text(localization.expenseTaxHelp!)), OutlinedButton( onPressed: () { final store = StoreProvider.of(context); @@ -330,7 +330,7 @@ class ExpenseEditSettingsState extends State { enabledLabel: localization.byAmount, disabledLabel: localization.byRate, value: expense.calculateTaxByAmount ?? false, - onChanged: (value) => viewModel.onChanged(expense + onChanged: (value) => viewModel.onChanged!(expense .rebuild((b) => b..calculateTaxByAmount = value)), minWidth: 80, ), @@ -341,7 +341,7 @@ class ExpenseEditSettingsState extends State { value: expense.usesInclusiveTaxes, subtitle: Text( '\n${localization.exclusive}: 100 + 10% = 100 + 10\n${localization.inclusive}: 100 + 10% = 90.91 + 9.09'), - onChanged: (value) => viewModel.onChanged( + onChanged: (value) => viewModel.onChanged!( expense.rebuild((b) => b..usesInclusiveTaxes = value)), ), ], diff --git a/lib/ui/expense/edit/expense_edit_vm.dart b/lib/ui/expense/edit/expense_edit_vm.dart index a2c67d0f6..d1b031890 100644 --- a/lib/ui/expense/edit/expense_edit_vm.dart +++ b/lib/ui/expense/edit/expense_edit_vm.dart @@ -24,7 +24,7 @@ import 'package:invoiceninja_flutter/ui/expense/view/expense_view_vm.dart'; import 'package:invoiceninja_flutter/utils/completers.dart'; class ExpenseEditScreen extends StatelessWidget { - const ExpenseEditScreen({Key key}) : super(key: key); + const ExpenseEditScreen({Key? key}) : super(key: key); static const String route = '/expense/edit'; @override @@ -36,7 +36,7 @@ class ExpenseEditScreen extends StatelessWidget { builder: (context, viewModel) { return ExpenseEdit( viewModel: viewModel, - key: ValueKey(viewModel.expense.updatedAt), + key: ValueKey(viewModel.expense!.updatedAt), ); }, ); @@ -45,45 +45,45 @@ class ExpenseEditScreen extends StatelessWidget { abstract class AbstractExpenseEditVM { AbstractExpenseEditVM({ - @required this.state, - @required this.expense, - @required this.onChanged, - @required this.origExpense, - @required this.onSavePressed, - @required this.onCancelPressed, - @required this.onAddClientPressed, - @required this.onAddVendorPressed, - @required this.onUploadDocument, + required this.state, + required this.expense, + required this.onChanged, + required this.origExpense, + required this.onSavePressed, + required this.onCancelPressed, + required this.onAddClientPressed, + required this.onAddVendorPressed, + required this.onUploadDocument, }); - final ExpenseEntity expense; - final Function(ExpenseEntity) onChanged; - final Function(BuildContext, [EntityAction]) onSavePressed; - final Function(BuildContext) onCancelPressed; - final ExpenseEntity origExpense; - final AppState state; - final Function(BuildContext context, Completer completer) + final ExpenseEntity? expense; + final Function(ExpenseEntity)? onChanged; + final Function(BuildContext, [EntityAction?])? onSavePressed; + final Function(BuildContext)? onCancelPressed; + final ExpenseEntity? origExpense; + final AppState? state; + final Function(BuildContext context, Completer completer)? onAddClientPressed; - final Function(BuildContext context, Completer completer) + final Function(BuildContext context, Completer completer)? onAddVendorPressed; - final Function(BuildContext, List, bool) onUploadDocument; + final Function(BuildContext, List, bool)? onUploadDocument; } class ExpenseEditVM extends AbstractExpenseEditVM { ExpenseEditVM({ - AppState state, - ExpenseEntity expense, - Function(ExpenseEntity) onChanged, - Function(BuildContext, [EntityAction]) onSavePressed, - Function(BuildContext) onCancelPressed, - bool isLoading, - bool isSaving, - ExpenseEntity origExpense, - Function(BuildContext context, Completer completer) + AppState? state, + ExpenseEntity? expense, + Function(ExpenseEntity)? onChanged, + Function(BuildContext, [EntityAction])? onSavePressed, + Function(BuildContext)? onCancelPressed, + bool? isLoading, + bool? isSaving, + ExpenseEntity? origExpense, + Function(BuildContext context, Completer completer)? onAddClientPressed, - Function(BuildContext context, Completer completer) + Function(BuildContext context, Completer completer)? onAddVendorPressed, - Function(BuildContext, List, bool) onUploadDocument, + Function(BuildContext, List, bool?)? onUploadDocument, }) : super( state: state, expense: expense, @@ -97,7 +97,7 @@ class ExpenseEditVM extends AbstractExpenseEditVM { ); factory ExpenseEditVM.fromStore(Store store) { - final expense = store.state.expenseUIState.editing; + final expense = store.state.expenseUIState.editing!; final state = store.state; return ExpenseEditVM( @@ -122,7 +122,7 @@ class ExpenseEditVM extends AbstractExpenseEditVM { cancelCompleter: Completer() ..future.then((_) { store.dispatch(UpdateCurrentRoute(ExpenseEditScreen.route)); - })); + } as FutureOr<_> Function(Null))); completer.future.then((SelectableEntity client) { store.dispatch(UpdateCurrentRoute(ExpenseEditScreen.route)); }); @@ -136,14 +136,14 @@ class ExpenseEditVM extends AbstractExpenseEditVM { cancelCompleter: Completer() ..future.then((_) { store.dispatch(UpdateCurrentRoute(ExpenseEditScreen.route)); - })); + } as FutureOr<_> Function(Null))); completer.future.then((SelectableEntity expense) { store.dispatch(UpdateCurrentRoute(ExpenseEditScreen.route)); }); }, - onSavePressed: (BuildContext context, [EntityAction action]) { + onSavePressed: (BuildContext context, [EntityAction? action]) { Debouncer.runOnComplete(() { - final expense = store.state.expenseUIState.editing; + final expense = store.state.expenseUIState.editing!; final localization = navigatorKey.localization; final navigator = navigatorKey.currentState; @@ -159,15 +159,15 @@ class ExpenseEditVM extends AbstractExpenseEditVM { SaveExpenseRequest(completer: completer, expense: expense)); return completer.future.then((savedExpense) { showToast(expense.isNew - ? localization.createdExpense - : localization.updatedExpense); + ? localization!.createdExpense + : localization!.updatedExpense); if (state.prefState.isMobile) { store.dispatch(UpdateCurrentRoute(ExpenseViewScreen.route)); if (expense.isNew) { - navigator.pushReplacementNamed(ExpenseViewScreen.route); + navigator!.pushReplacementNamed(ExpenseViewScreen.route); } else { - navigator.pop(savedExpense); + navigator!.pop(savedExpense); } } else { if (!state.prefState.isPreviewVisible) { @@ -190,7 +190,7 @@ class ExpenseEditVM extends AbstractExpenseEditVM { } }).catchError((Object error) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { return ErrorDialog(error); }); @@ -199,7 +199,7 @@ class ExpenseEditVM extends AbstractExpenseEditVM { }); }, onUploadDocument: (BuildContext context, - List multipartFile, bool isPrivate) { + List multipartFile, bool? isPrivate) { final Completer completer = Completer(); store.dispatch(SaveExpenseDocumentRequest( isPrivate: isPrivate, @@ -207,7 +207,7 @@ class ExpenseEditVM extends AbstractExpenseEditVM { expense: expense, completer: completer)); completer.future.then((client) { - showToast(AppLocalization.of(context).uploadedDocument); + showToast(AppLocalization.of(context)!.uploadedDocument); }).catchError((Object error) { showDialog( context: context, diff --git a/lib/ui/expense/expense_list_item.dart b/lib/ui/expense/expense_list_item.dart index 54fabea54..5908f5527 100644 --- a/lib/ui/expense/expense_list_item.dart +++ b/lib/ui/expense/expense_list_item.dart @@ -21,7 +21,7 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class ExpenseListItem extends StatelessWidget { const ExpenseListItem({ - @required this.expense, + required this.expense, this.filter, this.onTap, this.onCheckboxChanged, @@ -31,10 +31,10 @@ class ExpenseListItem extends StatelessWidget { this.showSelected = true, }); - final Function(bool) onCheckboxChanged; - final GestureTapCallback onTap; - final ExpenseEntity expense; - final String filter; + final Function(bool?)? onCheckboxChanged; + final GestureTapCallback? onTap; + final ExpenseEntity? expense; + final String? filter; final bool showCheckbox; final bool isDismissible; final bool isChecked; @@ -48,22 +48,22 @@ class ExpenseListItem extends StatelessWidget { final uiState = state.uiState; final expenseUIState = uiState.expenseUIState; final listUIState = expenseUIState.listUIState; - final client = state.clientState.get(expense.clientId); - final vendor = state.vendorState.get(expense.vendorId); - final category = state.expenseCategoryState.get(expense.categoryId); - final filterMatch = filter != null && filter.isNotEmpty - ? (expense.matchesFilterValue(filter) ?? - client.matchesFilterValue(filter)) + final client = state.clientState.get(expense!.clientId!); + final vendor = state.vendorState.get(expense!.vendorId!); + final category = state.expenseCategoryState.get(expense!.categoryId); + final filterMatch = filter != null && filter!.isNotEmpty + ? (expense!.matchesFilterValue(filter) ?? + client!.matchesFilterValue(filter)) : null; final textStyle = TextStyle(fontSize: 16); - final textColor = Theme.of(context).textTheme.bodyLarge.color; + final textColor = Theme.of(context).textTheme.bodyLarge!.color; String subtitle = ''; if (filterMatch != null) { subtitle = filterMatch; } else if (client != null || vendor != null || category != null) { final parts = [ - formatDate(expense.date, context), + formatDate(expense!.date, context), ]; if (category != null && category.isOld) { parts.add(category.name); @@ -82,9 +82,9 @@ class ExpenseListItem extends StatelessWidget { isDismissible: isDismissible, isSelected: isDesktop(context) && showSelected && - expense.id == + expense!.id == (uiState.isEditing - ? expenseUIState.editing.id + ? expenseUIState.editing!.id : expenseUIState.selectedId), userCompany: store.state.userCompany, entity: expense, @@ -93,10 +93,10 @@ class ExpenseListItem extends StatelessWidget { return constraints.maxWidth > kTableListWidthCutoff ? InkWell( onTap: () => - onTap != null ? onTap() : selectEntity(entity: expense), + onTap != null ? onTap!() : selectEntity(entity: expense!), onLongPress: () => onTap != null ? null - : selectEntity(entity: expense, longPress: true), + : selectEntity(entity: expense!, longPress: true), child: Padding( padding: const EdgeInsets.only( left: 10, @@ -118,14 +118,14 @@ class ExpenseListItem extends StatelessWidget { materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, onChanged: (value) => - onCheckboxChanged(value), + onCheckboxChanged!(value), activeColor: Theme.of(context).colorScheme.secondary, ), ), ) : ActionMenuButton( - entityActions: expense.getActions( + entityActions: expense!.getActions( userCompany: state.userCompany, includeEdit: true, ), @@ -141,11 +141,11 @@ class ExpenseListItem extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - expense.number, + expense!.number, style: textStyle, overflow: TextOverflow.ellipsis, ), - if (!expense.isActive) EntityStateLabel(expense) + if (!expense!.isActive) EntityStateLabel(expense) ], ), ), @@ -155,19 +155,19 @@ class ExpenseListItem extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - (expense.publicNotes ?? '') + - (expense.documents.isNotEmpty ? ' 📎' : ''), + (expense!.publicNotes ?? '') + + (expense!.documents.isNotEmpty ? ' 📎' : ''), style: textStyle, maxLines: 1, ), - Text(subtitle ?? filterMatch, + Text(subtitle ?? filterMatch!, maxLines: 3, overflow: TextOverflow.ellipsis, style: Theme.of(context) .textTheme - .titleSmall + .titleSmall! .copyWith( - color: textColor + color: textColor! .withOpacity(kLighterOpacity), )), ], @@ -175,8 +175,8 @@ class ExpenseListItem extends StatelessWidget { ), SizedBox(width: 8), Text( - formatNumber(expense.grossAmount, context, - currencyId: expense.currencyId), + formatNumber(expense!.grossAmount, context, + currencyId: expense!.currencyId)!, style: textStyle, textAlign: TextAlign.end, ), @@ -188,10 +188,10 @@ class ExpenseListItem extends StatelessWidget { ) : ListTile( onTap: () => - onTap != null ? onTap() : selectEntity(entity: expense), + onTap != null ? onTap!() : selectEntity(entity: expense!), onLongPress: () => onTap != null ? null - : selectEntity(entity: expense, longPress: true), + : selectEntity(entity: expense!, longPress: true), leading: showCheckbox ? IgnorePointer( ignoring: listUIState.isInMultiselect(), @@ -199,7 +199,7 @@ class ExpenseListItem extends StatelessWidget { value: isChecked, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, - onChanged: (value) => onCheckboxChanged(value), + onChanged: (value) => onCheckboxChanged!(value), activeColor: Theme.of(context).colorScheme.secondary, ), ) @@ -210,17 +210,17 @@ class ExpenseListItem extends StatelessWidget { children: [ Expanded( child: Text( - (expense.publicNotes.isEmpty - ? expense.number - : expense.publicNotes) + - (expense.documents.isNotEmpty ? ' 📎' : ''), + (expense!.publicNotes.isEmpty + ? expense!.number + : expense!.publicNotes) + + (expense!.documents.isNotEmpty ? ' 📎' : ''), style: Theme.of(context).textTheme.titleMedium, maxLines: 1, ), ), Text( - formatNumber(expense.amount, context, - currencyId: expense.currencyId), + formatNumber(expense!.amount, context, + currencyId: expense!.currencyId)!, style: Theme.of(context).textTheme.titleMedium), ], ), @@ -236,25 +236,25 @@ class ExpenseListItem extends StatelessWidget { overflow: TextOverflow.ellipsis, style: Theme.of(context) .textTheme - .titleSmall + .titleSmall! .copyWith( color: - textColor.withOpacity(kLighterOpacity), + textColor!.withOpacity(kLighterOpacity), )), EntityStateLabel(expense), ], ), ), Text( - localization.lookup( - kExpenseStatuses[expense.calculatedStatusId]), + localization!.lookup( + kExpenseStatuses[expense!.calculatedStatusId])!, style: TextStyle( - color: category.color.isNotEmpty && + color: category!.color.isNotEmpty && category.color != '#fff' ? convertHexStringToColor(category.color) : ExpenseStatusColors( state.prefState.colorThemeModel) - .colors[expense.calculatedStatusId])), + .colors[expense!.calculatedStatusId])), ], ), ); diff --git a/lib/ui/expense/expense_list_vm.dart b/lib/ui/expense/expense_list_vm.dart index a9860f5c8..2ede0d2d5 100644 --- a/lib/ui/expense/expense_list_vm.dart +++ b/lib/ui/expense/expense_list_vm.dart @@ -24,7 +24,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class ExpenseListBuilder extends StatelessWidget { - const ExpenseListBuilder({Key key}) : super(key: key); + const ExpenseListBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -42,7 +42,7 @@ class ExpenseListBuilder extends StatelessWidget { onSortColumn: viewModel.onSortColumn, itemBuilder: (BuildContext context, index) { final expenseId = viewModel.expenseList[index]; - final expense = viewModel.expenseMap[expenseId]; + final expense = viewModel.expenseMap[expenseId]!; final state = viewModel.state; final listUIState = state.getListState(EntityType.expense); @@ -60,17 +60,17 @@ class ExpenseListBuilder extends StatelessWidget { class ExpenseListVM { ExpenseListVM({ - @required this.state, - @required this.user, - @required this.expenseList, - @required this.expenseMap, - @required this.filter, - @required this.isLoading, - @required this.listState, - @required this.onRefreshed, - @required this.tableColumns, - @required this.onSortColumn, - @required this.onClearMultielsect, + required this.state, + required this.user, + required this.expenseList, + required this.expenseMap, + required this.filter, + required this.isLoading, + required this.listState, + required this.onRefreshed, + required this.tableColumns, + required this.onSortColumn, + required this.onClearMultielsect, }); static ExpenseListVM fromStore(Store store) { @@ -79,7 +79,7 @@ class ExpenseListVM { return Future(null); } final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(RefreshData(completer: completer)); return completer.future; } @@ -105,7 +105,7 @@ class ExpenseListVM { filter: state.expenseUIState.listUIState.filter, onRefreshed: (context) => _handleRefresh(context), tableColumns: - state.userCompany.settings?.getTableColumns(EntityType.expense) ?? + state.userCompany!.settings?.getTableColumns(EntityType.expense) ?? ExpensePresenter.getDefaultTableFields(state.userCompany), onSortColumn: (field) => store.dispatch(SortExpenses(field)), onClearMultielsect: () => store.dispatch(ClearExpenseMultiselect()), @@ -113,11 +113,11 @@ class ExpenseListVM { } final AppState state; - final UserEntity user; - final List expenseList; - final BuiltMap expenseMap; + final UserEntity? user; + final List expenseList; + final BuiltMap expenseMap; final ListUIState listState; - final String filter; + final String? filter; final bool isLoading; final Function(BuildContext) onRefreshed; final List tableColumns; diff --git a/lib/ui/expense/expense_presenter.dart b/lib/ui/expense/expense_presenter.dart index 1c7c822a1..af66673c2 100644 --- a/lib/ui/expense/expense_presenter.dart +++ b/lib/ui/expense/expense_presenter.dart @@ -13,7 +13,7 @@ import 'package:invoiceninja_flutter/ui/app/presenters/entity_presenter.dart'; import 'package:invoiceninja_flutter/utils/formatting.dart'; class ExpensePresenter extends EntityPresenter { - static List getDefaultTableFields(UserCompanyEntity userCompany) { + static List getDefaultTableFields(UserCompanyEntity? userCompany) { return [ ExpenseFields.status, ExpenseFields.number, @@ -26,7 +26,7 @@ class ExpensePresenter extends EntityPresenter { ]; } - static List getAllTableFields(UserCompanyEntity userCompany) { + static List getAllTableFields(UserCompanyEntity? userCompany) { return [ ...getDefaultTableFields(userCompany), ...EntityPresenter.getBaseFields(), @@ -57,99 +57,99 @@ class ExpensePresenter extends EntityPresenter { } @override - Widget getField({String field, BuildContext context}) { + Widget getField({String? field, required BuildContext context}) { final state = StoreProvider.of(context).state; - final expense = entity as ExpenseEntity; + final expense = entity as ExpenseEntity?; switch (field) { case ExpenseFields.status: return EntityStatusChip(entity: expense, showState: true); case ExpenseFields.vendor: - final vendor = state.vendorState.get(expense.vendorId); + final vendor = state.vendorState.get(expense!.vendorId!); return LinkTextRelatedEntity(entity: vendor, relation: expense); case ExpenseFields.client: - final client = state.clientState.get(expense.clientId); + final client = state.clientState.get(expense!.clientId!); return LinkTextRelatedEntity(entity: client, relation: expense); case ExpenseFields.expenseDate: - return Text(formatDate(expense.date, context)); + return Text(formatDate(expense!.date, context)); case ExpenseFields.netAmount: - return Text(formatNumber(expense.netAmount, context, - currencyId: expense.currencyId)); + return Text(formatNumber(expense!.netAmount, context, + currencyId: expense.currencyId)!); case ExpenseFields.amount: - return Text(formatNumber(expense.grossAmount, context, - currencyId: expense.currencyId)); + return Text(formatNumber(expense!.grossAmount, context, + currencyId: expense.currencyId)!); case ExpenseFields.convertedAmount: - return Text(formatNumber(expense.convertedAmount, context, - currencyId: expense.invoiceCurrencyId)); + return Text(formatNumber(expense!.convertedAmount, context, + currencyId: expense.invoiceCurrencyId)!); case ExpenseFields.taxAmount: - return Text(formatNumber(expense.taxAmount, context, - currencyId: expense.currencyId)); + return Text(formatNumber(expense!.taxAmount, context, + currencyId: expense.currencyId)!); case ExpenseFields.publicNotes: - return TableTooltip(message: expense.publicNotes); + return TableTooltip(message: expense!.publicNotes); case ExpenseFields.number: - return Text(expense.number); + return Text(expense!.number); case ExpenseFields.privateNotes: - return TableTooltip(message: expense.privateNotes); + return TableTooltip(message: expense!.privateNotes); case ExpenseFields.shouldBeInvoiced: - return Text(expense.shouldBeInvoiced.toString()); + return Text(expense!.shouldBeInvoiced.toString()); case ExpenseFields.transactionId: - return Text(expense.transactionId); + return Text(expense!.transactionId); case ExpenseFields.transactionReference: - return Text(expense.transactionReference); + return Text(expense!.transactionReference); case ExpenseFields.currency: return Text(state - .staticState.currencyMap[expense.currencyId]?.listDisplayName ?? + .staticState.currencyMap[expense!.currencyId]?.listDisplayName ?? ''); case ExpenseFields.category: - final category = state.expenseCategoryState.map[expense.categoryId]; + final category = state.expenseCategoryState.map[expense!.categoryId]; return LinkTextRelatedEntity(entity: category, relation: expense); case ExpenseFields.project: - final project = state.projectState.map[expense.projectId]; + final project = state.projectState.map[expense!.projectId]; return LinkTextRelatedEntity(entity: project, relation: expense); case ExpenseFields.paymentType: - return Text(state.staticState.paymentTypeMap[expense.paymentTypeId] + return Text(state.staticState.paymentTypeMap[expense!.paymentTypeId] ?.listDisplayName ?? ''); case ExpenseFields.paymentDate: - return Text(formatDate(expense.paymentDate, context)); + return Text(formatDate(expense!.paymentDate, context)); case ExpenseFields.exchangeRate: - return Text(formatNumber(expense.exchangeRate, context, - formatNumberType: FormatNumberType.double)); + return Text(formatNumber(expense!.exchangeRate, context, + formatNumberType: FormatNumberType.double)!); case ExpenseFields.invoiceCurrency: - return Text(state.staticState.currencyMap[expense.invoiceCurrencyId] + return Text(state.staticState.currencyMap[expense!.invoiceCurrencyId] ?.listDisplayName ?? ''); case ExpenseFields.taxName1: - return Text(expense.taxName1); + return Text(expense!.taxName1); case ExpenseFields.taxName2: - return Text(expense.taxName2); + return Text(expense!.taxName2); case ExpenseFields.taxName3: - return Text(expense.taxName3); + return Text(expense!.taxName3); case ExpenseFields.taxRate1: - return Text(formatNumber(expense.taxRate1, context, - formatNumberType: FormatNumberType.percent)); + return Text(formatNumber(expense!.taxRate1, context, + formatNumberType: FormatNumberType.percent)!); case ExpenseFields.taxRate2: - return Text(formatNumber(expense.taxRate2, context, - formatNumberType: FormatNumberType.percent)); + return Text(formatNumber(expense!.taxRate2, context, + formatNumberType: FormatNumberType.percent)!); case ExpenseFields.taxRate3: - return Text(formatNumber(expense.taxRate3, context, - formatNumberType: FormatNumberType.percent)); + return Text(formatNumber(expense!.taxRate3, context, + formatNumberType: FormatNumberType.percent)!); case ExpenseFields.invoiceId: return Text( - state.invoiceState.map[expense.invoiceId]?.listDisplayName ?? ''); + state.invoiceState.map[expense!.invoiceId]?.listDisplayName ?? ''); case ExpenseFields.customValue1: - return Text(presentCustomField(context, expense.customValue1)); + return Text(presentCustomField(context, expense!.customValue1)!); case ExpenseFields.customValue2: - return Text(presentCustomField(context, expense.customValue2)); + return Text(presentCustomField(context, expense!.customValue2)!); case ExpenseFields.customValue3: - return Text(presentCustomField(context, expense.customValue3)); + return Text(presentCustomField(context, expense!.customValue3)!); case ExpenseFields.customValue4: - return Text(presentCustomField(context, expense.customValue4)); + return Text(presentCustomField(context, expense!.customValue4)!); case ExpenseFields.documents: - return Text('${expense.documents.length}'); + return Text('${expense!.documents.length}'); case ExpenseFields.recurringExpense: final recurringExpense = - state.recurringExpenseState.get(expense.recurringExpenseId); + state.recurringExpenseState.get(expense!.recurringExpenseId!); return LinkTextRelatedEntity( entity: recurringExpense, relation: expense); } diff --git a/lib/ui/expense/expense_screen.dart b/lib/ui/expense/expense_screen.dart index 362f99840..0b674d95c 100644 --- a/lib/ui/expense/expense_screen.dart +++ b/lib/ui/expense/expense_screen.dart @@ -22,8 +22,8 @@ import 'expense_screen_vm.dart'; class ExpenseScreen extends StatelessWidget { const ExpenseScreen({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); static const String route = '/expense'; @@ -34,33 +34,33 @@ class ExpenseScreen extends StatelessWidget { Widget build(BuildContext context) { final store = StoreProvider.of(context); final state = store.state; - final company = state.company; + final company = state.company!; final userCompany = state.userCompany; final localization = AppLocalization.of(context); final statuses = [ ExpenseStatusEntity().rebuild((b) => b ..id = kExpenseStatusLogged - ..name = localization.logged), + ..name = localization!.logged), ExpenseStatusEntity().rebuild( (b) => b ..id = kExpenseStatusPending - ..name = localization.pending, + ..name = localization!.pending, ), ExpenseStatusEntity().rebuild( (b) => b ..id = kExpenseStatusInvoiced - ..name = localization.invoiced, + ..name = localization!.invoiced, ), ExpenseStatusEntity().rebuild( (b) => b ..id = kExpenseStatusPaid - ..name = localization.paid, + ..name = localization!.paid, ), ExpenseStatusEntity().rebuild( (b) => b ..id = kExpenseStatusUnpaid - ..name = localization.unpaid, + ..name = localization!.unpaid, ), ]; @@ -80,7 +80,7 @@ class ExpenseScreen extends StatelessWidget { store.dispatch(FilterExpensesByState(state)); }, onSelectedStatus: (EntityStatus status, value) { - store.dispatch(FilterExpensesByStatus(status)); + store.dispatch(FilterExpensesByStatus(status as ExpenseStatusEntity)); }, ), onCheckboxPressed: () { @@ -133,7 +133,7 @@ class ExpenseScreen extends StatelessWidget { }, statuses: statuses, onSelectedStatus: (EntityStatus status, value) { - store.dispatch(FilterExpensesByStatus(status)); + store.dispatch(FilterExpensesByStatus(status as ExpenseStatusEntity)); }, onCheckboxPressed: () { if (store.state.expenseListState.isInMultiselect()) { @@ -144,7 +144,7 @@ class ExpenseScreen extends StatelessWidget { }, ), floatingActionButton: state.prefState.isMenuFloated && - userCompany.canCreate(EntityType.expense) + userCompany!.canCreate(EntityType.expense) ? FloatingActionButton( heroTag: 'expense_fab', backgroundColor: Theme.of(context).primaryColorDark, @@ -156,7 +156,7 @@ class ExpenseScreen extends StatelessWidget { Icons.add, color: Colors.white, ), - tooltip: localization.newExpense, + tooltip: localization!.newExpense, ) : null, ); diff --git a/lib/ui/expense/expense_screen_vm.dart b/lib/ui/expense/expense_screen_vm.dart index 5bafdac61..8260a2fbd 100644 --- a/lib/ui/expense/expense_screen_vm.dart +++ b/lib/ui/expense/expense_screen_vm.dart @@ -14,7 +14,7 @@ import 'package:invoiceninja_flutter/redux/expense/expense_selectors.dart'; import 'expense_screen.dart'; class ExpenseScreenBuilder extends StatelessWidget { - const ExpenseScreenBuilder({Key key}) : super(key: key); + const ExpenseScreenBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -31,16 +31,16 @@ class ExpenseScreenBuilder extends StatelessWidget { class ExpenseScreenVM { ExpenseScreenVM({ - @required this.isInMultiselect, - @required this.expenseList, - @required this.userCompany, - @required this.expenseMap, + required this.isInMultiselect, + required this.expenseList, + required this.userCompany, + required this.expenseMap, }); final bool isInMultiselect; - final UserCompanyEntity userCompany; - final List expenseList; - final BuiltMap expenseMap; + final UserCompanyEntity? userCompany; + final List expenseList; + final BuiltMap expenseMap; static ExpenseScreenVM fromStore(Store store) { final state = store.state; diff --git a/lib/ui/expense/view/expense_view.dart b/lib/ui/expense/view/expense_view.dart index 6ba2123e8..cd8d2e15e 100644 --- a/lib/ui/expense/view/expense_view.dart +++ b/lib/ui/expense/view/expense_view.dart @@ -20,10 +20,10 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class ExpenseView extends StatefulWidget { const ExpenseView({ - Key key, - @required this.viewModel, - @required this.isFilter, - @required this.tabIndex, + Key? key, + required this.viewModel, + required this.isFilter, + required this.tabIndex, }) : super(key: key); final AbstractExpenseViewVM viewModel; @@ -36,23 +36,23 @@ class ExpenseView extends StatefulWidget { class _ExpenseViewState extends State with SingleTickerProviderStateMixin { - TabController _controller; + TabController? _controller; @override void initState() { super.initState(); final viewModel = widget.viewModel; - final state = viewModel.state; - final company = state.company; + final state = viewModel.state!; + final company = state.company!; _controller = TabController( vsync: this, length: 1 + - (viewModel.expense.isRecurring ? 1 : 0) + + (viewModel.expense!.isRecurring ? 1 : 0) + (company.isModuleEnabled(EntityType.document) ? 1 : 0), initialIndex: widget.isFilter ? 0 : state.expenseUIState.tabIndex); - _controller.addListener(_onTabChanged); + _controller!.addListener(_onTabChanged); } void _onTabChanged() { @@ -61,12 +61,12 @@ class _ExpenseViewState extends State } final store = StoreProvider.of(context); - final expense = widget.viewModel.expense; + final expense = widget.viewModel.expense!; if (expense.isRecurring) { - store.dispatch(UpdateRecurringExpenseTab(tabIndex: _controller.index)); + store.dispatch(UpdateRecurringExpenseTab(tabIndex: _controller!.index)); } else { - store.dispatch(UpdateExpenseTab(tabIndex: _controller.index)); + store.dispatch(UpdateExpenseTab(tabIndex: _controller!.index)); } } @@ -75,14 +75,14 @@ class _ExpenseViewState extends State super.didUpdateWidget(oldWidget); if (oldWidget.tabIndex != widget.tabIndex) { - _controller.index = widget.tabIndex; + _controller!.index = widget.tabIndex; } } @override void dispose() { - _controller.removeListener(_onTabChanged); - _controller.dispose(); + _controller!.removeListener(_onTabChanged); + _controller!.dispose(); super.dispose(); } @@ -91,27 +91,27 @@ class _ExpenseViewState extends State final localization = AppLocalization.of(context); final viewModel = widget.viewModel; final expense = viewModel.expense; - final company = viewModel.company; + final company = viewModel.company!; return ViewScaffold( isFilter: widget.isFilter, entity: expense, appBarBottom: - (company.isModuleEnabled(EntityType.document) || expense.isRecurring) + (company.isModuleEnabled(EntityType.document) || expense!.isRecurring) ? TabBar( controller: _controller, isScrollable: isMobile(context), tabs: [ Tab( - text: localization.overview, + text: localization!.overview, ), if (company.isModuleEnabled(EntityType.document)) Tab( - text: expense.documents.isEmpty + text: expense!.documents.isEmpty ? localization.documents : '${localization.documents} (${expense.documents.length})', ), - if (expense.isRecurring) + if (expense!.isRecurring) Tab( text: localization.schedule, ) @@ -128,7 +128,7 @@ class _ExpenseViewState extends State controller: _controller, children: [ RefreshIndicator( - onRefresh: () => viewModel.onRefreshed(context), + onRefresh: () => viewModel.onRefreshed!(context), child: ExpenseOverview( viewModel: viewModel, isFilter: widget.isFilter, @@ -136,20 +136,20 @@ class _ExpenseViewState extends State ), if (company.isModuleEnabled(EntityType.document)) RefreshIndicator( - onRefresh: () => viewModel.onRefreshed(context), + onRefresh: () => viewModel.onRefreshed!(context), child: ExpenseViewDocuments( viewModel: viewModel, expense: viewModel.expense), ), if (expense.isRecurring) RefreshIndicator( - onRefresh: () => viewModel.onRefreshed(context), + onRefresh: () => viewModel.onRefreshed!(context), child: ExpenseViewSchedule(viewModel: viewModel), ), ], ) : RefreshIndicator( - onRefresh: () => viewModel.onRefreshed(context), + onRefresh: () => viewModel.onRefreshed!(context), child: ExpenseOverview( viewModel: viewModel, isFilter: widget.isFilter, diff --git a/lib/ui/expense/view/expense_view_documents.dart b/lib/ui/expense/view/expense_view_documents.dart index fab723a82..1331331cc 100644 --- a/lib/ui/expense/view/expense_view_documents.dart +++ b/lib/ui/expense/view/expense_view_documents.dart @@ -11,21 +11,21 @@ import 'package:invoiceninja_flutter/ui/expense/view/expense_view_vm.dart'; class ExpenseViewDocuments extends StatelessWidget { const ExpenseViewDocuments( - {@required this.expense, @required this.viewModel}); + {required this.expense, required this.viewModel}); final AbstractExpenseViewVM viewModel; - final ExpenseEntity expense; + final ExpenseEntity? expense; @override Widget build(BuildContext context) { final store = StoreProvider.of(context); return DocumentGrid( - documents: expense.documents.toList(), + documents: expense!.documents.toList(), onUploadDocument: (path, isPrivate) => - viewModel.onUploadDocuments(context, path, isPrivate), + viewModel.onUploadDocuments!(context, path, isPrivate), onRenamedDocument: () => - store.dispatch(LoadExpense(expenseId: expense.id)), + store.dispatch(LoadExpense(expenseId: expense!.id)), onViewExpense: null, ); } diff --git a/lib/ui/expense/view/expense_view_overview.dart b/lib/ui/expense/view/expense_view_overview.dart index ce37e7fc0..503947ecb 100644 --- a/lib/ui/expense/view/expense_view_overview.dart +++ b/lib/ui/expense/view/expense_view_overview.dart @@ -20,9 +20,9 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class ExpenseOverview extends StatelessWidget { const ExpenseOverview({ - Key key, - @required this.viewModel, - @required this.isFilter, + Key? key, + required this.viewModel, + required this.isFilter, }) : super(key: key); final AbstractExpenseViewVM viewModel; @@ -31,26 +31,26 @@ class ExpenseOverview extends StatelessWidget { @override Widget build(BuildContext context) { final localization = AppLocalization.of(context); - final expense = viewModel.expense; - final company = viewModel.company; - final state = viewModel.state; - final vendor = state.vendorState.get(expense.vendorId); - final client = state.clientState.get(expense.clientId); - final invoice = state.invoiceState.get(expense.invoiceId); - final project = state.projectState.get(expense.projectId); + final expense = viewModel.expense!; + final company = viewModel.company!; + final state = viewModel.state!; + final vendor = state.vendorState.get(expense.vendorId!); + final client = state.clientState.get(expense.clientId!); + final invoice = state.invoiceState.get(expense.invoiceId!); + final project = state.projectState.get(expense.projectId!); final category = state.expenseCategoryState.get(expense.categoryId); final transaction = state.transactionState.get(expense.transactionId); - final user = state.userState.get(expense.assignedUserId); + final user = state.userState.get(expense.assignedUserId!); final recurringExpense = - state.recurringExpenseState.get(expense.recurringExpenseId); + state.recurringExpenseState.get(expense.recurringExpenseId!); - InvoiceEntity purchaseOrder; - if (state.company.isModuleEnabled(EntityType.purchaseOrder)) { + InvoiceEntity? purchaseOrder; + if (state.company!.isModuleEnabled(EntityType.purchaseOrder)) { purchaseOrder = memoizedExpensePurchaseOrderSelector( expense, state.purchaseOrderState.map); } - final fields = {}; + final fields = {}; if (company.hasCustomField(CustomFieldType.expense1) && expense.customValue1.isNotEmpty) { final label1 = company.getCustomFieldLabel(CustomFieldType.expense1); @@ -86,62 +86,62 @@ class ExpenseOverview extends StatelessWidget { List _buildDetailsList() { String tax = ''; - if (expense.calculateTaxByAmount) { + if (expense.calculateTaxByAmount!) { if (expense.taxName1.isNotEmpty) { - tax += formatNumber(expense.taxAmount1, context) + + tax += formatNumber(expense.taxAmount1, context)! + ' ' + expense.taxName1; } if (expense.taxName2.isNotEmpty) { tax += ' ' + - formatNumber(expense.taxAmount2, context) + + formatNumber(expense.taxAmount2, context)! + ' ' + expense.taxName2; } if (expense.taxName3.isNotEmpty) { tax += ' ' + - formatNumber(expense.taxAmount3, context) + + formatNumber(expense.taxAmount3, context)! + ' ' + expense.taxName3; } } else { if (expense.taxName1.isNotEmpty) { tax += formatNumber(expense.taxRate1, context, - formatNumberType: FormatNumberType.percent) + + formatNumberType: FormatNumberType.percent)! + ' ' + expense.taxName1; } if (expense.taxName2.isNotEmpty) { tax += ' ' + formatNumber(expense.taxRate2, context, - formatNumberType: FormatNumberType.percent) + + formatNumberType: FormatNumberType.percent)! + ' ' + expense.taxName2; } if (expense.taxName3.isNotEmpty) { tax += ' ' + formatNumber(expense.taxRate3, context, - formatNumberType: FormatNumberType.percent) + + formatNumberType: FormatNumberType.percent)! + ' ' + expense.taxName3; } } - final fields = { + final fields = { if (expense.isRecurring) - localization.frequency: + localization!.frequency: localization.lookup(kFrequencies[expense.frequencyId]), if (expense.isRecurring) - localization.remainingCycles: expense.remainingCycles == -1 + localization!.remainingCycles: expense.remainingCycles == -1 ? localization.endless : '${expense.remainingCycles}', if (expense.isRecurring) ...{ - localization.lastSentDate: formatDate(expense.lastSentDate, context), + localization!.lastSentDate: formatDate(expense.lastSentDate, context), localization.nextSendDate: formatDate(expense.nextSendDate, context), }, if (!expense.isRecurring) - localization.date: formatDate(expense.date, context), - localization.transactionReference: expense.transactionReference, + localization!.date: formatDate(expense.date, context), + localization!.transactionReference: expense.transactionReference, localization.tax: tax, localization.paymentDate: formatDate(expense.paymentDate, context), localization.paymentType: @@ -167,7 +167,7 @@ class ExpenseOverview extends StatelessWidget { statusColor: ExpenseStatusColors(state.prefState.colorThemeModel) .colors[expense.calculatedStatusId], - statusLabel: localization + statusLabel: localization! .lookup('expense_status_${expense.calculatedStatusId}'), label: localization.amount, value: formatNumber(expense.grossAmount, context, @@ -182,7 +182,7 @@ class ExpenseOverview extends StatelessWidget { statusColor: ExpenseStatusColors(state.prefState.colorThemeModel) .colors[expense.calculatedStatusId], - statusLabel: localization + statusLabel: localization! .lookup('expense_status_${expense.calculatedStatusId}'), label: localization.amount, value: formatNumber(expense.grossAmount, context, diff --git a/lib/ui/expense/view/expense_view_schedule.dart b/lib/ui/expense/view/expense_view_schedule.dart index 57d8ca4ea..850ccb45b 100644 --- a/lib/ui/expense/view/expense_view_schedule.dart +++ b/lib/ui/expense/view/expense_view_schedule.dart @@ -9,7 +9,7 @@ import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class ExpenseViewSchedule extends StatefulWidget { - const ExpenseViewSchedule({Key key, @required this.viewModel}) + const ExpenseViewSchedule({Key? key, required this.viewModel}) : super(key: key); final AbstractExpenseViewVM viewModel; @@ -21,16 +21,16 @@ class ExpenseViewSchedule extends StatefulWidget { class _ExpenseViewScheduleState extends State { @override void didChangeDependencies() { - if (widget.viewModel.expense.isStale) { - widget.viewModel.onRefreshed(context); + if (widget.viewModel.expense!.isStale) { + widget.viewModel.onRefreshed!(context); } super.didChangeDependencies(); } @override Widget build(BuildContext context) { - final expense = widget.viewModel.expense; - final localization = AppLocalization.of(context); + final expense = widget.viewModel.expense!; + final localization = AppLocalization.of(context)!; return ScrollableListView( padding: const EdgeInsets.all(16), @@ -45,11 +45,11 @@ class _ExpenseViewScheduleState extends State { ), ], ), - if (expense.isStale && expense.recurringDates.isEmpty) + if (expense.isStale && expense.recurringDates!.isEmpty) LoadingIndicator( height: 300, ), - ...expense.recurringDates + ...expense.recurringDates! .map((schedule) => Padding( padding: const EdgeInsets.only(top: 16), child: Row( diff --git a/lib/ui/expense/view/expense_view_vm.dart b/lib/ui/expense/view/expense_view_vm.dart index 03e26794b..6c365fc3d 100644 --- a/lib/ui/expense/view/expense_view_vm.dart +++ b/lib/ui/expense/view/expense_view_vm.dart @@ -23,7 +23,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class ExpenseViewScreen extends StatelessWidget { const ExpenseViewScreen({ - Key key, + Key? key, this.isFilter = false, }) : super(key: key); @@ -40,7 +40,7 @@ class ExpenseViewScreen extends StatelessWidget { return ExpenseView( viewModel: vm, isFilter: isFilter, - tabIndex: vm.state.expenseUIState.tabIndex, + tabIndex: vm.state!.expenseUIState.tabIndex, ); }, ); @@ -49,39 +49,39 @@ class ExpenseViewScreen extends StatelessWidget { class AbstractExpenseViewVM { AbstractExpenseViewVM({ - @required this.state, - @required this.expense, - @required this.company, - @required this.onEntityAction, - @required this.onRefreshed, - @required this.onUploadDocuments, - @required this.isSaving, - @required this.isLoading, - @required this.isDirty, + required this.state, + required this.expense, + required this.company, + required this.onEntityAction, + required this.onRefreshed, + required this.onUploadDocuments, + required this.isSaving, + required this.isLoading, + required this.isDirty, }); - final AppState state; - final ExpenseEntity expense; - final CompanyEntity company; - final Function(BuildContext, EntityAction) onEntityAction; - final Function(BuildContext) onRefreshed; - final Function(BuildContext, List, bool) onUploadDocuments; - final bool isSaving; - final bool isLoading; - final bool isDirty; + final AppState? state; + final ExpenseEntity? expense; + final CompanyEntity? company; + final Function(BuildContext, EntityAction)? onEntityAction; + final Function(BuildContext)? onRefreshed; + final Function(BuildContext, List, bool)? onUploadDocuments; + final bool? isSaving; + final bool? isLoading; + final bool? isDirty; } class ExpenseViewVM extends AbstractExpenseViewVM { ExpenseViewVM({ - AppState state, - ExpenseEntity expense, - CompanyEntity company, - Function(BuildContext, EntityAction) onEntityAction, - Function(BuildContext) onRefreshed, - Function(BuildContext, List, bool) onUploadDocuments, - bool isSaving, - bool isLoading, - bool isDirty, + AppState? state, + ExpenseEntity? expense, + CompanyEntity? company, + Function(BuildContext, EntityAction)? onEntityAction, + Function(BuildContext)? onRefreshed, + Function(BuildContext, List, bool)? onUploadDocuments, + bool? isSaving, + bool? isLoading, + bool? isDirty, }) : super( state: state, expense: expense, @@ -101,7 +101,7 @@ class ExpenseViewVM extends AbstractExpenseViewVM { Future _handleRefresh(BuildContext context) { final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(LoadExpense(completer: completer, expenseId: expense.id)); return completer.future; } @@ -125,10 +125,10 @@ class ExpenseViewVM extends AbstractExpenseViewVM { expense: expense, completer: completer)); completer.future.then((client) { - showToast(AppLocalization.of(context).uploadedDocument); + showToast(AppLocalization.of(context)!.uploadedDocument); }).catchError((Object error) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { return ErrorDialog(error); }); diff --git a/lib/ui/expense_category/edit/expense_category_edit.dart b/lib/ui/expense_category/edit/expense_category_edit.dart index d3072c3f0..88ecdecf1 100644 --- a/lib/ui/expense_category/edit/expense_category_edit.dart +++ b/lib/ui/expense_category/edit/expense_category_edit.dart @@ -13,8 +13,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class ExpenseCategoryEdit extends StatefulWidget { const ExpenseCategoryEdit({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final ExpenseCategoryEditVM viewModel; @@ -71,7 +71,7 @@ class _ExpenseCategoryEditState extends State { } void _onSavePressed() { - final bool isValid = _formKey.currentState.validate(); + final bool isValid = _formKey.currentState!.validate(); if (!isValid) { return; @@ -89,8 +89,8 @@ class _ExpenseCategoryEditState extends State { return EditScaffold( entity: expenseCategory, title: expenseCategory.isNew - ? localization.newExpenseCategory - : localization.editExpenseCategory, + ? localization!.newExpenseCategory + : localization!.editExpenseCategory, onCancelPressed: (context) => viewModel.onCancelPressed(context), onSavePressed: (_) => _onSavePressed(), body: Form( diff --git a/lib/ui/expense_category/edit/expense_category_edit_vm.dart b/lib/ui/expense_category/edit/expense_category_edit_vm.dart index 7e7e34598..8647731a2 100644 --- a/lib/ui/expense_category/edit/expense_category_edit_vm.dart +++ b/lib/ui/expense_category/edit/expense_category_edit_vm.dart @@ -23,7 +23,7 @@ import 'package:invoiceninja_flutter/ui/expense_category/view/expense_category_v import 'package:invoiceninja_flutter/utils/completers.dart'; class ExpenseCategoryEditScreen extends StatelessWidget { - const ExpenseCategoryEditScreen({Key key}) : super(key: key); + const ExpenseCategoryEditScreen({Key? key}) : super(key: key); static const String route = '/$kSettings/$kSettingsExpenseCategoryEdit'; @@ -45,20 +45,20 @@ class ExpenseCategoryEditScreen extends StatelessWidget { class ExpenseCategoryEditVM { ExpenseCategoryEditVM({ - @required this.state, - @required this.expenseCategory, - @required this.company, - @required this.onChanged, - @required this.isSaving, - @required this.origExpenseCategory, - @required this.onSavePressed, - @required this.onCancelPressed, - @required this.isLoading, + required this.state, + required this.expenseCategory, + required this.company, + required this.onChanged, + required this.isSaving, + required this.origExpenseCategory, + required this.onSavePressed, + required this.onCancelPressed, + required this.isLoading, }); factory ExpenseCategoryEditVM.fromStore(Store store) { final state = store.state; - final expenseCategory = state.expenseCategoryUIState.editing; + final expenseCategory = state.expenseCategoryUIState.editing!; return ExpenseCategoryEditVM( state: state, @@ -85,25 +85,25 @@ class ExpenseCategoryEditVM { store.dispatch(SaveExpenseCategoryRequest( completer: completer, expenseCategory: expenseCategory)); return completer.future.then((savedExpenseCategory) { - showToast(expenseCategory.isNew - ? localization.createdExpenseCategory - : localization.updatedExpenseCategory); + showToast(expenseCategory!.isNew + ? localization!.createdExpenseCategory + : localization!.updatedExpenseCategory); if (state.prefState.isMobile) { store.dispatch( UpdateCurrentRoute(ExpenseCategoryViewScreen.route)); if (expenseCategory.isNew && state.expenseCategoryUIState.saveCompleter == null) { - navigator.pushReplacementNamed(ExpenseCategoryViewScreen.route); + navigator!.pushReplacementNamed(ExpenseCategoryViewScreen.route); } else { - navigator.pop(savedExpenseCategory); + navigator!.pop(savedExpenseCategory); } } else if (state.expenseCategoryUIState.saveCompleter == null) { viewEntity(entity: savedExpenseCategory, force: true); } }).catchError((Object error) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { return ErrorDialog(error); }); @@ -114,12 +114,12 @@ class ExpenseCategoryEditVM { } final ExpenseCategoryEntity expenseCategory; - final CompanyEntity company; + final CompanyEntity? company; final Function(ExpenseCategoryEntity) onChanged; final Function(BuildContext) onSavePressed; final Function(BuildContext) onCancelPressed; final bool isLoading; final bool isSaving; - final ExpenseCategoryEntity origExpenseCategory; + final ExpenseCategoryEntity? origExpenseCategory; final AppState state; } diff --git a/lib/ui/expense_category/expense_category_list_item.dart b/lib/ui/expense_category/expense_category_list_item.dart index 9ab6637fc..76c180768 100644 --- a/lib/ui/expense_category/expense_category_list_item.dart +++ b/lib/ui/expense_category/expense_category_list_item.dart @@ -14,7 +14,7 @@ import 'package:invoiceninja_flutter/utils/formatting.dart'; class ExpenseCategoryListItem extends StatelessWidget { const ExpenseCategoryListItem({ - @required this.expenseCategory, + required this.expenseCategory, this.filter = '', this.onTap, this.onLongPress, @@ -22,10 +22,10 @@ class ExpenseCategoryListItem extends StatelessWidget { this.showCheck = false, }); - final GestureTapCallback onTap; - final GestureTapCallback onLongPress; - final ExpenseCategoryEntity expenseCategory; - final String filter; + final GestureTapCallback? onTap; + final GestureTapCallback? onLongPress; + final ExpenseCategoryEntity? expenseCategory; + final String? filter; final bool isChecked; final bool showCheck; @@ -36,8 +36,8 @@ class ExpenseCategoryListItem extends StatelessWidget { final uiState = state.uiState; final expenseCategoryUIState = uiState.expenseCategoryUIState; - final filterMatch = filter != null && filter.isNotEmpty - ? expenseCategory.matchesFilterValue(filter) + final filterMatch = filter != null && filter!.isNotEmpty + ? expenseCategory!.matchesFilterValue(filter) : null; final subtitle = filterMatch; @@ -45,17 +45,17 @@ class ExpenseCategoryListItem extends StatelessWidget { userCompany: state.userCompany, entity: expenseCategory, isSelected: !showCheck && - expenseCategory.id == + expenseCategory!.id == (uiState.isEditing - ? expenseCategoryUIState.editing.id + ? expenseCategoryUIState.editing!.id : expenseCategoryUIState.selectedId), showMultiselect: showCheck, child: ListTile( onTap: () => - onTap != null ? onTap() : selectEntity(entity: expenseCategory), + onTap != null ? onTap!() : selectEntity(entity: expenseCategory!), onLongPress: () => onLongPress != null - ? onLongPress() - : selectEntity(entity: expenseCategory, longPress: true), + ? onLongPress!() + : selectEntity(entity: expenseCategory!, longPress: true), leading: showCheck ? IgnorePointer( child: Checkbox( @@ -72,11 +72,11 @@ class ExpenseCategoryListItem extends StatelessWidget { children: [ Expanded( child: Text( - expenseCategory.name, + expenseCategory!.name, style: Theme.of(context).textTheme.titleMedium, ), ), - Text(formatNumber(expenseCategory.listDisplayAmount, context), + Text(formatNumber(expenseCategory!.listDisplayAmount, context)!, style: Theme.of(context).textTheme.titleMedium), ], ), diff --git a/lib/ui/expense_category/expense_category_list_vm.dart b/lib/ui/expense_category/expense_category_list_vm.dart index b5eaf518f..bfe6be25a 100644 --- a/lib/ui/expense_category/expense_category_list_vm.dart +++ b/lib/ui/expense_category/expense_category_list_vm.dart @@ -24,7 +24,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class ExpenseCategoryListBuilder extends StatelessWidget { - const ExpenseCategoryListBuilder({Key key}) : super(key: key); + const ExpenseCategoryListBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -52,7 +52,7 @@ class ExpenseCategoryListBuilder extends StatelessWidget { filter: viewModel.filter, expenseCategory: expenseCategory, isChecked: - isInMultiselect && listState.isSelected(expenseCategory.id), + isInMultiselect && listState.isSelected(expenseCategory!.id), ); }); }, @@ -62,18 +62,18 @@ class ExpenseCategoryListBuilder extends StatelessWidget { class ExpenseCategoryListVM { ExpenseCategoryListVM({ - @required this.state, - @required this.userCompany, - @required this.expenseCategoryList, - @required this.expenseCategoryMap, - @required this.filter, - @required this.isLoading, - @required this.listState, - @required this.onRefreshed, - @required this.onEntityAction, - @required this.tableColumns, - @required this.onSortColumn, - @required this.onClearMultielsect, + required this.state, + required this.userCompany, + required this.expenseCategoryList, + required this.expenseCategoryMap, + required this.filter, + required this.isLoading, + required this.listState, + required this.onRefreshed, + required this.onEntityAction, + required this.tableColumns, + required this.onSortColumn, + required this.onClearMultielsect, }); static ExpenseCategoryListVM fromStore(Store store) { @@ -82,7 +82,7 @@ class ExpenseCategoryListVM { return Future(null); } final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(RefreshData(completer: completer)); return completer.future; } @@ -105,7 +105,7 @@ class ExpenseCategoryListVM { EntityAction action) => handleExpenseCategoryAction(context, expenseCategories, action), onRefreshed: (context) => _handleRefresh(context), - tableColumns: state.userCompany.settings + tableColumns: state.userCompany!.settings ?.getTableColumns(EntityType.expenseCategory) ?? ExpenseCategoryPresenter.getDefaultTableFields(state.userCompany), onSortColumn: (field) => store.dispatch(SortExpenseCategories(field)), @@ -115,11 +115,11 @@ class ExpenseCategoryListVM { } final AppState state; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List expenseCategoryList; - final BuiltMap expenseCategoryMap; + final BuiltMap expenseCategoryMap; final ListUIState listState; - final String filter; + final String? filter; final bool isLoading; final Function(BuildContext) onRefreshed; final Function(BuildContext, List, EntityAction) onEntityAction; diff --git a/lib/ui/expense_category/expense_category_presenter.dart b/lib/ui/expense_category/expense_category_presenter.dart index 22a631f03..d2f9f6f25 100644 --- a/lib/ui/expense_category/expense_category_presenter.dart +++ b/lib/ui/expense_category/expense_category_presenter.dart @@ -6,11 +6,11 @@ import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/ui/app/presenters/entity_presenter.dart'; class ExpenseCategoryPresenter extends EntityPresenter { - static List getDefaultTableFields(UserCompanyEntity userCompany) { + static List getDefaultTableFields(UserCompanyEntity? userCompany) { return []; } - static List getAllTableFields(UserCompanyEntity userCompany) { + static List getAllTableFields(UserCompanyEntity? userCompany) { return [ ...getDefaultTableFields(userCompany), ...EntityPresenter.getBaseFields(), @@ -18,7 +18,7 @@ class ExpenseCategoryPresenter extends EntityPresenter { } @override - Widget getField({String field, BuildContext context}) { + Widget getField({String? field, required BuildContext context}) { //final state = StoreProvider.of(context).state; //final expenseCategory = entity as InvoiceEntity; diff --git a/lib/ui/expense_category/expense_category_screen.dart b/lib/ui/expense_category/expense_category_screen.dart index 0b35e0ef9..492603a70 100644 --- a/lib/ui/expense_category/expense_category_screen.dart +++ b/lib/ui/expense_category/expense_category_screen.dart @@ -20,8 +20,8 @@ import 'expense_category_screen_vm.dart'; class ExpenseCategoryScreen extends StatelessWidget { const ExpenseCategoryScreen({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); static const String route = '/$kSettings/$kSettingsExpenseCategories'; @@ -93,7 +93,7 @@ class ExpenseCategoryScreen extends StatelessWidget { store.dispatch(FilterExpenseCategoriesByCustom4(value)), ), floatingActionButton: state.prefState.isMenuFloated && - userCompany.canCreate(EntityType.expenseCategory) + userCompany!.canCreate(EntityType.expenseCategory) ? FloatingActionButton( heroTag: 'expense_category_fab', backgroundColor: Theme.of(context).primaryColorDark, @@ -105,7 +105,7 @@ class ExpenseCategoryScreen extends StatelessWidget { Icons.add, color: Colors.white, ), - tooltip: localization.newExpenseCategory, + tooltip: localization!.newExpenseCategory, ) : null, ); diff --git a/lib/ui/expense_category/expense_category_screen_vm.dart b/lib/ui/expense_category/expense_category_screen_vm.dart index 36011f3f9..e6d2ff40e 100644 --- a/lib/ui/expense_category/expense_category_screen_vm.dart +++ b/lib/ui/expense_category/expense_category_screen_vm.dart @@ -15,7 +15,7 @@ import 'package:invoiceninja_flutter/redux/expense_category/expense_category_sel import 'expense_category_screen.dart'; class ExpenseCategoryScreenBuilder extends StatelessWidget { - const ExpenseCategoryScreenBuilder({Key key}) : super(key: key); + const ExpenseCategoryScreenBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -32,18 +32,18 @@ class ExpenseCategoryScreenBuilder extends StatelessWidget { class ExpenseCategoryScreenVM { ExpenseCategoryScreenVM({ - @required this.isInMultiselect, - @required this.expenseCategoryList, - @required this.userCompany, - @required this.onEntityAction, - @required this.expenseCategoryMap, + required this.isInMultiselect, + required this.expenseCategoryList, + required this.userCompany, + required this.onEntityAction, + required this.expenseCategoryMap, }); final bool isInMultiselect; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List expenseCategoryList; final Function(BuildContext, List, EntityAction) onEntityAction; - final BuiltMap expenseCategoryMap; + final BuiltMap expenseCategoryMap; static ExpenseCategoryScreenVM fromStore(Store store) { final state = store.state; diff --git a/lib/ui/expense_category/view/expense_category_view.dart b/lib/ui/expense_category/view/expense_category_view.dart index 32a1424ac..7b5ac570b 100644 --- a/lib/ui/expense_category/view/expense_category_view.dart +++ b/lib/ui/expense_category/view/expense_category_view.dart @@ -15,9 +15,9 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class ExpenseCategoryView extends StatefulWidget { const ExpenseCategoryView({ - Key key, - @required this.viewModel, - @required this.isFilter, + Key? key, + required this.viewModel, + required this.isFilter, }) : super(key: key); final ExpenseCategoryViewVM viewModel; @@ -33,7 +33,7 @@ class _ExpenseCategoryViewState extends State { final viewModel = widget.viewModel; final state = viewModel.state; final expenseCategory = viewModel.expenseCategory; - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final amount = memoizedCalculateExpenseCategoryAmount( expenseCategory.id, viewModel.state.expenseState.map); @@ -57,7 +57,7 @@ class _ExpenseCategoryViewState extends State { expenseCategory.id, state.expenseState.map) .present(localization.active, localization.archived), ), - if (state.company.isModuleEnabled(EntityType.transaction)) + if (state.company!.isModuleEnabled(EntityType.transaction)) EntitiesListTile( entity: expenseCategory, isFilter: widget.isFilter, diff --git a/lib/ui/expense_category/view/expense_category_view_vm.dart b/lib/ui/expense_category/view/expense_category_view_vm.dart index d19b58943..d0e26d06f 100644 --- a/lib/ui/expense_category/view/expense_category_view_vm.dart +++ b/lib/ui/expense_category/view/expense_category_view_vm.dart @@ -22,7 +22,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class ExpenseCategoryViewScreen extends StatelessWidget { const ExpenseCategoryViewScreen({ - Key key, + Key? key, this.isFilter = false, }) : super(key: key); @@ -47,15 +47,15 @@ class ExpenseCategoryViewScreen extends StatelessWidget { class ExpenseCategoryViewVM { ExpenseCategoryViewVM({ - @required this.state, - @required this.expenseCategory, - @required this.company, - @required this.onEntityAction, - @required this.onBackPressed, - @required this.onRefreshed, - @required this.isSaving, - @required this.isLoading, - @required this.isDirty, + required this.state, + required this.expenseCategory, + required this.company, + required this.onEntityAction, + required this.onBackPressed, + required this.onRefreshed, + required this.isSaving, + required this.isLoading, + required this.isDirty, }); factory ExpenseCategoryViewVM.fromStore(Store store) { @@ -66,7 +66,7 @@ class ExpenseCategoryViewVM { Future _handleRefresh(BuildContext context) { final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(LoadExpenseCategory( completer: completer, expenseCategoryId: expenseCategory.id)); return completer.future; @@ -89,7 +89,7 @@ class ExpenseCategoryViewVM { final AppState state; final ExpenseCategoryEntity expenseCategory; - final CompanyEntity company; + final CompanyEntity? company; final Function(BuildContext, EntityAction) onEntityAction; final Function(BuildContext) onRefreshed; final Function onBackPressed; diff --git a/lib/ui/group/edit/group_edit.dart b/lib/ui/group/edit/group_edit.dart index 4ad0c8435..5026232f2 100644 --- a/lib/ui/group/edit/group_edit.dart +++ b/lib/ui/group/edit/group_edit.dart @@ -12,8 +12,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class GroupEdit extends StatefulWidget { const GroupEdit({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final GroupEditVM viewModel; @@ -72,7 +72,7 @@ class _GroupEditState extends State { } void _onSavePressed() { - final bool isValid = _formKey.currentState.validate(); + final bool isValid = _formKey.currentState!.validate(); if (!isValid) { return; @@ -90,7 +90,7 @@ class _GroupEditState extends State { return EditScaffold( entity: group, onCancelPressed: (context) => viewModel.onCancelPressed(context), - title: group.isNew ? localization.newGroup : localization.editGroup, + title: group.isNew ? localization!.newGroup : localization!.editGroup, onSavePressed: (_) => _onSavePressed(), body: Form( key: _formKey, diff --git a/lib/ui/group/edit/group_edit_vm.dart b/lib/ui/group/edit/group_edit_vm.dart index 98a0363c4..6b48bf4ea 100644 --- a/lib/ui/group/edit/group_edit_vm.dart +++ b/lib/ui/group/edit/group_edit_vm.dart @@ -24,7 +24,7 @@ import 'package:invoiceninja_flutter/ui/group/view/group_view_vm.dart'; import 'package:invoiceninja_flutter/utils/completers.dart'; class GroupEditScreen extends StatelessWidget { - const GroupEditScreen({Key key}) : super(key: key); + const GroupEditScreen({Key? key}) : super(key: key); static const String route = '/$kSettings/$kSettingsGroupSettingsEdit'; @override @@ -45,19 +45,19 @@ class GroupEditScreen extends StatelessWidget { class GroupEditVM { GroupEditVM({ - @required this.state, - @required this.group, - @required this.company, - @required this.onChanged, - @required this.isSaving, - @required this.origGroup, - @required this.onSavePressed, - @required this.onCancelPressed, - @required this.isLoading, + required this.state, + required this.group, + required this.company, + required this.onChanged, + required this.isSaving, + required this.origGroup, + required this.onSavePressed, + required this.onCancelPressed, + required this.isLoading, }); factory GroupEditVM.fromStore(Store store) { - final group = store.state.groupUIState.editing; + final group = store.state.groupUIState.editing!; final state = store.state; return GroupEditVM( @@ -86,23 +86,23 @@ class GroupEditVM { final Completer completer = Completer(); store.dispatch(SaveGroupRequest(completer: completer, group: group)); return completer.future.then((savedGroup) { - showToast(group.isNew - ? localization.createdGroup - : localization.updatedGroup); + showToast(group!.isNew + ? localization!.createdGroup + : localization!.updatedGroup); if (state.prefState.isMobile) { store.dispatch(UpdateCurrentRoute(GroupViewScreen.route)); if (group.isNew) { - navigator.pushReplacementNamed(GroupViewScreen.route); + navigator!.pushReplacementNamed(GroupViewScreen.route); } else { - navigator.pop(savedGroup); + navigator!.pop(savedGroup); } } else { viewEntity(entity: savedGroup, force: true); } }).catchError((Object error) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { return ErrorDialog(error); }); @@ -113,12 +113,12 @@ class GroupEditVM { } final GroupEntity group; - final CompanyEntity company; + final CompanyEntity? company; final Function(GroupEntity) onChanged; final Function(BuildContext) onSavePressed; final Function(BuildContext) onCancelPressed; final bool isLoading; final bool isSaving; - final GroupEntity origGroup; + final GroupEntity? origGroup; final AppState state; } diff --git a/lib/ui/group/group_list_item.dart b/lib/ui/group/group_list_item.dart index dcfa77cd6..3f28d50e4 100644 --- a/lib/ui/group/group_list_item.dart +++ b/lib/ui/group/group_list_item.dart @@ -15,29 +15,29 @@ import 'package:invoiceninja_flutter/utils/formatting.dart'; class GroupListItem extends StatelessWidget { const GroupListItem({ - @required this.user, - @required this.group, - @required this.filter, + required this.user, + required this.group, + required this.filter, this.onTap, this.onLongPress, this.onCheckboxChanged, this.isChecked = false, }); - final UserEntity user; - final GestureTapCallback onTap; - final GestureTapCallback onLongPress; - final GroupEntity group; - final String filter; - final Function(bool) onCheckboxChanged; + final UserEntity? user; + final GestureTapCallback? onTap; + final GestureTapCallback? onLongPress; + final GroupEntity? group; + final String? filter; + final Function(bool?)? onCheckboxChanged; final bool isChecked; @override Widget build(BuildContext context) { final store = StoreProvider.of(context); final state = store.state; - final filterMatch = filter != null && filter.isNotEmpty - ? group.matchesFilterValue(filter) + final filterMatch = filter != null && filter!.isNotEmpty + ? group!.matchesFilterValue(filter) : null; final subtitle = filterMatch; final uiState = store.state.uiState; @@ -51,17 +51,17 @@ class GroupListItem extends StatelessWidget { entity: group, isSelected: false, child: ListTile( - onTap: () => onTap != null ? onTap() : selectEntity(entity: group), + onTap: () => onTap != null ? onTap!() : selectEntity(entity: group!), onLongPress: () => onLongPress != null - ? onLongPress() - : selectEntity(entity: group, longPress: true), + ? onLongPress!() + : selectEntity(entity: group!, longPress: true), leading: showCheckbox ? IgnorePointer( ignoring: listUIState.isInMultiselect(), child: Checkbox( value: isChecked, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, - onChanged: (value) => onCheckboxChanged(value), + onChanged: (value) => onCheckboxChanged!(value), activeColor: Theme.of(context).colorScheme.secondary, ), ) @@ -72,11 +72,11 @@ class GroupListItem extends StatelessWidget { children: [ Expanded( child: Text( - group.name, + group!.name, style: Theme.of(context).textTheme.titleMedium, ), ), - Text(formatNumber(group.listDisplayAmount, context), + Text(formatNumber(group!.listDisplayAmount, context)!, style: Theme.of(context).textTheme.titleMedium), ], ), diff --git a/lib/ui/group/group_list_vm.dart b/lib/ui/group/group_list_vm.dart index aa956f7af..912451114 100644 --- a/lib/ui/group/group_list_vm.dart +++ b/lib/ui/group/group_list_vm.dart @@ -24,7 +24,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class GroupListBuilder extends StatelessWidget { - const GroupListBuilder({Key key}) : super(key: key); + const GroupListBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -48,10 +48,10 @@ class GroupListBuilder extends StatelessWidget { final isInMultiselect = listState.isInMultiselect(); return GroupListItem( - user: viewModel.userCompany.user, + user: viewModel.userCompany!.user, filter: viewModel.filter, group: group, - isChecked: isInMultiselect && listState.isSelected(group.id), + isChecked: isInMultiselect && listState.isSelected(group!.id), ); }); }, @@ -61,16 +61,16 @@ class GroupListBuilder extends StatelessWidget { class GroupListVM { GroupListVM({ - @required this.state, - @required this.userCompany, - @required this.groupList, - @required this.groupMap, - @required this.filter, - @required this.isLoading, - @required this.listState, - @required this.onRefreshed, - @required this.onSortColumn, - @required this.onClearMultielsect, + required this.state, + required this.userCompany, + required this.groupList, + required this.groupMap, + required this.filter, + required this.isLoading, + required this.listState, + required this.onRefreshed, + required this.onSortColumn, + required this.onClearMultielsect, }); static GroupListVM fromStore(Store store) { @@ -79,7 +79,7 @@ class GroupListVM { return Future(null); } final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(RefreshData(completer: completer)); return completer.future; } @@ -105,11 +105,11 @@ class GroupListVM { } final AppState state; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List groupList; - final BuiltMap groupMap; + final BuiltMap groupMap; final ListUIState listState; - final String filter; + final String? filter; final bool isLoading; final Function(BuildContext) onRefreshed; final Function(String) onSortColumn; diff --git a/lib/ui/group/group_screen.dart b/lib/ui/group/group_screen.dart index 1f7c18b41..9774efb06 100644 --- a/lib/ui/group/group_screen.dart +++ b/lib/ui/group/group_screen.dart @@ -20,8 +20,8 @@ import 'group_screen_vm.dart'; class GroupSettingsScreen extends StatelessWidget { const GroupSettingsScreen({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); static const String route = '/$kSettings/$kSettingsGroupSettings'; @@ -75,7 +75,7 @@ class GroupSettingsScreen extends StatelessWidget { }, ), floatingActionButton: state.prefState.isMobile && - state.userCompany.canCreate(EntityType.group) + state.userCompany!.canCreate(EntityType.group) ? FloatingActionButton( heroTag: 'group_fab', backgroundColor: Theme.of(context).primaryColorDark, @@ -87,7 +87,7 @@ class GroupSettingsScreen extends StatelessWidget { Icons.add, color: Colors.white, ), - tooltip: localization.newGroup, + tooltip: localization!.newGroup, ) : null, ); diff --git a/lib/ui/group/group_screen_vm.dart b/lib/ui/group/group_screen_vm.dart index 34887caa7..68cf484f0 100644 --- a/lib/ui/group/group_screen_vm.dart +++ b/lib/ui/group/group_screen_vm.dart @@ -15,7 +15,7 @@ import 'package:invoiceninja_flutter/redux/group/group_selectors.dart'; import 'group_screen.dart'; class GroupScreenBuilder extends StatelessWidget { - const GroupScreenBuilder({Key key}) : super(key: key); + const GroupScreenBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -32,16 +32,16 @@ class GroupScreenBuilder extends StatelessWidget { class GroupScreenVM { GroupScreenVM({ - @required this.isInMultiselect, - @required this.groupList, - @required this.userCompany, - @required this.groupMap, + required this.isInMultiselect, + required this.groupList, + required this.userCompany, + required this.groupMap, }); final bool isInMultiselect; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List groupList; - final BuiltMap groupMap; + final BuiltMap groupMap; static GroupScreenVM fromStore(Store store) { final state = store.state; diff --git a/lib/ui/group/view/group_view.dart b/lib/ui/group/view/group_view.dart index 0d4f0b607..7bda296b7 100644 --- a/lib/ui/group/view/group_view.dart +++ b/lib/ui/group/view/group_view.dart @@ -20,9 +20,9 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class GroupView extends StatefulWidget { const GroupView({ - Key key, - @required this.viewModel, - @required this.isFilter, + Key? key, + required this.viewModel, + required this.isFilter, }) : super(key: key); final GroupViewVM viewModel; @@ -34,7 +34,7 @@ class GroupView extends StatefulWidget { class _GroupViewState extends State with SingleTickerProviderStateMixin { - TabController _controller; + TabController? _controller; @override void initState() { @@ -44,14 +44,14 @@ class _GroupViewState extends State @override void dispose() { - _controller.dispose(); + _controller!.dispose(); super.dispose(); } @override Widget build(BuildContext context) { final store = StoreProvider.of(context); - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; final state = viewModel.state; final group = viewModel.group; @@ -121,8 +121,8 @@ class _GroupViewState extends State class SettingsViewer extends StatelessWidget { const SettingsViewer({ - @required this.settings, - @required this.state, + required this.settings, + required this.state, }); final SettingsEntity settings; @@ -130,7 +130,7 @@ class SettingsViewer extends StatelessWidget { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final staticState = state.staticState; return FieldGrid({ @@ -266,7 +266,7 @@ class SettingsViewer extends StatelessWidget { localization.autoEmailInvoice: settings.autoEmailInvoice?.toString(), localization.autoConvertQuote: settings.autoConvertQuote?.toString(), localization.inclusiveTaxes: settings.enableInclusiveTaxes?.toString(), - localization.translations: settings.translations?.keys?.join(', '), + localization.translations: settings.translations?.keys.join(', '), localization.taskNumberPattern: settings.taskNumberPattern, localization.taskNumberCounter: settings.taskNumberCounter?.toString(), localization.expenseNumberPattern: settings.expenseNumberPattern, diff --git a/lib/ui/group/view/group_view_vm.dart b/lib/ui/group/view/group_view_vm.dart index 4eb7b1959..83d550bdf 100644 --- a/lib/ui/group/view/group_view_vm.dart +++ b/lib/ui/group/view/group_view_vm.dart @@ -26,7 +26,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class GroupViewScreen extends StatelessWidget { const GroupViewScreen({ - Key key, + Key? key, this.isFilter = false, }) : super(key: key); final bool isFilter; @@ -50,17 +50,17 @@ class GroupViewScreen extends StatelessWidget { class GroupViewVM { GroupViewVM({ - @required this.state, - @required this.group, - @required this.company, - @required this.onEntityAction, - @required this.onBackPressed, - @required this.onClientsPressed, - @required this.onRefreshed, - @required this.isSaving, - @required this.isLoading, - @required this.isDirty, - @required this.onUploadDocuments, + required this.state, + required this.group, + required this.company, + required this.onEntityAction, + required this.onBackPressed, + required this.onClientsPressed, + required this.onRefreshed, + required this.isSaving, + required this.isLoading, + required this.isDirty, + required this.onUploadDocuments, }); factory GroupViewVM.fromStore(Store store) { @@ -70,7 +70,7 @@ class GroupViewVM { Future _handleRefresh(BuildContext context) { final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(LoadGroup(completer: completer, groupId: group.id)); return completer.future; } @@ -105,7 +105,7 @@ class GroupViewVM { group: group, completer: completer)); completer.future.then((client) { - showToast(AppLocalization.of(context).uploadedDocument); + showToast(AppLocalization.of(context)!.uploadedDocument); }).catchError((Object error) { showDialog( context: context, @@ -119,12 +119,12 @@ class GroupViewVM { final AppState state; final GroupEntity group; - final CompanyEntity company; + final CompanyEntity? company; final Function(BuildContext, EntityAction) onEntityAction; final Function(BuildContext, [bool]) onClientsPressed; final Function onBackPressed; final Function(BuildContext) onRefreshed; - final Function(BuildContext, List, bool) onUploadDocuments; + final Function(BuildContext, List, bool?) onUploadDocuments; final bool isSaving; final bool isLoading; final bool isDirty; diff --git a/lib/ui/invoice/edit/invoice_edit.dart b/lib/ui/invoice/edit/invoice_edit.dart index 46e6b2260..660fd4b7a 100644 --- a/lib/ui/invoice/edit/invoice_edit.dart +++ b/lib/ui/invoice/edit/invoice_edit.dart @@ -17,8 +17,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class InvoiceEdit extends StatefulWidget { const InvoiceEdit({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final AbstractInvoiceEditVM viewModel; @@ -29,7 +29,7 @@ class InvoiceEdit extends StatefulWidget { class _InvoiceEditState extends State with SingleTickerProviderStateMixin { - TabController _controller; + TabController? _controller; static final GlobalKey _formKey = GlobalKey(debugLabel: '_invoiceEdit'); @@ -57,18 +57,18 @@ class _InvoiceEditState extends State super.didUpdateWidget(oldWidget); if (widget.viewModel.invoiceItemIndex != null) { - _controller.animateTo(kItemScreen); + _controller!.animateTo(kItemScreen); } } @override void dispose() { - _controller.dispose(); + _controller!.dispose(); super.dispose(); } - void _onSavePressed(BuildContext context, [EntityAction action]) { - final bool isValid = _formKey.currentState.validate(); + void _onSavePressed(BuildContext context, [EntityAction? action]) { + final bool isValid = _formKey.currentState!.validate(); /* setState(() { @@ -86,21 +86,21 @@ class _InvoiceEditState extends State ].contains(action)) { confirmCallback( context: context, - message: AppLocalization.of(context).lookup(action.toString()), + message: AppLocalization.of(context)!.lookup(action.toString()), callback: (_) { - widget.viewModel.onSavePressed(context, action); + widget.viewModel.onSavePressed!(context, action); }); } else { - widget.viewModel.onSavePressed(context, action); + widget.viewModel.onSavePressed!(context, action); } } @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; - final invoice = viewModel.invoice; - final state = viewModel.state; + final invoice = viewModel.invoice!; + final state = viewModel.state!; final client = state.clientState.get(invoice.clientId); final prefState = state.prefState; final isFullscreen = prefState.isEditorFullScreen(EntityType.invoice); @@ -109,7 +109,7 @@ class _InvoiceEditState extends State isFullscreen: isFullscreen, entity: invoice, title: invoice.isNew ? localization.newInvoice : localization.editInvoice, - onCancelPressed: (context) => viewModel.onCancelPressed(context), + onCancelPressed: (context) => viewModel.onCancelPressed!(context), onSavePressed: (context) => _onSavePressed(context), actions: invoice.getActions( userCompany: state.userCompany, @@ -173,16 +173,16 @@ class _InvoiceEditState extends State invoice: invoice, showTasksAndExpenses: true, excluded: invoice.lineItems - .where((item) => item.isTask || item.isExpense) - .map((item) => item.isTask - ? viewModel.state.taskState.map[item.taskId] - : viewModel.state.expenseState.map[item.expenseId]) + .where((item) => item!.isTask || item.isExpense) + .map((item) => item!.isTask + ? viewModel.state!.taskState.map[item.taskId] + : viewModel.state!.expenseState.map[item.expenseId]) .toList(), clientId: invoice.clientId, onItemsSelected: (items, [clientId, projectId]) { - viewModel.onItemsAdded(items, clientId, projectId); + viewModel.onItemsAdded!(items, clientId, projectId); if (!isFullscreen) { - _controller.animateTo(kItemScreen); + _controller!.animateTo(kItemScreen); } }, ); diff --git a/lib/ui/invoice/edit/invoice_edit_contacts.dart b/lib/ui/invoice/edit/invoice_edit_contacts.dart index c921ededd..32531b2aa 100644 --- a/lib/ui/invoice/edit/invoice_edit_contacts.dart +++ b/lib/ui/invoice/edit/invoice_edit_contacts.dart @@ -15,8 +15,8 @@ import '../../../redux/app/app_state.dart'; class InvoiceEditContacts extends StatelessWidget { const InvoiceEditContacts({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final EntityEditContactsVM viewModel; @@ -24,17 +24,17 @@ class InvoiceEditContacts extends StatelessWidget { @override Widget build(BuildContext context) { final localization = AppLocalization.of(context); - final invoice = viewModel.invoice; + final invoice = viewModel.invoice!; final client = viewModel.client; final vendor = viewModel.vendor; if (invoice.isPurchaseOrder) { - List vendorContacts; + List vendorContacts; if (vendor == null) { if (viewModel.state.prefState.isDesktop) { vendorContacts = []; } else { - return HelpText(localization.noClientSelected); + return HelpText(localization!.noClientSelected); } } else { vendorContacts = vendor.contacts.toList() @@ -48,9 +48,9 @@ class InvoiceEditContacts extends StatelessWidget { .compareTo(contactB.fullName.toLowerCase()); } */ - return contactA.fullName + return contactA!.fullName .toLowerCase() - .compareTo(contactB.fullName.toLowerCase()); + .compareTo(contactB!.fullName.toLowerCase()); }); } @@ -68,17 +68,17 @@ class InvoiceEditContacts extends StatelessWidget { }).toList(), ); } else { - List clientContacts; + List clientContacts; if (client == null) { if (viewModel.state.prefState.isDesktop) { clientContacts = []; } else { - return HelpText(localization.noClientSelected); + return HelpText(localization!.noClientSelected); } } else { clientContacts = client.contacts.toList() ..sort((contactA, contactB) { - if (contactA.sendEmail != contactB.sendEmail) { + if (contactA!.sendEmail != contactB!.sendEmail) { return contactA.sendEmail ? 1 : -1; } else { return contactA.fullName @@ -114,10 +114,10 @@ class _ClientContactListTile extends StatelessWidget { this.onTap, }); - final InvoiceEntity invoice; - final ClientContactEntity clientContact; - final InvitationEntity invitation; - final Function onTap; + final InvoiceEntity? invoice; + final ClientContactEntity? clientContact; + final InvitationEntity? invitation; + final Function? onTap; @override Widget build(BuildContext context) { @@ -125,12 +125,12 @@ class _ClientContactListTile extends StatelessWidget { final store = StoreProvider.of(context); final invitationButton = (invitation?.link ?? '').isNotEmpty ? IconButton( - tooltip: localization.copyLink, + tooltip: localization!.copyLink, icon: Icon(Icons.copy), onPressed: () { - Clipboard.setData(ClipboardData(text: invitation.link)); + Clipboard.setData(ClipboardData(text: invitation!.link)); showToast(localization.copiedToClipboard.replaceFirst( - ':value', invitation.link.substring(0, 40) + '...')); + ':value', invitation!.link.substring(0, 40) + '...')); }, ) : SizedBox(); @@ -145,7 +145,7 @@ class _ClientContactListTile extends StatelessWidget { Checkbox( activeColor: Theme.of(context).colorScheme.secondary, value: invitation != null, - onChanged: (value) => onTap(), + onChanged: (value) => onTap!(), ), if (store.state.prefState.showPdfPreviewSideBySide) invitationButton, @@ -157,14 +157,14 @@ class _ClientContactListTile extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - clientContact.fullName.isNotEmpty - ? clientContact.fullName - : AppLocalization.of(context).blankContact, + clientContact!.fullName.isNotEmpty + ? clientContact!.fullName + : AppLocalization.of(context)!.blankContact, style: Theme.of(context).textTheme.titleMedium, ), - if (clientContact.email != null) + if (clientContact!.email != null) Text( - clientContact.email, + clientContact!.email, style: Theme.of(context).textTheme.bodySmall, ), ], @@ -185,10 +185,10 @@ class _VendorContactListTile extends StatelessWidget { this.onTap, }); - final InvoiceEntity invoice; - final VendorContactEntity vendorContact; - final InvitationEntity invitation; - final Function onTap; + final InvoiceEntity? invoice; + final VendorContactEntity? vendorContact; + final InvitationEntity? invitation; + final Function? onTap; @override Widget build(BuildContext context) { @@ -196,12 +196,12 @@ class _VendorContactListTile extends StatelessWidget { final store = StoreProvider.of(context); final invitationButton = (invitation?.link ?? '').isNotEmpty ? IconButton( - tooltip: localization.copyLink, + tooltip: localization!.copyLink, icon: Icon(Icons.copy), onPressed: () { - Clipboard.setData(ClipboardData(text: invitation.link)); + Clipboard.setData(ClipboardData(text: invitation!.link)); showToast(localization.copiedToClipboard.replaceFirst( - ':value', invitation.link.substring(0, 40) + '...')); + ':value', invitation!.link.substring(0, 40) + '...')); }, ) : SizedBox(); @@ -216,7 +216,7 @@ class _VendorContactListTile extends StatelessWidget { Checkbox( activeColor: Theme.of(context).colorScheme.secondary, value: invitation != null, - onChanged: (value) => onTap(), + onChanged: (value) => onTap!(), ), if (store.state.prefState.showPdfPreviewSideBySide) invitationButton, @@ -228,14 +228,14 @@ class _VendorContactListTile extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - vendorContact.fullName.isNotEmpty - ? vendorContact.fullName - : AppLocalization.of(context).blankContact, + vendorContact!.fullName.isNotEmpty + ? vendorContact!.fullName + : AppLocalization.of(context)!.blankContact, style: Theme.of(context).textTheme.titleMedium, ), - if (vendorContact.email != null) + if (vendorContact!.email != null) Text( - vendorContact.email, + vendorContact!.email, style: Theme.of(context).textTheme.bodySmall, ), ], diff --git a/lib/ui/invoice/edit/invoice_edit_contacts_vm.dart b/lib/ui/invoice/edit/invoice_edit_contacts_vm.dart index db09308d3..20ff1220c 100644 --- a/lib/ui/invoice/edit/invoice_edit_contacts_vm.dart +++ b/lib/ui/invoice/edit/invoice_edit_contacts_vm.dart @@ -16,10 +16,10 @@ import 'package:invoiceninja_flutter/redux/recurring_invoice/recurring_invoice_a import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_contacts.dart'; class InvoiceEditContactsScreen extends StatelessWidget { - const InvoiceEditContactsScreen({Key key, @required this.entityType}) + const InvoiceEditContactsScreen({Key? key, required this.entityType}) : super(key: key); - final EntityType entityType; + final EntityType? entityType; @override Widget build(BuildContext context) { @@ -38,36 +38,36 @@ class InvoiceEditContactsScreen extends StatelessWidget { class EntityEditContactsVM { EntityEditContactsVM({ - @required this.state, - @required this.company, - @required this.invoice, - @required this.client, - @required this.vendor, - @required this.onAddClientContact, - @required this.onAddVendorContact, - @required this.onRemoveContact, + required this.state, + required this.company, + required this.invoice, + required this.client, + required this.vendor, + required this.onAddClientContact, + required this.onAddVendorContact, + required this.onRemoveContact, }); final AppState state; - final CompanyEntity company; - final InvoiceEntity invoice; - final ClientEntity client; - final VendorEntity vendor; - final Function(ClientContactEntity) onAddClientContact; - final Function(VendorContactEntity) onAddVendorContact; + final CompanyEntity? company; + final InvoiceEntity? invoice; + final ClientEntity? client; + final VendorEntity? vendor; + final Function(ClientContactEntity?) onAddClientContact; + final Function(VendorContactEntity?) onAddVendorContact; final Function(InvitationEntity) onRemoveContact; } class InvoiceEditContactsVM extends EntityEditContactsVM { InvoiceEditContactsVM({ - @required AppState state, - @required CompanyEntity company, - @required InvoiceEntity invoice, - @required ClientEntity client, - @required VendorEntity vendor, - @required Function(ClientContactEntity) onAddClientContact, - @required Function(VendorContactEntity) onAddVendorContact, - @required Function(InvitationEntity) onRemoveContact, + required AppState state, + required CompanyEntity? company, + required InvoiceEntity? invoice, + required ClientEntity? client, + required VendorEntity? vendor, + required Function(ClientContactEntity) onAddClientContact, + required Function(VendorContactEntity) onAddVendorContact, + required Function(InvitationEntity) onRemoveContact, }) : super( state: state, company: company, @@ -80,10 +80,10 @@ class InvoiceEditContactsVM extends EntityEditContactsVM { ); factory InvoiceEditContactsVM.fromStore( - Store store, EntityType entityType) { + Store store, EntityType? entityType) { final AppState state = store.state; - BaseEntity entity; + BaseEntity? entity; if (entityType == EntityType.invoice) { entity = state.invoiceUIState.editing; } else if (entityType == EntityType.quote) { @@ -102,15 +102,15 @@ class InvoiceEditContactsVM extends EntityEditContactsVM { return InvoiceEditContactsVM( state: state, company: state.company, - invoice: entity, + invoice: entity as InvoiceEntity?, client: state.clientState.map[(entity as BelongsToClient).clientId], vendor: state.vendorState.map[(entity as BelongsToVendor).vendorId], onAddClientContact: (ClientContactEntity contact) { - InvitationEntity invitation; + InvitationEntity? invitation; // prevent un-checking/checking a contact from creating a new invitation - if (entity.isOld) { + if (entity!.isOld) { final origEntity = - state.getEntityMap(entityType)[entity.id] as InvoiceEntity; + state.getEntityMap(entityType)![entity.id] as InvoiceEntity; invitation = origEntity.getInvitationForClientContact(contact); } @@ -132,11 +132,11 @@ class InvoiceEditContactsVM extends EntityEditContactsVM { } }, onAddVendorContact: (VendorContactEntity contact) { - InvitationEntity invitation; + InvitationEntity? invitation; // prevent un-checking/checking a contact from creating a new invitation - if (entity.isOld) { + if (entity!.isOld) { final origEntity = - state.getEntityMap(entityType)[entity.id] as InvoiceEntity; + state.getEntityMap(entityType)![entity.id] as InvoiceEntity; invitation = origEntity.getInvitationForVendorContact(contact); } @@ -149,7 +149,7 @@ class InvoiceEditContactsVM extends EntityEditContactsVM { } }, onRemoveContact: (InvitationEntity invitation) { - if (entity.entityType == EntityType.quote) { + if (entity!.entityType == EntityType.quote) { store.dispatch(RemoveQuoteContact(invitation: invitation)); } else if (entity.entityType == EntityType.credit) { store.dispatch(RemoveCreditContact(invitation: invitation)); diff --git a/lib/ui/invoice/edit/invoice_edit_desktop.dart b/lib/ui/invoice/edit/invoice_edit_desktop.dart index aaf4647bc..12d741e33 100644 --- a/lib/ui/invoice/edit/invoice_edit_desktop.dart +++ b/lib/ui/invoice/edit/invoice_edit_desktop.dart @@ -65,9 +65,9 @@ import 'package:invoiceninja_flutter/utils/web_stub.dart' class InvoiceEditDesktop extends StatefulWidget { const InvoiceEditDesktop({ - Key key, - @required this.viewModel, - @required this.entityViewModel, + Key? key, + required this.viewModel, + required this.entityViewModel, }) : super(key: key); final EntityEditDetailsVM viewModel; @@ -79,12 +79,12 @@ class InvoiceEditDesktop extends StatefulWidget { class InvoiceEditDesktopState extends State with TickerProviderStateMixin { - TabController _optionTabController; - TabController _tableTabController; + TabController? _optionTabController; + TabController? _tableTabController; bool _selectTasksTable = false; bool _showSaveDefault = false; - FocusNode _focusNode; + late FocusNode _focusNode; final _invoiceNumberController = TextEditingController(); final _poNumberController = TextEditingController(); @@ -110,9 +110,9 @@ class InvoiceEditDesktopState extends State void initState() { super.initState(); - final invoice = widget.viewModel.invoice; - final state = widget.viewModel.state; - final company = state.company; + final invoice = widget.viewModel.invoice!; + final state = widget.viewModel.state!; + final company = state.company!; _selectTasksTable = invoice.hasTasks && !invoice.hasProducts; _showSaveDefault = invoice.isInvoice || @@ -152,25 +152,25 @@ class InvoiceEditDesktopState extends State _controllers .forEach((dynamic controller) => controller.removeListener(_onChanged)); - final invoice = widget.viewModel.invoice; + final invoice = widget.viewModel.invoice!; _invoiceNumberController.text = invoice.number; _poNumberController.text = invoice.poNumber; _discountController.text = formatNumber(invoice.discount, context, - formatNumberType: FormatNumberType.inputMoney); + formatNumberType: FormatNumberType.inputMoney)!; _partialController.text = formatNumber(invoice.partial, context, - formatNumberType: FormatNumberType.inputMoney); + formatNumberType: FormatNumberType.inputMoney)!; _custom1Controller.text = invoice.customValue1; _custom2Controller.text = invoice.customValue2; _custom3Controller.text = invoice.customValue3; _custom4Controller.text = invoice.customValue4; _surcharge1Controller.text = formatNumber(invoice.customSurcharge1, context, - formatNumberType: FormatNumberType.inputMoney); + formatNumberType: FormatNumberType.inputMoney)!; _surcharge2Controller.text = formatNumber(invoice.customSurcharge2, context, - formatNumberType: FormatNumberType.inputMoney); + formatNumberType: FormatNumberType.inputMoney)!; _surcharge3Controller.text = formatNumber(invoice.customSurcharge3, context, - formatNumberType: FormatNumberType.inputMoney); + formatNumberType: FormatNumberType.inputMoney)!; _surcharge4Controller.text = formatNumber(invoice.customSurcharge4, context, - formatNumberType: FormatNumberType.inputMoney); + formatNumberType: FormatNumberType.inputMoney)!; _publicNotesController.text = invoice.publicNotes; _privateNotesController.text = invoice.privateNotes; _termsController.text = invoice.terms; @@ -185,8 +185,8 @@ class InvoiceEditDesktopState extends State @override void dispose() { _focusNode.dispose(); - _optionTabController.dispose(); - _tableTabController.dispose(); + _optionTabController!.dispose(); + _tableTabController!.dispose(); _controllers.forEach((controller) { controller.removeListener(_onChanged); controller.dispose(); @@ -196,7 +196,7 @@ class InvoiceEditDesktopState extends State } void _onChanged() { - final invoice = widget.viewModel.invoice.rebuild((b) => b + final invoice = widget.viewModel.invoice!.rebuild((b) => b ..number = _invoiceNumberController.text.trim() ..poNumber = _poNumberController.text.trim() ..discount = parseDouble(_discountController.text) @@ -215,38 +215,38 @@ class InvoiceEditDesktopState extends State ..footer = _footerController.text.trim()); if (invoice != widget.viewModel.invoice) { _debouncer.run(() { - widget.viewModel.onChanged(invoice); + widget.viewModel.onChanged!(invoice); }); } } void _onSavePressed(BuildContext context) { final viewModel = widget.entityViewModel; - viewModel.onSavePressed(context); + viewModel.onSavePressed!(context); } @override Widget build(BuildContext context) { final store = StoreProvider.of(context); - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; - final state = viewModel.state; - final invoice = viewModel.invoice; - final company = viewModel.company; - final client = state.clientState.get(invoice.clientId); + final state = viewModel.state!; + final invoice = viewModel.invoice!; + final company = viewModel.company!; + final client = state.clientState.get(invoice.clientId)!; final vendor = state.vendorState.get(invoice.vendorId); final entityType = invoice.entityType; final originalInvoice = - (state.getEntity(invoice.entityType, invoice.id) as InvoiceEntity) ?? + (state.getEntity(invoice.entityType, invoice.id) as InvoiceEntity?) ?? invoice; final countProducts = invoice.lineItems .where((item) => - !item.isEmpty && item.typeId != InvoiceItemEntity.TYPE_TASK) + !item!.isEmpty && item.typeId != InvoiceItemEntity.TYPE_TASK) .length; final countTasks = invoice.lineItems .where((item) => - !item.isEmpty && item.typeId == InvoiceItemEntity.TYPE_TASK) + !item!.isEmpty && item.typeId == InvoiceItemEntity.TYPE_TASK) .length; final showTasksTable = @@ -257,7 +257,7 @@ class InvoiceEditDesktopState extends State final terms = entityType == EntityType.quote ? settings.defaultValidUntil : settings.defaultPaymentTerms; - String termsString; + String? termsString; if ((terms ?? '').isNotEmpty) { termsString = '${localization.net} $terms'; } @@ -292,11 +292,11 @@ class InvoiceEditDesktopState extends State vendorId: invoice.vendorId, vendorState: state.vendorState, onSelected: (vendor) { - viewModel.onVendorChanged( - context, invoice, vendor); + viewModel.onVendorChanged!( + context, invoice, vendor as VendorEntity); }, onAddPressed: (completer) => viewModel - .onAddVendorPressed(context, completer), + .onAddVendorPressed!(context, completer), ) else ClientPicker( @@ -304,21 +304,21 @@ class InvoiceEditDesktopState extends State clientId: invoice.clientId, clientState: state.clientState, onSelected: (client) { - viewModel.onClientChanged( - context, invoice, client); + viewModel.onClientChanged!( + context, invoice, client as ClientEntity?); }, onAddPressed: (completer) => viewModel - .onAddClientPressed(context, completer), + .onAddClientPressed!(context, completer), ) else InkWell( onLongPress: () => editEntity( entity: invoice.isPurchaseOrder - ? vendor + ? vendor! : client), onTap: () => viewEntity( entity: invoice.isPurchaseOrder - ? vendor + ? vendor! : client), child: ConstrainedBox( constraints: BoxConstraints( @@ -332,7 +332,7 @@ class InvoiceEditDesktopState extends State ? vendor : client, context) - .title(), + .title()!, style: Theme.of(context).textTheme.titleLarge, maxLines: 2, @@ -364,14 +364,14 @@ class InvoiceEditDesktopState extends State labelText: localization.frequency, value: invoice.frequencyId, onChanged: (dynamic value) { - viewModel.onChanged(invoice + viewModel.onChanged!(invoice .rebuild((b) => b..frequencyId = value)); }, items: kFrequencies.entries .map((entry) => DropdownMenuItem( value: entry.key, child: Text( - localization.lookup(entry.value)), + localization.lookup(entry.value)!), )) .toList()), DatePicker( @@ -379,7 +379,7 @@ class InvoiceEditDesktopState extends State ? localization.nextSendDate : localization.startDate, onSelected: (date, _) { - viewModel.onChanged(invoice + viewModel.onChanged!(invoice .rebuild((b) => b..nextSendDate = date)); }, selectedDate: invoice.nextSendDate, @@ -389,7 +389,7 @@ class InvoiceEditDesktopState extends State labelText: localization.remainingCycles, value: invoice.remainingCycles, blankValue: null, - onChanged: (dynamic value) => viewModel.onChanged( + onChanged: (dynamic value) => viewModel.onChanged!( invoice.rebuild( (b) => b..remainingCycles = value)), items: [ @@ -409,7 +409,7 @@ class InvoiceEditDesktopState extends State labelText: localization.dueDate, value: invoice.dueDateDays ?? '', onChanged: (dynamic value) { - viewModel.onChanged(invoice + viewModel.onChanged!(invoice .rebuild((b) => b..dueDateDays = value)); }, items: [ @@ -418,7 +418,7 @@ class InvoiceEditDesktopState extends State value: 'terms', ), DropdownMenuItem( - child: Text(localization.dueOnReceipt), + child: Text(localization.dueOnReceipt!), value: 'on_receipt', ), ...List.generate(31, (i) => i + 1) @@ -439,7 +439,7 @@ class InvoiceEditDesktopState extends State ] else ...[ DatePicker( validator: (String val) => val.trim().isEmpty - ? AppLocalization.of(context) + ? AppLocalization.of(context)! .pleaseSelectADate : null, labelText: entityType == EntityType.purchaseOrder @@ -451,7 +451,7 @@ class InvoiceEditDesktopState extends State : localization.invoiceDate, selectedDate: invoice.date, onSelected: (date, _) { - viewModel.onChanged( + viewModel.onChanged!( invoice.rebuild((b) => b..date = date)); }, ), @@ -464,7 +464,7 @@ class InvoiceEditDesktopState extends State selectedDate: invoice.dueDate, message: termsString, onSelected: (date, _) { - viewModel.onChanged( + viewModel.onChanged!( invoice.rebuild((b) => b..dueDate = date)); }, ), @@ -476,7 +476,7 @@ class InvoiceEditDesktopState extends State onSavePressed: _onSavePressed, validator: (String value) { final amount = - parseDouble(_partialController.text); + parseDouble(_partialController.text)!; final total = invoice.calculateTotal( precision: precisionForInvoice(state, invoice)); @@ -493,7 +493,7 @@ class InvoiceEditDesktopState extends State labelText: localization.partialDueDate, selectedDate: invoice.partialDueDate, onSelected: (date, _) { - viewModel.onChanged(invoice.rebuild( + viewModel.onChanged!(invoice.rebuild( (b) => b..partialDueDate = date)); }, ), @@ -533,7 +533,7 @@ class InvoiceEditDesktopState extends State validator: (String val) => val.trim().isEmpty && invoice.isOld && originalInvoice.number.isNotEmpty - ? AppLocalization.of(context) + ? AppLocalization.of(context)! .pleaseEnterAnInvoiceNumber : null, keyboardType: TextInputType.text, @@ -550,7 +550,7 @@ class InvoiceEditDesktopState extends State controller: _discountController, value: invoice.discount, isAmountDiscount: invoice.isAmountDiscount, - onTypeChanged: (value) => viewModel.onChanged( + onTypeChanged: (value) => viewModel.onChanged!( invoice.rebuild( (b) => b..isAmountDiscount = value)), ), @@ -568,9 +568,9 @@ class InvoiceEditDesktopState extends State SettingsEntity.AUTO_BILL_OFF, ] .map((type) => - Text(localization.lookup(type))) + Text(localization.lookup(type)!)) .toList(), - onChanged: (dynamic value) => viewModel.onChanged( + onChanged: (dynamic value) => viewModel.onChanged!( invoice.rebuild((b) => b..autoBill = value)), items: [ SettingsEntity.AUTO_BILL_ALWAYS, @@ -718,14 +718,14 @@ class InvoiceEditDesktopState extends State dense: true, value: invoice.saveDefaultTerms, title: Text( - localization.saveAsDefaultTerms), + localization.saveAsDefaultTerms!), controlAffinity: ListTileControlAffinity.leading, activeColor: Theme.of(context) .colorScheme .secondary, onChanged: (value) { - viewModel.onChanged(invoice.rebuild( + viewModel.onChanged!(invoice.rebuild( (b) => b..saveDefaultTerms = value)); }, @@ -753,14 +753,14 @@ class InvoiceEditDesktopState extends State dense: true, value: invoice.saveDefaultFooter, title: Text( - localization.saveAsDefaultFooter), + localization.saveAsDefaultFooter!), controlAffinity: ListTileControlAffinity.leading, activeColor: Theme.of(context) .colorScheme .secondary, onChanged: (value) { - viewModel.onChanged(invoice.rebuild( + viewModel.onChanged!(invoice.rebuild( (b) => b ..saveDefaultFooter = value)); }, @@ -793,14 +793,14 @@ class InvoiceEditDesktopState extends State DesignPicker( initialValue: invoice.designId, onSelected: (value) { - viewModel.onChanged(invoice.rebuild( + viewModel.onChanged!(invoice.rebuild( (b) => b..designId = value.id)); }, ), UserPicker( userId: invoice.assignedUserId, onChanged: (userId) => viewModel - .onChanged(invoice.rebuild((b) => + .onChanged!(invoice.rebuild((b) => b..assignedUserId = userId)), ), if (company @@ -811,21 +811,21 @@ class InvoiceEditDesktopState extends State onChanged: (projectId) { final project = store .state.projectState - .get(projectId); + .get(projectId)!; final client = state.clientState .get(project.clientId); if (project.isOld && project.clientId != invoice.clientId) { - viewModel.onClientChanged( + viewModel.onClientChanged!( context, invoice.rebuild((b) => b..projectId = projectId), client, ); } else { - viewModel.onChanged( + viewModel.onChanged!( invoice.rebuild((b) => b ..projectId = projectId)); } @@ -836,7 +836,7 @@ class InvoiceEditDesktopState extends State clientId: invoice.clientId, clientState: state.clientState, onSelected: (client) { - viewModel.onChanged(invoice.rebuild( + viewModel.onChanged!(invoice.rebuild( (b) => b ..clientId = client?.id ?? '')); @@ -855,7 +855,7 @@ class InvoiceEditDesktopState extends State state.userState.map, state.staticState), onSelected: (vendor) => - viewModel.onChanged( + viewModel.onChanged!( invoice.rebuild((b) => b.vendorId = vendor?.id ?? ''), ), @@ -875,7 +875,7 @@ class InvoiceEditDesktopState extends State formatNumberType: FormatNumberType.inputMoney), onChanged: (value) => viewModel - .onChanged(invoice.rebuild((b) => b + .onChanged!(invoice.rebuild((b) => b ..exchangeRate = parseDouble(value))), keyboardType: @@ -905,7 +905,7 @@ class InvoiceEditDesktopState extends State value: invoice .usesInclusiveTaxes, onChanged: (value) { - viewModel.onChanged(invoice + viewModel.onChanged!(invoice .rebuild((b) => b ..usesInclusiveTaxes = value)); @@ -932,7 +932,7 @@ class InvoiceEditDesktopState extends State value: invoice.autoBillEnabled, onChanged: (value) { - viewModel.onChanged(invoice + viewModel.onChanged!(invoice .rebuild((b) => b ..autoBillEnabled = value)); @@ -955,7 +955,7 @@ class InvoiceEditDesktopState extends State originalInvoice.documents.toList(), onUploadDocument: (path, isPrivate) => widget.entityViewModel - .onUploadDocuments( + .onUploadDocuments!( context, path, isPrivate), onRenamedDocument: () => store.dispatch( LoadInvoice(invoiceId: invoice.id)), @@ -1031,10 +1031,10 @@ class InvoiceEditDesktopState extends State TaxRateDropdown( onSelected: (taxRate) { viewModel - .onChanged(invoice.applyTax(taxRate)); + .onChanged!(invoice.applyTax(taxRate)); }, labelText: localization.tax + - (company.settings.enableInclusiveTaxes + (company.settings.enableInclusiveTaxes! ? ' - ${localization.inclusive}' : ''), initialTaxName: invoice.taxName1, @@ -1044,11 +1044,11 @@ class InvoiceEditDesktopState extends State invoice.taxName2.isNotEmpty) TaxRateDropdown( onSelected: (taxRate) { - viewModel.onChanged(invoice + viewModel.onChanged!(invoice .applyTax(taxRate, isSecond: true)); }, labelText: localization.tax + - (company.settings.enableInclusiveTaxes + (company.settings.enableInclusiveTaxes! ? ' - ${localization.inclusive}' : ''), initialTaxName: invoice.taxName2, @@ -1062,11 +1062,11 @@ class InvoiceEditDesktopState extends State .applyTax(taxRate, isThird: true); print( '## UPDATED\nRate 3: ${updatedInvoice.taxName3} => ${updatedInvoice.taxRate3}'); - viewModel.onChanged(invoice + viewModel.onChanged!(invoice .applyTax(taxRate, isThird: true)); }, labelText: localization.tax + - (company.settings.enableInclusiveTaxes + (company.settings.enableInclusiveTaxes! ? ' - ${localization.inclusive}' : ''), initialTaxName: invoice.taxName3, @@ -1131,7 +1131,7 @@ class InvoiceEditDesktopState extends State padding: const EdgeInsets.only(left: 10, right: 16), child: AppButton( - label: localization.taxDetails.toUpperCase(), + label: localization.taxDetails!.toUpperCase(), onPressed: invoice.hasClient ? () { showDialog( @@ -1175,7 +1175,7 @@ class InvoiceEditDesktopState extends State } class _PdfPreview extends StatefulWidget { - const _PdfPreview({Key key, @required this.invoice}) : super(key: key); + const _PdfPreview({Key? key, required this.invoice}) : super(key: key); final InvoiceEntity invoice; @@ -1189,8 +1189,8 @@ class __PdfPreviewState extends State<_PdfPreview> { int _pageCount = 1; int _currentPage = 1; - String _pdfString; - http.Response _response; + String? _pdfString; + http.Response? _response; bool _isLoading = false; bool _pendingLoad = false; @@ -1256,7 +1256,7 @@ class __PdfPreviewState extends State<_PdfPreview> { url += '/purchase_order'; } - url += '?entity=${invoice.entityType.snakeCase}'; + url += '?entity=${invoice.entityType!.snakeCase}'; if (invoice.isOld) { url += '&entity_id=${invoice.id}'; @@ -1317,7 +1317,7 @@ class __PdfPreviewState extends State<_PdfPreview> { children: [ AppButton( width: 180, - label: localization.previousPage, + label: localization!.previousPage, iconData: MdiIcons.pagePrevious, onPressed: _currentPage == 1 ? null @@ -1347,9 +1347,9 @@ class __PdfPreviewState extends State<_PdfPreview> { color: Colors.grey.shade300, ) : (kIsWeb && state.prefState.enableNativeBrowser) - ? HtmlElementView(viewType: _pdfString) + ? HtmlElementView(viewType: _pdfString!) : PdfPreview( - build: (format) => _response.bodyBytes, + build: (format) => _response!.bodyBytes, canChangeOrientation: false, canChangePageFormat: false, allowPrinting: false, diff --git a/lib/ui/invoice/edit/invoice_edit_details.dart b/lib/ui/invoice/edit/invoice_edit_details.dart index 15d2abedf..ed962de9a 100644 --- a/lib/ui/invoice/edit/invoice_edit_details.dart +++ b/lib/ui/invoice/edit/invoice_edit_details.dart @@ -34,8 +34,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class InvoiceEditDetails extends StatefulWidget { const InvoiceEditDetails({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, this.entityType = EntityType.invoice, }) : super(key: key); @@ -83,25 +83,25 @@ class InvoiceEditDetailsState extends State { _controllers .forEach((dynamic controller) => controller.removeListener(_onChanged)); - final invoice = widget.viewModel.invoice; + final invoice = widget.viewModel.invoice!; _invoiceNumberController.text = invoice.number; _poNumberController.text = invoice.poNumber; _discountController.text = formatNumber(invoice.discount, context, - formatNumberType: FormatNumberType.inputMoney); + formatNumberType: FormatNumberType.inputMoney)!; _partialController.text = formatNumber(invoice.partial, context, - formatNumberType: FormatNumberType.inputMoney); + formatNumberType: FormatNumberType.inputMoney)!; _custom1Controller.text = invoice.customValue1; _custom2Controller.text = invoice.customValue2; _custom3Controller.text = invoice.customValue3; _custom4Controller.text = invoice.customValue4; _surcharge1Controller.text = formatNumber(invoice.customSurcharge1, context, - formatNumberType: FormatNumberType.inputMoney); + formatNumberType: FormatNumberType.inputMoney)!; _surcharge2Controller.text = formatNumber(invoice.customSurcharge2, context, - formatNumberType: FormatNumberType.inputMoney); + formatNumberType: FormatNumberType.inputMoney)!; _surcharge3Controller.text = formatNumber(invoice.customSurcharge3, context, - formatNumberType: FormatNumberType.inputMoney); + formatNumberType: FormatNumberType.inputMoney)!; _surcharge4Controller.text = formatNumber(invoice.customSurcharge4, context, - formatNumberType: FormatNumberType.inputMoney); + formatNumberType: FormatNumberType.inputMoney)!; _controllers .forEach((dynamic controller) => controller.addListener(_onChanged)); @@ -119,7 +119,7 @@ class InvoiceEditDetailsState extends State { } void _onChanged() { - final invoice = widget.viewModel.invoice.rebuild((b) => b + final invoice = widget.viewModel.invoice!.rebuild((b) => b ..number = _invoiceNumberController.text.trim() ..poNumber = _poNumberController.text.trim() ..discount = parseDouble(_discountController.text) @@ -134,7 +134,7 @@ class InvoiceEditDetailsState extends State { ..customSurcharge4 = parseDouble(_surcharge4Controller.text)); if (invoice != widget.viewModel.invoice) { _debouncer.run(() { - widget.viewModel.onChanged(invoice); + widget.viewModel.onChanged!(invoice); }); } } @@ -142,20 +142,20 @@ class InvoiceEditDetailsState extends State { @override Widget build(BuildContext context) { final store = StoreProvider.of(context); - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; - final state = viewModel.state; - final invoice = viewModel.invoice; - final company = viewModel.company; + final state = viewModel.state!; + final invoice = viewModel.invoice!; + final company = viewModel.company!; final originalInvoice = - state.getEntity(invoice.entityType, invoice.id) as InvoiceEntity; + state.getEntity(invoice.entityType, invoice.id) as InvoiceEntity?; final client = state.clientState.get(invoice.clientId); final settings = getClientSettings(state, client); final terms = widget.entityType == EntityType.quote ? settings.defaultValidUntil : settings.defaultPaymentTerms; - String termsString; + String? termsString; if ((terms ?? '').isNotEmpty) { termsString = '${localization.net} $terms'; } @@ -172,18 +172,18 @@ class InvoiceEditDetailsState extends State { vendorId: invoice.vendorId, vendorState: state.vendorState, onSelected: (vendor) { - viewModel.onVendorChanged(context, invoice, vendor); + viewModel.onVendorChanged!(context, invoice, vendor as VendorEntity); }, onAddPressed: (completer) => - viewModel.onAddVendorPressed(context, completer), + viewModel.onAddVendorPressed!(context, completer), ) : ClientPicker( clientId: invoice.clientId, clientState: state.clientState, onSelected: (client) => - viewModel.onClientChanged(context, invoice, client), + viewModel.onClientChanged!(context, invoice, client as ClientEntity?), onAddPressed: (completer) => - viewModel.onAddClientPressed(context, completer), + viewModel.onAddClientPressed!(context, completer), ) : DecoratedFormField( controller: _invoiceNumberController, @@ -197,13 +197,13 @@ class InvoiceEditDetailsState extends State { keyboardType: TextInputType.text, validator: (String val) => val.trim().isEmpty && invoice.isOld && - originalInvoice.number.isNotEmpty - ? AppLocalization.of(context).pleaseEnterAnInvoiceNumber + originalInvoice!.number.isNotEmpty + ? AppLocalization.of(context)!.pleaseEnterAnInvoiceNumber : null, ), UserPicker( userId: invoice.assignedUserId, - onChanged: (userId) => viewModel.onChanged( + onChanged: (userId) => viewModel.onChanged!( invoice.rebuild((b) => b..assignedUserId = userId)), ), if (invoice.isRecurringInvoice) ...[ @@ -211,13 +211,13 @@ class InvoiceEditDetailsState extends State { labelText: localization.frequency, value: invoice.frequencyId, onChanged: (dynamic value) { - viewModel.onChanged( + viewModel.onChanged!( invoice.rebuild((b) => b..frequencyId = value)); }, items: kFrequencies.entries .map((entry) => DropdownMenuItem( value: entry.key, - child: Text(localization.lookup(entry.value)), + child: Text(localization.lookup(entry.value)!), )) .toList()), DatePicker( @@ -225,7 +225,7 @@ class InvoiceEditDetailsState extends State { ? localization.nextSendDate : localization.startDate, onSelected: (date, _) => viewModel - .onChanged(invoice.rebuild((b) => b..nextSendDate = date)), + .onChanged!(invoice.rebuild((b) => b..nextSendDate = date)), selectedDate: invoice.nextSendDate, firstDate: DateTime.now(), ), @@ -233,7 +233,7 @@ class InvoiceEditDetailsState extends State { labelText: localization.remainingCycles, value: invoice.remainingCycles, blankValue: null, - onChanged: (dynamic value) => viewModel.onChanged( + onChanged: (dynamic value) => viewModel.onChanged!( invoice.rebuild((b) => b..remainingCycles = value)), items: [ DropdownMenuItem( @@ -252,14 +252,14 @@ class InvoiceEditDetailsState extends State { labelText: localization.dueDate, value: invoice.dueDateDays ?? '', onChanged: (dynamic value) => viewModel - .onChanged(invoice.rebuild((b) => b..dueDateDays = value)), + .onChanged!(invoice.rebuild((b) => b..dueDateDays = value)), items: [ DropdownMenuItem( child: Text(localization.usePaymentTerms), value: 'terms', ), DropdownMenuItem( - child: Text(localization.dueOnReceipt), + child: Text(localization.dueOnReceipt!), value: 'on_receipt', ), ...List.generate(31, (i) => i + 1) @@ -278,7 +278,7 @@ class InvoiceEditDetailsState extends State { ] else ...[ DatePicker( validator: (String val) => val.trim().isEmpty - ? AppLocalization.of(context).pleaseSelectADate + ? AppLocalization.of(context)!.pleaseSelectADate : null, labelText: widget.entityType == EntityType.purchaseOrder ? localization.purchaseOrderDate @@ -289,7 +289,7 @@ class InvoiceEditDetailsState extends State { : localization.invoiceDate, selectedDate: invoice.date, onSelected: (date, _) { - viewModel.onChanged(invoice.rebuild((b) => b..date = date)); + viewModel.onChanged!(invoice.rebuild((b) => b..date = date)); }, ), DatePicker( @@ -301,7 +301,7 @@ class InvoiceEditDetailsState extends State { message: termsString, onSelected: (date, _) { viewModel - .onChanged(invoice.rebuild((b) => b..dueDate = date)); + .onChanged!(invoice.rebuild((b) => b..dueDate = date)); }, ), DecoratedFormField( @@ -310,7 +310,7 @@ class InvoiceEditDetailsState extends State { keyboardType: TextInputType.numberWithOptions( decimal: true, signed: true), validator: (String value) { - final amount = parseDouble(_partialController.text); + final amount = parseDouble(_partialController.text)!; final total = invoice.calculateTotal( precision: precisionForInvoice(state, invoice)); if (amount < 0 || (amount != 0 && amount > total)) { @@ -325,7 +325,7 @@ class InvoiceEditDetailsState extends State { labelText: localization.partialDueDate, selectedDate: invoice.partialDueDate, onSelected: (date, _) { - viewModel.onChanged( + viewModel.onChanged!( invoice.rebuild((b) => b..partialDueDate = date)); }, ), @@ -340,7 +340,7 @@ class InvoiceEditDetailsState extends State { controller: _discountController, value: invoice.discount, isAmountDiscount: invoice.isAmountDiscount, - onTypeChanged: (value) => viewModel.onChanged( + onTypeChanged: (value) => viewModel.onChanged!( invoice.rebuild((b) => b..isAmountDiscount = value)), ), if (invoice.isRecurringInvoice) @@ -355,10 +355,10 @@ class InvoiceEditDetailsState extends State { SettingsEntity.AUTO_BILL_OPT_IN, SettingsEntity.AUTO_BILL_OFF, ] - .map((type) => Text(localization.lookup(type))) + .map((type) => Text(localization.lookup(type)!)) .toList(), onChanged: (dynamic value) => viewModel - .onChanged(invoice.rebuild((b) => b..autoBill = value)), + .onChanged!(invoice.rebuild((b) => b..autoBill = value)), items: [ SettingsEntity.AUTO_BILL_ALWAYS, SettingsEntity.AUTO_BILL_OPT_OUT, @@ -422,9 +422,9 @@ class InvoiceEditDetailsState extends State { invoice.taxName1.isNotEmpty) TaxRateDropdown( onSelected: (taxRate) => - viewModel.onChanged(invoice.applyTax(taxRate)), + viewModel.onChanged!(invoice.applyTax(taxRate)), labelText: localization.tax + - (company.settings.enableInclusiveTaxes + (company.settings.enableInclusiveTaxes! ? ' - ${localization.inclusive}' : ''), initialTaxName: invoice.taxName1, @@ -434,9 +434,9 @@ class InvoiceEditDetailsState extends State { invoice.taxName2.isNotEmpty) TaxRateDropdown( onSelected: (taxRate) => viewModel - .onChanged(invoice.applyTax(taxRate, isSecond: true)), + .onChanged!(invoice.applyTax(taxRate, isSecond: true)), labelText: localization.tax + - (company.settings.enableInclusiveTaxes + (company.settings.enableInclusiveTaxes! ? ' - ${localization.inclusive}' : ''), initialTaxName: invoice.taxName2, @@ -446,9 +446,9 @@ class InvoiceEditDetailsState extends State { invoice.taxName3.isNotEmpty) TaxRateDropdown( onSelected: (taxRate) => viewModel - .onChanged(invoice.applyTax(taxRate, isThird: true)), + .onChanged!(invoice.applyTax(taxRate, isThird: true)), labelText: localization.tax + - (company.settings.enableInclusiveTaxes + (company.settings.enableInclusiveTaxes! ? ' - ${localization.inclusive}' : ''), initialTaxName: invoice.taxName3, @@ -457,24 +457,24 @@ class InvoiceEditDetailsState extends State { DesignPicker( initialValue: invoice.designId, onSelected: (value) => viewModel - .onChanged(invoice.rebuild((b) => b..designId = value?.id)), + .onChanged!(invoice.rebuild((b) => b..designId = value?.id)), ), if (company.isModuleEnabled(EntityType.project)) ProjectPicker( clientId: invoice.clientId, projectId: invoice.projectId, onChanged: (projectId) { - final project = state.projectState.get(projectId); + final project = state.projectState.get(projectId)!; final client = state.clientState.get(project.clientId); if (project.isOld && project.clientId != invoice.clientId) { - viewModel.onClientChanged( + viewModel.onClientChanged!( context, invoice.rebuild((b) => b..projectId = projectId), client, ); } else { - viewModel.onChanged( + viewModel.onChanged!( invoice.rebuild((b) => b..projectId = projectId)); } }, @@ -484,7 +484,7 @@ class InvoiceEditDetailsState extends State { clientId: invoice.clientId, clientState: state.clientState, onSelected: (client) { - viewModel.onChanged( + viewModel.onChanged!( invoice.rebuild((b) => b..clientId = client?.id ?? '')); }, ) @@ -498,7 +498,7 @@ class InvoiceEditDetailsState extends State { state.vendorState.list, state.userState.map, state.staticState), - onSelected: (vendor) => viewModel.onChanged( + onSelected: (vendor) => viewModel.onChanged!( invoice.rebuild((b) => b.vendorId = vendor.id), ), onCreateNew: (completer, name) { @@ -512,7 +512,7 @@ class InvoiceEditDetailsState extends State { label: localization.exchangeRate, initialValue: formatNumber(invoice.exchangeRate, context, formatNumberType: FormatNumberType.inputAmount), - onChanged: (value) => viewModel.onChanged( + onChanged: (value) => viewModel.onChanged!( invoice.rebuild((b) => b..exchangeRate = parseDouble(value))), keyboardType: TextInputType.numberWithOptions(decimal: true, signed: true), @@ -526,7 +526,7 @@ class InvoiceEditDetailsState extends State { dense: true, value: invoice.usesInclusiveTaxes, onChanged: (value) { - viewModel.onChanged( + viewModel.onChanged!( invoice.rebuild((b) => b..usesInclusiveTaxes = value)); }, ), @@ -540,7 +540,7 @@ class InvoiceEditDetailsState extends State { dense: true, value: invoice.autoBillEnabled, onChanged: (value) { - viewModel.onChanged( + viewModel.onChanged!( invoice.rebuild((b) => b..autoBillEnabled = value)); }, ), @@ -551,7 +551,7 @@ class InvoiceEditDetailsState extends State { Padding( padding: const EdgeInsets.only(left: 16, right: 16, bottom: 20), child: AppButton( - label: localization.taxDetails.toUpperCase(), + label: localization.taxDetails!.toUpperCase(), onPressed: invoice.hasClient ? () { showDialog( diff --git a/lib/ui/invoice/edit/invoice_edit_details_vm.dart b/lib/ui/invoice/edit/invoice_edit_details_vm.dart index 527abfef5..628b3653f 100644 --- a/lib/ui/invoice/edit/invoice_edit_details_vm.dart +++ b/lib/ui/invoice/edit/invoice_edit_details_vm.dart @@ -20,7 +20,7 @@ import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_desktop.dart'; import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_details.dart'; class InvoiceEditDetailsScreen extends StatelessWidget { - const InvoiceEditDetailsScreen({Key key, @required this.viewModel}) + const InvoiceEditDetailsScreen({Key? key, required this.viewModel}) : super(key: key); final AbstractInvoiceEditVM viewModel; @@ -32,11 +32,11 @@ class InvoiceEditDetailsScreen extends StatelessWidget { return InvoiceEditDetailsVM.fromStore(store); }, builder: (context, viewModel) { - if (viewModel.state.prefState.isEditorFullScreen(EntityType.invoice)) { + if (viewModel.state!.prefState.isEditorFullScreen(EntityType.invoice)) { return InvoiceEditDesktop( viewModel: viewModel, entityViewModel: this.viewModel, - key: ValueKey('__invoice_${viewModel.invoice.id}__'), + key: ValueKey('__invoice_${viewModel.invoice!.id}__'), ); } else { return InvoiceEditDetails( @@ -50,47 +50,47 @@ class InvoiceEditDetailsScreen extends StatelessWidget { class EntityEditDetailsVM { EntityEditDetailsVM({ - @required this.state, - @required this.company, - @required this.invoice, - @required this.onChanged, - @required this.onClientChanged, - @required this.onVendorChanged, - @required this.clientMap, - @required this.clientList, - @required this.onAddClientPressed, - @required this.onAddVendorPressed, + required this.state, + required this.company, + required this.invoice, + required this.onChanged, + required this.onClientChanged, + required this.onVendorChanged, + required this.clientMap, + required this.clientList, + required this.onAddClientPressed, + required this.onAddVendorPressed, }); - final AppState state; - final CompanyEntity company; - final InvoiceEntity invoice; - final Function(InvoiceEntity) onChanged; - final Function(BuildContext context, InvoiceEntity, ClientEntity) + final AppState? state; + final CompanyEntity? company; + final InvoiceEntity? invoice; + final Function(InvoiceEntity)? onChanged; + final Function(BuildContext context, InvoiceEntity, ClientEntity?)? onClientChanged; - final Function(BuildContext context, InvoiceEntity, VendorEntity) + final Function(BuildContext context, InvoiceEntity, VendorEntity)? onVendorChanged; - final BuiltMap clientMap; - final BuiltList clientList; - final Function(BuildContext context, Completer completer) + final BuiltMap? clientMap; + final BuiltList? clientList; + final Function(BuildContext context, Completer completer)? onAddClientPressed; - final Function(BuildContext context, Completer completer) + final Function(BuildContext context, Completer completer)? onAddVendorPressed; } class InvoiceEditDetailsVM extends EntityEditDetailsVM { InvoiceEditDetailsVM({ - AppState state, - CompanyEntity company, - InvoiceEntity invoice, - Function(InvoiceEntity) onChanged, - Function(BuildContext, InvoiceEntity, ClientEntity) onClientChanged, - Function(BuildContext, InvoiceEntity, VendorEntity) onVendorChanged, - BuiltMap clientMap, - BuiltList clientList, - Function(BuildContext context, Completer completer) + AppState? state, + CompanyEntity? company, + InvoiceEntity? invoice, + Function(InvoiceEntity)? onChanged, + Function(BuildContext, InvoiceEntity, ClientEntity)? onClientChanged, + Function(BuildContext, InvoiceEntity, VendorEntity)? onVendorChanged, + BuiltMap? clientMap, + BuiltList? clientList, + Function(BuildContext context, Completer completer)? onAddClientPressed, - Function(BuildContext context, Completer completer) + Function(BuildContext context, Completer completer)? onAddVendorPressed, }) : super( state: state, @@ -131,7 +131,7 @@ class InvoiceEditDetailsVM extends EntityEditDetailsVM { cancelCompleter: Completer() ..future.then((_) { store.dispatch(UpdateCurrentRoute(InvoiceEditScreen.route)); - })); + } as FutureOr<_> Function(Null))); completer.future.then((SelectableEntity client) { store.dispatch(UpdateCurrentRoute(InvoiceEditScreen.route)); }); diff --git a/lib/ui/invoice/edit/invoice_edit_footer.dart b/lib/ui/invoice/edit/invoice_edit_footer.dart index b26e6ed8d..28112128e 100644 --- a/lib/ui/invoice/edit/invoice_edit_footer.dart +++ b/lib/ui/invoice/edit/invoice_edit_footer.dart @@ -17,13 +17,13 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/platforms.dart'; class InvoiceEditFooter extends StatelessWidget { - const InvoiceEditFooter({@required this.invoice}); + const InvoiceEditFooter({required this.invoice}); final InvoiceEntity invoice; @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final store = StoreProvider.of(context); final state = store.state; final total = formatNumber( @@ -36,7 +36,7 @@ class InvoiceEditFooter extends StatelessWidget { state.prefState.useSidebarEditor[EntityType.invoice] ?? false; final showLayoutToggle = isDesktop(context); final title = - '${localization.lookup('${invoice.entityType.snakeCase}_total')} $total'; + '${localization.lookup('${invoice.entityType!.snakeCase}_total')} $total'; return BottomAppBar( elevation: 0, diff --git a/lib/ui/invoice/edit/invoice_edit_items.dart b/lib/ui/invoice/edit/invoice_edit_items.dart index a750aedfe..358cfcb9f 100644 --- a/lib/ui/invoice/edit/invoice_edit_items.dart +++ b/lib/ui/invoice/edit/invoice_edit_items.dart @@ -20,9 +20,9 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class InvoiceEditItems extends StatefulWidget { const InvoiceEditItems({ - Key key, - @required this.viewModel, - @required this.entityViewModel, + Key? key, + required this.viewModel, + required this.entityViewModel, }) : super(key: key); final EntityEditItemsVM viewModel; @@ -33,20 +33,20 @@ class InvoiceEditItems extends StatefulWidget { } class _InvoiceEditItemsState extends State { - int selectedItemIndex; + int? selectedItemIndex; - void _showInvoiceItemEditor(int lineItemIndex, BuildContext context) { + void _showInvoiceItemEditor(int? lineItemIndex, BuildContext context) { showDialog( context: context, builder: (BuildContext context) { final viewModel = widget.viewModel; - final invoice = viewModel.invoice; + final invoice = viewModel.invoice!; return ItemEditDetails( viewModel: viewModel, entityViewModel: widget.entityViewModel, key: ValueKey('__${lineItemIndex}__'), - invoiceItem: invoice.lineItems[lineItemIndex], + invoiceItem: invoice.lineItems[lineItemIndex!], index: lineItemIndex, ); }); @@ -56,7 +56,7 @@ class _InvoiceEditItemsState extends State { Widget build(BuildContext context) { final localization = AppLocalization.of(context); final viewModel = widget.viewModel; - final invoice = viewModel.invoice; + final invoice = viewModel.invoice!; final itemIndex = viewModel.invoiceItemIndex; final invoiceItem = @@ -65,14 +65,14 @@ class _InvoiceEditItemsState extends State { : null; if (invoiceItem != null && itemIndex != selectedItemIndex) { - viewModel.clearSelectedInvoiceItem(); + viewModel.clearSelectedInvoiceItem!(); WidgetsBinding.instance.addPostFrameCallback((duration) async { _showInvoiceItemEditor(itemIndex, context); }); } if (invoice.lineItems.isEmpty) { - return HelpText(localization.clickPlusToAddItem); + return HelpText(localization!.clickPlusToAddItem); } return ScrollableListView( @@ -90,15 +90,15 @@ class _InvoiceEditItemsState extends State { class ItemEditDetails extends StatefulWidget { const ItemEditDetails({ - Key key, - @required this.index, - @required this.invoiceItem, - @required this.viewModel, - @required this.entityViewModel, + Key? key, + required this.index, + required this.invoiceItem, + required this.viewModel, + required this.entityViewModel, }) : super(key: key); - final int index; - final InvoiceItemEntity invoiceItem; + final int? index; + final InvoiceItemEntity? invoiceItem; final EntityEditItemsVM viewModel; final AbstractInvoiceEditVM entityViewModel; @@ -117,10 +117,10 @@ class ItemEditDetailsState extends State { final _custom3Controller = TextEditingController(); final _custom4Controller = TextEditingController(); - TaxRateEntity _taxRate1; - TaxRateEntity _taxRate2; - TaxRateEntity _taxRate3; - String _taxCategoryId; + TaxRateEntity? _taxRate1; + TaxRateEntity? _taxRate2; + TaxRateEntity? _taxRate3; + String? _taxCategoryId; List _controllers = []; final _debouncer = Debouncer(); @@ -131,15 +131,15 @@ class ItemEditDetailsState extends State { return; } - final invoiceItem = widget.invoiceItem; + final invoiceItem = widget.invoiceItem!; _productKeyController.text = invoiceItem.productKey; _notesController.text = invoiceItem.notes; _costController.text = formatNumber(invoiceItem.cost, context, - formatNumberType: FormatNumberType.inputMoney); + formatNumberType: FormatNumberType.inputMoney)!; _qtyController.text = formatNumber(invoiceItem.quantity, context, - formatNumberType: FormatNumberType.inputAmount); + formatNumberType: FormatNumberType.inputAmount)!; _discountController.text = formatNumber(invoiceItem.discount, context, - formatNumberType: FormatNumberType.inputMoney); + formatNumberType: FormatNumberType.inputMoney)!; _custom1Controller.text = invoiceItem.customValue1; _custom2Controller.text = invoiceItem.customValue2; _custom3Controller.text = invoiceItem.customValue3; @@ -188,9 +188,9 @@ class ItemEditDetailsState extends State { } void _onChanged() { - final company = widget.viewModel.company; + final company = widget.viewModel.company!; - var invoiceItem = widget.invoiceItem.rebuild((b) => b + var invoiceItem = widget.invoiceItem!.rebuild((b) => b ..productKey = _productKeyController.text.trim() ..notes = _notesController.text ..cost = parseDouble(_costController.text) @@ -219,15 +219,15 @@ class ItemEditDetailsState extends State { } if (invoiceItem != widget.invoiceItem) { - widget.viewModel.onChangedInvoiceItem(invoiceItem, widget.index); + widget.viewModel.onChangedInvoiceItem!(invoiceItem, widget.index); } } @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; - final company = viewModel.company; + final company = viewModel.company!; return AlertDialog( actions: [ @@ -236,14 +236,14 @@ class ItemEditDetailsState extends State { onPressed: () => confirmCallback( context: context, callback: (_) { - widget.viewModel.onRemoveInvoiceItemPressed(widget.index); + widget.viewModel.onRemoveInvoiceItemPressed!(widget.index); Navigator.of(context).pop(); }), ), TextButton( child: Text(localization.done.toUpperCase()), onPressed: () { - viewModel.clearSelectedInvoiceItem(); + viewModel.clearSelectedInvoiceItem!(); Navigator.of(context).pop(); }, ) @@ -265,7 +265,7 @@ class ItemEditDetailsState extends State { ), CustomField( controller: _custom1Controller, - field: widget.invoiceItem.isTask + field: widget.invoiceItem!.isTask ? CustomFieldType.task1 : CustomFieldType.product1, onSavePressed: widget.entityViewModel.onSavePressed, @@ -273,7 +273,7 @@ class ItemEditDetailsState extends State { ), CustomField( controller: _custom2Controller, - field: widget.invoiceItem.isTask + field: widget.invoiceItem!.isTask ? CustomFieldType.task2 : CustomFieldType.product2, onSavePressed: widget.entityViewModel.onSavePressed, @@ -281,7 +281,7 @@ class ItemEditDetailsState extends State { ), CustomField( controller: _custom3Controller, - field: widget.invoiceItem.isTask + field: widget.invoiceItem!.isTask ? CustomFieldType.task3 : CustomFieldType.product3, onSavePressed: widget.entityViewModel.onSavePressed, @@ -289,7 +289,7 @@ class ItemEditDetailsState extends State { ), CustomField( controller: _custom4Controller, - field: widget.invoiceItem.isTask + field: widget.invoiceItem!.isTask ? CustomFieldType.task4 : CustomFieldType.product4, onSavePressed: widget.entityViewModel.onSavePressed, @@ -334,13 +334,13 @@ class ItemEditDetailsState extends State { .map((key) => DropdownMenuItem( child: Text(localization.lookup( kTaxCategories[key], - )), + )!), value: key, )) .toList()), if (!company.calculateTaxes || _taxCategoryId == kTaxCategoryOverrideTax) ...[ - if (company.enableFirstItemTaxRate || _taxRate1.name.isNotEmpty) + if (company.enableFirstItemTaxRate || _taxRate1!.name.isNotEmpty) TaxRateDropdown( onSelected: (taxRate) { setState(() { @@ -349,13 +349,13 @@ class ItemEditDetailsState extends State { }); }, labelText: localization.tax + - (company.settings.enableInclusiveTaxes + (company.settings.enableInclusiveTaxes! ? ' - ${localization.inclusive}' : ''), - initialTaxName: _taxRate1.name, - initialTaxRate: _taxRate1.rate, + initialTaxName: _taxRate1!.name, + initialTaxRate: _taxRate1!.rate, ), - if (company.enableSecondItemTaxRate || _taxRate2.name.isNotEmpty) + if (company.enableSecondItemTaxRate || _taxRate2!.name.isNotEmpty) TaxRateDropdown( onSelected: (taxRate) { setState(() { @@ -364,13 +364,13 @@ class ItemEditDetailsState extends State { }); }, labelText: localization.tax + - (company.settings.enableInclusiveTaxes + (company.settings.enableInclusiveTaxes! ? ' - ${localization.inclusive}' : ''), - initialTaxName: _taxRate2.name, - initialTaxRate: _taxRate2.rate, + initialTaxName: _taxRate2!.name, + initialTaxRate: _taxRate2!.rate, ), - if (company.enableThirdItemTaxRate || _taxRate3.name.isNotEmpty) + if (company.enableThirdItemTaxRate || _taxRate3!.name.isNotEmpty) TaxRateDropdown( onSelected: (taxRate) { setState(() { @@ -379,11 +379,11 @@ class ItemEditDetailsState extends State { }); }, labelText: localization.tax + - (company.settings.enableInclusiveTaxes + (company.settings.enableInclusiveTaxes! ? ' - ${localization.inclusive}' : ''), - initialTaxName: _taxRate3.name, - initialTaxRate: _taxRate3.rate, + initialTaxName: _taxRate3!.name, + initialTaxRate: _taxRate3!.rate, ), ], ], diff --git a/lib/ui/invoice/edit/invoice_edit_items_desktop.dart b/lib/ui/invoice/edit/invoice_edit_items_desktop.dart index 20bbc9555..88d67f34f 100644 --- a/lib/ui/invoice/edit/invoice_edit_items_desktop.dart +++ b/lib/ui/invoice/edit/invoice_edit_items_desktop.dart @@ -31,9 +31,9 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class InvoiceEditItemsDesktop extends StatefulWidget { const InvoiceEditItemsDesktop({ - @required this.viewModel, - @required this.entityViewModel, - @required this.isTasks, + required this.viewModel, + required this.entityViewModel, + required this.isTasks, }); final EntityEditItemsVM viewModel; @@ -61,9 +61,9 @@ class _InvoiceEditItemsDesktopState extends State { static const COLUMN_DISCOUNT = 'discount'; final _debouncer = Debouncer(); - TextEditingController _textEditingController; + TextEditingController? _textEditingController; bool _isReordering = false; - int _updatedAt; + int? _updatedAt; int _autocompleteFocusIndex = -1; final _columns = []; @@ -76,23 +76,23 @@ class _InvoiceEditItemsDesktopState extends State { void _updateColumns() { final viewModel = widget.viewModel; - final lineItems = viewModel.invoice.lineItems; - final state = viewModel.state; - final company = state.company; + final lineItems = viewModel.invoice!.lineItems; + final state = viewModel.state!; + final company = state.company!; final includedLineItems = lineItems.where((lineItem) { - return (lineItem.typeId == InvoiceItemEntity.TYPE_TASK && + return (lineItem!.typeId == InvoiceItemEntity.TYPE_TASK && widget.isTasks) || (lineItem.typeId != InvoiceItemEntity.TYPE_TASK && !widget.isTasks) || lineItem.isEmpty; }).toList(); final hasTax1 = company.enableFirstItemTaxRate || - includedLineItems.any((item) => item.taxName1.isNotEmpty); + includedLineItems.any((item) => item!.taxName1.isNotEmpty); final hasTax2 = company.enableSecondItemTaxRate || - includedLineItems.any((item) => item.taxName2.isNotEmpty); + includedLineItems.any((item) => item!.taxName2.isNotEmpty); final hasTax3 = company.enableThirdItemTaxRate || - includedLineItems.any((item) => item.taxName3.isNotEmpty); + includedLineItems.any((item) => item!.taxName3.isNotEmpty); final hasAnyTax = hasTax1 || hasTax2 || hasTax3; final customField1 = @@ -256,17 +256,17 @@ class _InvoiceEditItemsDesktopState extends State { bool debounce = true, }) { final viewModel = widget.viewModel; - final lineItems = viewModel.invoice.lineItems; + final lineItems = viewModel.invoice!.lineItems; if (index == lineItems.length) { - viewModel.onChangedInvoiceItem(lineItem, index); + viewModel.onChangedInvoiceItem!(lineItem, index); } else if (lineItem != lineItems[index]) { if (debounce) { _debouncer.run(() { - viewModel.onChangedInvoiceItem(lineItem, index); + viewModel.onChangedInvoiceItem!(lineItem, index); }); } else { - viewModel.onChangedInvoiceItem(lineItem, index); + viewModel.onChangedInvoiceItem!(lineItem, index); } } } @@ -282,16 +282,16 @@ class _InvoiceEditItemsDesktopState extends State { final localization = AppLocalization.of(context); final theme = Theme.of(context); final viewModel = widget.viewModel; - final state = viewModel.state; - final company = state.company; + final state = viewModel.state!; + final company = state.company!; - final invoice = viewModel.invoice; - final client = state.clientState.get(invoice.clientId); + final invoice = viewModel.invoice!; + final client = state.clientState.get(invoice.clientId)!; final precision = state.staticState.currencyMap[client.currencyId]?.precision ?? 2; final lineItems = invoice.lineItems.toList(); final includedLineItems = lineItems.where((lineItem) { - return (lineItem.typeId == InvoiceItemEntity.TYPE_TASK && + return (lineItem!.typeId == InvoiceItemEntity.TYPE_TASK && widget.isTasks) || (lineItem.typeId != InvoiceItemEntity.TYPE_TASK && !widget.isTasks) || lineItem.isEmpty; @@ -322,22 +322,22 @@ class _InvoiceEditItemsDesktopState extends State { for (var i = 0; i < _columns.length; i++) { final column = _columns[i]; - String label = ''; + String? label = ''; bool isNumeric = false; if (column == COLUMN_ITEM) { if (widget.isTasks) { - label = (translations['service'] ?? '').isNotEmpty - ? translations['service'] - : localization.service; + label = (translations!['service'] ?? '').isNotEmpty + ? translations['service']! + : localization!.service; } else { - label = (translations['item'] ?? '').isNotEmpty - ? translations['item'] - : localization.item; + label = (translations!['item'] ?? '').isNotEmpty + ? translations['item']! + : localization!.item; } } else if (column == COLUMN_DESCRIPTION) { - label = (translations['description'] ?? '').isNotEmpty - ? translations['description'] - : localization.description; + label = (translations!['description'] ?? '').isNotEmpty + ? translations['description']! + : localization!.description; } else if (column == COLUMN_CUSTOM1) { label = company.getCustomFieldLabel(customField1); } else if (column == COLUMN_CUSTOM2) { @@ -347,38 +347,38 @@ class _InvoiceEditItemsDesktopState extends State { } else if (column == COLUMN_CUSTOM4) { label = company.getCustomFieldLabel(customField4); } else if ([COLUMN_TAX1, COLUMN_TAX2, COLUMN_TAX3].contains(column)) { - label = localization.tax + - (company.settings.enableInclusiveTaxes + label = localization!.tax + + (company.settings.enableInclusiveTaxes! ? ' - ${localization.inclusive}' : ''); } else if (column == COLUMN_TAX_CATEGORY) { - label = localization.taxCategory; + label = localization!.taxCategory; } else if (column == COLUMN_QUANTITY) { if (widget.isTasks) { - label = (translations['hours'] ?? '').isNotEmpty - ? translations['hours'] - : localization.hours; + label = (translations!['hours'] ?? '').isNotEmpty + ? translations['hours']! + : localization!.hours; } else { - label = (translations['quantity'] ?? '').isNotEmpty - ? translations['quantity'] - : localization.quantity; + label = (translations!['quantity'] ?? '').isNotEmpty + ? translations['quantity']! + : localization!.quantity; } isNumeric = true; } else if (column == COLUMN_UNIT_COST) { if (widget.isTasks) { - label = (translations['rate'] ?? '').isNotEmpty - ? translations['rate'] - : localization.rate; + label = (translations!['rate'] ?? '').isNotEmpty + ? translations['rate']! + : localization!.rate; } else { - label = (translations['unit_cost'] ?? '').isNotEmpty - ? translations['unit_cost'] - : localization.unitCost; + label = (translations!['unit_cost'] ?? '').isNotEmpty + ? translations['unit_cost']! + : localization!.unitCost; } isNumeric = true; } else if (column == COLUMN_DISCOUNT) { - label = (translations['discount'] ?? '').isNotEmpty - ? translations['discount'] - : localization.discount; + label = (translations!['discount'] ?? '').isNotEmpty + ? translations['discount']! + : localization!.discount; isNumeric = true; } tableHeaderColumns.add(TableHeader( @@ -406,7 +406,7 @@ class _InvoiceEditItemsDesktopState extends State { .toList(), Expanded( child: TableHeader( - localization.lineTotal, + localization!.lineTotal, isNumeric: true, ), ), @@ -428,7 +428,7 @@ class _InvoiceEditItemsDesktopState extends State { buildDefaultDragHandles: false, itemCount: lineItems.length, itemBuilder: (context, index) { - final item = lineItems[index]; + final item = lineItems[index]!; if ((item.typeId == InvoiceItemEntity.TYPE_TASK && !widget.isTasks) || @@ -470,7 +470,7 @@ class _InvoiceEditItemsDesktopState extends State { return Text(item.taxName3 ?? ''); } else if (column == COLUMN_TAX_CATEGORY) { return Text(localization - .lookup(kTaxCategories[item.taxCategoryId])); + .lookup(kTaxCategories[item.taxCategoryId])!); } else if (column == COLUMN_UNIT_COST) { return Text( formatNumber( @@ -569,14 +569,14 @@ class _InvoiceEditItemsDesktopState extends State { newIndex--; } - viewModel.onMovedInvoiceItem(oldIndex, newIndex); + viewModel.onMovedInvoiceItem!(oldIndex, newIndex); }, ) ], ); } - if (lineItems.where((item) => item.isEmpty).isEmpty) { + if (lineItems.where((item) => item!.isEmpty).isEmpty) { lineItems.add(InvoiceItemEntity( quantity: company.defaultQuantity || !company.enableProductQuantity ? 1 @@ -585,7 +585,7 @@ class _InvoiceEditItemsDesktopState extends State { tableHeaderColumns.addAll([ TableHeader( - localization.lineTotal, + localization!.lineTotal, isNumeric: true, ), IconButton( @@ -593,7 +593,7 @@ class _InvoiceEditItemsDesktopState extends State { color: tableFontColor.isNotEmpty ? convertHexStringToColor(tableFontColor) : null, - onPressed: includedLineItems.where((item) => !item.isEmpty).length < 2 + onPressed: includedLineItems.where((item) => !item!.isEmpty).length < 2 ? null : () { setState(() => _isReordering = !_isReordering); @@ -622,14 +622,14 @@ class _InvoiceEditItemsDesktopState extends State { : BoxDecoration(), ), for (var index = 0; index < lineItems.length; index++) - if ((lineItems[index].typeId == InvoiceItemEntity.TYPE_TASK && + if ((lineItems[index]!.typeId == InvoiceItemEntity.TYPE_TASK && widget.isTasks) || - (lineItems[index].typeId != InvoiceItemEntity.TYPE_TASK && + (lineItems[index]!.typeId != InvoiceItemEntity.TYPE_TASK && !widget.isTasks) || - lineItems[index].isEmpty) + lineItems[index]!.isEmpty) TableRow( key: ValueKey( - '__line_item_${index}_${lineItems[index].createdAt}__'), + '__line_item_${index}_${lineItems[index]!.createdAt}__'), children: [ ..._columns.map((column) { if (column == COLUMN_ITEM) { @@ -646,7 +646,7 @@ class _InvoiceEditItemsDesktopState extends State { key: ValueKey('__line_item_${index}_name__'), textEditingController: _textEditingController, initialValue: TextEditingValue( - text: lineItems[index].productKey), + text: lineItems[index]!.productKey), optionsBuilder: (TextEditingValue textEditingValue) { final options = productIds @@ -656,7 +656,7 @@ class _InvoiceEditItemsDesktopState extends State { final filter = textEditingValue.text.toLowerCase(); final productKey = - product.productKey.toLowerCase(); + product!.productKey.toLowerCase(); if (company.showProductDetails && product.notes @@ -669,21 +669,21 @@ class _InvoiceEditItemsDesktopState extends State { }).toList(); if (options.length == 1 && - options[0].productKey.toLowerCase() == - lineItems[index] + options[0]!.productKey.toLowerCase() == + lineItems[index]! .productKey .toLowerCase()) { return []; } - return options; - }, + return options as FutureOr>; + } as FutureOr> Function(TextEditingValue), displayStringForOption: (product) => product.productKey, onSelected: (product) { final item = lineItems[index]; final client = - state.clientState.get(invoice.clientId); + state.clientState.get(invoice.clientId)!; final currency = state .staticState.currencyMap[client.currencyId]; @@ -705,7 +705,7 @@ class _InvoiceEditItemsDesktopState extends State { } final updatedItem = company.fillProducts - ? item.rebuild((b) => b + ? item!.rebuild((b) => b ..productKey = product.productKey ..notes = item.isTask ? item.notes @@ -717,7 +717,7 @@ class _InvoiceEditItemsDesktopState extends State { ..quantity = item.isTask || item.quantity != 0 ? item.quantity - : viewModel.state.company + : viewModel.state!.company! .defaultQuantity ? 1 : product.quantity @@ -756,7 +756,7 @@ class _InvoiceEditItemsDesktopState extends State { product.taxName3.isNotEmpty ? product.taxRate3 : item.taxRate3) - : item.rebuild((b) => + : item!.rebuild((b) => b..productKey = product.productKey); _onChanged(updatedItem, index, debounce: false); @@ -777,7 +777,7 @@ class _InvoiceEditItemsDesktopState extends State { }, onChanged: (value) { _onChanged( - lineItems[index].rebuild( + lineItems[index]!.rebuild( (b) => b..productKey = value), index); }, @@ -819,7 +819,7 @@ class _InvoiceEditItemsDesktopState extends State { child: EntityAutocompleteListTile( onTap: (entity) => - onSelected(entity), + onSelected(entity as ProductEntity), overrideSuggestedAmount: (entity) { final product = @@ -865,9 +865,9 @@ class _InvoiceEditItemsDesktopState extends State { key: ValueKey( '__line_item_${index}_description__'), autofocus: _autocompleteFocusIndex == index, - initialValue: lineItems[index].notes, + initialValue: lineItems[index]!.notes, onChanged: (value) => _onChanged( - lineItems[index] + lineItems[index]! .rebuild((b) => b..notes = value), index), ), @@ -882,10 +882,10 @@ class _InvoiceEditItemsDesktopState extends State { const EdgeInsets.only(right: kTableColumnGap), child: CustomField( field: customField1, - value: lineItems[index].customValue1, + value: lineItems[index]!.customValue1, hideFieldLabel: true, onChanged: (value) => _onChanged( - lineItems[index] + lineItems[index]! .rebuild((b) => b..customValue1 = value), index), onSavePressed: @@ -902,10 +902,10 @@ class _InvoiceEditItemsDesktopState extends State { const EdgeInsets.only(right: kTableColumnGap), child: CustomField( field: customField2, - value: lineItems[index].customValue2, + value: lineItems[index]!.customValue2, hideFieldLabel: true, onChanged: (value) => _onChanged( - lineItems[index] + lineItems[index]! .rebuild((b) => b..customValue2 = value), index), onSavePressed: @@ -922,10 +922,10 @@ class _InvoiceEditItemsDesktopState extends State { const EdgeInsets.only(right: kTableColumnGap), child: CustomField( field: customField3, - value: lineItems[index].customValue3, + value: lineItems[index]!.customValue3, hideFieldLabel: true, onChanged: (value) => _onChanged( - lineItems[index] + lineItems[index]! .rebuild((b) => b..customValue3 = value), index), onSavePressed: @@ -942,10 +942,10 @@ class _InvoiceEditItemsDesktopState extends State { const EdgeInsets.only(right: kTableColumnGap), child: CustomField( field: customField4, - value: lineItems[index].customValue4, + value: lineItems[index]!.customValue4, hideFieldLabel: true, onChanged: (value) => _onChanged( - lineItems[index] + lineItems[index]! .rebuild((b) => b..customValue4 = value), index), onSavePressed: @@ -954,7 +954,7 @@ class _InvoiceEditItemsDesktopState extends State { ), ); } else if (column == COLUMN_TAX_CATEGORY && - !lineItems[index].hasOverrideTax) { + !lineItems[index]!.hasOverrideTax) { return Focus( onFocusChange: (hasFocus) => _onFocusChange(), skipTraversal: true, @@ -963,16 +963,16 @@ class _InvoiceEditItemsDesktopState extends State { const EdgeInsets.only(right: kTableColumnGap), child: AppDropdownButton( labelText: '', - value: lineItems[index].taxCategoryId, + value: lineItems[index]!.taxCategoryId, onChanged: (dynamic value) => _onChanged( - lineItems[index].rebuild( + lineItems[index]!.rebuild( (b) => b..taxCategoryId = value), index), items: kTaxCategories.keys .map((key) => DropdownMenuItem( child: Text(localization.lookup( kTaxCategories[key], - )), + )!), value: key, )) .toList()), @@ -980,7 +980,7 @@ class _InvoiceEditItemsDesktopState extends State { ); } else if (column == COLUMN_TAX1 || (column == COLUMN_TAX_CATEGORY && - lineItems[index].hasOverrideTax)) { + lineItems[index]!.hasOverrideTax)) { Widget child = Focus( onFocusChange: (hasFocus) => _onFocusChange(), skipTraversal: true, @@ -989,27 +989,27 @@ class _InvoiceEditItemsDesktopState extends State { const EdgeInsets.only(right: kTableColumnGap), child: TaxRateDropdown( onSelected: (taxRate) => _onChanged( - lineItems[index].rebuild((b) => b + lineItems[index]!.rebuild((b) => b ..taxName1 = taxRate.name ..taxRate1 = taxRate.rate), index, debounce: false, ), labelText: null, - initialTaxName: lineItems[index].taxName1, - initialTaxRate: lineItems[index].taxRate1, + initialTaxName: lineItems[index]!.taxName1, + initialTaxRate: lineItems[index]!.taxRate1, ), ), ); - if (lineItems[index].hasOverrideTax) { + if (lineItems[index]!.hasOverrideTax) { child = Row( children: [ Expanded(child: child), IconButton( visualDensity: VisualDensity.compact, onPressed: () => _onChanged( - lineItems[index].rebuild((b) => b + lineItems[index]!.rebuild((b) => b ..taxName1 = '' ..taxRate1 = 0 ..taxCategoryId = kTaxCategoryPhysical), @@ -1029,15 +1029,15 @@ class _InvoiceEditItemsDesktopState extends State { const EdgeInsets.only(right: kTableColumnGap), child: TaxRateDropdown( onSelected: (taxRate) => _onChanged( - lineItems[index].rebuild((b) => b + lineItems[index]!.rebuild((b) => b ..taxName2 = taxRate.name ..taxRate2 = taxRate.rate), index, debounce: false, ), labelText: null, - initialTaxName: lineItems[index].taxName2, - initialTaxRate: lineItems[index].taxRate2, + initialTaxName: lineItems[index]!.taxName2, + initialTaxRate: lineItems[index]!.taxRate2, ), ), ); @@ -1050,15 +1050,15 @@ class _InvoiceEditItemsDesktopState extends State { const EdgeInsets.only(right: kTableColumnGap), child: TaxRateDropdown( onSelected: (taxRate) => _onChanged( - lineItems[index].rebuild((b) => b + lineItems[index]!.rebuild((b) => b ..taxName3 = taxRate.name ..taxRate3 = taxRate.rate), index, debounce: false, ), labelText: null, - initialTaxName: lineItems[index].taxName3, - initialTaxRate: lineItems[index].taxRate3, + initialTaxName: lineItems[index]!.taxName3, + initialTaxRate: lineItems[index]!.taxRate3, ), ), ); @@ -1073,7 +1073,7 @@ class _InvoiceEditItemsDesktopState extends State { key: ValueKey('__line_item_${index}_cost__'), textAlign: TextAlign.right, initialValue: formatNumber( - lineItems[index].cost, + lineItems[index]!.cost, context, formatNumberType: FormatNumberType.inputMoney, clientId: invoice.isPurchaseOrder @@ -1084,7 +1084,7 @@ class _InvoiceEditItemsDesktopState extends State { : null, ), onChanged: (value) => _onChanged( - lineItems[index].rebuild( + lineItems[index]!.rebuild( (b) => b..cost = parseDouble(value)), index, debounce: false, @@ -1107,7 +1107,7 @@ class _InvoiceEditItemsDesktopState extends State { key: ValueKey('__line_item_${index}_quantity__'), textAlign: TextAlign.right, initialValue: formatNumber( - lineItems[index].quantity, + lineItems[index]!.quantity, context, formatNumberType: FormatNumberType.inputAmount, clientId: invoice.isPurchaseOrder @@ -1118,7 +1118,7 @@ class _InvoiceEditItemsDesktopState extends State { : null, ), onChanged: (value) => _onChanged( - lineItems[index].rebuild( + lineItems[index]!.rebuild( (b) => b..quantity = parseDouble(value)), index, debounce: false, @@ -1141,7 +1141,7 @@ class _InvoiceEditItemsDesktopState extends State { key: ValueKey('__line_item_${index}_discount__'), textAlign: TextAlign.right, initialValue: formatNumber( - lineItems[index].discount, + lineItems[index]!.discount, context, formatNumberType: FormatNumberType.inputAmount, clientId: invoice.isPurchaseOrder @@ -1152,7 +1152,7 @@ class _InvoiceEditItemsDesktopState extends State { : null, ), onChanged: (value) => _onChanged( - lineItems[index].rebuild( + lineItems[index]!.rebuild( (b) => b..discount = parseDouble(value)), index), keyboardType: TextInputType.numberWithOptions( @@ -1168,11 +1168,11 @@ class _InvoiceEditItemsDesktopState extends State { padding: const EdgeInsets.only(right: kTableColumnGap), child: TextFormField( key: ValueKey( - '__total_${index}_${lineItems[index].total(invoice, precision)}_${invoice.clientId}__'), + '__total_${index}_${lineItems[index]!.total(invoice, precision)}_${invoice.clientId}__'), readOnly: true, enabled: false, initialValue: formatNumber( - lineItems[index].total(invoice, precision), + lineItems[index]!.total(invoice, precision), context, clientId: invoice.isPurchaseOrder ? null : invoice.clientId, @@ -1184,13 +1184,13 @@ class _InvoiceEditItemsDesktopState extends State { ), PopupMenuButton( icon: Icon(Icons.more_vert), - enabled: !lineItems[index].isEmpty, + enabled: !lineItems[index]!.isEmpty, itemBuilder: (BuildContext context) { final sectionIndex = includedLineItems.indexOf(lineItems[index]); final options = { if (widget.isTasks && - (lineItems[index].taskId ?? '').isNotEmpty) + (lineItems[index]!.taskId ?? '').isNotEmpty) localization.viewTask: MdiIcons.chevronDoubleRight, if (sectionIndex > 0) localization.moveTop: MdiIcons.chevronDoubleUp, @@ -1216,19 +1216,19 @@ class _InvoiceEditItemsDesktopState extends State { onSelected: (String action) { if (action == localization.viewTask) { viewEntityById( - entityId: lineItems[index].taskId, + entityId: lineItems[index]!.taskId, entityType: EntityType.task); } else if (action == localization.moveTop) { - viewModel.onMovedInvoiceItem(index, 0); + viewModel.onMovedInvoiceItem!(index, 0); } else if (action == localization.moveUp) { - viewModel.onMovedInvoiceItem(index, index - 1); + viewModel.onMovedInvoiceItem!(index, index - 1); } else if (action == localization.moveDown) { - viewModel.onMovedInvoiceItem(index, index + 1); + viewModel.onMovedInvoiceItem!(index, index + 1); } else if (action == localization.moveBottom) { - viewModel.onMovedInvoiceItem( + viewModel.onMovedInvoiceItem!( index, lineItems.length - 2); } else if (action == localization.remove) { - viewModel.onRemoveInvoiceItemPressed(index); + viewModel.onRemoveInvoiceItemPressed!(index); } _updateTable(); }, @@ -1247,7 +1247,7 @@ class TableHeader extends StatelessWidget { this.isFirst = false, }); - final String label; + final String? label; final bool isNumeric; final bool isFirst; @@ -1271,7 +1271,7 @@ class TableHeader extends StatelessWidget { left: tableHeaderColor.isNotEmpty && isFirst ? 4 : 0, ), child: Text( - label, + label!, textAlign: isNumeric ? TextAlign.right : TextAlign.left, style: TextStyle( color: tableFontColor.isNotEmpty diff --git a/lib/ui/invoice/edit/invoice_edit_items_vm.dart b/lib/ui/invoice/edit/invoice_edit_items_vm.dart index 9d9985d75..8f7fb5011 100644 --- a/lib/ui/invoice/edit/invoice_edit_items_vm.dart +++ b/lib/ui/invoice/edit/invoice_edit_items_vm.dart @@ -15,8 +15,8 @@ import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_vm.dart'; class InvoiceEditItemsScreen extends StatelessWidget { const InvoiceEditItemsScreen({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, this.isTasks = false, }) : super(key: key); @@ -30,7 +30,7 @@ class InvoiceEditItemsScreen extends StatelessWidget { return InvoiceEditItemsVM.fromStore(store, isTasks); }, builder: (context, viewModel) { - if (viewModel.state.prefState.isEditorFullScreen(EntityType.invoice)) { + if (viewModel.state!.prefState.isEditorFullScreen(EntityType.invoice)) { return InvoiceEditItemsDesktop( viewModel: viewModel, entityViewModel: this.viewModel, @@ -49,42 +49,42 @@ class InvoiceEditItemsScreen extends StatelessWidget { class EntityEditItemsVM { EntityEditItemsVM({ - @required this.state, - @required this.company, - @required this.invoice, - @required this.addLineItem, - @required this.deleteLineItem, - @required this.invoiceItemIndex, - @required this.onRemoveInvoiceItemPressed, - @required this.clearSelectedInvoiceItem, - @required this.onChangedInvoiceItem, - @required this.onMovedInvoiceItem, + required this.state, + required this.company, + required this.invoice, + required this.addLineItem, + required this.deleteLineItem, + required this.invoiceItemIndex, + required this.onRemoveInvoiceItemPressed, + required this.clearSelectedInvoiceItem, + required this.onChangedInvoiceItem, + required this.onMovedInvoiceItem, }); - final AppState state; - final CompanyEntity company; - final InvoiceEntity invoice; - final int invoiceItemIndex; - final Function addLineItem; - final Function deleteLineItem; - final Function(int) onRemoveInvoiceItemPressed; - final Function clearSelectedInvoiceItem; - final Function(InvoiceItemEntity, int) onChangedInvoiceItem; - final Function(int, int) onMovedInvoiceItem; + final AppState? state; + final CompanyEntity? company; + final InvoiceEntity? invoice; + final int? invoiceItemIndex; + final Function? addLineItem; + final Function? deleteLineItem; + final Function(int?)? onRemoveInvoiceItemPressed; + final Function? clearSelectedInvoiceItem; + final Function(InvoiceItemEntity, int?)? onChangedInvoiceItem; + final Function(int, int)? onMovedInvoiceItem; } class InvoiceEditItemsVM extends EntityEditItemsVM { InvoiceEditItemsVM({ - AppState state, - CompanyEntity company, - InvoiceEntity invoice, - int invoiceItemIndex, - Function addLineItem, - Function(int) deleteLineItem, - Function(int) onRemoveInvoiceItemPressed, - Function clearSelectedInvoiceItem, - Function(InvoiceItemEntity, int) onChangedInvoiceItem, - Function(int, int) onMovedInvoiceItem, + AppState? state, + CompanyEntity? company, + InvoiceEntity? invoice, + int? invoiceItemIndex, + Function? addLineItem, + Function(int)? deleteLineItem, + Function(int)? onRemoveInvoiceItemPressed, + Function? clearSelectedInvoiceItem, + Function(InvoiceItemEntity, int)? onChangedInvoiceItem, + Function(int, int)? onMovedInvoiceItem, }) : super( state: state, company: company, @@ -116,7 +116,7 @@ class InvoiceEditItemsVM extends EntityEditItemsVM { }, clearSelectedInvoiceItem: () => store.dispatch(EditInvoiceItem()), onChangedInvoiceItem: (invoiceItem, index) { - final invoice = store.state.invoiceUIState.editing; + final invoice = store.state.invoiceUIState.editing!; if (index == invoice.lineItems.length) { store.dispatch(AddInvoiceItem( invoiceItem: invoiceItem.rebuild((b) => b diff --git a/lib/ui/invoice/edit/invoice_edit_notes.dart b/lib/ui/invoice/edit/invoice_edit_notes.dart index 29d40910c..67d2d0540 100644 --- a/lib/ui/invoice/edit/invoice_edit_notes.dart +++ b/lib/ui/invoice/edit/invoice_edit_notes.dart @@ -14,8 +14,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class InvoiceEditNotes extends StatefulWidget { const InvoiceEditNotes({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final EntityEditNotesVM viewModel; @@ -45,7 +45,7 @@ class InvoiceEditNotesState extends State { _controllers .forEach((dynamic controller) => controller.removeListener(_onChanged)); - final invoice = widget.viewModel.invoice; + final invoice = widget.viewModel.invoice!; _publicNotesController.text = invoice.publicNotes; _privateNotesController.text = invoice.privateNotes; _termsController.text = invoice.terms; @@ -68,25 +68,25 @@ class InvoiceEditNotesState extends State { } void _onChanged() { - final invoice = widget.viewModel.invoice.rebuild((b) => b + final invoice = widget.viewModel.invoice!.rebuild((b) => b ..publicNotes = _publicNotesController.text.trim() ..privateNotes = _privateNotesController.text.trim() ..terms = _termsController.text.trim() ..footer = _footerController.text.trim()); if (invoice != widget.viewModel.invoice) { _debouncer.run(() { - widget.viewModel.onChanged(invoice); + widget.viewModel.onChanged!(invoice); }); } } @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; - final state = viewModel.state; - final invoice = viewModel.invoice; - final client = state.clientState.get(invoice.clientId); + final state = viewModel.state!; + final invoice = viewModel.invoice!; + final client = state.clientState.get(invoice.clientId)!; final settings = getClientSettings(state, client); return ScrollableListView( diff --git a/lib/ui/invoice/edit/invoice_edit_notes_vm.dart b/lib/ui/invoice/edit/invoice_edit_notes_vm.dart index e841460da..7620818fe 100644 --- a/lib/ui/invoice/edit/invoice_edit_notes_vm.dart +++ b/lib/ui/invoice/edit/invoice_edit_notes_vm.dart @@ -12,7 +12,7 @@ import 'package:invoiceninja_flutter/redux/invoice/invoice_actions.dart'; import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_notes.dart'; class InvoiceEditNotesScreen extends StatelessWidget { - const InvoiceEditNotesScreen({Key key}) : super(key: key); + const InvoiceEditNotesScreen({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -31,24 +31,24 @@ class InvoiceEditNotesScreen extends StatelessWidget { class EntityEditNotesVM { EntityEditNotesVM({ - @required this.state, - @required this.company, - @required this.invoice, - @required this.onChanged, + required this.state, + required this.company, + required this.invoice, + required this.onChanged, }); - final AppState state; - final CompanyEntity company; - final InvoiceEntity invoice; - final Function(InvoiceEntity) onChanged; + final AppState? state; + final CompanyEntity? company; + final InvoiceEntity? invoice; + final Function(InvoiceEntity)? onChanged; } class InvoiceEditNotesVM extends EntityEditNotesVM { InvoiceEditNotesVM({ - @required CompanyEntity company, - @required InvoiceEntity invoice, - @required Function(InvoiceEntity) onChanged, - @required AppState state, + required CompanyEntity? company, + required InvoiceEntity? invoice, + required Function(InvoiceEntity) onChanged, + required AppState state, }) : super( company: company, invoice: invoice, diff --git a/lib/ui/invoice/edit/invoice_edit_pdf.dart b/lib/ui/invoice/edit/invoice_edit_pdf.dart index e2ce715fb..c029e72f3 100644 --- a/lib/ui/invoice/edit/invoice_edit_pdf.dart +++ b/lib/ui/invoice/edit/invoice_edit_pdf.dart @@ -19,8 +19,8 @@ import 'package:invoiceninja_flutter/utils/web_stub.dart' class InvoiceEditPDF extends StatefulWidget { const InvoiceEditPDF({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final EntityEditPDFVM viewModel; @@ -31,15 +31,15 @@ class InvoiceEditPDF extends StatefulWidget { class InvoiceEditPDFState extends State { bool _isLoading = false; - String _pdfString; - http.Response _response; + String? _pdfString; + http.Response? _response; @override void didChangeDependencies() { super.didChangeDependencies(); final viewModel = widget.viewModel; - if (!viewModel.invoice.hasClient || _isLoading) { + if (!viewModel.invoice!.hasClient || _isLoading) { return; } @@ -47,7 +47,7 @@ class InvoiceEditPDFState extends State { _isLoading = true; }); - final invoice = viewModel.invoice; + final invoice = viewModel.invoice!; final state = viewModel.state; final credentials = state.credentials; final webClient = WebClient(); @@ -63,7 +63,7 @@ class InvoiceEditPDFState extends State { url += '/purchase_order'; } - url += '?entity=${invoice.entityType.snakeCase}'; + url += '?entity=${invoice.entityType!.snakeCase}'; if (invoice.isOld) { url += '&entity_id=${invoice.id}'; @@ -95,8 +95,8 @@ class InvoiceEditPDFState extends State { Widget build(BuildContext context) { final state = widget.viewModel.state; - if (!widget.viewModel.invoice.hasClient) { - return HelpText(AppLocalization.of(context).noClientSelected); + if (!widget.viewModel.invoice!.hasClient) { + return HelpText(AppLocalization.of(context)!.noClientSelected); } if (_response == null) { @@ -107,9 +107,9 @@ class InvoiceEditPDFState extends State { return Center( child: kIsWeb && state.prefState.enableNativeBrowser - ? HtmlElementView(viewType: _pdfString) + ? HtmlElementView(viewType: _pdfString!) : PdfPreview( - build: (format) => _response.bodyBytes, + build: (format) => _response!.bodyBytes, canChangeOrientation: false, canChangePageFormat: false, allowPrinting: false, diff --git a/lib/ui/invoice/edit/invoice_edit_pdf_vm.dart b/lib/ui/invoice/edit/invoice_edit_pdf_vm.dart index b9b1fbb11..cb07ee948 100644 --- a/lib/ui/invoice/edit/invoice_edit_pdf_vm.dart +++ b/lib/ui/invoice/edit/invoice_edit_pdf_vm.dart @@ -11,7 +11,7 @@ import 'package:invoiceninja_flutter/redux/app/app_state.dart'; import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_pdf.dart'; class InvoiceEditPDFScreen extends StatelessWidget { - const InvoiceEditPDFScreen({Key key}) : super(key: key); + const InvoiceEditPDFScreen({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -30,21 +30,21 @@ class InvoiceEditPDFScreen extends StatelessWidget { class EntityEditPDFVM { EntityEditPDFVM({ - @required this.state, - @required this.company, - @required this.invoice, + required this.state, + required this.company, + required this.invoice, }); final AppState state; - final CompanyEntity company; - final InvoiceEntity invoice; + final CompanyEntity? company; + final InvoiceEntity? invoice; } class InvoiceEditPDFVM extends EntityEditPDFVM { InvoiceEditPDFVM({ - @required CompanyEntity company, - @required InvoiceEntity invoice, - @required AppState state, + required CompanyEntity? company, + required InvoiceEntity? invoice, + required AppState state, }) : super( company: company, invoice: invoice, diff --git a/lib/ui/invoice/edit/invoice_edit_vm.dart b/lib/ui/invoice/edit/invoice_edit_vm.dart index 7d666ab61..218aec963 100644 --- a/lib/ui/invoice/edit/invoice_edit_vm.dart +++ b/lib/ui/invoice/edit/invoice_edit_vm.dart @@ -25,7 +25,7 @@ import 'package:invoiceninja_flutter/ui/invoice/view/invoice_view_vm.dart'; import 'package:invoiceninja_flutter/utils/completers.dart'; class InvoiceEditScreen extends StatelessWidget { - const InvoiceEditScreen({Key key}) : super(key: key); + const InvoiceEditScreen({Key? key}) : super(key: key); static const String route = '/invoice/edit'; @@ -38,7 +38,7 @@ class InvoiceEditScreen extends StatelessWidget { builder: (context, viewModel) { return InvoiceEdit( viewModel: viewModel, - key: ValueKey(viewModel.invoice.updatedAt), + key: ValueKey(viewModel.invoice!.updatedAt), ); }, ); @@ -47,42 +47,42 @@ class InvoiceEditScreen extends StatelessWidget { abstract class AbstractInvoiceEditVM { AbstractInvoiceEditVM({ - @required this.state, - @required this.company, - @required this.invoice, - @required this.invoiceItemIndex, - @required this.origInvoice, - @required this.onSavePressed, - @required this.onItemsAdded, - @required this.isSaving, - @required this.onCancelPressed, - @required this.onUploadDocuments, + required this.state, + required this.company, + required this.invoice, + required this.invoiceItemIndex, + required this.origInvoice, + required this.onSavePressed, + required this.onItemsAdded, + required this.isSaving, + required this.onCancelPressed, + required this.onUploadDocuments, }); - final AppState state; - final CompanyEntity company; - final InvoiceEntity invoice; - final int invoiceItemIndex; - final InvoiceEntity origInvoice; - final Function(BuildContext, [EntityAction]) onSavePressed; - final Function(List, String, String) onItemsAdded; - final bool isSaving; - final Function(BuildContext) onCancelPressed; - final Function(BuildContext, List, bool) onUploadDocuments; + final AppState? state; + final CompanyEntity? company; + final InvoiceEntity? invoice; + final int? invoiceItemIndex; + final InvoiceEntity? origInvoice; + final Function(BuildContext, [EntityAction?])? onSavePressed; + final Function(List, String?, String?)? onItemsAdded; + final bool? isSaving; + final Function(BuildContext)? onCancelPressed; + final Function(BuildContext, List, bool)? onUploadDocuments; } class InvoiceEditVM extends AbstractInvoiceEditVM { InvoiceEditVM({ - AppState state, - CompanyEntity company, - InvoiceEntity invoice, - int invoiceItemIndex, - InvoiceEntity origInvoice, - Function(BuildContext, [EntityAction]) onSavePressed, - Function(List, String, String) onItemsAdded, - bool isSaving, - Function(BuildContext) onCancelPressed, - Function(BuildContext, List, bool) onUploadDocuments, + AppState? state, + CompanyEntity? company, + InvoiceEntity? invoice, + int? invoiceItemIndex, + InvoiceEntity? origInvoice, + Function(BuildContext, [EntityAction])? onSavePressed, + Function(List, String, String)? onItemsAdded, + bool? isSaving, + Function(BuildContext)? onCancelPressed, + Function(BuildContext, List, bool?)? onUploadDocuments, }) : super( state: state, company: company, @@ -98,7 +98,7 @@ class InvoiceEditVM extends AbstractInvoiceEditVM { factory InvoiceEditVM.fromStore(Store store) { final state = store.state; - final invoice = state.invoiceUIState.editing; + final invoice = state.invoiceUIState.editing!; return InvoiceEditVM( state: state, @@ -107,16 +107,16 @@ class InvoiceEditVM extends AbstractInvoiceEditVM { invoice: invoice, invoiceItemIndex: state.invoiceUIState.editingItemIndex, origInvoice: store.state.invoiceState.map[invoice.id], - onSavePressed: (BuildContext context, [EntityAction action]) { + onSavePressed: (BuildContext context, [EntityAction? action]) { Debouncer.runOnComplete(() { - final invoice = store.state.invoiceUIState.editing; + final invoice = store.state.invoiceUIState.editing!; final localization = navigatorKey.localization; final navigator = navigatorKey.currentState; if (invoice.clientId.isEmpty) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { - return ErrorDialog(localization.pleaseSelectAClient); + return ErrorDialog(localization!.pleaseSelectAClient); }); return null; } @@ -124,23 +124,23 @@ class InvoiceEditVM extends AbstractInvoiceEditVM { final state = store.state; final clientId = invoice.clientId; for (int i = 0; i < invoice.lineItems.length; i++) { - final lineItem = invoice.lineItems[i]; - final task = state.taskState.get(lineItem.taskId); + final lineItem = invoice.lineItems[i]!; + final task = state.taskState.get(lineItem.taskId!)!; if ((task.clientId ?? '').isNotEmpty && task.clientId != clientId) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { - return ErrorDialog(localization.errorCrossClientTasks); + return ErrorDialog(localization!.errorCrossClientTasks); }); return null; } - final expense = state.expenseState.get(lineItem.expenseId); + final expense = state.expenseState.get(lineItem.expenseId!)!; if ((expense.clientId ?? '').isNotEmpty && expense.clientId != clientId) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { - return ErrorDialog(localization.errorCrossClientExpenses); + return ErrorDialog(localization!.errorCrossClientExpenses); }); return null; } @@ -161,15 +161,15 @@ class InvoiceEditVM extends AbstractInvoiceEditVM { )); return completer.future.then((savedInvoice) { showToast(invoice.isNew - ? localization.createdInvoice - : localization.updatedInvoice); + ? localization!.createdInvoice + : localization!.updatedInvoice); if (state.prefState.isMobile) { store.dispatch(UpdateCurrentRoute(InvoiceViewScreen.route)); if (invoice.isNew) { - navigator.pushReplacementNamed(InvoiceViewScreen.route); + navigator!.pushReplacementNamed(InvoiceViewScreen.route); } else { - navigator.pop(savedInvoice); + navigator!.pop(savedInvoice); } } else { if (!state.prefState.isPreviewVisible) { @@ -192,7 +192,7 @@ class InvoiceEditVM extends AbstractInvoiceEditVM { } }).catchError((Object error) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { return ErrorDialog(error); }); @@ -206,9 +206,9 @@ class InvoiceEditVM extends AbstractInvoiceEditVM { store.dispatch(UpdateInvoice(invoice.rebuild((b) => b ..clientId = clientId ?? '' ..projectId = projectId ?? '' - ..invitations.replace(BuiltList(client + ..invitations.replace(BuiltList(client! .emailContacts - .map((contact) => InvitationEntity(clientContactId: contact.id)) + .map((contact) => InvitationEntity(clientContactId: contact!.id)) .toList()))))); } store.dispatch(AddInvoiceItems(items)); @@ -227,7 +227,7 @@ class InvoiceEditVM extends AbstractInvoiceEditVM { } }, onUploadDocuments: (BuildContext context, - List multipartFiles, bool isPrivate) { + List multipartFiles, bool? isPrivate) { final Completer completer = Completer(); store.dispatch(SaveInvoiceDocumentRequest( isPrivate: isPrivate, @@ -235,7 +235,7 @@ class InvoiceEditVM extends AbstractInvoiceEditVM { invoice: invoice, completer: completer)); completer.future.then((client) { - showToast(AppLocalization.of(context).uploadedDocument); + showToast(AppLocalization.of(context)!.uploadedDocument); }).catchError((Object error) { showDialog( context: context, diff --git a/lib/ui/invoice/edit/invoice_item_selector.dart b/lib/ui/invoice/edit/invoice_item_selector.dart index c8cfb51f1..217eaa08d 100644 --- a/lib/ui/invoice/edit/invoice_item_selector.dart +++ b/lib/ui/invoice/edit/invoice_item_selector.dart @@ -20,17 +20,17 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class InvoiceItemSelector extends StatefulWidget { const InvoiceItemSelector({ - @required this.invoice, - @required this.clientId, - @required this.showTasksAndExpenses, + required this.invoice, + required this.clientId, + required this.showTasksAndExpenses, this.onItemsSelected, this.excluded, }); final InvoiceEntity invoice; - final Function(List, [String, String]) onItemsSelected; + final Function(List, [String?, String?])? onItemsSelected; final String clientId; - final List excluded; + final List? excluded; final bool showTasksAndExpenses; @override @@ -39,10 +39,10 @@ class InvoiceItemSelector extends StatefulWidget { class _InvoiceItemSelectorState extends State with SingleTickerProviderStateMixin { - String _filter; - String _filterClientId; - TabController _tabController; - final List _selected = []; + String? _filter; + String? _filterClientId; + TabController? _tabController; + final List _selected = []; final _textController = TextEditingController(); @@ -56,12 +56,12 @@ class _InvoiceItemSelectorState extends State @override void dispose() { _textController.dispose(); - _tabController.dispose(); + _tabController!.dispose(); super.dispose(); } void _addBlankItem(CompanyEntity company) { - widget.onItemsSelected([ + widget.onItemsSelected!([ InvoiceItemEntity( quantity: company.defaultQuantity || !company.enableProductQuantity ? 1 : 0) @@ -73,14 +73,14 @@ class _InvoiceItemSelectorState extends State final List items = []; final state = StoreProvider.of(context).state; final company = state.company; - String projectId; + String? projectId; _selected.forEach((entity) { - if (entity.entityType == EntityType.product) { + if (entity!.entityType == EntityType.product) { items.add( convertProductToInvoiceItem( - company: company, - product: entity as ProductEntity, + company: company!, + product: entity as ProductEntity?, invoice: widget.invoice, currencyMap: state.staticState.currencyMap, client: state.clientState.get(widget.clientId), @@ -101,11 +101,11 @@ class _InvoiceItemSelectorState extends State _updateClientId(); - widget.onItemsSelected(items, _filterClientId, projectId); + widget.onItemsSelected!(items, _filterClientId, projectId); Navigator.pop(context); } - void _toggleEntity(BaseEntity entity) { + void _toggleEntity(BaseEntity? entity) { setState(() { _filter = ''; _textController.text = ''; @@ -135,16 +135,16 @@ class _InvoiceItemSelectorState extends State @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final state = StoreProvider.of(context).state; - final company = state.company; + final company = state.company!; final showTabBar = widget.showTasksAndExpenses && (company.isModuleEnabled(EntityType.task) || company.isModuleEnabled(EntityType.expense)); final products = memoizedProductList(state.productState.map).where((entityId) { - final entity = state.productState.map[entityId]; + final entity = state.productState.map[entityId]!; return entity.isActive && entity.matchesFilter(_filter); }).toList(); @@ -155,38 +155,38 @@ class _InvoiceItemSelectorState extends State state.clientState.map, state.projectState.map, ).where((entityId) { - final task = state.taskState.get(entityId); + final task = state.taskState.get(entityId!)!; final client = state.clientState.get(task.clientId); - if (widget.excluded != null && widget.excluded.contains(task)) { + if (widget.excluded != null && widget.excluded!.contains(task)) { return false; } - return task.matchesFilter(_filter) || client.matchesNameOrEmail(_filter); + return task.matchesFilter(_filter) || client!.matchesNameOrEmail(_filter); }).toList(); final expenses = memoizedClientExpenseList( state.expenseState.map, _filterClientId, ).where((entityId) { - final expense = state.expenseState.get(entityId); - final client = state.clientState.get(expense.clientId); - if (widget.excluded != null && widget.excluded.contains(expense)) { + final expense = state.expenseState.get(entityId!)!; + final client = state.clientState.get(expense.clientId!); + if (widget.excluded != null && widget.excluded!.contains(expense)) { return false; } return expense.matchesFilter(_filter) || - client.matchesNameOrEmail(_filter); + client!.matchesNameOrEmail(_filter); }).toList(); Widget _productList() { return ScrollableListViewBuilder( itemCount: products.length, itemBuilder: (BuildContext context, int index) { - final String entityId = products[index]; + final String? entityId = products[index]; final product = state.productState.map[entityId]; return ProductListItem( isDismissible: false, showCost: widget.invoice.isPurchaseOrder && company.enableProductCost && - product.cost != 0, + product!.cost != 0, onCheckboxChanged: (checked) => _toggleEntity(product), product: product, filter: _filter, @@ -208,7 +208,7 @@ class _InvoiceItemSelectorState extends State return ScrollableListViewBuilder( itemCount: tasks.length, itemBuilder: (BuildContext context, int index) { - final String entityId = tasks[index]; + final String? entityId = tasks[index]; final task = state.taskState.map[entityId]; return TaskListItem( isDismissible: false, @@ -233,7 +233,7 @@ class _InvoiceItemSelectorState extends State return ScrollableListViewBuilder( itemCount: expenses.length, itemBuilder: (BuildContext context, int index) { - final String entityId = expenses[index]; + final String? entityId = expenses[index]; final expense = state.expenseState.map[entityId] ?? ExpenseEntity(); return ExpenseListItem( isDismissible: false, diff --git a/lib/ui/invoice/edit/invoice_tax_details.dart b/lib/ui/invoice/edit/invoice_tax_details.dart index 73fa498e1..3f6d5b985 100644 --- a/lib/ui/invoice/edit/invoice_tax_details.dart +++ b/lib/ui/invoice/edit/invoice_tax_details.dart @@ -9,21 +9,21 @@ import 'package:invoiceninja_flutter/utils/strings.dart'; class InvoiceTaxDetails extends StatelessWidget { const InvoiceTaxDetails({ - Key key, - @required this.invoice, + Key? key, + required this.invoice, }) : super(key: key); final InvoiceEntity invoice; @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final state = StoreProvider.of(context).state; - final client = state.clientState.get(invoice.clientId); + final client = state.clientState.get(invoice.clientId)!; final taxData = invoice.isNew ? client.taxData : invoice.taxData; return AlertDialog( - title: Text(localization.taxDetails), + title: Text(localization.taxDetails!), content: SizedBox( width: isDesktop(context) ? 500 : null, child: client.isTaxExempt @@ -33,7 +33,7 @@ class InvoiceTaxDetails extends StatelessWidget { ) : DataTable( columns: [ - DataColumn(label: Text(localization.region)), + DataColumn(label: Text(localization.region!)), DataColumn(label: Text(localization.name)), DataColumn(label: Text(localization.tax)), ], @@ -44,7 +44,7 @@ class InvoiceTaxDetails extends StatelessWidget { DataCell(Text('${taxData.stateSalesTax}')), ]), DataRow(cells: [ - DataCell(Text(localization.county)), + DataCell(Text(localization.county!)), DataCell(Text(toTitleCase(taxData.geoCounty) + (taxData.countyTaxCode.isEmpty ? '' @@ -60,7 +60,7 @@ class InvoiceTaxDetails extends StatelessWidget { DataCell(Text('${taxData.citySalesTax}')), ]), DataRow(cells: [ - DataCell(Text(localization.district)), + DataCell(Text(localization.district!)), DataCell(Text('')), DataCell(Text('${taxData.districtSalesTax}')), ]), diff --git a/lib/ui/invoice/invoice_email_vm.dart b/lib/ui/invoice/invoice_email_vm.dart index 619d94cb1..92ed1f4d3 100644 --- a/lib/ui/invoice/invoice_email_vm.dart +++ b/lib/ui/invoice/invoice_email_vm.dart @@ -17,7 +17,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/platforms.dart'; class InvoiceEmailScreen extends StatelessWidget { - const InvoiceEmailScreen({Key key}) : super(key: key); + const InvoiceEmailScreen({Key? key}) : super(key: key); static const String route = '/invoice/email'; @@ -26,22 +26,22 @@ class InvoiceEmailScreen extends StatelessWidget { return StoreConnector( onInit: (Store store) { final state = store.state; - final invoiceId = state.uiState.invoiceUIState.selectedId; - final invoice = state.invoiceState.get(invoiceId); - final client = state.clientState.get(invoice.clientId); + final invoiceId = state.uiState.invoiceUIState.selectedId!; + final invoice = state.invoiceState.get(invoiceId)!; + final client = state.clientState.get(invoice.clientId)!; if (client.isStale) { store.dispatch(LoadClient(clientId: client.id)); } }, converter: (Store store) { final state = store.state; - final invoiceId = state.uiState.invoiceUIState.selectedId; - final invoice = state.invoiceState.get(invoiceId); + final invoiceId = state.uiState.invoiceUIState.selectedId!; + final invoice = state.invoiceState.get(invoiceId)!; return EmailInvoiceVM.fromStore(store, invoice); }, builder: (context, vm) { return InvoiceEmailView( - key: ValueKey('__invoice_${vm.invoice.id}__'), + key: ValueKey('__invoice_${vm.invoice!.id}__'), viewModel: vm, ); }, @@ -51,37 +51,37 @@ class InvoiceEmailScreen extends StatelessWidget { abstract class EmailEntityVM { EmailEntityVM({ - @required this.state, - @required this.isLoading, - @required this.isSaving, - @required this.company, - @required this.invoice, - @required this.client, - @required this.vendor, - @required this.onSendPressed, + required this.state, + required this.isLoading, + required this.isSaving, + required this.company, + required this.invoice, + required this.client, + required this.vendor, + required this.onSendPressed, }); - final AppState state; - final bool isLoading; - final bool isSaving; - final CompanyEntity company; - final InvoiceEntity invoice; - final ClientEntity client; - final VendorEntity vendor; - final Function(BuildContext, EmailTemplate, String, String, String) + final AppState? state; + final bool? isLoading; + final bool? isSaving; + final CompanyEntity? company; + final InvoiceEntity? invoice; + final ClientEntity? client; + final VendorEntity? vendor; + final Function(BuildContext, EmailTemplate?, String, String, String)? onSendPressed; } class EmailInvoiceVM extends EmailEntityVM { EmailInvoiceVM({ - AppState state, - bool isLoading, - bool isSaving, - CompanyEntity company, - InvoiceEntity invoice, - ClientEntity client, - VendorEntity vendor, - Function(BuildContext, EmailTemplate, String, String, String) onSendPressed, + AppState? state, + bool? isLoading, + bool? isSaving, + CompanyEntity? company, + InvoiceEntity? invoice, + ClientEntity? client, + VendorEntity? vendor, + Function(BuildContext, EmailTemplate, String, String, String)? onSendPressed, }) : super( state: state, isLoading: isLoading, @@ -107,12 +107,12 @@ class EmailInvoiceVM extends EmailEntityVM { ClientEntity(id: invoice.clientId), onSendPressed: (context, template, subject, body, ccEmail) { final completer = snackBarCompleter( - context, AppLocalization.of(context).emailedInvoice, + context, AppLocalization.of(context)!.emailedInvoice, shouldPop: isMobile(context)); if (!isMobile(context)) { completer.future.then((value) { viewEntity(entity: invoice); - }); + } as FutureOr<_> Function(Null)); } store.dispatch(EmailInvoiceRequest( completer: completer, diff --git a/lib/ui/invoice/invoice_list_item.dart b/lib/ui/invoice/invoice_list_item.dart index 37aa2be72..dca3fedc4 100644 --- a/lib/ui/invoice/invoice_list_item.dart +++ b/lib/ui/invoice/invoice_list_item.dart @@ -20,7 +20,7 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class InvoiceListItem extends StatelessWidget { const InvoiceListItem({ - @required this.invoice, + required this.invoice, this.filter, this.onTap, this.isChecked = false, @@ -28,55 +28,55 @@ class InvoiceListItem extends StatelessWidget { this.showSelected = true, }); - final InvoiceEntity invoice; - final String filter; + final InvoiceEntity? invoice; + final String? filter; final bool showCheckbox; final bool isChecked; - final Function onTap; + final Function? onTap; final bool showSelected; @override Widget build(BuildContext context) { final store = StoreProvider.of(context); final state = store.state; - final client = state.clientState.get(invoice.clientId); + final client = state.clientState.get(invoice!.clientId); final uiState = state.uiState; final invoiceUIState = uiState.invoiceUIState; final textStyle = TextStyle(fontSize: 16); - final localization = AppLocalization.of(context); - final filterMatch = filter != null && filter.isNotEmpty - ? (invoice.matchesFilterValue(filter) ?? - client.matchesFilterValue(filter)) + final localization = AppLocalization.of(context)!; + final filterMatch = filter != null && filter!.isNotEmpty + ? (invoice!.matchesFilterValue(filter) ?? + client!.matchesFilterValue(filter)) : null; final statusLabel = - localization.lookup(kInvoiceStatuses[invoice.calculatedStatusId]); + localization.lookup(kInvoiceStatuses[invoice!.calculatedStatusId]); final statusColor = InvoiceStatusColors(state.prefState.colorThemeModel) - .colors[invoice.calculatedStatusId]; - final textColor = Theme.of(context).textTheme.bodyLarge.color; + .colors[invoice!.calculatedStatusId]; + final textColor = Theme.of(context).textTheme.bodyLarge!.color; String subtitle = ''; - if (invoice.date.isNotEmpty) { - subtitle = formatDate(invoice.date, context); + if (invoice!.date.isNotEmpty) { + subtitle = formatDate(invoice!.date, context); } - if (invoice.partialDueDate.isNotEmpty && invoice.partial != 0) { + if (invoice!.partialDueDate.isNotEmpty && invoice!.partial != 0) { if (subtitle.isNotEmpty) { subtitle += ' • '; } - subtitle += formatDate(invoice.partialDueDate, context); - } else if (invoice.dueDate.isNotEmpty) { + subtitle += formatDate(invoice!.partialDueDate, context); + } else if (invoice!.dueDate.isNotEmpty) { if (subtitle.isNotEmpty) { subtitle += ' • '; } - subtitle += formatDate(invoice.dueDate, context); + subtitle += formatDate(invoice!.dueDate, context); } return DismissibleEntity( isSelected: isDesktop(context) && showSelected && - invoice.id == + invoice!.id == (uiState.isEditing - ? invoiceUIState.editing.id + ? invoiceUIState.editing!.id : invoiceUIState.selectedId), showMultiselect: showSelected, userCompany: state.userCompany, @@ -86,14 +86,14 @@ class InvoiceListItem extends StatelessWidget { return constraints.maxWidth > kTableListWidthCutoff ? InkWell( onTap: () => onTap != null - ? onTap() + ? onTap!() : selectEntity( - entity: invoice, + entity: invoice!, forceView: !showCheckbox, ), onLongPress: () => onTap != null ? null - : selectEntity(entity: invoice, longPress: true), + : selectEntity(entity: invoice!, longPress: true), child: Padding( padding: const EdgeInsets.only( left: 10, @@ -118,7 +118,7 @@ class InvoiceListItem extends StatelessWidget { ), ) : ActionMenuButton( - entityActions: invoice.getActions( + entityActions: invoice!.getActions( userCompany: state.userCompany, client: client, includeEdit: true, @@ -134,13 +134,13 @@ class InvoiceListItem extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - (invoice.number ?? '').isEmpty + (invoice!.number ?? '').isEmpty ? localization.pending - : invoice.number, + : invoice!.number, style: textStyle, overflow: TextOverflow.ellipsis, ), - if (!invoice.isActive) EntityStateLabel(invoice) + if (!invoice!.isActive) EntityStateLabel(invoice) ], ), ), @@ -150,8 +150,8 @@ class InvoiceListItem extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - client.displayName + - (invoice.documents.isNotEmpty + client!.displayName + + (invoice!.documents.isNotEmpty ? ' 📎' : ''), style: textStyle), @@ -161,9 +161,9 @@ class InvoiceListItem extends StatelessWidget { overflow: TextOverflow.ellipsis, style: Theme.of(context) .textTheme - .titleSmall + .titleSmall! .copyWith( - color: textColor + color: textColor! .withOpacity(kLighterOpacity), ), ), @@ -173,11 +173,11 @@ class InvoiceListItem extends StatelessWidget { SizedBox(width: 10), Text( formatNumber( - invoice.balance != 0 - ? invoice.balance - : invoice.amount, + invoice!.balance != 0 + ? invoice!.balance + : invoice!.amount, context, - clientId: client.id), + clientId: client.id)!, style: textStyle, textAlign: TextAlign.end, ), @@ -189,11 +189,11 @@ class InvoiceListItem extends StatelessWidget { ) : ListTile( onTap: () => onTap != null - ? onTap() - : selectEntity(entity: invoice, forceView: !showCheckbox), + ? onTap!() + : selectEntity(entity: invoice!, forceView: !showCheckbox), onLongPress: () => onTap != null ? null - : selectEntity(entity: invoice, longPress: true), + : selectEntity(entity: invoice!, longPress: true), leading: showCheckbox ? IgnorePointer( child: Checkbox( @@ -212,7 +212,7 @@ class InvoiceListItem extends StatelessWidget { children: [ Expanded( child: Text( - client.displayName, + client!.displayName, style: Theme.of(context).textTheme.titleMedium, overflow: TextOverflow.ellipsis, ), @@ -220,11 +220,11 @@ class InvoiceListItem extends StatelessWidget { SizedBox(width: 4), Text( formatNumber( - invoice.balance != 0 - ? invoice.balance - : invoice.amount, + invoice!.balance != 0 + ? invoice!.balance + : invoice!.amount, context, - clientId: invoice.clientId), + clientId: invoice!.clientId)!, style: Theme.of(context).textTheme.titleMedium), ], ), @@ -236,13 +236,13 @@ class InvoiceListItem extends StatelessWidget { children: [ Expanded( child: filterMatch == null - ? Text((((invoice.number ?? '').isEmpty + ? Text((((invoice!.number ?? '').isEmpty ? localization.pending - : invoice.number) + + : invoice!.number) + ' • ' + formatDate( - invoice.primaryDate, context) + - (invoice.documents.isNotEmpty + invoice!.primaryDate, context) + + (invoice!.documents.isNotEmpty ? ' 📎' : '')) .trim()) @@ -252,10 +252,10 @@ class InvoiceListItem extends StatelessWidget { overflow: TextOverflow.ellipsis, ), ), - Text(statusLabel, + Text(statusLabel!, style: TextStyle( color: - !invoice.isSent ? textColor : statusColor, + !invoice!.isSent ? textColor : statusColor, )), ], ), diff --git a/lib/ui/invoice/invoice_list_vm.dart b/lib/ui/invoice/invoice_list_vm.dart index a9d9353a1..d154fab2d 100644 --- a/lib/ui/invoice/invoice_list_vm.dart +++ b/lib/ui/invoice/invoice_list_vm.dart @@ -23,7 +23,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class InvoiceListBuilder extends StatelessWidget { - const InvoiceListBuilder({Key key}) : super(key: key); + const InvoiceListBuilder({Key? key}) : super(key: key); static const String route = '/invoices/edit'; @@ -43,7 +43,7 @@ class InvoiceListBuilder extends StatelessWidget { onSortColumn: viewModel.onSortColumn, itemBuilder: (BuildContext context, index) { final invoiceId = viewModel.invoiceList[index]; - final invoice = viewModel.invoiceMap[invoiceId]; + final invoice = viewModel.invoiceMap[invoiceId]!; final invoiceListState = viewModel.state.invoiceListState; return InvoiceListItem( @@ -60,25 +60,25 @@ class InvoiceListBuilder extends StatelessWidget { class EntityListVM { EntityListVM({ - @required this.state, - @required this.entityType, - @required this.invoiceList, - @required this.invoiceMap, - @required this.clientMap, - @required this.isLoading, - @required this.filter, - @required this.onRefreshed, - @required this.tableColumns, - @required this.onSortColumn, - @required this.onClearMultiselect, + required this.state, + required this.entityType, + required this.invoiceList, + required this.invoiceMap, + required this.clientMap, + required this.isLoading, + required this.filter, + required this.onRefreshed, + required this.tableColumns, + required this.onSortColumn, + required this.onClearMultiselect, }); final AppState state; final EntityType entityType; final List invoiceList; - final BuiltMap invoiceMap; - final BuiltMap clientMap; - final String filter; + final BuiltMap invoiceMap; + final BuiltMap clientMap; + final String? filter; final bool isLoading; final Function(BuildContext) onRefreshed; final List tableColumns; @@ -88,20 +88,20 @@ class EntityListVM { class InvoiceListVM extends EntityListVM { InvoiceListVM({ - @required AppState state, - @required List invoiceList, - @required BuiltMap invoiceMap, - @required BuiltMap clientMap, - @required String filter, - @required bool isLoading, - @required Function(BuildContext) onRefreshed, - @required + required AppState state, + required List invoiceList, + required BuiltMap invoiceMap, + required BuiltMap clientMap, + required String? filter, + required bool isLoading, + required Function(BuildContext) onRefreshed, + required Function(BuildContext, List, EntityAction) onEntityAction, - @required List tableColumns, - @required EntityType entityType, - @required Function(String) onSortColumn, - @required Function onClearMultiselect, + required List tableColumns, + required EntityType entityType, + required Function(String) onSortColumn, + required Function onClearMultiselect, }) : super( state: state, invoiceList: invoiceList, @@ -122,7 +122,7 @@ class InvoiceListVM extends EntityListVM { return Future(null); } final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(RefreshData(completer: completer)); return completer.future; } @@ -140,7 +140,7 @@ class InvoiceListVM extends EntityListVM { state.paymentState.map, state.invoiceListState, state.userState.map, - state.company.settings.recurringNumberPrefix, + state.company!.settings.recurringNumberPrefix, ), invoiceMap: state.invoiceState.map, clientMap: state.clientState.map, @@ -151,7 +151,7 @@ class InvoiceListVM extends EntityListVM { EntityAction action) => handleInvoiceAction(context, invoices, action), tableColumns: - state.userCompany.settings?.getTableColumns(EntityType.invoice) ?? + state.userCompany!.settings?.getTableColumns(EntityType.invoice) ?? InvoicePresenter.getDefaultTableFields(state.userCompany), entityType: EntityType.invoice, onSortColumn: (field) => store.dispatch(SortInvoices(field)), diff --git a/lib/ui/invoice/invoice_pdf.dart b/lib/ui/invoice/invoice_pdf.dart index feb9b10c6..38312962d 100644 --- a/lib/ui/invoice/invoice_pdf.dart +++ b/lib/ui/invoice/invoice_pdf.dart @@ -39,8 +39,8 @@ import 'package:invoiceninja_flutter/utils/web_stub.dart' class InvoicePdfView extends StatefulWidget { const InvoicePdfView({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, this.showAppBar = true, }) : super(key: key); @@ -54,9 +54,9 @@ class InvoicePdfView extends StatefulWidget { class _InvoicePdfViewState extends State { bool _isLoading = true; bool _isDeliveryNote = false; - String _activityId; - String _pdfString; - http.Response _response; + String? _activityId; + String? _pdfString; + http.Response? _response; //int _pageCount = 1; //int _currentPage = 1; @@ -75,7 +75,7 @@ class _InvoicePdfViewState extends State { void loadPdf() { final viewModel = widget.viewModel; - final invoice = viewModel.invoice; + final invoice = viewModel.invoice!; final state = viewModel.state; if (invoice.invitations.isEmpty) { @@ -96,9 +96,9 @@ class _InvoicePdfViewState extends State { _response = response; _isLoading = false; - if (kIsWeb && state.prefState.enableNativeBrowser) { + if (kIsWeb && state!.prefState.enableNativeBrowser) { _pdfString = - 'data:application/pdf;base64,' + base64Encode(response.bodyBytes); + 'data:application/pdf;base64,' + base64Encode(response!.bodyBytes); WebUtils.registerWebView(_pdfString); } }); @@ -108,7 +108,7 @@ class _InvoicePdfViewState extends State { }); showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { return ErrorDialog(error); }); @@ -119,8 +119,8 @@ class _InvoicePdfViewState extends State { Widget build(BuildContext context) { final store = StoreProvider.of(context); final state = store.state; - final localization = AppLocalization.of(context); - final invoice = widget.viewModel.invoice; + final localization = AppLocalization.of(context)!; + final invoice = widget.viewModel.invoice!; final client = state.clientState.get(invoice.clientId); /* @@ -165,8 +165,8 @@ class _InvoicePdfViewState extends State { items: invoice.history .map((history) => DropdownMenuItem( child: Text(formatNumber( - history.amount, context, - clientId: invoice.clientId) + + history!.amount, context, + clientId: invoice.clientId)! + ' • ' + formatDate( convertTimestampToDateString( @@ -212,7 +212,7 @@ class _InvoicePdfViewState extends State { // TODO: remove this code // hide email option on web to prevent dialog problem - if (kIsWeb && !client.hasEmailAddress) { + if (kIsWeb && !client!.hasEmailAddress) { showEmail = false; } @@ -228,7 +228,7 @@ class _InvoicePdfViewState extends State { Expanded( child: Text(EntityPresenter() .initialize(invoice, context) - .title()), + .title()!), ), if (isDesktop(context)) ...activitySelector, //if (isDesktop(context)) ...pageSelector, @@ -259,7 +259,7 @@ class _InvoicePdfViewState extends State { Uri.parse(invoice.invitationDownloadLink)); } else { final fileName = localization - .lookup('${invoice.entityType}') + + .lookup('${invoice.entityType}')! + '_' + (invoice.number.isEmpty ? localization.pending @@ -267,10 +267,10 @@ class _InvoicePdfViewState extends State { '.pdf'; if (kIsWeb) { WebUtils.downloadBinaryFile( - fileName, _response.bodyBytes); + fileName, _response!.bodyBytes); } else { final directory = await (isDesktopOS() - ? getDownloadsDirectory() + ? getDownloadsDirectory() as FutureOr : getApplicationDocumentsDirectory()); String filePath = '${directory.path}${file.Platform.pathSeparator}$fileName'; @@ -284,10 +284,10 @@ class _InvoicePdfViewState extends State { final pdfData = file.File(filePath); await pdfData - .writeAsBytes(_response.bodyBytes); + .writeAsBytes(_response!.bodyBytes); if (isDesktopOS()) { - showToast(localization.fileSavedInPath + showToast(localization.fileSavedInPath! .replaceFirst(':path', directory.path)); } else { await Share.shareXFiles([XFile(filePath)]); @@ -310,15 +310,15 @@ class _InvoicePdfViewState extends State { body: _isLoading || _response == null ? LoadingIndicator() : (kIsWeb && state.prefState.enableNativeBrowser) - ? HtmlElementView(viewType: _pdfString) + ? HtmlElementView(viewType: _pdfString!) : PdfPreview( - build: (format) => _response.bodyBytes, + build: (format) => _response!.bodyBytes, canChangeOrientation: false, canChangePageFormat: false, canDebug: false, maxPageWidth: 800, pdfFileName: - localization.lookup(invoice.entityType.snakeCase) + + localization.lookup(invoice.entityType!.snakeCase)! + '_' + invoice.number + '.pdf', @@ -326,13 +326,13 @@ class _InvoicePdfViewState extends State { } } -Future _loadPDF( +Future _loadPDF( BuildContext context, InvoiceEntity invoice, bool isDeliveryNote, - String activityId, + String? activityId, ) async { - http.Response response; + http.Response? response; if ((activityId ?? '').isNotEmpty || isDeliveryNote) { final store = StoreProvider.of(context); @@ -340,15 +340,15 @@ Future _loadPDF( final url = isDeliveryNote ? '/invoices/${invoice.id}/delivery_note' : '/activities/download_entity/$activityId'; - response = await WebClient() - .get('${credential.url}$url', credential.token, rawResponse: true); + response = await (WebClient() + .get('${credential.url}$url', credential.token, rawResponse: true) as FutureOr); } else { final invitation = invoice.invitations.first; final url = invitation.downloadLink; - response = await WebClient().get(url, '', rawResponse: true); + response = await (WebClient().get(url, '', rawResponse: true) as FutureOr); } - if (response.statusCode >= 400) { + if (response!.statusCode >= 400) { String errorMessage = '${response.statusCode}: ${response.reasonPhrase}\n\n'; diff --git a/lib/ui/invoice/invoice_pdf_vm.dart b/lib/ui/invoice/invoice_pdf_vm.dart index ec00c170c..758be5dfd 100644 --- a/lib/ui/invoice/invoice_pdf_vm.dart +++ b/lib/ui/invoice/invoice_pdf_vm.dart @@ -11,7 +11,7 @@ import 'package:invoiceninja_flutter/redux/app/app_state.dart'; import 'package:invoiceninja_flutter/ui/invoice/invoice_pdf.dart'; class InvoicePdfScreen extends StatelessWidget { - const InvoicePdfScreen({Key key, this.showAppBar = true}) : super(key: key); + const InvoicePdfScreen({Key? key, this.showAppBar = true}) : super(key: key); final bool showAppBar; @@ -25,7 +25,7 @@ class InvoicePdfScreen extends StatelessWidget { }, builder: (context, vm) { return InvoicePdfView( - key: ValueKey('__invoice_pdf_${vm.invoice.id}__'), + key: ValueKey('__invoice_pdf_${vm.invoice!.id}__'), viewModel: vm, showAppBar: showAppBar, ); @@ -36,21 +36,21 @@ class InvoicePdfScreen extends StatelessWidget { abstract class EntityPdfVM { EntityPdfVM({ - @required this.state, - @required this.invoice, - @required this.activityId, + required this.state, + required this.invoice, + required this.activityId, }); - final AppState state; - final InvoiceEntity invoice; - final String activityId; + final AppState? state; + final InvoiceEntity? invoice; + final String? activityId; } class InvoicePdfVM extends EntityPdfVM { InvoicePdfVM({ - AppState state, - InvoiceEntity invoice, - String activityId, + AppState? state, + InvoiceEntity? invoice, + String? activityId, }) : super( state: state, invoice: invoice, @@ -60,7 +60,7 @@ class InvoicePdfVM extends EntityPdfVM { factory InvoicePdfVM.fromStore(Store store) { final state = store.state; final invoiceUIState = state.uiState.invoiceUIState; - final invoiceId = invoiceUIState.selectedId; + final invoiceId = invoiceUIState.selectedId!; final invoice = state.invoiceState.get(invoiceId); return InvoicePdfVM( diff --git a/lib/ui/invoice/invoice_presenter.dart b/lib/ui/invoice/invoice_presenter.dart index e61566f6d..d0b7d3686 100644 --- a/lib/ui/invoice/invoice_presenter.dart +++ b/lib/ui/invoice/invoice_presenter.dart @@ -17,7 +17,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:url_launcher/url_launcher.dart'; class InvoicePresenter extends EntityPresenter { - static List getDefaultTableFields(UserCompanyEntity userCompany) { + static List getDefaultTableFields(UserCompanyEntity? userCompany) { return [ InvoiceFields.status, InvoiceFields.number, @@ -29,7 +29,7 @@ class InvoicePresenter extends EntityPresenter { ]; } - static List getAllTableFields(UserCompanyEntity userCompany) { + static List getAllTableFields(UserCompanyEntity? userCompany) { return [ ...getDefaultTableFields(userCompany), ...EntityPresenter.getBaseFields(), @@ -69,7 +69,7 @@ class InvoicePresenter extends EntityPresenter { } @override - Widget getField({String field, BuildContext context}) { + Widget getField({String? field, required BuildContext context}) { final localization = AppLocalization.of(context); final state = StoreProvider.of(context).state; final invoice = entity as InvoiceEntity; @@ -80,7 +80,7 @@ class InvoicePresenter extends EntityPresenter { return EntityStatusChip(entity: invoice, showState: true); case InvoiceFields.number: return Text((invoice.number ?? '').isEmpty - ? localization.pending + ? localization!.pending : invoice.number); case InvoiceFields.client: return LinkTextRelatedEntity(entity: client, relation: invoice); @@ -113,24 +113,24 @@ class InvoicePresenter extends EntityPresenter { return Align( alignment: Alignment.centerRight, child: Text(formatNumber(invoice.amount, context, - clientId: invoice.clientId)), + clientId: invoice.clientId)!), ); case InvoiceFields.balance: return Align( alignment: Alignment.centerRight, child: Text(formatNumber(invoice.balanceOrAmount, context, - clientId: invoice.clientId)), + clientId: invoice.clientId)!), ); case InvoiceFields.dueDate: return Text(formatDate(invoice.dueDate, context)); case InvoiceFields.customValue1: - return Text(presentCustomField(context, invoice.customValue1)); + return Text(presentCustomField(context, invoice.customValue1)!); case InvoiceFields.customValue2: - return Text(presentCustomField(context, invoice.customValue2)); + return Text(presentCustomField(context, invoice.customValue2)!); case InvoiceFields.customValue3: - return Text(presentCustomField(context, invoice.customValue3)); + return Text(presentCustomField(context, invoice.customValue3)!); case InvoiceFields.customValue4: - return Text(presentCustomField(context, invoice.customValue4)); + return Text(presentCustomField(context, invoice.customValue4)!); case InvoiceFields.publicNotes: return TableTooltip(message: invoice.publicNotes); case InvoiceFields.privateNotes: @@ -139,36 +139,36 @@ class InvoicePresenter extends EntityPresenter { return Text(invoice.isAmountDiscount ? formatNumber(invoice.discount, context, formatNumberType: FormatNumberType.money, - clientId: invoice.clientId) + clientId: invoice.clientId)! : formatNumber(invoice.discount, context, - formatNumberType: FormatNumberType.percent)); + formatNumberType: FormatNumberType.percent)!); case InvoiceFields.poNumber: return Text(invoice.poNumber); case InvoiceFields.documents: return Text('${invoice.documents.length}'); case InvoiceFields.taxAmount: return Text(formatNumber(invoice.taxAmount, context, - clientId: invoice.clientId)); + clientId: invoice.clientId)!); case InvoiceFields.exchangeRate: return Text(formatNumber(invoice.exchangeRate, context, - formatNumberType: FormatNumberType.double)); + formatNumberType: FormatNumberType.double)!); case InvoiceFields.isViewed: - return Text(invoice.isViewed ? localization.yes : localization.no); + return Text(invoice.isViewed ? localization!.yes : localization!.no); case InvoiceFields.autoBillEnabled: - return Text(localization.lookup( - invoice.autoBillEnabled ? localization.yes : localization.no)); + return Text(localization!.lookup( + invoice.autoBillEnabled ? localization.yes : localization.no)!); case InvoiceFields.clientState: - return Text(client.state); + return Text(client!.state); case InvoiceFields.clientCity: - return Text(client.city); + return Text(client!.city); case InvoiceFields.clientPostalCode: - return Text(client.postalCode); + return Text(client!.postalCode); case InvoiceFields.clientCountry: - return Text(state.staticState.countryMap[client.countryId]?.name ?? ''); + return Text(state.staticState.countryMap[client!.countryId]?.name ?? ''); case InvoiceFields.contactName: case InvoiceFields.contactEmail: final contact = invoiceContactSelector( - invoice, state.clientState.get(invoice.clientId)); + invoice, state.clientState.get(invoice.clientId)!); if (contact == null) { return SizedBox(); } @@ -181,7 +181,7 @@ class InvoicePresenter extends EntityPresenter { onLongPress: () => launchUrl(Uri.parse('mailto:${contact.email}')), ); case InvoiceFields.partial: - return Text(formatNumber(invoice.partial, context)); + return Text(formatNumber(invoice.partial, context)!); case InvoiceFields.partialDueDate: return Text(formatDate(invoice.partialDueDate, context)); case InvoiceFields.quote: @@ -190,21 +190,21 @@ class InvoicePresenter extends EntityPresenter { return LinkTextRelatedEntity(entity: quote, relation: invoice); case InvoiceFields.recurringInvoice: final recurringInvoice = - state.recurringInvoiceState.get(invoice.recurringId); + state.recurringInvoiceState.get(invoice.recurringId!); return LinkTextRelatedEntity( entity: recurringInvoice, relation: invoice); case InvoiceFields.lastSentTemplate: - if (invoice.reminderLastSent.isNotEmpty && + if (invoice.reminderLastSent!.isNotEmpty && invoice.reminderLastSent != invoice.reminder3Sent) { - return Text(localization.endlessReminder); + return Text(localization!.endlessReminder); } else if ((invoice.reminder3Sent ?? '').isNotEmpty) { - return Text(localization.thirdReminder); + return Text(localization!.thirdReminder); } else if ((invoice.reminder2Sent ?? '').isNotEmpty) { - return Text(localization.secondReminder); + return Text(localization!.secondReminder); } else if ((invoice.reminder1Sent ?? '').isNotEmpty) { - return Text(localization.firstReminder); + return Text(localization!.firstReminder); } else if ((invoice.lastSentDate ?? '').isNotEmpty) { - return Text(localization.initialEmail); + return Text(localization!.initialEmail); } else { return Text(''); } diff --git a/lib/ui/invoice/invoice_screen.dart b/lib/ui/invoice/invoice_screen.dart index 806ddab5a..cac3616a2 100644 --- a/lib/ui/invoice/invoice_screen.dart +++ b/lib/ui/invoice/invoice_screen.dart @@ -20,8 +20,8 @@ import 'invoice_screen_vm.dart'; class InvoiceScreen extends StatelessWidget { const InvoiceScreen({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); static const String route = '/invoice'; @@ -32,7 +32,7 @@ class InvoiceScreen extends StatelessWidget { Widget build(BuildContext context) { final store = StoreProvider.of(context); final state = store.state; - final company = state.company; + final company = state.company!; final userCompany = store.state.userCompany; final localization = AppLocalization.of(context); @@ -40,42 +40,42 @@ class InvoiceScreen extends StatelessWidget { InvoiceStatusEntity().rebuild( (b) => b ..id = kInvoiceStatusDraft - ..name = localization.draft, + ..name = localization!.draft, ), InvoiceStatusEntity().rebuild( (b) => b ..id = kInvoiceStatusSent - ..name = localization.sent, + ..name = localization!.sent, ), InvoiceStatusEntity().rebuild( (b) => b ..id = kInvoiceStatusViewed - ..name = localization.viewed, + ..name = localization!.viewed, ), InvoiceStatusEntity().rebuild( (b) => b ..id = kInvoiceStatusPartial - ..name = localization.partial, + ..name = localization!.partial, ), InvoiceStatusEntity().rebuild( (b) => b ..id = kInvoiceStatusPaid - ..name = localization.paid, + ..name = localization!.paid, ), InvoiceStatusEntity().rebuild( (b) => b ..id = kInvoiceStatusUnpaid - ..name = localization.unpaid, + ..name = localization!.unpaid, ), InvoiceStatusEntity().rebuild( (b) => b ..id = kInvoiceStatusPastDue - ..name = localization.pastDue, + ..name = localization!.pastDue, ), InvoiceStatusEntity().rebuild( (b) => b ..id = kInvoiceStatusCancelled - ..name = localization.cancelled, + ..name = localization!.cancelled, ), ]; @@ -152,7 +152,7 @@ class InvoiceScreen extends StatelessWidget { }, ), floatingActionButton: state.prefState.isMenuFloated && - userCompany.canCreate(EntityType.invoice) + userCompany!.canCreate(EntityType.invoice) ? FloatingActionButton( heroTag: 'invoice_fab', backgroundColor: Theme.of(context).primaryColorDark, @@ -161,7 +161,7 @@ class InvoiceScreen extends StatelessWidget { context: context, entityType: EntityType.invoice); }, child: Icon(Icons.add, color: Colors.white), - tooltip: localization.newInvoice, + tooltip: localization!.newInvoice, ) : null, ); diff --git a/lib/ui/invoice/invoice_screen_vm.dart b/lib/ui/invoice/invoice_screen_vm.dart index 727abbc9b..a39585018 100644 --- a/lib/ui/invoice/invoice_screen_vm.dart +++ b/lib/ui/invoice/invoice_screen_vm.dart @@ -14,7 +14,7 @@ import 'package:invoiceninja_flutter/redux/invoice/invoice_selectors.dart'; import 'invoice_screen.dart'; class InvoiceScreenBuilder extends StatelessWidget { - const InvoiceScreenBuilder({Key key}) : super(key: key); + const InvoiceScreenBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -31,16 +31,16 @@ class InvoiceScreenBuilder extends StatelessWidget { class InvoiceScreenVM { InvoiceScreenVM({ - @required this.isInMultiselect, - @required this.invoiceList, - @required this.userCompany, - @required this.invoiceMap, + required this.isInMultiselect, + required this.invoiceList, + required this.userCompany, + required this.invoiceMap, }); final bool isInMultiselect; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List invoiceList; - final BuiltMap invoiceMap; + final BuiltMap invoiceMap; static InvoiceScreenVM fromStore(Store store) { final state = store.state; @@ -56,7 +56,7 @@ class InvoiceScreenVM { state.paymentState.map, state.invoiceListState, state.userState.map, - state.company.settings.recurringNumberPrefix, + state.company!.settings.recurringNumberPrefix, ), userCompany: state.userCompany, isInMultiselect: state.invoiceListState.isInMultiselect(), diff --git a/lib/ui/invoice/view/invoice_view.dart b/lib/ui/invoice/view/invoice_view.dart index 810ec399b..86fb2d985 100644 --- a/lib/ui/invoice/view/invoice_view.dart +++ b/lib/ui/invoice/view/invoice_view.dart @@ -25,10 +25,10 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class InvoiceView extends StatefulWidget { const InvoiceView({ - Key key, - @required this.viewModel, - @required this.isFilter, - @required this.tabIndex, + Key? key, + required this.viewModel, + required this.isFilter, + required this.tabIndex, }) : super(key: key); final AbstractInvoiceViewVM viewModel; @@ -41,15 +41,15 @@ class InvoiceView extends StatefulWidget { class _InvoiceViewState extends State with SingleTickerProviderStateMixin { - TabController _controller; + TabController? _controller; @override void initState() { super.initState(); - final invoice = widget.viewModel.invoice; - final state = widget.viewModel.state; - final company = state.company; + final invoice = widget.viewModel.invoice!; + final state = widget.viewModel.state!; + final company = state.company!; int tabIndex = 0; @@ -70,7 +70,7 @@ class _InvoiceViewState extends State length: company.isModuleEnabled(EntityType.document) ? 5 : 4, initialIndex: widget.isFilter ? 0 : tabIndex, ); - _controller.addListener(_onTabChanged); + _controller!.addListener(_onTabChanged); } void _onTabChanged() { @@ -79,18 +79,18 @@ class _InvoiceViewState extends State } final store = StoreProvider.of(context); - final invoice = widget.viewModel.invoice; + final invoice = widget.viewModel.invoice!; if (invoice.isRecurring) { - store.dispatch(UpdateRecurringInvoiceTab(tabIndex: _controller.index)); + store.dispatch(UpdateRecurringInvoiceTab(tabIndex: _controller!.index)); } else if (invoice.isQuote) { - store.dispatch(UpdateQuoteTab(tabIndex: _controller.index)); + store.dispatch(UpdateQuoteTab(tabIndex: _controller!.index)); } else if (invoice.isCredit) { - store.dispatch(UpdateCreditTab(tabIndex: _controller.index)); + store.dispatch(UpdateCreditTab(tabIndex: _controller!.index)); } else if (invoice.isPurchaseOrder) { - store.dispatch(UpdatePurchaseOrderTab(tabIndex: _controller.index)); + store.dispatch(UpdatePurchaseOrderTab(tabIndex: _controller!.index)); } else { - store.dispatch(UpdateInvoiceTab(tabIndex: _controller.index)); + store.dispatch(UpdateInvoiceTab(tabIndex: _controller!.index)); } } @@ -99,24 +99,24 @@ class _InvoiceViewState extends State super.didUpdateWidget(oldWidget); if (oldWidget.tabIndex != widget.tabIndex) { - _controller.index = widget.tabIndex; + _controller!.index = widget.tabIndex; } } @override void dispose() { - _controller.removeListener(_onTabChanged); - _controller.dispose(); + _controller!.removeListener(_onTabChanged); + _controller!.dispose(); super.dispose(); } @override Widget build(BuildContext context) { final viewModel = widget.viewModel; - final invoice = viewModel.invoice; - final localization = AppLocalization.of(context); - final state = viewModel.state; - final company = state.company; + final invoice = viewModel.invoice!; + final localization = AppLocalization.of(context)!; + final state = viewModel.state!; + final company = state.company!; /* final documents = memoizedInvoiceDocumentsSelector( documentState.map, viewModel.state.expenseState.map, invoice); @@ -155,7 +155,7 @@ class _InvoiceViewState extends State body: Builder( builder: (BuildContext context) { return RefreshIndicator( - onRefresh: () => viewModel.onRefreshed(context), + onRefresh: () => viewModel.onRefreshed!(context), child: Column( children: [ Expanded( @@ -163,54 +163,54 @@ class _InvoiceViewState extends State controller: _controller, children: [ RefreshIndicator( - onRefresh: () => viewModel.onRefreshed(context), + onRefresh: () => viewModel.onRefreshed!(context), child: InvoiceOverview( viewModel: viewModel, isFilter: widget.isFilter, key: ValueKey( - '${viewModel.invoice.id}-${viewModel.invoice.loadedAt}'), + '${viewModel.invoice!.id}-${viewModel.invoice!.loadedAt}'), ), ), RefreshIndicator( - onRefresh: () => viewModel.onRefreshed(context), + onRefresh: () => viewModel.onRefreshed!(context), child: InvoiceViewContacts( viewModel: viewModel, key: ValueKey( - '${viewModel.invoice.id}-${viewModel.invoice.loadedAt}'), + '${viewModel.invoice!.id}-${viewModel.invoice!.loadedAt}'), ), ), if (company.isModuleEnabled(EntityType.document)) RefreshIndicator( - onRefresh: () => viewModel.onRefreshed(context), + onRefresh: () => viewModel.onRefreshed!(context), child: InvoiceViewDocuments( viewModel: viewModel, invoice: viewModel.invoice, key: ValueKey( - '${viewModel.invoice.id}-${viewModel.invoice.loadedAt}')), + '${viewModel.invoice!.id}-${viewModel.invoice!.loadedAt}')), ), if (invoice.isRecurring) RefreshIndicator( - onRefresh: () => viewModel.onRefreshed(context), + onRefresh: () => viewModel.onRefreshed!(context), child: InvoiceViewSchedule( viewModel: viewModel, key: ValueKey( - '${viewModel.invoice.id}-${viewModel.invoice.loadedAt}'), + '${viewModel.invoice!.id}-${viewModel.invoice!.loadedAt}'), ), ), if (!invoice.isRecurring) RefreshIndicator( - onRefresh: () => viewModel.onRefreshed(context), + onRefresh: () => viewModel.onRefreshed!(context), child: InvoiceViewHistory( viewModel: viewModel, key: ValueKey( - '${viewModel.invoice.id}-${viewModel.invoice.loadedAt}')), + '${viewModel.invoice!.id}-${viewModel.invoice!.loadedAt}')), ), RefreshIndicator( - onRefresh: () => viewModel.onRefreshed(context), + onRefresh: () => viewModel.onRefreshed!(context), child: InvoiceViewActivity( viewModel: viewModel, key: ValueKey( - '${viewModel.invoice.id}-${viewModel.invoice.loadedAt}')), + '${viewModel.invoice!.id}-${viewModel.invoice!.loadedAt}')), ), ], ), diff --git a/lib/ui/invoice/view/invoice_view_activity.dart b/lib/ui/invoice/view/invoice_view_activity.dart index cf4555d66..b2171a2e4 100644 --- a/lib/ui/invoice/view/invoice_view_activity.dart +++ b/lib/ui/invoice/view/invoice_view_activity.dart @@ -9,9 +9,9 @@ import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart'; import 'package:invoiceninja_flutter/ui/invoice/view/invoice_view_vm.dart'; class InvoiceViewActivity extends StatefulWidget { - const InvoiceViewActivity({Key key, this.viewModel}) : super(key: key); + const InvoiceViewActivity({Key? key, this.viewModel}) : super(key: key); - final AbstractInvoiceViewVM viewModel; + final AbstractInvoiceViewVM? viewModel; @override _InvoiceViewActivityState createState() => _InvoiceViewActivityState(); @@ -20,15 +20,15 @@ class InvoiceViewActivity extends StatefulWidget { class _InvoiceViewActivityState extends State { @override void didChangeDependencies() { - if (widget.viewModel.invoice.isStale) { - widget.viewModel.onRefreshed(context); + if (widget.viewModel!.invoice!.isStale) { + widget.viewModel!.onRefreshed!(context); } super.didChangeDependencies(); } @override Widget build(BuildContext context) { - final invoice = widget.viewModel.invoice; + final invoice = widget.viewModel!.invoice!; final activities = invoice.activities; if (!invoice.isLoaded) { diff --git a/lib/ui/invoice/view/invoice_view_contacts.dart b/lib/ui/invoice/view/invoice_view_contacts.dart index 059e843f0..2d0971eea 100644 --- a/lib/ui/invoice/view/invoice_view_contacts.dart +++ b/lib/ui/invoice/view/invoice_view_contacts.dart @@ -12,14 +12,14 @@ import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class InvoiceViewContacts extends StatelessWidget { - const InvoiceViewContacts({Key key, @required this.viewModel}) + const InvoiceViewContacts({Key? key, required this.viewModel}) : super(key: key); final AbstractInvoiceViewVM viewModel; @override Widget build(BuildContext context) { - final invoice = viewModel.invoice; + final invoice = viewModel.invoice!; return ScrollableListView( padding: const EdgeInsets.all(8), @@ -35,7 +35,7 @@ class InvoiceViewContacts extends StatelessWidget { class _InvitationListTile extends StatelessWidget { const _InvitationListTile( - {@required this.invitation, @required this.viewModel}); + {required this.invitation, required this.viewModel}); final InvitationEntity invitation; final AbstractInvoiceViewVM viewModel; @@ -43,16 +43,16 @@ class _InvitationListTile extends StatelessWidget { @override Widget build(BuildContext context) { final localization = AppLocalization.of(context); - final state = viewModel.state; - final client = state.clientState.get(viewModel.invoice.clientId); - final vendor = state.vendorState.get(viewModel.invoice.vendorId); + final state = viewModel.state!; + final client = state.clientState.get(viewModel.invoice!.clientId); + final vendor = state.vendorState.get(viewModel.invoice!.vendorId); String contactName = ''; - if (viewModel.invoice.isPurchaseOrder) { - final contact = vendor.contacts.firstWhere( - (contact) => contact.id == invitation.vendorContactId, - orElse: () => VendorContactEntity()); + if (viewModel.invoice!.isPurchaseOrder) { + final contact = vendor!.contacts.firstWhere( + (contact) => contact!.id == invitation.vendorContactId, + orElse: () => VendorContactEntity())!; if (contact.isNew) { return SizedBox(); } @@ -61,9 +61,9 @@ class _InvitationListTile extends StatelessWidget { contactName = vendor.name; } } else { - final contact = client.contacts.firstWhere( - (contact) => contact.id == invitation.clientContactId, - orElse: () => ClientContactEntity()); + final contact = client!.contacts.firstWhere( + (contact) => contact!.id == invitation.clientContactId, + orElse: () => ClientContactEntity())!; if (contact.isNew) { return SizedBox(); } @@ -78,19 +78,19 @@ class _InvitationListTile extends StatelessWidget { case InvitationEntity.EMAIL_STATUS_DELIVERED: icon = Tooltip( child: Icon(Icons.check_circle), - message: localization.delivered, + message: localization!.delivered, ); break; case InvitationEntity.EMAIL_STATUS_BOUNCED: icon = Tooltip( child: Icon(Icons.error), - message: localization.bounced, + message: localization!.bounced, ); break; case InvitationEntity.EMAIL_STATUS_SPAM: icon = Tooltip( child: Icon(Icons.error), - message: localization.spam, + message: localization!.spam, ); break; } @@ -106,7 +106,7 @@ class _InvitationListTile extends StatelessWidget { Padding( padding: const EdgeInsets.only(bottom: 4), child: Text( - '${localization.sent}: ' + + '${localization!.sent}: ' + formatDate(invitation.sentDate, context, showTime: true), ), ), @@ -114,7 +114,7 @@ class _InvitationListTile extends StatelessWidget { Padding( padding: const EdgeInsets.only(bottom: 4), child: Text( - '${localization.opened}: ' + + '${localization!.opened}: ' + formatDate(invitation.openedDate, context, showTime: true), ), ), @@ -122,7 +122,7 @@ class _InvitationListTile extends StatelessWidget { Padding( padding: const EdgeInsets.only(bottom: 4), child: Text( - '${localization.viewed}: ' + + '${localization!.viewed}: ' + formatDate(invitation.viewedDate, context, showTime: true), ), ), diff --git a/lib/ui/invoice/view/invoice_view_documents.dart b/lib/ui/invoice/view/invoice_view_documents.dart index e9dc294f5..871570b69 100644 --- a/lib/ui/invoice/view/invoice_view_documents.dart +++ b/lib/ui/invoice/view/invoice_view_documents.dart @@ -11,23 +11,23 @@ import 'package:invoiceninja_flutter/ui/invoice/view/invoice_view_vm.dart'; class InvoiceViewDocuments extends StatelessWidget { const InvoiceViewDocuments( - {Key key, @required this.invoice, @required this.viewModel}) + {Key? key, required this.invoice, required this.viewModel}) : super(key: key); final AbstractInvoiceViewVM viewModel; - final InvoiceEntity invoice; + final InvoiceEntity? invoice; @override Widget build(BuildContext context) { final store = StoreProvider.of(context); return DocumentGrid( - documents: invoice.documents.toList(), + documents: invoice!.documents.toList(), onUploadDocument: (path, isPrivate) => - viewModel.onUploadDocuments(context, path, isPrivate), - onViewExpense: (document) => viewModel.onViewExpense(context, document), + viewModel.onUploadDocuments!(context, path, isPrivate), + onViewExpense: (document) => viewModel.onViewExpense!(context, document), onRenamedDocument: () => - store.dispatch(LoadInvoice(invoiceId: invoice.id)), + store.dispatch(LoadInvoice(invoiceId: invoice!.id)), ); } } diff --git a/lib/ui/invoice/view/invoice_view_history.dart b/lib/ui/invoice/view/invoice_view_history.dart index d831f0a09..2695368e0 100644 --- a/lib/ui/invoice/view/invoice_view_history.dart +++ b/lib/ui/invoice/view/invoice_view_history.dart @@ -15,7 +15,7 @@ import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class InvoiceViewHistory extends StatefulWidget { - const InvoiceViewHistory({Key key, @required this.viewModel}) + const InvoiceViewHistory({Key? key, required this.viewModel}) : super(key: key); final AbstractInvoiceViewVM viewModel; @@ -27,8 +27,8 @@ class InvoiceViewHistory extends StatefulWidget { class _InvoiceViewHistoryState extends State { @override void didChangeDependencies() { - if (widget.viewModel.invoice.isStale) { - widget.viewModel.onRefreshed(context); + if (widget.viewModel.invoice!.isStale) { + widget.viewModel.onRefreshed!(context); } super.didChangeDependencies(); } @@ -36,7 +36,7 @@ class _InvoiceViewHistoryState extends State { @override Widget build(BuildContext context) { final viewModel = widget.viewModel; - final invoice = viewModel.invoice; + final invoice = viewModel.invoice!; // TODO remove this null check, it shouldn't be needed if (invoice.isStale || invoice.history == null) { @@ -49,28 +49,28 @@ class _InvoiceViewHistoryState extends State { activityList.sort((a, b) => b.updatedAt.compareTo(a.updatedAt)); if (activityList.isEmpty) { - return HelpText(AppLocalization.of(context).noHistory); + return HelpText(AppLocalization.of(context)!.noHistory); } return ScrollableListViewBuilder( padding: const EdgeInsets.symmetric(vertical: 16), itemBuilder: (BuildContext context, index) { final activity = activityList[index]; - final history = activity.history; + final history = activity.history!; final activityId = history.activityId ?? ''; - final state = viewModel.state; - final client = state.clientState.get(activity.clientId); + final state = viewModel.state!; + final client = state.clientState.get(activity.clientId!)!; final contact = client.getContact(activity.contactId); final user = state.userState.get(activity.userId); - String personName; + String? personName; if (contact != null) { personName = contact.fullNameOrEmail; - } else if (user.isOld) { + } else if (user!.isOld) { personName = user.fullName; if (personName.isEmpty) { - personName = AppLocalization.of(context).system; + personName = AppLocalization.of(context)!.system; } } else { personName = client.name; @@ -78,9 +78,9 @@ class _InvoiceViewHistoryState extends State { return ListTile( title: Text( - formatNumber(history.amount, context, clientId: invoice.clientId) + + formatNumber(history.amount, context, clientId: invoice.clientId)! + ' • ' + - personName, + personName!, ), subtitle: Text(formatDate( convertTimestampToDateString(activity.createdAt), @@ -92,7 +92,7 @@ class _InvoiceViewHistoryState extends State { locale: localeSelector(state, twoLetter: true))), trailing: activityId.isNotEmpty ? Icon(Icons.chevron_right) : null, onTap: activityId.isNotEmpty - ? () => viewModel.onViewPdf(context, invoice, history.activityId) + ? () => viewModel.onViewPdf!(context, invoice, history.activityId) : null, ); }, diff --git a/lib/ui/invoice/view/invoice_view_overview.dart b/lib/ui/invoice/view/invoice_view_overview.dart index 09480002f..7c4cb5140 100644 --- a/lib/ui/invoice/view/invoice_view_overview.dart +++ b/lib/ui/invoice/view/invoice_view_overview.dart @@ -25,9 +25,9 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class InvoiceOverview extends StatelessWidget { const InvoiceOverview({ - Key key, - @required this.viewModel, - @required this.isFilter, + Key? key, + required this.viewModel, + required this.isFilter, }) : super(key: key); final AbstractInvoiceViewVM viewModel; @@ -35,15 +35,15 @@ class InvoiceOverview extends StatelessWidget { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); - final state = viewModel.state; - final invoice = viewModel.invoice; + final localization = AppLocalization.of(context)!; + final state = viewModel.state!; + final invoice = viewModel.invoice!; final client = viewModel.client; final vendor = state.vendorState.get(invoice.vendorId); - final company = viewModel.company; + final company = viewModel.company!; - final creditMap = {}; - final paymentMap = {}; + final creditMap = {}; + final paymentMap = {}; final payments = invoice.isInvoice ? memoizedPaymentsByInvoice( invoice.id, state.paymentState.map, state.paymentState.list) @@ -53,7 +53,7 @@ class InvoiceOverview extends StatelessWidget { : []; payments.forEach((payment) { - payment.invoicePaymentables.forEach((paymentable) { + payment!.invoicePaymentables.forEach((paymentable) { if (paymentable.invoiceId == invoice.id) { paymentMap[paymentable] = payment; } @@ -66,7 +66,7 @@ class InvoiceOverview extends StatelessWidget { }); Map statuses; - Map colors; + Map colors; if (invoice.entityType == EntityType.quote) { statuses = kQuoteStatuses; colors = QuoteStatusColors(state.prefState.colorThemeModel).colors; @@ -150,7 +150,7 @@ class InvoiceOverview extends StatelessWidget { dueDateField = QuoteFields.validUntil; } - final Map fields = { + final Map fields = { if (invoice.isQuote) QuoteFields.date: formatDate(invoice.date, context) else if (invoice.isCredit) @@ -189,7 +189,7 @@ class InvoiceOverview extends StatelessWidget { RecurringInvoiceFields.remainingCycles: invoice.remainingCycles == -1 ? localization.endless : '${invoice.remainingCycles}', - RecurringInvoiceFields.autoBill: localization.lookup(invoice.autoBill) + + RecurringInvoiceFields.autoBill: localization.lookup(invoice.autoBill)! + ([SettingsEntity.AUTO_BILL_OPT_IN, SettingsEntity.AUTO_BILL_OPT_OUT] .contains(invoice.autoBill) ? (' - ' + @@ -248,7 +248,7 @@ class InvoiceOverview extends StatelessWidget { EntityListTile( isFilter: isFilter, entity: vendor, - subtitle: vendor.primaryContact.email, + subtitle: vendor!.primaryContact!.email, ), ); } else { @@ -256,7 +256,7 @@ class InvoiceOverview extends StatelessWidget { EntityListTile( isFilter: isFilter, entity: client, - subtitle: client.primaryContact.email, + subtitle: client!.primaryContact!.email, ), ); } @@ -272,7 +272,7 @@ class InvoiceOverview extends StatelessWidget { } if ((invoice.assignedUserId ?? '').isNotEmpty) { - final assignedUser = state.userState.get(invoice.assignedUserId); + final assignedUser = state.userState.get(invoice.assignedUserId!); widgets.add(EntityListTile( isFilter: isFilter, entity: assignedUser, @@ -281,7 +281,7 @@ class InvoiceOverview extends StatelessWidget { if ((invoice.recurringId ?? '').isNotEmpty) { final recurringInvoice = - state.recurringInvoiceState.get(invoice.recurringId); + state.recurringInvoiceState.get(invoice.recurringId!); widgets.add(EntityListTile(entity: recurringInvoice, isFilter: isFilter)); } else if (invoice.isRecurring) { widgets.add(EntitiesListTile( @@ -318,12 +318,12 @@ class InvoiceOverview extends StatelessWidget { if (paymentMap.isNotEmpty) { paymentMap.entries.forEach((entry) { - final payment = entry.value; + final payment = entry.value!; final paymentable = entry.key; - String amount = formatNumber( + String? amount = formatNumber( paymentable.amount, context, - clientId: invoice.isPurchaseOrder ? null : client.id, + clientId: invoice.isPurchaseOrder ? null : client!.id, vendorId: invoice.isPurchaseOrder ? invoice.vendorId : null, ); if (paymentable.amount != payment.amount) { @@ -331,16 +331,16 @@ class InvoiceOverview extends StatelessWidget { formatNumber( payment.amount, context, - clientId: invoice.isPurchaseOrder ? null : client.id, + clientId: invoice.isPurchaseOrder ? null : client!.id, vendorId: invoice.isPurchaseOrder ? invoice.vendorId : null, - ); + )!; } widgets.add( EntityListTile( isFilter: isFilter, entity: payment, - subtitle: amount + ' • ' + formatDate(payment.date, context), + subtitle: amount! + ' • ' + formatDate(payment.date, context), ), ); }); @@ -348,12 +348,12 @@ class InvoiceOverview extends StatelessWidget { if (creditMap.isNotEmpty) { creditMap.entries.forEach((entry) { - final credit = entry.value; + final credit = entry.value!; final paymentable = entry.key; - String amount = formatNumber( + String? amount = formatNumber( paymentable.amount, context, - clientId: invoice.isPurchaseOrder ? null : client.id, + clientId: invoice.isPurchaseOrder ? null : client!.id, vendorId: invoice.isPurchaseOrder ? invoice.vendorId : null, ); if (paymentable.amount != credit.amount) { @@ -361,16 +361,16 @@ class InvoiceOverview extends StatelessWidget { formatNumber( credit.amount, context, - clientId: invoice.isPurchaseOrder ? null : client.id, + clientId: invoice.isPurchaseOrder ? null : client!.id, vendorId: invoice.isPurchaseOrder ? invoice.vendorId : null, - ); + )!; } widgets.add( EntityListTile( isFilter: isFilter, entity: credit, - subtitle: amount + ' • ' + formatDate(credit.date, context), + subtitle: amount! + ' • ' + formatDate(credit.date, context), ), ); }); @@ -392,8 +392,8 @@ class InvoiceOverview extends StatelessWidget { return InvoiceItemListTile( invoice: invoice, invoiceItem: invoiceItem, - onTap: () => userCompany.canEditEntity(invoice) - ? viewModel.onEditPressed( + onTap: () => userCompany!.canEditEntity(invoice) + ? viewModel.onEditPressed!( context, invoice.lineItems.indexOf(invoiceItem)) : null, ); @@ -428,7 +428,7 @@ class InvoiceOverview extends StatelessWidget { invoice.isPurchaseOrder ? null : invoice.clientId, vendorId: invoice.isPurchaseOrder ? invoice.vendorId : null, - ), + )!, style: Theme.of(context).textTheme.titleMedium, ), ), diff --git a/lib/ui/invoice/view/invoice_view_schedule.dart b/lib/ui/invoice/view/invoice_view_schedule.dart index 0d29e63fe..6010d8a03 100644 --- a/lib/ui/invoice/view/invoice_view_schedule.dart +++ b/lib/ui/invoice/view/invoice_view_schedule.dart @@ -9,7 +9,7 @@ import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class InvoiceViewSchedule extends StatefulWidget { - const InvoiceViewSchedule({Key key, @required this.viewModel}) + const InvoiceViewSchedule({Key? key, required this.viewModel}) : super(key: key); final AbstractInvoiceViewVM viewModel; @@ -21,16 +21,16 @@ class InvoiceViewSchedule extends StatefulWidget { class _InvoiceViewScheduleState extends State { @override void didChangeDependencies() { - if (widget.viewModel.invoice.isStale) { - widget.viewModel.onRefreshed(context); + if (widget.viewModel.invoice!.isStale) { + widget.viewModel.onRefreshed!(context); } super.didChangeDependencies(); } @override Widget build(BuildContext context) { - final invoice = widget.viewModel.invoice; - final localization = AppLocalization.of(context); + final invoice = widget.viewModel.invoice!; + final localization = AppLocalization.of(context)!; return ScrollableListView( padding: const EdgeInsets.all(16), @@ -51,11 +51,11 @@ class _InvoiceViewScheduleState extends State { ), ], ), - if (invoice.isStale && invoice.recurringDates.isEmpty) + if (invoice.isStale && invoice.recurringDates!.isEmpty) LoadingIndicator( height: 300, ), - ...invoice.recurringDates + ...invoice.recurringDates! .map((schedule) => Padding( padding: const EdgeInsets.only(top: 16), child: Row( diff --git a/lib/ui/invoice/view/invoice_view_vm.dart b/lib/ui/invoice/view/invoice_view_vm.dart index fde954ac3..11296ae50 100644 --- a/lib/ui/invoice/view/invoice_view_vm.dart +++ b/lib/ui/invoice/view/invoice_view_vm.dart @@ -22,7 +22,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class InvoiceViewScreen extends StatelessWidget { const InvoiceViewScreen({ - Key key, + Key? key, this.isFilter = false, }) : super(key: key); final bool isFilter; @@ -38,7 +38,7 @@ class InvoiceViewScreen extends StatelessWidget { return InvoiceView( viewModel: viewModel, isFilter: isFilter, - tabIndex: viewModel.state.invoiceUIState.tabIndex, + tabIndex: viewModel.state!.invoiceUIState.tabIndex, ); }, ); @@ -47,54 +47,54 @@ class InvoiceViewScreen extends StatelessWidget { class AbstractInvoiceViewVM { AbstractInvoiceViewVM({ - @required this.state, - @required this.company, - @required this.invoice, - @required this.client, - @required this.isSaving, - @required this.isDirty, - @required this.onActionSelected, - @required this.onUploadDocuments, - @required this.onEditPressed, - @required this.onPaymentsPressed, - @required this.onRefreshed, - @required this.onViewExpense, - @required this.onViewPdf, + required this.state, + required this.company, + required this.invoice, + required this.client, + required this.isSaving, + required this.isDirty, + required this.onActionSelected, + required this.onUploadDocuments, + required this.onEditPressed, + required this.onPaymentsPressed, + required this.onRefreshed, + required this.onViewExpense, + required this.onViewPdf, }); - final AppState state; - final CompanyEntity company; - final InvoiceEntity invoice; - final ClientEntity client; - final bool isSaving; - final bool isDirty; - final Function(BuildContext, EntityAction) onActionSelected; - final Function(BuildContext, [int]) onEditPressed; - final Function(BuildContext) onPaymentsPressed; - final Function(BuildContext) onRefreshed; - final Function(BuildContext, List, bool) onUploadDocuments; - final Function(BuildContext, DocumentEntity) onViewExpense; - final Function(BuildContext, InvoiceEntity, [String]) onViewPdf; + final AppState? state; + final CompanyEntity? company; + final InvoiceEntity? invoice; + final ClientEntity? client; + final bool? isSaving; + final bool? isDirty; + final Function(BuildContext, EntityAction)? onActionSelected; + final Function(BuildContext, [int])? onEditPressed; + final Function(BuildContext)? onPaymentsPressed; + final Function(BuildContext)? onRefreshed; + final Function(BuildContext, List, bool)? onUploadDocuments; + final Function(BuildContext, DocumentEntity)? onViewExpense; + final Function(BuildContext, InvoiceEntity, [String])? onViewPdf; } class InvoiceViewVM extends AbstractInvoiceViewVM { InvoiceViewVM( - {AppState state, - CompanyEntity company, - InvoiceEntity invoice, - ClientEntity client, - bool isSaving, - bool isDirty, - Function(BuildContext, EntityAction) onEntityAction, - Function(BuildContext, [int]) onEditPressed, - Function(BuildContext, [bool]) onClientPressed, - Function(BuildContext, [bool]) onUserPressed, - Function(BuildContext, PaymentEntity, [bool]) onPaymentPressed, - Function(BuildContext) onPaymentsPressed, - Function(BuildContext) onRefreshed, - Function(BuildContext, List, bool) onUploadDocuments, - Function(BuildContext, DocumentEntity) onViewExpense, - Function(BuildContext, InvoiceEntity, [String]) onViewPdf}) + {AppState? state, + CompanyEntity? company, + InvoiceEntity? invoice, + ClientEntity? client, + bool? isSaving, + bool? isDirty, + Function(BuildContext, EntityAction)? onEntityAction, + Function(BuildContext, [int])? onEditPressed, + Function(BuildContext, [bool])? onClientPressed, + Function(BuildContext, [bool])? onUserPressed, + Function(BuildContext, PaymentEntity, [bool])? onPaymentPressed, + Function(BuildContext)? onPaymentsPressed, + Function(BuildContext)? onRefreshed, + Function(BuildContext, List, bool)? onUploadDocuments, + Function(BuildContext, DocumentEntity)? onViewExpense, + Function(BuildContext, InvoiceEntity, [String?])? onViewPdf}) : super( state: state, company: company, @@ -113,12 +113,12 @@ class InvoiceViewVM extends AbstractInvoiceViewVM { factory InvoiceViewVM.fromStore(Store store) { final state = store.state; - final invoice = state.invoiceState.get(state.invoiceUIState.selectedId); + final invoice = state.invoiceState.get(state.invoiceUIState.selectedId!)!; final client = state.clientState.get(invoice.clientId); Future _handleRefresh(BuildContext context) { final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(LoadInvoice(completer: completer, invoiceId: invoice.id)); return completer.future; } @@ -130,12 +130,12 @@ class InvoiceViewVM extends AbstractInvoiceViewVM { isDirty: invoice.isNew, invoice: invoice, client: client, - onEditPressed: (BuildContext context, [int index]) { + onEditPressed: (BuildContext context, [int? index]) { editEntity( entity: invoice, subIndex: index, completer: snackBarCompleter( - context, AppLocalization.of(context).updatedInvoice)); + context, AppLocalization.of(context)!.updatedInvoice)); }, onRefreshed: (context) => _handleRefresh(context), onPaymentsPressed: (BuildContext context) { @@ -153,7 +153,7 @@ class InvoiceViewVM extends AbstractInvoiceViewVM { invoice: invoice, completer: completer)); completer.future.then((client) { - showToast(AppLocalization.of(context).uploadedDocument); + showToast(AppLocalization.of(context)!.uploadedDocument); }).catchError((Object error) { showDialog( context: context, diff --git a/lib/ui/payment/edit/payment_edit.dart b/lib/ui/payment/edit/payment_edit.dart index 42d88b0b5..b0f9ae51b 100644 --- a/lib/ui/payment/edit/payment_edit.dart +++ b/lib/ui/payment/edit/payment_edit.dart @@ -30,8 +30,8 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class PaymentEdit extends StatefulWidget { const PaymentEdit({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final PaymentEditVM viewModel; @@ -58,7 +58,7 @@ class _PaymentEditState extends State { final _debouncer = Debouncer(); bool _showConvertCurrency = false; - double _convertedAmount = 0; + double? _convertedAmount = 0; @override void didChangeDependencies() { @@ -81,12 +81,12 @@ class _PaymentEditState extends State { _showConvertCurrency = payment.exchangeRate != 1 && payment.exchangeRate != 0; final state = widget.viewModel.state; - if (state.company.convertExpenseCurrency) { + if (state.company!.convertExpenseCurrency) { _showConvertCurrency = true; } _amountController.text = formatNumber(payment.amount, context, - formatNumberType: FormatNumberType.inputMoney); + formatNumberType: FormatNumberType.inputMoney)!; _numberController.text = payment.number; _transactionReferenceController.text = payment.transactionReference; _privateNotesController.text = payment.privateNotes; @@ -95,7 +95,7 @@ class _PaymentEditState extends State { _custom3Controller.text = payment.customValue3; _custom4Controller.text = payment.customValue4; _exchangeRateController.text = formatNumber(payment.exchangeRate, context, - formatNumberType: FormatNumberType.inputMoney); + formatNumberType: FormatNumberType.inputMoney)!; _controllers.forEach((controller) => controller.addListener(_onChanged)); @@ -131,7 +131,7 @@ class _PaymentEditState extends State { } void _onSavePressed(BuildContext context) { - final bool isValid = _formKey.currentState.validate(); + final bool isValid = _formKey.currentState!.validate(); if (!isValid) { return; @@ -140,20 +140,20 @@ class _PaymentEditState extends State { widget.viewModel.onSavePressed(context); } - void convertCurrency(SelectableEntity currency) { + void convertCurrency(SelectableEntity? currency) { final viewModel = widget.viewModel; final payment = viewModel.payment; final state = viewModel.state; double exchangeRate = 1; if (currency != null) { - final client = state.clientState.get(payment.clientId); + final client = state.clientState.get(payment.clientId)!; exchangeRate = getExchangeRate(state.staticState.currencyMap, fromCurrencyId: client.currencyId, toCurrencyId: currency.id); } _exchangeRateController.removeListener(_onChanged); _exchangeRateController.text = formatNumber(exchangeRate, context, - formatNumberType: FormatNumberType.inputMoney); + formatNumberType: FormatNumberType.inputMoney)!; _exchangeRateController.addListener(_onChanged); viewModel.onChanged(payment.rebuild((b) => b @@ -166,7 +166,7 @@ class _PaymentEditState extends State { final viewModel = widget.viewModel; final payment = viewModel.payment; final state = viewModel.state; - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final invoicePaymentables = payment.invoices.toList(); if (invoicePaymentables @@ -191,7 +191,7 @@ class _PaymentEditState extends State { creditTotal += credit.amount; }); - double limit; + double? limit; if (payment.amount != 0) { limit = payment.amount - payment.applied - paymentTotal; } else if (creditTotal != 0) { @@ -209,10 +209,10 @@ class _PaymentEditState extends State { EntityDropdown( autofocus: true, entityType: EntityType.client, - labelText: AppLocalization.of(context).client, + labelText: AppLocalization.of(context)!.client, entityId: payment.clientId, validator: (String val) => val.trim().isEmpty - ? AppLocalization.of(context).pleaseSelectAClient + ? AppLocalization.of(context)!.pleaseSelectAClient : null, onSelected: (client) { viewModel.onChanged(payment.rebuild( @@ -228,7 +228,7 @@ class _PaymentEditState extends State { state.userState.map, state.staticState), ), - if (state.company.enableApplyingPayments) + if (state.company!.enableApplyingPayments) DecoratedFormField( controller: _amountController, autocorrect: false, @@ -261,7 +261,7 @@ class _PaymentEditState extends State { if (payment.isApplying != true) DatePicker( validator: (String val) => val.trim().isEmpty - ? AppLocalization.of(context).pleaseSelectADate + ? AppLocalization.of(context)!.pleaseSelectADate : null, labelText: localization.paymentDate, selectedDate: payment.date, @@ -280,7 +280,7 @@ class _PaymentEditState extends State { .rebuild((b) => b..typeId = paymentType?.id ?? '')), ), if (payment.isNew || payment.isApplying == true) - if (state.company.isModuleEnabled(EntityType.credit)) + if (state.company!.isModuleEnabled(EntityType.credit)) for (var index = 0; index < creditPaymentables.length; index++) @@ -396,11 +396,11 @@ class _PaymentEditState extends State { final amount = payment.isNew ? (paymentTotal - creditTotal) : payment.amount; - final exchangeRate = _convertedAmount / amount; + final exchangeRate = _convertedAmount! / amount; _exchangeRateController.removeListener(_onChanged); _exchangeRateController.text = formatNumber( exchangeRate, context, - formatNumberType: FormatNumberType.inputMoney); + formatNumberType: FormatNumberType.inputMoney)!; _exchangeRateController.addListener(_onChanged); viewModel.onChanged( @@ -492,20 +492,20 @@ class _PaymentEditState extends State { class PaymentableEditor extends StatefulWidget { const PaymentableEditor({ - Key key, - @required this.viewModel, - @required this.paymentable, - @required this.index, - @required this.entityType, - @required this.limit, - @required this.onSavePressed, + Key? key, + required this.viewModel, + required this.paymentable, + required this.index, + required this.entityType, + required this.limit, + required this.onSavePressed, }) : super(key: key); final PaymentEditVM viewModel; final PaymentableEntity paymentable; final int index; final EntityType entityType; - final double limit; + final double? limit; final Function(BuildContext) onSavePressed; @override @@ -514,8 +514,8 @@ class PaymentableEditor extends StatefulWidget { class _PaymentableEditorState extends State { final _amountController = TextEditingController(); - String _invoiceId; - String _creditId; + String? _invoiceId; + String? _creditId; List _controllers = []; @override @@ -551,7 +551,7 @@ class _PaymentableEditorState extends State { super.dispose(); } - void _onChanged([String clientId]) { + void _onChanged([String? clientId]) { PaymentableEntity paymentable; if (widget.entityType == EntityType.invoice) { paymentable = widget.paymentable.rebuild((b) => b @@ -610,7 +610,7 @@ class _PaymentableEditorState extends State { payment.clientId, state.userState.map, payment.invoices.map((p) => p.invoiceId).toList(), - state.company.settings.recurringNumberPrefix, + state.company!.settings.recurringNumberPrefix, ); final creditList = memoizedDropdownCreditList( @@ -642,15 +642,15 @@ class _PaymentableEditorState extends State { child: EntityDropdown( allowClearing: false, entityType: EntityType.invoice, - labelText: AppLocalization.of(context).invoice, + labelText: AppLocalization.of(context)!.invoice, entityId: paymentable.invoiceId, entityList: paymentList, overrideSuggestedLabel: (entity) { if (entity == null) { return ''; } else { - return entity.listDisplayName.isEmpty - ? localization.pending + return entity.listDisplayName!.isEmpty + ? localization!.pending : entity.listDisplayName; } }, @@ -665,7 +665,7 @@ class _PaymentableEditorState extends State { onSelected: (selected) { final invoice = selected as InvoiceEntity; final amount = widget.limit != null - ? min(widget.limit, invoice.balanceOrAmount) + ? min(widget.limit!, invoice.balanceOrAmount) : invoice.balanceOrAmount; _amountController.text = formatNumber(amount, context, formatNumberType: FormatNumberType.inputMoney) ?? @@ -680,15 +680,15 @@ class _PaymentableEditorState extends State { child: EntityDropdown( allowClearing: false, entityType: EntityType.credit, - labelText: AppLocalization.of(context).credit, + labelText: AppLocalization.of(context)!.credit, entityId: paymentable.creditId, entityList: creditList, overrideSuggestedLabel: (entity) { if (entity == null) { return ''; } else { - return entity.listDisplayName.isEmpty - ? localization.pending + return entity.listDisplayName!.isEmpty + ? localization!.pending : entity.listDisplayName; } }, @@ -723,8 +723,8 @@ class _PaymentableEditorState extends State { keyboardType: TextInputType.numberWithOptions( decimal: true, signed: true), label: widget.entityType == EntityType.invoice - ? localization.amount - : localization.applied, + ? localization!.amount + : localization!.applied, onSavePressed: widget.onSavePressed), ), ], @@ -739,7 +739,7 @@ class _PaymentableEditorState extends State { ), IconButton( icon: Icon(Icons.clear, color: Colors.grey), - tooltip: localization.remove, + tooltip: localization!.remove, onPressed: paymentable.isEmpty ? null : () { diff --git a/lib/ui/payment/edit/payment_edit_footer.dart b/lib/ui/payment/edit/payment_edit_footer.dart index d5d22c42d..caeaba224 100644 --- a/lib/ui/payment/edit/payment_edit_footer.dart +++ b/lib/ui/payment/edit/payment_edit_footer.dart @@ -13,13 +13,13 @@ import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class PaymentEditFooter extends StatelessWidget { - const PaymentEditFooter({@required this.payment}); + const PaymentEditFooter({required this.payment}); final PaymentEntity payment; @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final store = StoreProvider.of(context); final state = store.state; @@ -39,13 +39,13 @@ class PaymentEditFooter extends StatelessWidget { amountLabel += localization.total + ' ' + - formatNumber(paymentTotal, context, clientId: payment.clientId); + formatNumber(paymentTotal, context, clientId: payment.clientId)!; if (payment.credits.isNotEmpty) { amountLabel += ' • ' + localization.credit + ' ' + - formatNumber(creditTotal, context, clientId: payment.clientId); + formatNumber(creditTotal, context, clientId: payment.clientId)!; } return BottomAppBar( diff --git a/lib/ui/payment/edit/payment_edit_vm.dart b/lib/ui/payment/edit/payment_edit_vm.dart index 165e2ae20..6674b1e4e 100644 --- a/lib/ui/payment/edit/payment_edit_vm.dart +++ b/lib/ui/payment/edit/payment_edit_vm.dart @@ -24,7 +24,7 @@ import 'package:invoiceninja_flutter/ui/payment/view/payment_view_vm.dart'; import 'package:invoiceninja_flutter/utils/completers.dart'; class PaymentEditScreen extends StatelessWidget { - const PaymentEditScreen({Key key}) : super(key: key); + const PaymentEditScreen({Key? key}) : super(key: key); static const String route = '/payment/edit'; @@ -46,21 +46,21 @@ class PaymentEditScreen extends StatelessWidget { class PaymentEditVM { PaymentEditVM({ - @required this.state, - @required this.payment, - @required this.origPayment, - @required this.onChanged, - @required this.onSavePressed, - @required this.prefState, - @required this.staticState, - @required this.onCancelPressed, - @required this.isSaving, - @required this.isDirty, + required this.state, + required this.payment, + required this.origPayment, + required this.onChanged, + required this.onSavePressed, + required this.prefState, + required this.staticState, + required this.onCancelPressed, + required this.isSaving, + required this.isDirty, }); factory PaymentEditVM.fromStore(Store store) { final state = store.state; - final payment = state.paymentUIState.editing; + final payment = state.paymentUIState.editing!; return PaymentEditVM( state: state, @@ -79,7 +79,7 @@ class PaymentEditVM { }, onSavePressed: (BuildContext context) { Debouncer.runOnComplete(() { - final payment = store.state.paymentUIState.editing; + final payment = store.state.paymentUIState.editing!; final localization = navigatorKey.localization; final navigator = navigatorKey.currentState; double amount = 0; @@ -87,9 +87,9 @@ class PaymentEditVM { payment.credits.forEach((credit) => amount -= credit.amount); if (amount < 0) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { - return ErrorDialog(localization.creditPaymentError); + return ErrorDialog(localization!.creditPaymentError); }); return null; } @@ -98,25 +98,25 @@ class PaymentEditVM { SavePaymentRequest(completer: completer, payment: payment)); return completer.future.then((savedPayment) { showToast(payment.isNew - ? localization.createdPayment - : localization.updatedPayment); + ? localization!.createdPayment + : localization!.updatedPayment); if (state.prefState.isMobile) { store.dispatch(UpdateCurrentRoute(PaymentViewScreen.route)); if (payment.isNew) { - navigator.pushReplacementNamed(PaymentViewScreen.route); + navigator!.pushReplacementNamed(PaymentViewScreen.route); } else { - navigator.pop(savedPayment); + navigator!.pop(savedPayment); } } else { if (payment.isApplying == true) { - navigator.pop(); + navigator!.pop(); } else { viewEntity(entity: savedPayment); } } }).catchError((Object error) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { return ErrorDialog(error); }); @@ -128,7 +128,7 @@ class PaymentEditVM { final AppState state; final PaymentEntity payment; - final PaymentEntity origPayment; + final PaymentEntity? origPayment; final Function(PaymentEntity) onChanged; final Function(BuildContext) onSavePressed; final Function(BuildContext) onCancelPressed; diff --git a/lib/ui/payment/payment_list_item.dart b/lib/ui/payment/payment_list_item.dart index 959a8d6dc..8073740e8 100644 --- a/lib/ui/payment/payment_list_item.dart +++ b/lib/ui/payment/payment_list_item.dart @@ -20,7 +20,7 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class PaymentListItem extends StatelessWidget { const PaymentListItem({ - @required this.payment, + required this.payment, this.filter, this.showCheckbox = false, this.isChecked = false, @@ -28,11 +28,11 @@ class PaymentListItem extends StatelessWidget { this.showSelected = true, }); - final PaymentEntity payment; - final String filter; + final PaymentEntity? payment; + final String? filter; final bool showCheckbox; final bool isChecked; - final Function onTap; + final Function? onTap; final bool showSelected; @override @@ -41,33 +41,33 @@ class PaymentListItem extends StatelessWidget { final uiState = state.uiState; final paymentUIState = uiState.paymentUIState; final textStyle = TextStyle(fontSize: 16); - final client = state.clientState.get(payment.clientId); + final client = state.clientState.get(payment!.clientId); final localization = AppLocalization.of(context); - final filterMatch = filter != null && filter.isNotEmpty - ? (payment.matchesFilterValue(filter) ?? - client.matchesFilterValue(filter)) + final filterMatch = filter != null && filter!.isNotEmpty + ? (payment!.matchesFilterValue(filter) ?? + client!.matchesFilterValue(filter)) : null; final mobileSubtitle = filterMatch ?? - (payment.number ?? '') + ' • ' + formatDate(payment.date, context); - final textColor = Theme.of(context).textTheme.bodyLarge.color; + (payment!.number ?? '') + ' • ' + formatDate(payment!.date, context); + final textColor = Theme.of(context).textTheme.bodyLarge!.color; String desktopSubtitle = ''; - if (payment.date.isNotEmpty) { - desktopSubtitle = formatDate(payment.date, context); + if (payment!.date.isNotEmpty) { + desktopSubtitle = formatDate(payment!.date, context); } - if (payment.transactionReference.isNotEmpty) { + if (payment!.transactionReference.isNotEmpty) { if (desktopSubtitle.isNotEmpty) { desktopSubtitle += ' • '; } - desktopSubtitle += payment.transactionReference; + desktopSubtitle += payment!.transactionReference; } return DismissibleEntity( isSelected: isDesktop(context) && showSelected && - payment.id == + payment!.id == (uiState.isEditing - ? paymentUIState.editing.id + ? paymentUIState.editing!.id : paymentUIState.selectedId), showMultiselect: showSelected, userCompany: state.userCompany, @@ -77,11 +77,11 @@ class PaymentListItem extends StatelessWidget { return constraints.maxWidth > kTableListWidthCutoff ? InkWell( onTap: () => onTap != null - ? onTap() - : selectEntity(entity: payment, forceView: !showCheckbox), + ? onTap!() + : selectEntity(entity: payment!, forceView: !showCheckbox), onLongPress: () => onTap != null ? null - : selectEntity(entity: payment, longPress: true), + : selectEntity(entity: payment!, longPress: true), child: Padding( padding: const EdgeInsets.only( left: 10, @@ -105,7 +105,7 @@ class PaymentListItem extends StatelessWidget { ), ) : ActionMenuButton( - entityActions: payment.getActions( + entityActions: payment!.getActions( userCompany: state.userCompany, client: client, includeEdit: true, @@ -121,11 +121,11 @@ class PaymentListItem extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - payment.number, + payment!.number, style: textStyle, overflow: TextOverflow.ellipsis, ), - if (!payment.isActive) EntityStateLabel(payment) + if (!payment!.isActive) EntityStateLabel(payment) ], ), ), @@ -134,17 +134,17 @@ class PaymentListItem extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text(client.displayName, style: textStyle), + Text(client!.displayName, style: textStyle), Text( filterMatch ?? desktopSubtitle, maxLines: 2, overflow: TextOverflow.ellipsis, style: Theme.of(context) .textTheme - .titleSmall + .titleSmall! .copyWith( color: - textColor.withOpacity(kLighterOpacity), + textColor!.withOpacity(kLighterOpacity), ), ), ], @@ -152,8 +152,8 @@ class PaymentListItem extends StatelessWidget { ), SizedBox(width: 10), Text( - formatNumber(payment.amount, context, - clientId: client.id), + formatNumber(payment!.amount, context, + clientId: client.id)!, style: textStyle, textAlign: TextAlign.end, ), @@ -165,11 +165,11 @@ class PaymentListItem extends StatelessWidget { ) : ListTile( onTap: () => onTap != null - ? onTap() - : selectEntity(entity: payment, forceView: !showCheckbox), + ? onTap!() + : selectEntity(entity: payment!, forceView: !showCheckbox), onLongPress: () => onTap != null ? null - : selectEntity(entity: payment, longPress: true), + : selectEntity(entity: payment!, longPress: true), leading: showCheckbox ? IgnorePointer( child: Checkbox( @@ -187,13 +187,13 @@ class PaymentListItem extends StatelessWidget { children: [ Expanded( child: Text( - client.displayName, + client!.displayName, style: Theme.of(context).textTheme.titleMedium, ), ), Text( - formatNumber(payment.amount, context, - clientId: payment.clientId), + formatNumber(payment!.amount, context, + clientId: payment!.clientId)!, style: Theme.of(context).textTheme.titleMedium), ], ), @@ -214,12 +214,12 @@ class PaymentListItem extends StatelessWidget { : Container(), ), Text( - localization.lookup( - 'payment_status_${payment.calculatedStatusId}'), + localization!.lookup( + 'payment_status_${payment!.calculatedStatusId}')!, style: TextStyle( color: PaymentStatusColors( state.prefState.colorThemeModel) - .colors[payment.calculatedStatusId], + .colors[payment!.calculatedStatusId], )), ], ), diff --git a/lib/ui/payment/payment_list_vm.dart b/lib/ui/payment/payment_list_vm.dart index 653ce6fd2..196ab2557 100644 --- a/lib/ui/payment/payment_list_vm.dart +++ b/lib/ui/payment/payment_list_vm.dart @@ -24,7 +24,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class PaymentListBuilder extends StatelessWidget { - const PaymentListBuilder({Key key}) : super(key: key); + const PaymentListBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -43,7 +43,7 @@ class PaymentListBuilder extends StatelessWidget { itemBuilder: (BuildContext context, index) { final state = viewModel.state; final paymentId = viewModel.paymentList[index]; - final payment = state.paymentState.map[paymentId]; + final payment = state.paymentState.map[paymentId]!; final paymentListState = viewModel.state.paymentListState; return PaymentListItem( @@ -60,18 +60,18 @@ class PaymentListBuilder extends StatelessWidget { class PaymentListVM { PaymentListVM({ - @required this.state, - @required this.user, - @required this.paymentList, - @required this.paymentMap, - @required this.clientMap, - @required this.filter, - @required this.isLoading, - @required this.onRefreshed, - @required this.listState, - @required this.tableColumns, - @required this.onSortColumn, - @required this.onClearMultielsect, + required this.state, + required this.user, + required this.paymentList, + required this.paymentMap, + required this.clientMap, + required this.filter, + required this.isLoading, + required this.onRefreshed, + required this.listState, + required this.tableColumns, + required this.onSortColumn, + required this.onClearMultielsect, }); static PaymentListVM fromStore(Store store) { @@ -80,7 +80,7 @@ class PaymentListVM { return Future(null); } final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(RefreshData(completer: completer)); return completer.future; } @@ -106,7 +106,7 @@ class PaymentListVM { listState: state.paymentListState, onRefreshed: (context) => _handleRefresh(context), tableColumns: - state.userCompany.settings?.getTableColumns(EntityType.payment) ?? + state.userCompany!.settings?.getTableColumns(EntityType.payment) ?? PaymentPresenter.getDefaultTableFields(state.userCompany), onSortColumn: (field) => store.dispatch(SortPayments(field)), onClearMultielsect: () => store.dispatch(ClearPaymentMultiselect()), @@ -114,12 +114,12 @@ class PaymentListVM { } final AppState state; - final UserEntity user; + final UserEntity? user; final ListUIState listState; final List paymentList; - final BuiltMap paymentMap; - final BuiltMap clientMap; - final String filter; + final BuiltMap paymentMap; + final BuiltMap clientMap; + final String? filter; final bool isLoading; final Function(BuildContext) onRefreshed; final List tableColumns; diff --git a/lib/ui/payment/payment_presenter.dart b/lib/ui/payment/payment_presenter.dart index 1f2fc9c16..f53bd7a5d 100644 --- a/lib/ui/payment/payment_presenter.dart +++ b/lib/ui/payment/payment_presenter.dart @@ -1,4 +1,5 @@ // Flutter imports: +import 'package:collection/collection.dart' show IterableNullableExtension; import 'package:flutter/material.dart'; // Package imports: @@ -15,7 +16,7 @@ import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class PaymentPresenter extends EntityPresenter { - static List getDefaultTableFields(UserCompanyEntity userCompany) { + static List getDefaultTableFields(UserCompanyEntity? userCompany) { return [ PaymentFields.status, PaymentFields.number, @@ -28,7 +29,7 @@ class PaymentPresenter extends EntityPresenter { ]; } - static List getAllTableFields(UserCompanyEntity userCompany) { + static List getAllTableFields(UserCompanyEntity? userCompany) { return [ ...getDefaultTableFields(userCompany), ...EntityPresenter.getBaseFields(), @@ -47,26 +48,26 @@ class PaymentPresenter extends EntityPresenter { } @override - Widget getField({String field, BuildContext context}) { + Widget getField({String? field, required BuildContext context}) { final localization = AppLocalization.of(context); final state = StoreProvider.of(context).state; - final payment = entity as PaymentEntity; + final payment = entity as PaymentEntity?; switch (field) { case PaymentFields.number: - return Text(payment.number); + return Text(payment!.number); case PaymentFields.type: return Text( - state.staticState.paymentTypeMap[payment.typeId]?.name ?? ''); + state.staticState.paymentTypeMap[payment!.typeId]?.name ?? ''); case PaymentFields.invoiceNumber: return ConstrainedBox( constraints: BoxConstraints(maxWidth: kTableColumnWidthMax), child: Wrap( clipBehavior: Clip.antiAlias, - children: payment.invoicePaymentables + children: payment!.invoicePaymentables .map((paymentable) => state.invoiceState.map[paymentable.invoiceId]) - .where((invoice) => invoice != null) + .whereNotNull() .map((invoice) => Padding( padding: const EdgeInsets.only(right: 8), child: LinkTextRelatedEntity( @@ -76,54 +77,54 @@ class PaymentPresenter extends EntityPresenter { ), ); case PaymentFields.creditNumber: - final numbers = payment.creditPaymentables + final numbers = payment!.creditPaymentables .map((paymentable) => state.creditState.map[paymentable.creditId]?.number ?? '') .toList() .join(', '); return Text(numbers); case PaymentFields.client: - final client = state.clientState.get(payment.clientId); + final client = state.clientState.get(payment!.clientId); return LinkTextRelatedEntity(entity: client, relation: payment); case PaymentFields.transactionReference: - return Text(payment.transactionReference); + return Text(payment!.transactionReference); case PaymentFields.date: - return Text(formatDate(payment.date, context)); + return Text(formatDate(payment!.date, context)); case PaymentFields.amount: return Align( alignment: Alignment.centerRight, - child: Text(formatNumber(payment.amount - payment.refunded, context, - clientId: payment.clientId))); + child: Text(formatNumber(payment!.amount - payment.refunded, context, + clientId: payment.clientId)!)); case PaymentFields.convertedAmount: return Align( alignment: Alignment.centerRight, child: Text(formatNumber( - payment.amount * payment.exchangeRate, context, - currencyId: payment.exchangeCurrencyId))); + payment!.amount * payment.exchangeRate, context, + currencyId: payment.exchangeCurrencyId)!)); case PaymentFields.status: return EntityStatusChip(entity: payment, showState: true); case PaymentFields.customValue1: - return Text(presentCustomField(context, payment.customValue1)); + return Text(presentCustomField(context, payment!.customValue1)!); case PaymentFields.customValue2: - return Text(presentCustomField(context, payment.customValue2)); + return Text(presentCustomField(context, payment!.customValue2)!); case PaymentFields.customValue3: - return Text(presentCustomField(context, payment.customValue3)); + return Text(presentCustomField(context, payment!.customValue3)!); case PaymentFields.customValue4: - return Text(presentCustomField(context, payment.customValue4)); + return Text(presentCustomField(context, payment!.customValue4)!); case PaymentFields.refunded: - return Text(formatNumber(payment.refunded, context, - clientId: payment.clientId)); + return Text(formatNumber(payment!.refunded, context, + clientId: payment.clientId)!); case PaymentFields.privateNotes: - return Text(payment.privateNotes); + return Text(payment!.privateNotes); case PaymentFields.exchangeRate: - return Text(formatNumber(payment.exchangeRate, context, - formatNumberType: FormatNumberType.percent)); + return Text(formatNumber(payment!.exchangeRate, context, + formatNumberType: FormatNumberType.percent)!); case PaymentFields.gateway: final companyGateway = - state.companyGatewayState.get(payment.companyGatewayId); + state.companyGatewayState.get(payment!.companyGatewayId)!; return Text(companyGateway.label); case PaymentFields.gatewayType: - return Text(localization.lookup(kGatewayTypes[payment.gatewayTypeId])); + return Text(localization!.lookup(kGatewayTypes[payment!.gatewayTypeId])!); } return super.getField(field: field, context: context); diff --git a/lib/ui/payment/payment_screen.dart b/lib/ui/payment/payment_screen.dart index 9766519d2..5347068e2 100644 --- a/lib/ui/payment/payment_screen.dart +++ b/lib/ui/payment/payment_screen.dart @@ -23,8 +23,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class PaymentScreen extends StatelessWidget { const PaymentScreen({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final PaymentScreenVM viewModel; @@ -33,7 +33,7 @@ class PaymentScreen extends StatelessWidget { Widget build(BuildContext context) { final store = StoreProvider.of(context); final state = store.state; - final company = state.company; + final company = state.company!; final userCompany = state.userCompany; final localization = AppLocalization.of(context); @@ -41,42 +41,42 @@ class PaymentScreen extends StatelessWidget { PaymentStatusEntity().rebuild( (b) => b ..id = kPaymentStatusCompleted - ..name = localization.completed, + ..name = localization!.completed, ), PaymentStatusEntity().rebuild( (b) => b ..id = kPaymentStatusPending - ..name = localization.pending, + ..name = localization!.pending, ), PaymentStatusEntity().rebuild( (b) => b ..id = kPaymentStatusCancelled - ..name = localization.cancelled, + ..name = localization!.cancelled, ), PaymentStatusEntity().rebuild( (b) => b ..id = kPaymentStatusFailed - ..name = localization.failed, + ..name = localization!.failed, ), PaymentStatusEntity().rebuild( (b) => b ..id = kPaymentStatusPartiallyRefunded - ..name = localization.partiallyRefunded, + ..name = localization!.partiallyRefunded, ), PaymentStatusEntity().rebuild( (b) => b ..id = kPaymentStatusRefunded - ..name = localization.refunded, + ..name = localization!.refunded, ), PaymentStatusEntity().rebuild( (b) => b ..id = kPaymentStatusUnapplied - ..name = localization.unapplied, + ..name = localization!.unapplied, ), PaymentStatusEntity().rebuild( (b) => b ..id = kPaymentStatusPartiallyUnapplied - ..name = localization.partiallyUnapplied, + ..name = localization!.partiallyUnapplied, ), ]; @@ -161,7 +161,7 @@ class PaymentScreen extends StatelessWidget { }, ), floatingActionButton: state.prefState.isMenuFloated && - userCompany.canCreate(EntityType.payment) + userCompany!.canCreate(EntityType.payment) ? FloatingActionButton( heroTag: 'payment_fab', backgroundColor: Theme.of(context).primaryColorDark, @@ -173,7 +173,7 @@ class PaymentScreen extends StatelessWidget { Icons.add, color: Colors.white, ), - tooltip: localization.enterPayment, + tooltip: localization!.enterPayment, ) : null, ); diff --git a/lib/ui/payment/payment_screen_vm.dart b/lib/ui/payment/payment_screen_vm.dart index ed6a7dff4..22d88b53a 100644 --- a/lib/ui/payment/payment_screen_vm.dart +++ b/lib/ui/payment/payment_screen_vm.dart @@ -14,7 +14,7 @@ import 'package:invoiceninja_flutter/redux/payment/payment_selectors.dart'; import 'payment_screen.dart'; class PaymentScreenBuilder extends StatelessWidget { - const PaymentScreenBuilder({Key key}) : super(key: key); + const PaymentScreenBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -31,16 +31,16 @@ class PaymentScreenBuilder extends StatelessWidget { class PaymentScreenVM { PaymentScreenVM({ - @required this.isInMultiselect, - @required this.paymentList, - @required this.userCompany, - @required this.paymentMap, + required this.isInMultiselect, + required this.paymentList, + required this.userCompany, + required this.paymentMap, }); final bool isInMultiselect; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List paymentList; - final BuiltMap paymentMap; + final BuiltMap paymentMap; static PaymentScreenVM fromStore(Store store) { final state = store.state; diff --git a/lib/ui/payment/refund/payment_refund.dart b/lib/ui/payment/refund/payment_refund.dart index a04613665..020066f00 100644 --- a/lib/ui/payment/refund/payment_refund.dart +++ b/lib/ui/payment/refund/payment_refund.dart @@ -23,8 +23,8 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class PaymentRefund extends StatefulWidget { const PaymentRefund({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final PaymentRefundVM viewModel; @@ -54,7 +54,7 @@ class _PaymentRefundState extends State { final payment = widget.viewModel.payment; _amountController.text = formatNumber(payment.amount, context, - formatNumberType: FormatNumberType.inputMoney); + formatNumberType: FormatNumberType.inputMoney)!; _controllers.forEach((controller) => controller.addListener(_onChanged)); super.didChangeDependencies(); @@ -84,7 +84,7 @@ class _PaymentRefundState extends State { Widget build(BuildContext context) { final viewModel = widget.viewModel; final payment = viewModel.payment; - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final paymentables = payment.invoices.toList(); final needsEmpty = @@ -97,7 +97,7 @@ class _PaymentRefundState extends State { final state = viewModel.state; final companyGateway = - state.companyGatewayState.get(payment.companyGatewayId); + state.companyGatewayState.get(payment.companyGatewayId)!; final GatewayEntity gateway = state.staticState.gatewayMap[companyGateway.gatewayId] ?? GatewayEntity(); @@ -129,7 +129,7 @@ class _PaymentRefundState extends State { ), DatePicker( validator: (String val) => val.trim().isEmpty - ? AppLocalization.of(context).pleaseSelectADate + ? AppLocalization.of(context)!.pleaseSelectADate : null, autoValidate: autoValidate, labelText: localization.refundDate, @@ -166,7 +166,7 @@ class _PaymentRefundState extends State { ); void onSavePressed(BuildContext context) { - final bool isValid = _formKey.currentState.validate(); + final bool isValid = _formKey.currentState!.validate(); setState(() { autoValidate = !isValid; @@ -232,11 +232,11 @@ class _PaymentRefundState extends State { class PaymentableEditor extends StatefulWidget { const PaymentableEditor({ - Key key, - @required this.viewModel, - @required this.paymentable, - @required this.onChanged, - @required this.index, + Key? key, + required this.viewModel, + required this.paymentable, + required this.onChanged, + required this.index, }) : super(key: key); final PaymentRefundVM viewModel; @@ -250,7 +250,7 @@ class PaymentableEditor extends StatefulWidget { class _PaymentableEditorState extends State { final _amountController = TextEditingController(); - String _invoiceId = ''; + String? _invoiceId = ''; List _controllers = []; @override @@ -263,7 +263,7 @@ class _PaymentableEditorState extends State { _invoiceId = widget.paymentable.invoiceId; _amountController.text = formatNumber(widget.paymentable.amount, context, - formatNumberType: FormatNumberType.inputMoney); + formatNumberType: FormatNumberType.inputMoney)!; _controllers.forEach((controller) => controller.addListener(_onChanged)); @@ -280,7 +280,7 @@ class _PaymentableEditorState extends State { super.dispose(); } - void _onChanged([String clientId]) { + void _onChanged([String? clientId]) { final paymentable = widget.paymentable.rebuild((b) => b ..invoiceId = _invoiceId ..amount = parseDouble(_amountController.text)); @@ -321,7 +321,7 @@ class _PaymentableEditorState extends State { child: EntityDropdown( allowClearing: false, entityType: EntityType.invoice, - labelText: AppLocalization.of(context).invoice, + labelText: AppLocalization.of(context)!.invoice, entityId: paymentable.invoiceId, entityList: payment.paymentables .map((payment) => payment.invoiceId) @@ -356,7 +356,7 @@ class _PaymentableEditorState extends State { autocorrect: false, keyboardType: TextInputType.numberWithOptions(decimal: true, signed: true), - label: localization.amount, + label: localization!.amount, autofocus: !hasMultipleInvoices, validator: (value) => !hasMultipleInvoices && (value.trim().isEmpty || parseDouble(value) == 0) @@ -371,7 +371,7 @@ class _PaymentableEditorState extends State { ), IconButton( icon: Icon(Icons.clear), - tooltip: localization.remove, + tooltip: localization!.remove, onPressed: paymentable.isEmpty ? null : () { diff --git a/lib/ui/payment/refund/payment_refund_vm.dart b/lib/ui/payment/refund/payment_refund_vm.dart index d1fdb26f0..37d1741f6 100644 --- a/lib/ui/payment/refund/payment_refund_vm.dart +++ b/lib/ui/payment/refund/payment_refund_vm.dart @@ -26,7 +26,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/platforms.dart'; class PaymentRefundScreen extends StatelessWidget { - const PaymentRefundScreen({Key key}) : super(key: key); + const PaymentRefundScreen({Key? key}) : super(key: key); static const String route = '/payment/refund'; @@ -48,23 +48,23 @@ class PaymentRefundScreen extends StatelessWidget { class PaymentRefundVM { PaymentRefundVM({ - @required this.state, - @required this.payment, - @required this.origPayment, - @required this.onChanged, - @required this.onRefundPressed, - @required this.prefState, - @required this.invoiceMap, - @required this.invoiceList, - @required this.staticState, - @required this.onCancelPressed, - @required this.isSaving, - @required this.isDirty, + required this.state, + required this.payment, + required this.origPayment, + required this.onChanged, + required this.onRefundPressed, + required this.prefState, + required this.invoiceMap, + required this.invoiceList, + required this.staticState, + required this.onCancelPressed, + required this.isSaving, + required this.isDirty, }); factory PaymentRefundVM.fromStore(Store store) { final state = store.state; - final payment = state.paymentUIState.editing; + final payment = state.paymentUIState.editing!; return PaymentRefundVM( state: state, @@ -88,7 +88,7 @@ class PaymentRefundVM { store.dispatch( RefundPaymentRequest(completer: completer, payment: payment)); return completer.future.then((savedPayment) { - showToast(AppLocalization.of(context).refundedPayment); + showToast(AppLocalization.of(context)!.refundedPayment); if (isMobile(context)) { store.dispatch(UpdateCurrentRoute(PaymentViewScreen.route)); if (payment.isNew) { @@ -113,11 +113,11 @@ class PaymentRefundVM { final AppState state; final PaymentEntity payment; - final PaymentEntity origPayment; + final PaymentEntity? origPayment; final Function(PaymentEntity) onChanged; final Function(BuildContext, Completer) onRefundPressed; final Function(BuildContext) onCancelPressed; - final BuiltMap invoiceMap; + final BuiltMap invoiceMap; final PrefState prefState; final BuiltList invoiceList; final StaticState staticState; diff --git a/lib/ui/payment/view/payment_view.dart b/lib/ui/payment/view/payment_view.dart index 47ccfde34..42f5e2f58 100644 --- a/lib/ui/payment/view/payment_view.dart +++ b/lib/ui/payment/view/payment_view.dart @@ -24,9 +24,9 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class PaymentView extends StatefulWidget { const PaymentView({ - Key key, - @required this.viewModel, - @required this.isFilter, + Key? key, + required this.viewModel, + required this.isFilter, }) : super(key: key); final PaymentViewVM viewModel; @@ -48,13 +48,13 @@ class _PaymentViewState extends State { final localization = AppLocalization.of(context); final companyGateway = - state.companyGatewayState.get(payment.companyGatewayId); + state.companyGatewayState.get(payment.companyGatewayId)!; final companyGatewayLink = GatewayEntity.getPaymentUrl( gatewayId: companyGateway.gatewayId, transactionReference: payment.transactionReference, ); - final fields = {}; + final fields = {}; /* fields[PaymentFields.paymentStatusId] = localization.lookup('payment_status_${payment.statusId}'); @@ -93,7 +93,7 @@ class _PaymentViewState extends State { statusColor: PaymentStatusColors(state.prefState.colorThemeModel) .colors[payment.statusId], - statusLabel: localization + statusLabel: localization! .lookup('payment_status_${payment.statusId}'), label: localization.amount, value: formatNumber( @@ -107,14 +107,14 @@ class _PaymentViewState extends State { EntityListTile( isFilter: widget.isFilter, entity: client, - subtitle: client.primaryContact.email, + subtitle: client.primaryContact!.email, ), for (final paymentable in payment.invoicePaymentables) EntityListTile( isFilter: widget.isFilter, entity: state.invoiceState.map[paymentable.invoiceId], subtitle: formatNumber(paymentable.amount, context, - clientId: payment.clientId) + + clientId: payment.clientId)! + ' • ' + formatDate( convertTimestampToDateString( @@ -126,7 +126,7 @@ class _PaymentViewState extends State { isFilter: widget.isFilter, entity: state.creditState.map[paymentable.creditId], subtitle: formatNumber(paymentable.amount, context, - clientId: payment.clientId) + + clientId: payment.clientId)! + ' • ' + formatDate( convertTimestampToDateString( @@ -181,10 +181,10 @@ class _PaymentViewState extends State { ), BottomButtons( entity: payment, - action1: state.company.enableApplyingPayments + action1: state.company!.enableApplyingPayments ? EntityAction.applyPayment : EntityAction.sendEmail, - action1Enabled: state.company.enableApplyingPayments + action1Enabled: state.company!.enableApplyingPayments ? payment.applied < payment.amount && memoizedHasActiveUnpaidInvoices( payment.clientId, diff --git a/lib/ui/payment/view/payment_view_vm.dart b/lib/ui/payment/view/payment_view_vm.dart index 69fbfb4ab..09ae9845d 100644 --- a/lib/ui/payment/view/payment_view_vm.dart +++ b/lib/ui/payment/view/payment_view_vm.dart @@ -16,7 +16,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class PaymentViewScreen extends StatelessWidget { const PaymentViewScreen({ - Key key, + Key? key, this.isFilter = false, }) : super(key: key); final bool isFilter; @@ -40,14 +40,14 @@ class PaymentViewScreen extends StatelessWidget { class PaymentViewVM { PaymentViewVM({ - @required this.state, - @required this.payment, - @required this.company, - @required this.onEntityAction, - @required this.onRefreshed, - @required this.isSaving, - @required this.isLoading, - @required this.isDirty, + required this.state, + required this.payment, + required this.company, + required this.onEntityAction, + required this.onRefreshed, + required this.isSaving, + required this.isLoading, + required this.isDirty, }); factory PaymentViewVM.fromStore(Store store) { @@ -57,7 +57,7 @@ class PaymentViewVM { Future _handleRefresh(BuildContext context) { final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(LoadPayment( completer: completer, paymentId: payment.id, @@ -80,7 +80,7 @@ class PaymentViewVM { final AppState state; final PaymentEntity payment; - final CompanyEntity company; + final CompanyEntity? company; final Function(BuildContext, EntityAction) onEntityAction; final Function(BuildContext) onRefreshed; final bool isSaving; diff --git a/lib/ui/payment_term/edit/payment_term_edit.dart b/lib/ui/payment_term/edit/payment_term_edit.dart index 060dc99ad..0245919bc 100644 --- a/lib/ui/payment_term/edit/payment_term_edit.dart +++ b/lib/ui/payment_term/edit/payment_term_edit.dart @@ -13,8 +13,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class PaymentTermEdit extends StatefulWidget { const PaymentTermEdit({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final PaymentTermEditVM viewModel; @@ -43,7 +43,7 @@ class _PaymentTermEditState extends State { final paymentTerm = widget.viewModel.paymentTerm; _numDaysController.text = formatNumber( paymentTerm.numDays.toDouble(), context, - formatNumberType: FormatNumberType.inputAmount); + formatNumberType: FormatNumberType.inputAmount)!; _controllers.forEach((controller) => controller.addListener(_onChanged)); @@ -71,7 +71,7 @@ class _PaymentTermEditState extends State { } void _onSavePressed() { - final bool isValid = _formKey.currentState.validate(); + final bool isValid = _formKey.currentState!.validate(); if (!isValid) { return; @@ -88,8 +88,8 @@ class _PaymentTermEditState extends State { return EditScaffold( entity: viewModel.paymentTerm, title: viewModel.paymentTerm.isNew - ? localization.newPaymentTerm - : localization.editPaymentTerm, + ? localization!.newPaymentTerm + : localization!.editPaymentTerm, onCancelPressed: (context) => viewModel.onCancelPressed(context), onSavePressed: (context) => _onSavePressed(), body: Form( diff --git a/lib/ui/payment_term/edit/payment_term_edit_vm.dart b/lib/ui/payment_term/edit/payment_term_edit_vm.dart index 95b929259..7f554b135 100644 --- a/lib/ui/payment_term/edit/payment_term_edit_vm.dart +++ b/lib/ui/payment_term/edit/payment_term_edit_vm.dart @@ -25,7 +25,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class PaymentTermEditScreen extends StatelessWidget { - const PaymentTermEditScreen({Key key}) : super(key: key); + const PaymentTermEditScreen({Key? key}) : super(key: key); static const String route = '/$kSettings/$kSettingsPaymentTermEdit'; @override @@ -46,20 +46,20 @@ class PaymentTermEditScreen extends StatelessWidget { class PaymentTermEditVM { PaymentTermEditVM({ - @required this.state, - @required this.paymentTerm, - @required this.company, - @required this.onChanged, - @required this.isSaving, - @required this.origPaymentTerm, - @required this.onSavePressed, - @required this.onCancelPressed, - @required this.isLoading, + required this.state, + required this.paymentTerm, + required this.company, + required this.onChanged, + required this.isSaving, + required this.origPaymentTerm, + required this.onSavePressed, + required this.onCancelPressed, + required this.isLoading, }); factory PaymentTermEditVM.fromStore(Store store) { final state = store.state; - final paymentTerm = state.paymentTermUIState.editing; + final paymentTerm = state.paymentTermUIState.editing!; return PaymentTermEditVM( state: state, @@ -85,9 +85,9 @@ class PaymentTermEditVM { store.dispatch(SavePaymentTermRequest( completer: completer, paymentTerm: paymentTerm)); return completer.future.then((savedPaymentTerm) { - showToast(paymentTerm.isNew - ? localization.createdPaymentTerm - : localization.updatedPaymentTerm); + showToast(paymentTerm!.isNew + ? localization!.createdPaymentTerm + : localization!.updatedPaymentTerm); if (state.prefState.isMobile) { store.dispatch(UpdateCurrentRoute(PaymentTermScreen.route)); if (paymentTerm.isNew) { @@ -101,7 +101,7 @@ class PaymentTermEditVM { } }).catchError((Object error) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { return ErrorDialog(error); }); @@ -112,12 +112,12 @@ class PaymentTermEditVM { } final PaymentTermEntity paymentTerm; - final CompanyEntity company; + final CompanyEntity? company; final Function(PaymentTermEntity) onChanged; final Function(BuildContext) onSavePressed; final Function(BuildContext) onCancelPressed; final bool isLoading; final bool isSaving; - final PaymentTermEntity origPaymentTerm; + final PaymentTermEntity? origPaymentTerm; final AppState state; } diff --git a/lib/ui/payment_term/payment_term_list.dart b/lib/ui/payment_term/payment_term_list.dart index f1ec5fb95..c539dac6f 100644 --- a/lib/ui/payment_term/payment_term_list.dart +++ b/lib/ui/payment_term/payment_term_list.dart @@ -13,8 +13,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class PaymentTermList extends StatefulWidget { const PaymentTermList({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final PaymentTermListVM viewModel; @@ -24,7 +24,7 @@ class PaymentTermList extends StatefulWidget { } class _PaymentTermListState extends State { - EntityDataTableSource dataTableSource; + EntityDataTableSource? dataTableSource; @override Widget build(BuildContext context) { @@ -36,7 +36,7 @@ class _PaymentTermListState extends State { if (!viewModel.state.isLoaded) { return viewModel.isLoading ? LoadingIndicator() : SizedBox(); } else if (viewModel.paymentTermMap.isEmpty) { - return HelpText(AppLocalization.of(context).noRecordsFound); + return HelpText(AppLocalization.of(context)!.noRecordsFound); } return RefreshIndicator( @@ -53,7 +53,7 @@ class _PaymentTermListState extends State { filter: viewModel.filter, paymentTerm: paymentTerm, isChecked: - isInMultiselect && listUIState.isSelected(paymentTerm.id), + isInMultiselect && listUIState.isSelected(paymentTerm!.id), ); }), ); diff --git a/lib/ui/payment_term/payment_term_list_item.dart b/lib/ui/payment_term/payment_term_list_item.dart index 133975080..d0521af9b 100644 --- a/lib/ui/payment_term/payment_term_list_item.dart +++ b/lib/ui/payment_term/payment_term_list_item.dart @@ -15,21 +15,21 @@ import 'package:invoiceninja_flutter/utils/formatting.dart'; class PaymentTermListItem extends StatelessWidget { const PaymentTermListItem({ - @required this.user, - @required this.paymentTerm, - @required this.filter, + required this.user, + required this.paymentTerm, + required this.filter, this.onTap, this.onLongPress, this.onCheckboxChanged, this.isChecked = false, }); - final UserEntity user; - final GestureTapCallback onTap; - final GestureTapCallback onLongPress; - final PaymentTermEntity paymentTerm; - final String filter; - final Function(bool) onCheckboxChanged; + final UserEntity? user; + final GestureTapCallback? onTap; + final GestureTapCallback? onLongPress; + final PaymentTermEntity? paymentTerm; + final String? filter; + final Function(bool?)? onCheckboxChanged; final bool isChecked; static final paymentTermItemKey = @@ -45,31 +45,31 @@ class PaymentTermListItem extends StatelessWidget { final isInMultiselect = listUIState.isInMultiselect(); final showCheckbox = onCheckboxChanged != null || isInMultiselect; - final filterMatch = filter != null && filter.isNotEmpty - ? paymentTerm.matchesFilterValue(filter) + final filterMatch = filter != null && filter!.isNotEmpty + ? paymentTerm!.matchesFilterValue(filter) : null; final subtitle = filterMatch; return DismissibleEntity( userCompany: state.userCompany, entity: paymentTerm, - isSelected: paymentTerm.id == + isSelected: paymentTerm!.id == (uiState.isEditing - ? paymentTermUIState.editing.id + ? paymentTermUIState.editing!.id : paymentTermUIState.selectedId), child: ListTile( onTap: () => - onTap != null ? onTap() : selectEntity(entity: paymentTerm), + onTap != null ? onTap!() : selectEntity(entity: paymentTerm!), onLongPress: () => onLongPress != null - ? onLongPress() - : selectEntity(entity: paymentTerm, longPress: true), + ? onLongPress!() + : selectEntity(entity: paymentTerm!, longPress: true), leading: showCheckbox ? IgnorePointer( ignoring: listUIState.isInMultiselect(), child: Checkbox( value: isChecked, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, - onChanged: (value) => onCheckboxChanged(value), + onChanged: (value) => onCheckboxChanged!(value), activeColor: Theme.of(context).colorScheme.secondary, ), ) @@ -80,11 +80,11 @@ class PaymentTermListItem extends StatelessWidget { children: [ Expanded( child: Text( - paymentTerm.name, + paymentTerm!.name, style: Theme.of(context).textTheme.titleMedium, ), ), - Text(formatNumber(paymentTerm.listDisplayAmount, context), + Text(formatNumber(paymentTerm!.listDisplayAmount, context)!, style: Theme.of(context).textTheme.titleMedium), ], ), diff --git a/lib/ui/payment_term/payment_term_list_vm.dart b/lib/ui/payment_term/payment_term_list_vm.dart index 77b10ae07..4a4a7f4bc 100644 --- a/lib/ui/payment_term/payment_term_list_vm.dart +++ b/lib/ui/payment_term/payment_term_list_vm.dart @@ -24,7 +24,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class PaymentTermListBuilder extends StatelessWidget { - const PaymentTermListBuilder({Key key}) : super(key: key); + const PaymentTermListBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -51,7 +51,7 @@ class PaymentTermListBuilder extends StatelessWidget { filter: viewModel.filter, paymentTerm: paymentTerm, isChecked: - isInMultiselect && listState.isSelected(paymentTerm.id), + isInMultiselect && listState.isSelected(paymentTerm!.id), ); }); }, @@ -61,17 +61,17 @@ class PaymentTermListBuilder extends StatelessWidget { class PaymentTermListVM { PaymentTermListVM({ - @required this.state, - @required this.userCompany, - @required this.paymentTermList, - @required this.paymentTermMap, - @required this.filter, - @required this.isLoading, - @required this.listState, - @required this.onRefreshed, - @required this.onEntityAction, - @required this.onSortColumn, - @required this.onClearMultielsect, + required this.state, + required this.userCompany, + required this.paymentTermList, + required this.paymentTermMap, + required this.filter, + required this.isLoading, + required this.listState, + required this.onRefreshed, + required this.onEntityAction, + required this.onSortColumn, + required this.onClearMultielsect, this.tableColumns, }); @@ -81,7 +81,7 @@ class PaymentTermListVM { return Future(null); } final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(RefreshData(completer: completer)); return completer.future; } @@ -110,15 +110,15 @@ class PaymentTermListVM { } final AppState state; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List paymentTermList; - final BuiltMap paymentTermMap; + final BuiltMap paymentTermMap; final ListUIState listState; - final String filter; + final String? filter; final bool isLoading; final Function(BuildContext) onRefreshed; final Function(BuildContext, List, EntityAction) onEntityAction; - final List tableColumns; + final List? tableColumns; final Function(String) onSortColumn; final Function onClearMultielsect; } diff --git a/lib/ui/payment_term/payment_term_presenter.dart b/lib/ui/payment_term/payment_term_presenter.dart index f153637dc..60b4245d9 100644 --- a/lib/ui/payment_term/payment_term_presenter.dart +++ b/lib/ui/payment_term/payment_term_presenter.dart @@ -17,7 +17,7 @@ class PaymentTermPresenter extends EntityPresenter { } @override - Widget getField({String field, BuildContext context}) { + Widget getField({String? field, required BuildContext context}) { //final state = StoreProvider.of(context).state; //final paymentTerm = entity as InvoiceEntity; diff --git a/lib/ui/payment_term/payment_term_screen.dart b/lib/ui/payment_term/payment_term_screen.dart index 2645a9abe..45a9103e8 100644 --- a/lib/ui/payment_term/payment_term_screen.dart +++ b/lib/ui/payment_term/payment_term_screen.dart @@ -20,8 +20,8 @@ import 'payment_term_screen_vm.dart'; class PaymentTermScreen extends StatelessWidget { const PaymentTermScreen({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); static const String route = '/$kSettings/$kSettingsPaymentTerms'; @@ -89,7 +89,7 @@ class PaymentTermScreen extends StatelessWidget { store.dispatch(FilterPaymentTermsByCustom4(value)), ), floatingActionButton: state.prefState.isMobile && - userCompany.canCreate(EntityType.paymentTerm) + userCompany!.canCreate(EntityType.paymentTerm) ? FloatingActionButton( heroTag: 'payment_term_fab', backgroundColor: Theme.of(context).primaryColorDark, @@ -101,7 +101,7 @@ class PaymentTermScreen extends StatelessWidget { Icons.add, color: Colors.white, ), - tooltip: localization.newPaymentTerm, + tooltip: localization!.newPaymentTerm, ) : null, ); diff --git a/lib/ui/payment_term/payment_term_screen_vm.dart b/lib/ui/payment_term/payment_term_screen_vm.dart index e1c736387..c44d5eb89 100644 --- a/lib/ui/payment_term/payment_term_screen_vm.dart +++ b/lib/ui/payment_term/payment_term_screen_vm.dart @@ -16,7 +16,7 @@ import 'package:invoiceninja_flutter/redux/payment_term/payment_term_selectors.d import 'payment_term_screen.dart'; class PaymentTermScreenBuilder extends StatelessWidget { - const PaymentTermScreenBuilder({Key key}) : super(key: key); + const PaymentTermScreenBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -33,18 +33,18 @@ class PaymentTermScreenBuilder extends StatelessWidget { class PaymentTermScreenVM { PaymentTermScreenVM({ - @required this.isInMultiselect, - @required this.paymentTermList, - @required this.userCompany, - @required this.onEntityAction, - @required this.paymentTermMap, + required this.isInMultiselect, + required this.paymentTermList, + required this.userCompany, + required this.onEntityAction, + required this.paymentTermMap, }); final bool isInMultiselect; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List paymentTermList; final Function(BuildContext, List, EntityAction) onEntityAction; - final BuiltMap paymentTermMap; + final BuiltMap paymentTermMap; static PaymentTermScreenVM fromStore(Store store) { final state = store.state; diff --git a/lib/ui/payment_term/view/payment_term_view.dart b/lib/ui/payment_term/view/payment_term_view.dart index 20b66035c..2de3c22d0 100644 --- a/lib/ui/payment_term/view/payment_term_view.dart +++ b/lib/ui/payment_term/view/payment_term_view.dart @@ -10,8 +10,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class PaymentTermView extends StatefulWidget { const PaymentTermView({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final PaymentTermViewVM viewModel; @@ -25,7 +25,7 @@ class _PaymentTermViewState extends State { Widget build(BuildContext context) { final viewModel = widget.viewModel; final paymentTerm = viewModel.paymentTerm; - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; return ViewScaffold( entity: paymentTerm, diff --git a/lib/ui/payment_term/view/payment_term_view_vm.dart b/lib/ui/payment_term/view/payment_term_view_vm.dart index 6ffc2c63f..50c96fdc7 100644 --- a/lib/ui/payment_term/view/payment_term_view_vm.dart +++ b/lib/ui/payment_term/view/payment_term_view_vm.dart @@ -23,7 +23,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class PaymentTermViewScreen extends StatelessWidget { const PaymentTermViewScreen({ - Key key, + Key? key, this.isFilter = false, }) : super(key: key); final bool isFilter; @@ -46,15 +46,15 @@ class PaymentTermViewScreen extends StatelessWidget { class PaymentTermViewVM { PaymentTermViewVM({ - @required this.state, - @required this.paymentTerm, - @required this.company, - @required this.onEntityAction, - @required this.onBackPressed, - @required this.onRefreshed, - @required this.isSaving, - @required this.isLoading, - @required this.isDirty, + required this.state, + required this.paymentTerm, + required this.company, + required this.onEntityAction, + required this.onBackPressed, + required this.onRefreshed, + required this.isSaving, + required this.isLoading, + required this.isDirty, }); factory PaymentTermViewVM.fromStore(Store store) { @@ -65,7 +65,7 @@ class PaymentTermViewVM { Future _handleRefresh(BuildContext context) { final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch( LoadPaymentTerm(completer: completer, paymentTermId: paymentTerm.id)); return completer.future; @@ -89,7 +89,7 @@ class PaymentTermViewVM { final AppState state; final PaymentTermEntity paymentTerm; - final CompanyEntity company; + final CompanyEntity? company; final Function(BuildContext, EntityAction) onEntityAction; final Function onBackPressed; final Function(BuildContext) onRefreshed; diff --git a/lib/ui/product/edit/product_edit.dart b/lib/ui/product/edit/product_edit.dart index 7ab22fec9..9d37929c5 100644 --- a/lib/ui/product/edit/product_edit.dart +++ b/lib/ui/product/edit/product_edit.dart @@ -20,8 +20,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class ProductEdit extends StatefulWidget { const ProductEdit({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final ProductEditVM viewModel; @@ -77,11 +77,11 @@ class _ProductEditState extends State { _productKeyController.text = product.productKey; _notesController.text = product.notes; _priceController.text = formatNumber(product.price, context, - formatNumberType: FormatNumberType.inputMoney); + formatNumberType: FormatNumberType.inputMoney)!; _quantityController.text = formatNumber(product.quantity, context, - formatNumberType: FormatNumberType.inputAmount); + formatNumberType: FormatNumberType.inputAmount)!; _costController.text = formatNumber(product.cost, context, - formatNumberType: FormatNumberType.inputMoney); + formatNumberType: FormatNumberType.inputMoney)!; _custom1Controller.text = product.customValue1; _custom2Controller.text = product.customValue2; _custom3Controller.text = product.customValue3; @@ -90,12 +90,12 @@ class _ProductEditState extends State { product.stockQuantity.toDouble(), context, formatNumberType: FormatNumberType.int, - ); + )!; _maxQuantityController.text = formatNumber( product.maxQuantity.toDouble(), context, formatNumberType: FormatNumberType.int, - ); + )!; _imageUrlController.text = product.imageUrl; _notificationThresholdController.text = product.stockNotificationThreshold == 0 @@ -104,7 +104,7 @@ class _ProductEditState extends State { product.stockNotificationThreshold.toDouble(), context, formatNumberType: FormatNumberType.int, - ); + )!; _controllers .forEach((dynamic controller) => controller.addListener(_onChanged)); @@ -148,7 +148,7 @@ class _ProductEditState extends State { } void _onSavePressed(BuildContext context) { - final bool isValid = _formKey.currentState.validate(); + final bool isValid = _formKey.currentState!.validate(); if (!isValid) { return; @@ -159,10 +159,10 @@ class _ProductEditState extends State { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; final product = viewModel.product; - final company = viewModel.company; + final company = viewModel.company!; return EditScaffold( entity: product, @@ -229,7 +229,7 @@ class _ProductEditState extends State { items: kTaxCategories.keys .map((key) => DropdownMenuItem( child: Text( - localization.lookup(kTaxCategories[key])), + localization.lookup(kTaxCategories[key])!), value: key, )) .toList()), @@ -305,7 +305,7 @@ class _ProductEditState extends State { SizedBox(height: 16), SwitchListTile( activeColor: Theme.of(context).colorScheme.secondary, - title: Text(localization.stockNotifications), + title: Text(localization.stockNotifications!), value: product.stockNotification, onChanged: (value) => viewModel.onChanged( product.rebuild((b) => b..stockNotification = value)), @@ -314,7 +314,7 @@ class _ProductEditState extends State { DecoratedFormField( keyboardType: TextInputType.number, controller: _notificationThresholdController, - label: localization.notificationThreshold + + label: localization.notificationThreshold! + ((company.stockNotification && company.stockNotificationThreshold != 0) ? ' • ${localization.defaultWord} ${company.stockNotificationThreshold}' diff --git a/lib/ui/product/edit/product_edit_vm.dart b/lib/ui/product/edit/product_edit_vm.dart index 1a9e7755b..479685c14 100644 --- a/lib/ui/product/edit/product_edit_vm.dart +++ b/lib/ui/product/edit/product_edit_vm.dart @@ -22,7 +22,7 @@ import 'package:invoiceninja_flutter/ui/product/view/product_view_vm.dart'; import 'package:invoiceninja_flutter/utils/completers.dart'; class ProductEditScreen extends StatelessWidget { - const ProductEditScreen({Key key}) : super(key: key); + const ProductEditScreen({Key? key}) : super(key: key); static const String route = '/product/edit'; @@ -44,21 +44,21 @@ class ProductEditScreen extends StatelessWidget { class ProductEditVM { ProductEditVM({ - @required this.state, - @required this.company, - @required this.product, - @required this.origProduct, - @required this.onChanged, - @required this.onSavePressed, - @required this.onCancelPressed, - @required this.onEntityAction, - @required this.isSaving, - @required this.isDirty, + required this.state, + required this.company, + required this.product, + required this.origProduct, + required this.onChanged, + required this.onSavePressed, + required this.onCancelPressed, + required this.onEntityAction, + required this.isSaving, + required this.isDirty, }); factory ProductEditVM.fromStore(Store store) { final state = store.state; - final product = state.productUIState.editing; + final product = state.productUIState.editing!; return ProductEditVM( state: state, @@ -84,23 +84,23 @@ class ProductEditVM { store.dispatch( SaveProductRequest(completer: completer, product: product)); return completer.future.then((savedProduct) { - showToast(product.isNew - ? localization.createdProduct - : localization.updatedProduct); + showToast(product!.isNew + ? localization!.createdProduct + : localization!.updatedProduct); if (state.prefState.isMobile) { store.dispatch(UpdateCurrentRoute(ProductViewScreen.route)); if (product.isNew) { - navigator.pushReplacementNamed(ProductViewScreen.route); + navigator!.pushReplacementNamed(ProductViewScreen.route); } else { - navigator.pop(savedProduct); + navigator!.pop(savedProduct); } } else { viewEntity(entity: savedProduct); } }).catchError((Object error) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { return ErrorDialog(error); }); @@ -123,9 +123,9 @@ class ProductEditVM { } final AppState state; - final CompanyEntity company; + final CompanyEntity? company; final ProductEntity product; - final ProductEntity origProduct; + final ProductEntity? origProduct; final Function(ProductEntity) onChanged; final Function(BuildContext) onSavePressed; final Function(BuildContext) onCancelPressed; diff --git a/lib/ui/product/product_list_item.dart b/lib/ui/product/product_list_item.dart index d1e3a9ef3..b1828f52a 100644 --- a/lib/ui/product/product_list_item.dart +++ b/lib/ui/product/product_list_item.dart @@ -17,8 +17,8 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class ProductListItem extends StatelessWidget { const ProductListItem({ - @required this.product, - @required this.filter, + required this.product, + required this.filter, this.onTap, this.onLongPress, this.onCheckboxChanged, @@ -27,21 +27,21 @@ class ProductListItem extends StatelessWidget { this.showCost = false, }); - final GestureTapCallback onTap; - final GestureTapCallback onLongPress; - final Function(bool) onCheckboxChanged; + final GestureTapCallback? onTap; + final GestureTapCallback? onLongPress; + final Function(bool?)? onCheckboxChanged; final bool isChecked; final bool isDismissible; - final ProductEntity product; - final String filter; + final ProductEntity? product; + final String? filter; final bool showCost; @override Widget build(BuildContext context) { - final filterMatch = filter != null && filter.isNotEmpty - ? product.matchesFilterValue(filter) + final filterMatch = filter != null && filter!.isNotEmpty + ? product!.matchesFilterValue(filter) : null; - final subtitle = filterMatch ?? product.notes; + final subtitle = filterMatch ?? product!.notes; final store = StoreProvider.of(context); final state = store.state; final uiState = store.state.uiState; @@ -54,9 +54,9 @@ class ProductListItem extends StatelessWidget { return DismissibleEntity( isDismissible: isDismissible, isSelected: isDesktop(context) && - product.id == + product!.id == (uiState.isEditing - ? productUIState.editing.id + ? productUIState.editing!.id : productUIState.selectedId), userCompany: state.userCompany, entity: product, @@ -65,10 +65,10 @@ class ProductListItem extends StatelessWidget { return constraints.maxWidth > kTableListWidthCutoff ? InkWell( onTap: () => - onTap != null ? onTap() : selectEntity(entity: product), + onTap != null ? onTap!() : selectEntity(entity: product!), onLongPress: () => onLongPress != null - ? onLongPress() - : selectEntity(entity: product, longPress: true), + ? onLongPress!() + : selectEntity(entity: product!, longPress: true), child: Padding( padding: const EdgeInsets.only( left: 10, @@ -88,13 +88,13 @@ class ProductListItem extends StatelessWidget { materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, onChanged: (value) => - onCheckboxChanged(value), + onCheckboxChanged!(value), activeColor: Theme.of(context).colorScheme.secondary, ), ) : ActionMenuButton( - entityActions: product.getActions( + entityActions: product!.getActions( userCompany: state.userCompany, includeEdit: true, ), @@ -109,12 +109,12 @@ class ProductListItem extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - product.productKey + - (product.documents.isNotEmpty ? ' 📎' : ''), + product!.productKey + + (product!.documents.isNotEmpty ? ' 📎' : ''), style: textStyle, overflow: TextOverflow.ellipsis, ), - if (!product.isActive) EntityStateLabel(product) + if (!product!.isActive) EntityStateLabel(product) ], ), ), @@ -124,7 +124,7 @@ class ProductListItem extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - product.notes, + product!.notes, style: textStyle, maxLines: 6, ), @@ -141,8 +141,8 @@ class ProductListItem extends StatelessWidget { SizedBox(width: 10), Text( formatNumber( - showCost ? product.cost : product.price, context, - roundToPrecision: false), + showCost ? product!.cost : product!.price, context, + roundToPrecision: false)!, style: textStyle, textAlign: TextAlign.end, ), @@ -152,10 +152,10 @@ class ProductListItem extends StatelessWidget { ) : ListTile( onTap: () => - onTap != null ? onTap() : selectEntity(entity: product), + onTap != null ? onTap!() : selectEntity(entity: product!), onLongPress: () => onLongPress != null - ? onLongPress() - : selectEntity(entity: product, longPress: true), + ? onLongPress!() + : selectEntity(entity: product!, longPress: true), leading: showCheckbox ? IgnorePointer( ignoring: listUIState.isInMultiselect(), @@ -163,7 +163,7 @@ class ProductListItem extends StatelessWidget { value: isChecked, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, - onChanged: (value) => onCheckboxChanged(value), + onChanged: (value) => onCheckboxChanged!(value), activeColor: Theme.of(context).colorScheme.secondary, ), ) @@ -174,15 +174,15 @@ class ProductListItem extends StatelessWidget { children: [ Expanded( child: Text( - product.productKey + - (product.documents.isNotEmpty ? ' 📎' : ''), + product!.productKey + + (product!.documents.isNotEmpty ? ' 📎' : ''), style: Theme.of(context).textTheme.titleMedium, ), ), Text( formatNumber( - showCost ? product.cost : product.price, context, - roundToPrecision: false), + showCost ? product!.cost : product!.price, context, + roundToPrecision: false)!, style: Theme.of(context).textTheme.titleMedium), ], ), diff --git a/lib/ui/product/product_list_vm.dart b/lib/ui/product/product_list_vm.dart index 00ad9eee3..faee6f7fb 100644 --- a/lib/ui/product/product_list_vm.dart +++ b/lib/ui/product/product_list_vm.dart @@ -23,7 +23,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class ProductListBuilder extends StatelessWidget { - const ProductListBuilder({Key key}) : super(key: key); + const ProductListBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -48,8 +48,8 @@ class ProductListBuilder extends StatelessWidget { return ProductListItem( filter: viewModel.filter, - product: product, - isChecked: isInMultiselect && listState.isSelected(product.id), + product: product as ProductEntity?, + isChecked: isInMultiselect && listState.isSelected(product!.id), ); }); }, @@ -59,15 +59,15 @@ class ProductListBuilder extends StatelessWidget { class ProductListVM { ProductListVM({ - @required this.state, - @required this.productList, - @required this.productMap, - @required this.filter, - @required this.isLoading, - @required this.onRefreshed, - @required this.tableColumns, - @required this.onSortColumn, - @required this.onClearMultielsect, + required this.state, + required this.productList, + required this.productMap, + required this.filter, + required this.isLoading, + required this.onRefreshed, + required this.tableColumns, + required this.onSortColumn, + required this.onClearMultielsect, }); static ProductListVM fromStore(Store store) { @@ -76,7 +76,7 @@ class ProductListVM { return Future(null); } final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(RefreshData(completer: completer)); return completer.future; } @@ -96,8 +96,8 @@ class ProductListVM { filter: state.productUIState.listUIState.filter, onRefreshed: (context) => _handleRefresh(context), tableColumns: - state.userCompany.settings?.getTableColumns(EntityType.product) ?? - ProductPresenter.getDefaultTableFields(state.userCompany), + state.userCompany!.settings?.getTableColumns(EntityType.product) ?? + ProductPresenter.getDefaultTableFields(state.userCompany!), onSortColumn: (field) => store.dispatch(SortProducts(field)), onClearMultielsect: () => store.dispatch(ClearProductMultiselect()), ); @@ -105,8 +105,8 @@ class ProductListVM { final AppState state; final List productList; - final BuiltMap productMap; - final String filter; + final BuiltMap productMap; + final String? filter; final bool isLoading; final Function(BuildContext) onRefreshed; final List tableColumns; diff --git a/lib/ui/product/product_presenter.dart b/lib/ui/product/product_presenter.dart index 0a3a23e04..fba719883 100644 --- a/lib/ui/product/product_presenter.dart +++ b/lib/ui/product/product_presenter.dart @@ -13,7 +13,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class ProductPresenter extends EntityPresenter { static List getDefaultTableFields(UserCompanyEntity userCompany) { - final company = userCompany.company; + final company = userCompany.company!; return [ ProductFields.productKey, @@ -25,7 +25,7 @@ class ProductPresenter extends EntityPresenter { } static List getAllTableFields(UserCompanyEntity userCompany) { - final company = userCompany.company; + final company = userCompany.company!; return [ ...getDefaultTableFields(userCompany), @@ -48,73 +48,73 @@ class ProductPresenter extends EntityPresenter { } @override - Widget getField({String field, BuildContext context}) { - final product = entity as ProductEntity; + Widget getField({String? field, required BuildContext context}) { + final product = entity as ProductEntity?; final localization = AppLocalization.of(context); switch (field) { case ProductFields.productKey: - return Text(product.productKey); + return Text(product!.productKey); case ProductFields.description: - return TableTooltip(message: product.notes); + return TableTooltip(message: product!.notes); case ProductFields.cost: return Align( alignment: Alignment.centerRight, - child: Text(formatNumber(product.cost, context, + child: Text(formatNumber(product!.cost, context, formatNumberType: FormatNumberType.money, - roundToPrecision: false)), + roundToPrecision: false)!), ); case ProductFields.price: return Align( alignment: Alignment.centerRight, - child: Text(formatNumber(product.price, context, + child: Text(formatNumber(product!.price, context, formatNumberType: FormatNumberType.money, - roundToPrecision: false)), + roundToPrecision: false)!), ); case ProductFields.quantity: return Align( alignment: Alignment.centerRight, - child: Text(formatNumber(product.quantity, context, - formatNumberType: FormatNumberType.double)), + child: Text(formatNumber(product!.quantity, context, + formatNumberType: FormatNumberType.double)!), ); case ProductFields.customValue1: - return Text(presentCustomField(context, product.customValue1)); + return Text(presentCustomField(context, product!.customValue1)!); case ProductFields.customValue2: - return Text(presentCustomField(context, product.customValue2)); + return Text(presentCustomField(context, product!.customValue2)!); case ProductFields.customValue3: - return Text(presentCustomField(context, product.customValue3)); + return Text(presentCustomField(context, product!.customValue3)!); case ProductFields.customValue4: - return Text(presentCustomField(context, product.customValue4)); + return Text(presentCustomField(context, product!.customValue4)!); case ProductFields.documents: - return Text('${product.documents.length}'); + return Text('${product!.documents.length}'); case ProductFields.taxName1: - return Text(product.taxName1); + return Text(product!.taxName1); case ProductFields.taxName2: - return Text(product.taxName2); + return Text(product!.taxName2); case ProductFields.taxName3: - return Text(product.taxName3); + return Text(product!.taxName3); case ProductFields.taxRate1: - return Text(formatNumber(product.taxRate1, context, - formatNumberType: FormatNumberType.percent)); + return Text(formatNumber(product!.taxRate1, context, + formatNumberType: FormatNumberType.percent)!); case ProductFields.taxRate2: - return Text(formatNumber(product.taxRate2, context, - formatNumberType: FormatNumberType.percent)); + return Text(formatNumber(product!.taxRate2, context, + formatNumberType: FormatNumberType.percent)!); case ProductFields.taxRate3: - return Text(formatNumber(product.taxRate3, context, - formatNumberType: FormatNumberType.percent)); + return Text(formatNumber(product!.taxRate3, context, + formatNumberType: FormatNumberType.percent)!); case ProductFields.stockQuantity: - return Text(formatNumber(product.stockQuantity.toDouble(), context, - formatNumberType: FormatNumberType.int)); + return Text(formatNumber(product!.stockQuantity.toDouble(), context, + formatNumberType: FormatNumberType.int)!); case ProductFields.taxCategory: - return Text(localization.lookup(kTaxCategories[product.taxCategoryId])); + return Text(localization!.lookup(kTaxCategories[product!.taxCategoryId])!); case ProductFields.notificationThreshold: final store = StoreProvider.of(context); return Text(formatNumber( productNotificationThreshold( - product: product, company: store.state.company) + product: product!, company: store.state.company) .toDouble(), context, - formatNumberType: FormatNumberType.int)); + formatNumberType: FormatNumberType.int)!); } return super.getField(field: field, context: context); diff --git a/lib/ui/product/product_screen.dart b/lib/ui/product/product_screen.dart index c55f4911f..c281fc792 100644 --- a/lib/ui/product/product_screen.dart +++ b/lib/ui/product/product_screen.dart @@ -22,8 +22,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class ProductScreen extends StatelessWidget { const ProductScreen({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); static const String route = '/product'; @@ -34,8 +34,8 @@ class ProductScreen extends StatelessWidget { Widget build(BuildContext context) { final store = StoreProvider.of(context); final state = store.state; - final company = state.company; - final userCompany = state.userCompany; + final company = state.company!; + final userCompany = state.userCompany!; final localization = AppLocalization.of(context); return ListScaffold( @@ -122,7 +122,7 @@ class ProductScreen extends StatelessWidget { Icons.add, color: Colors.white, ), - tooltip: localization.newProduct, + tooltip: localization!.newProduct, ) : null, ); diff --git a/lib/ui/product/product_screen_vm.dart b/lib/ui/product/product_screen_vm.dart index 8e31d3bf6..e8e9fbac5 100644 --- a/lib/ui/product/product_screen_vm.dart +++ b/lib/ui/product/product_screen_vm.dart @@ -14,7 +14,7 @@ import 'package:invoiceninja_flutter/redux/product/product_selectors.dart'; import 'product_screen.dart'; class ProductScreenBuilder extends StatelessWidget { - const ProductScreenBuilder({Key key}) : super(key: key); + const ProductScreenBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -31,16 +31,16 @@ class ProductScreenBuilder extends StatelessWidget { class ProductScreenVM { ProductScreenVM({ - @required this.isInMultiselect, - @required this.productList, - @required this.userCompany, - @required this.productMap, + required this.isInMultiselect, + required this.productList, + required this.userCompany, + required this.productMap, }); final bool isInMultiselect; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List productList; - final BuiltMap productMap; + final BuiltMap productMap; static ProductScreenVM fromStore(Store store) { final state = store.state; diff --git a/lib/ui/product/view/product_view.dart b/lib/ui/product/view/product_view.dart index fa3c336da..028ea1e4b 100644 --- a/lib/ui/product/view/product_view.dart +++ b/lib/ui/product/view/product_view.dart @@ -17,10 +17,10 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class ProductView extends StatefulWidget { const ProductView({ - Key key, - @required this.viewModel, - @required this.isFilter, - @required this.tabIndex, + Key? key, + required this.viewModel, + required this.isFilter, + required this.tabIndex, }) : super(key: key); final ProductViewVM viewModel; @@ -33,7 +33,7 @@ class ProductView extends StatefulWidget { class _ProductViewState extends State with SingleTickerProviderStateMixin { - TabController _controller; + TabController? _controller; @override void initState() { @@ -44,7 +44,7 @@ class _ProductViewState extends State vsync: this, length: 2, initialIndex: widget.isFilter ? 0 : state.productUIState.tabIndex); - _controller.addListener(_onTabChanged); + _controller!.addListener(_onTabChanged); } void _onTabChanged() { @@ -53,7 +53,7 @@ class _ProductViewState extends State } final store = StoreProvider.of(context); - store.dispatch(UpdateProductTab(tabIndex: _controller.index)); + store.dispatch(UpdateProductTab(tabIndex: _controller!.index)); } @override @@ -61,14 +61,14 @@ class _ProductViewState extends State super.didUpdateWidget(oldWidget); if (oldWidget.tabIndex != widget.tabIndex) { - _controller.index = widget.tabIndex; + _controller!.index = widget.tabIndex; } } @override void dispose() { - _controller.removeListener(_onTabChanged); - _controller.dispose(); + _controller!.removeListener(_onTabChanged); + _controller!.dispose(); super.dispose(); } @@ -77,7 +77,7 @@ class _ProductViewState extends State final localization = AppLocalization.of(context); final viewModel = widget.viewModel; final state = viewModel.state; - final company = state.company; + final company = state.company!; final product = viewModel.product; final documents = product.documents; @@ -90,7 +90,7 @@ class _ProductViewState extends State isScrollable: false, tabs: [ Tab( - text: localization.overview, + text: localization!.overview, ), Tab( text: documents.isEmpty diff --git a/lib/ui/product/view/product_view_documents.dart b/lib/ui/product/view/product_view_documents.dart index b9344a8a9..114768734 100644 --- a/lib/ui/product/view/product_view_documents.dart +++ b/lib/ui/product/view/product_view_documents.dart @@ -9,7 +9,7 @@ import 'package:invoiceninja_flutter/ui/app/document_grid.dart'; import 'package:invoiceninja_flutter/ui/app/screen_imports.dart'; class ProductViewDocuments extends StatelessWidget { - const ProductViewDocuments({Key key, @required this.viewModel}) + const ProductViewDocuments({Key? key, required this.viewModel}) : super(key: key); final ProductViewVM viewModel; diff --git a/lib/ui/product/view/product_view_overview.dart b/lib/ui/product/view/product_view_overview.dart index 38d847ff2..272b7601a 100644 --- a/lib/ui/product/view/product_view_overview.dart +++ b/lib/ui/product/view/product_view_overview.dart @@ -14,8 +14,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class ProductOverview extends StatefulWidget { const ProductOverview({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final ProductViewVM viewModel; @@ -27,27 +27,27 @@ class ProductOverview extends StatefulWidget { class _ProductOverviewState extends State { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; final product = viewModel.product; - final company = viewModel.company; + final company = viewModel.company!; String tax = ''; if (product.taxName1.isNotEmpty) { tax += formatNumber(product.taxRate1, context, - formatNumberType: FormatNumberType.percent) + + formatNumberType: FormatNumberType.percent)! + ' ' + product.taxName1; } if (product.taxName2.isNotEmpty) { tax += ' ' + formatNumber(product.taxRate2, context, - formatNumberType: FormatNumberType.percent) + + formatNumberType: FormatNumberType.percent)! + ' ' + product.taxName2; } - final fields = { + final fields = { localization.tax: tax, }; diff --git a/lib/ui/product/view/product_view_vm.dart b/lib/ui/product/view/product_view_vm.dart index 1c5737a5d..aa1c172d0 100644 --- a/lib/ui/product/view/product_view_vm.dart +++ b/lib/ui/product/view/product_view_vm.dart @@ -22,7 +22,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class ProductViewScreen extends StatelessWidget { const ProductViewScreen({ - Key key, + Key? key, this.isFilter = false, }) : super(key: key); final bool isFilter; @@ -48,15 +48,15 @@ class ProductViewScreen extends StatelessWidget { class ProductViewVM { ProductViewVM({ - @required this.state, - @required this.product, - @required this.company, - @required this.onEntityAction, - @required this.isSaving, - @required this.isLoading, - @required this.isDirty, - @required this.onRefreshed, - @required this.onUploadDocuments, + required this.state, + required this.product, + required this.company, + required this.onEntityAction, + required this.isSaving, + required this.isLoading, + required this.isDirty, + required this.onRefreshed, + required this.onUploadDocuments, }); factory ProductViewVM.fromStore(Store store) { @@ -66,7 +66,7 @@ class ProductViewVM { Future _handleRefresh(BuildContext context) { final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(LoadProduct( completer: completer, productId: product.id, @@ -94,7 +94,7 @@ class ProductViewVM { completer: completer, )); completer.future.then((client) { - showToast(AppLocalization.of(context).uploadedDocument); + showToast(AppLocalization.of(context)!.uploadedDocument); }).catchError((Object error) { showDialog( context: context, @@ -108,7 +108,7 @@ class ProductViewVM { final AppState state; final ProductEntity product; - final CompanyEntity company; + final CompanyEntity? company; final Function(BuildContext, EntityAction) onEntityAction; final Function(BuildContext) onRefreshed; final Function(BuildContext, List, bool) onUploadDocuments; diff --git a/lib/ui/project/edit/project_edit.dart b/lib/ui/project/edit/project_edit.dart index 768ebaaec..2dee357df 100644 --- a/lib/ui/project/edit/project_edit.dart +++ b/lib/ui/project/edit/project_edit.dart @@ -20,8 +20,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class ProjectEdit extends StatefulWidget { const ProjectEdit({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final ProjectEditVM viewModel; @@ -72,9 +72,9 @@ class _ProjectEditState extends State { _nameController.text = project.name; _dueDateController.text = project.dueDate; _hoursController.text = formatNumber(project.budgetedHours, context, - formatNumberType: FormatNumberType.inputAmount); + formatNumberType: FormatNumberType.inputAmount)!; _taskRateController.text = formatNumber(project.taskRate, context, - formatNumberType: FormatNumberType.inputMoney); + formatNumberType: FormatNumberType.inputMoney)!; _privateNotesController.text = project.privateNotes; _publicNotesController.text = project.publicNotes; _custom1Controller.text = project.customValue1; @@ -117,7 +117,7 @@ class _ProjectEditState extends State { } void _onSavePressed(BuildContext context) { - final bool isValid = _formKey.currentState.validate(); + final bool isValid = _formKey.currentState!.validate(); if (!isValid) { return; @@ -135,7 +135,7 @@ class _ProjectEditState extends State { return EditScaffold( entity: project, - title: project.isNew ? localization.newProject : localization.editProject, + title: project.isNew ? localization!.newProject : localization!.editProject, onCancelPressed: (context) => viewModel.onCancelPressed(context), onSavePressed: _onSavePressed, body: Form( diff --git a/lib/ui/project/edit/project_edit_vm.dart b/lib/ui/project/edit/project_edit_vm.dart index 15ec3d95c..5077bb636 100644 --- a/lib/ui/project/edit/project_edit_vm.dart +++ b/lib/ui/project/edit/project_edit_vm.dart @@ -25,7 +25,7 @@ import 'package:invoiceninja_flutter/ui/project/view/project_view_vm.dart'; import 'package:invoiceninja_flutter/utils/completers.dart'; class ProjectEditScreen extends StatelessWidget { - const ProjectEditScreen({Key key}) : super(key: key); + const ProjectEditScreen({Key? key}) : super(key: key); static const String route = '/project/edit'; @@ -47,20 +47,20 @@ class ProjectEditScreen extends StatelessWidget { class ProjectEditVM { ProjectEditVM({ - @required this.state, - @required this.company, - @required this.project, - @required this.onChanged, - @required this.onAddClientPressed, - @required this.isSaving, - @required this.origProject, - @required this.onSavePressed, - @required this.onCancelPressed, - @required this.isLoading, + required this.state, + required this.company, + required this.project, + required this.onChanged, + required this.onAddClientPressed, + required this.isSaving, + required this.origProject, + required this.onSavePressed, + required this.onCancelPressed, + required this.isLoading, }); factory ProjectEditVM.fromStore(Store store) { - final project = store.state.projectUIState.editing; + final project = store.state.projectUIState.editing!; final state = store.state; return ProjectEditVM( @@ -76,7 +76,7 @@ class ProjectEditVM { onCancelPressed: (BuildContext context) { createEntity(context: context, entity: ProjectEntity(), force: true); if (state.projectUIState.cancelCompleter != null) { - state.projectUIState.cancelCompleter.complete(); + state.projectUIState.cancelCompleter!.complete(); } else { store.dispatch(UpdateCurrentRoute(state.uiState.previousRoute)); } @@ -90,7 +90,7 @@ class ProjectEditVM { cancelCompleter: Completer() ..future.then((_) { store.dispatch(UpdateCurrentRoute(ProjectEditScreen.route)); - })); + } as FutureOr<_> Function(Null))); completer.future.then((SelectableEntity client) { store.dispatch(UpdateCurrentRoute(ProjectEditScreen.route)); }); @@ -105,16 +105,16 @@ class ProjectEditVM { store.dispatch( SaveProjectRequest(completer: completer, project: project)); return completer.future.then((savedProject) { - showToast(project.isNew - ? localization.createdProject - : localization.updatedProject); + showToast(project!.isNew + ? localization!.createdProject + : localization!.updatedProject); if (state.prefState.isMobile) { store.dispatch(UpdateCurrentRoute(ProjectViewScreen.route)); if (project.isNew && state.projectUIState.saveCompleter == null) { - navigator.pushReplacementNamed(ProjectViewScreen.route); + navigator!.pushReplacementNamed(ProjectViewScreen.route); } else { - navigator.pop(savedProject); + navigator!.pop(savedProject); } } else if (state.projectUIState.saveCompleter == null) { if (!state.prefState.isPreviewVisible) { @@ -124,7 +124,7 @@ class ProjectEditVM { } }).catchError((Object error) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { return ErrorDialog(error); }); @@ -135,12 +135,12 @@ class ProjectEditVM { } final ProjectEntity project; - final CompanyEntity company; + final CompanyEntity? company; final Function(ProjectEntity) onChanged; final Function(BuildContext) onSavePressed; final Function(BuildContext) onCancelPressed; final bool isSaving; - final ProjectEntity origProject; + final ProjectEntity? origProject; final bool isLoading; final AppState state; final Function(BuildContext context, Completer completer) diff --git a/lib/ui/project/project_list_item.dart b/lib/ui/project/project_list_item.dart index cb2b99e1d..33845042d 100644 --- a/lib/ui/project/project_list_item.dart +++ b/lib/ui/project/project_list_item.dart @@ -17,21 +17,21 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class ProjectListItem extends StatelessWidget { const ProjectListItem({ - @required this.user, - @required this.project, - @required this.filter, + required this.user, + required this.project, + required this.filter, this.onTap, this.onLongPress, this.onCheckboxChanged, this.isChecked = false, }); - final UserEntity user; - final GestureTapCallback onTap; - final GestureTapCallback onLongPress; - final ProjectEntity project; - final String filter; - final Function(bool) onCheckboxChanged; + final UserEntity? user; + final GestureTapCallback? onTap; + final GestureTapCallback? onLongPress; + final ProjectEntity? project; + final String? filter; + final Function(bool?)? onCheckboxChanged; final bool isChecked; @override @@ -40,9 +40,9 @@ class ProjectListItem extends StatelessWidget { final state = store.state; final uiState = state.uiState; final projectUIState = uiState.projectUIState; - final client = state.clientState.get(project.clientId); - final filterMatch = filter != null && filter.isNotEmpty - ? (project.matchesFilterValue(filter) ?? + final client = state.clientState.get(project!.clientId)!; + final filterMatch = filter != null && filter!.isNotEmpty + ? (project!.matchesFilterValue(filter) ?? client.matchesFilterValue(filter)) : null; final listUIState = projectUIState.listUIState; @@ -50,13 +50,13 @@ class ProjectListItem extends StatelessWidget { final showCheckbox = onCheckboxChanged != null || isInMultiselect; final textStyle = TextStyle(fontSize: 16); final subtitle = client.displayName; - final textColor = Theme.of(context).textTheme.bodyLarge.color; + final textColor = Theme.of(context).textTheme.bodyLarge!.color; return DismissibleEntity( isSelected: isDesktop(context) && - project.id == + project!.id == (uiState.isEditing - ? projectUIState.editing.id + ? projectUIState.editing!.id : projectUIState.selectedId), userCompany: store.state.userCompany, entity: project, @@ -65,10 +65,10 @@ class ProjectListItem extends StatelessWidget { return constraints.maxWidth > kTableListWidthCutoff ? InkWell( onTap: () => - onTap != null ? onTap() : selectEntity(entity: project), + onTap != null ? onTap!() : selectEntity(entity: project!), onLongPress: () => onLongPress != null - ? onLongPress() - : selectEntity(entity: project, longPress: true), + ? onLongPress!() + : selectEntity(entity: project!, longPress: true), child: Padding( padding: const EdgeInsets.only( left: 10, @@ -90,14 +90,14 @@ class ProjectListItem extends StatelessWidget { materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, onChanged: (value) => - onCheckboxChanged(value), + onCheckboxChanged!(value), activeColor: Theme.of(context).colorScheme.secondary, ), ), ) : ActionMenuButton( - entityActions: project.getActions( + entityActions: project!.getActions( userCompany: state.userCompany, client: client, includeEdit: true, @@ -114,11 +114,11 @@ class ProjectListItem extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - project.number ?? '', + project!.number ?? '', style: textStyle, overflow: TextOverflow.ellipsis, ), - if (!project.isActive) EntityStateLabel(project) + if (!project!.isActive) EntityStateLabel(project) ], ), ), @@ -128,19 +128,19 @@ class ProjectListItem extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - project.name + - (project.documents.isNotEmpty + project!.name + + (project!.documents.isNotEmpty ? ' 📎' : ''), style: textStyle), - Text(subtitle ?? filterMatch, + Text(subtitle ?? filterMatch!, maxLines: 3, overflow: TextOverflow.ellipsis, style: Theme.of(context) .textTheme - .titleSmall + .titleSmall! .copyWith( - color: textColor + color: textColor! .withOpacity(kLighterOpacity), )), ], @@ -150,7 +150,7 @@ class ProjectListItem extends StatelessWidget { Text( formatDuration( Duration( - minutes: (project.budgetedHours * 60).toInt()), + minutes: (project!.budgetedHours * 60).toInt()), showSeconds: false), style: textStyle, textAlign: TextAlign.end, @@ -161,10 +161,10 @@ class ProjectListItem extends StatelessWidget { ) : ListTile( onTap: () => - onTap != null ? onTap() : selectEntity(entity: project), + onTap != null ? onTap!() : selectEntity(entity: project!), onLongPress: () => onLongPress != null - ? onLongPress() - : selectEntity(entity: project, longPress: true), + ? onLongPress!() + : selectEntity(entity: project!, longPress: true), leading: showCheckbox ? IgnorePointer( ignoring: listUIState.isInMultiselect(), @@ -172,7 +172,7 @@ class ProjectListItem extends StatelessWidget { value: isChecked, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, - onChanged: (value) => onCheckboxChanged(value), + onChanged: (value) => onCheckboxChanged!(value), activeColor: Theme.of(context).colorScheme.secondary, ), ) @@ -183,8 +183,8 @@ class ProjectListItem extends StatelessWidget { children: [ Expanded( child: Text( - project.name + - (project.documents.isNotEmpty ? ' 📎' : ''), + project!.name + + (project!.documents.isNotEmpty ? ' 📎' : ''), style: Theme.of(context).textTheme.titleMedium, ), ), @@ -192,7 +192,7 @@ class ProjectListItem extends StatelessWidget { formatDuration( Duration( minutes: - (project.budgetedHours * 60).toInt()), + (project!.budgetedHours * 60).toInt()), showSeconds: false), style: Theme.of(context).textTheme.titleMedium), ], @@ -203,7 +203,7 @@ class ProjectListItem extends StatelessWidget { children: [ Text( filterMatch == null - ? project.number + ' • ' + client.displayName + ? project!.number + ' • ' + client.displayName : filterMatch, maxLines: 3, overflow: TextOverflow.ellipsis), diff --git a/lib/ui/project/project_list_vm.dart b/lib/ui/project/project_list_vm.dart index a16961cc6..5c4fe72b7 100644 --- a/lib/ui/project/project_list_vm.dart +++ b/lib/ui/project/project_list_vm.dart @@ -24,7 +24,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class ProjectListBuilder extends StatelessWidget { - const ProjectListBuilder({Key key}) : super(key: key); + const ProjectListBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -51,7 +51,7 @@ class ProjectListBuilder extends StatelessWidget { user: state.user, filter: viewModel.filter, project: project, - isChecked: isInMultiselect && listState.isSelected(project.id), + isChecked: isInMultiselect && listState.isSelected(project!.id), ); }); }, @@ -61,17 +61,17 @@ class ProjectListBuilder extends StatelessWidget { class ProjectListVM { ProjectListVM({ - @required this.state, - @required this.projectList, - @required this.projectMap, - @required this.clientMap, - @required this.listState, - @required this.filter, - @required this.isLoading, - @required this.onRefreshed, - @required this.tableColumns, - @required this.onSortColumn, - @required this.onClearMultielsect, + required this.state, + required this.projectList, + required this.projectMap, + required this.clientMap, + required this.listState, + required this.filter, + required this.isLoading, + required this.onRefreshed, + required this.tableColumns, + required this.onSortColumn, + required this.onClearMultielsect, }); static ProjectListVM fromStore(Store store) { @@ -80,7 +80,7 @@ class ProjectListVM { return Future(null); } final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(RefreshData(completer: completer)); return completer.future; } @@ -104,7 +104,7 @@ class ProjectListVM { filter: state.projectUIState.listUIState.filter, onRefreshed: (context) => _handleRefresh(context), tableColumns: - state.userCompany.settings?.getTableColumns(EntityType.project) ?? + state.userCompany!.settings?.getTableColumns(EntityType.project) ?? ProjectPresenter.getDefaultTableFields(state.userCompany), onSortColumn: (field) => store.dispatch(SortProjects(field)), onClearMultielsect: () => store.dispatch(ClearProjectMultiselect()), @@ -113,10 +113,10 @@ class ProjectListVM { final AppState state; final List projectList; - final BuiltMap projectMap; - final BuiltMap clientMap; + final BuiltMap projectMap; + final BuiltMap clientMap; final ListUIState listState; - final String filter; + final String? filter; final bool isLoading; final Function(BuildContext) onRefreshed; final List tableColumns; diff --git a/lib/ui/project/project_presenter.dart b/lib/ui/project/project_presenter.dart index 86bd681f3..37a8d1447 100644 --- a/lib/ui/project/project_presenter.dart +++ b/lib/ui/project/project_presenter.dart @@ -12,7 +12,7 @@ import 'package:invoiceninja_flutter/ui/app/presenters/entity_presenter.dart'; import 'package:invoiceninja_flutter/utils/formatting.dart'; class ProjectPresenter extends EntityPresenter { - static List getDefaultTableFields(UserCompanyEntity userCompany) { + static List getDefaultTableFields(UserCompanyEntity? userCompany) { return [ ProjectFields.name, ProjectFields.client, @@ -26,7 +26,7 @@ class ProjectPresenter extends EntityPresenter { ]; } - static List getAllTableFields(UserCompanyEntity userCompany) { + static List getAllTableFields(UserCompanyEntity? userCompany) { return [ ...getDefaultTableFields(userCompany), ...EntityPresenter.getBaseFields(), @@ -42,7 +42,7 @@ class ProjectPresenter extends EntityPresenter { } @override - Widget getField({String field, BuildContext context}) { + Widget getField({String? field, required BuildContext context}) { final project = entity as ProjectEntity; final state = StoreProvider.of(context).state; final client = state.clientState.get(project.clientId); @@ -53,12 +53,12 @@ class ProjectPresenter extends EntityPresenter { case ProjectFields.client: return LinkTextRelatedEntity(entity: client, relation: project); case ProjectFields.clientIdNumber: - return Text(client.idNumber); + return Text(client!.idNumber); case ProjectFields.clientNumber: - return Text(client.number); + return Text(client!.number); case ProjectFields.taskRate: return Text(formatNumber(project.taskRate, context, - clientId: project.clientId)); + clientId: project.clientId)!); case ProjectFields.dueDate: return Text(formatDate(project.dueDate, context)); case ProjectFields.publicNotes: @@ -67,22 +67,22 @@ class ProjectPresenter extends EntityPresenter { return TableTooltip(message: project.privateNotes); case ProjectFields.budgetedHours: return Text(formatNumber(project.budgetedHours, context, - formatNumberType: FormatNumberType.double)); + formatNumberType: FormatNumberType.double)!); case ProjectFields.number: return Text(project.number ?? ''); case ProjectFields.customValue1: - return Text(presentCustomField(context, project.customValue1)); + return Text(presentCustomField(context, project.customValue1)!); case ProjectFields.customValue2: - return Text(presentCustomField(context, project.customValue2)); + return Text(presentCustomField(context, project.customValue2)!); case ProjectFields.customValue3: - return Text(presentCustomField(context, project.customValue3)); + return Text(presentCustomField(context, project.customValue3)!); case ProjectFields.customValue4: - return Text(presentCustomField(context, project.customValue4)); + return Text(presentCustomField(context, project.customValue4)!); case ProjectFields.documents: return Text('${project.documents.length}'); case ProjectFields.totalHours: return Text(formatNumber(project.totalHours, context, - formatNumberType: FormatNumberType.double)); + formatNumberType: FormatNumberType.double)!); } return super.getField(field: field, context: context); diff --git a/lib/ui/project/project_screen.dart b/lib/ui/project/project_screen.dart index 37ce4fdee..11a45b938 100644 --- a/lib/ui/project/project_screen.dart +++ b/lib/ui/project/project_screen.dart @@ -19,8 +19,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class ProjectScreen extends StatelessWidget { const ProjectScreen({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); static const String route = '/project'; @@ -31,7 +31,7 @@ class ProjectScreen extends StatelessWidget { Widget build(BuildContext context) { final store = StoreProvider.of(context); final state = store.state; - final company = store.state.company; + final company = store.state.company!; final userCompany = store.state.userCompany; final localization = AppLocalization.of(context); @@ -97,7 +97,7 @@ class ProjectScreen extends StatelessWidget { }, ), floatingActionButton: state.prefState.isMenuFloated && - userCompany.canCreate(EntityType.project) + userCompany!.canCreate(EntityType.project) ? FloatingActionButton( heroTag: 'project_fab', backgroundColor: Theme.of(context).primaryColorDark, @@ -107,7 +107,7 @@ class ProjectScreen extends StatelessWidget { Icons.add, color: Colors.white, ), - tooltip: localization.newProject, + tooltip: localization!.newProject, ) : null, ); diff --git a/lib/ui/project/project_screen_vm.dart b/lib/ui/project/project_screen_vm.dart index 386be09d9..930ef8bc9 100644 --- a/lib/ui/project/project_screen_vm.dart +++ b/lib/ui/project/project_screen_vm.dart @@ -14,7 +14,7 @@ import 'package:invoiceninja_flutter/redux/project/project_selectors.dart'; import 'project_screen.dart'; class ProjectScreenBuilder extends StatelessWidget { - const ProjectScreenBuilder({Key key}) : super(key: key); + const ProjectScreenBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -31,16 +31,16 @@ class ProjectScreenBuilder extends StatelessWidget { class ProjectScreenVM { ProjectScreenVM({ - @required this.isInMultiselect, - @required this.projectList, - @required this.userCompany, - @required this.projectMap, + required this.isInMultiselect, + required this.projectList, + required this.userCompany, + required this.projectMap, }); final bool isInMultiselect; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List projectList; - final BuiltMap projectMap; + final BuiltMap projectMap; static ProjectScreenVM fromStore(Store store) { final state = store.state; diff --git a/lib/ui/project/view/project_view.dart b/lib/ui/project/view/project_view.dart index 25ac31f8f..4c80572f8 100644 --- a/lib/ui/project/view/project_view.dart +++ b/lib/ui/project/view/project_view.dart @@ -17,10 +17,10 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class ProjectView extends StatefulWidget { const ProjectView({ - Key key, - @required this.viewModel, - @required this.isFilter, - @required this.tabIndex, + Key? key, + required this.viewModel, + required this.isFilter, + required this.tabIndex, }) : super(key: key); final ProjectViewVM viewModel; @@ -33,7 +33,7 @@ class ProjectView extends StatefulWidget { class _ProjectViewState extends State with SingleTickerProviderStateMixin { - TabController _controller; + TabController? _controller; @override void initState() { @@ -44,7 +44,7 @@ class _ProjectViewState extends State vsync: this, length: 2, initialIndex: widget.isFilter ? 0 : state.projectUIState.tabIndex); - _controller.addListener(_onTabChanged); + _controller!.addListener(_onTabChanged); } void _onTabChanged() { @@ -53,7 +53,7 @@ class _ProjectViewState extends State } final store = StoreProvider.of(context); - store.dispatch(UpdateProjectTab(tabIndex: _controller.index)); + store.dispatch(UpdateProjectTab(tabIndex: _controller!.index)); } @override @@ -61,14 +61,14 @@ class _ProjectViewState extends State super.didUpdateWidget(oldWidget); if (oldWidget.tabIndex != widget.tabIndex) { - _controller.index = widget.tabIndex; + _controller!.index = widget.tabIndex; } } @override void dispose() { - _controller.removeListener(_onTabChanged); - _controller.dispose(); + _controller!.removeListener(_onTabChanged); + _controller!.dispose(); super.dispose(); } @@ -77,7 +77,7 @@ class _ProjectViewState extends State final viewModel = widget.viewModel; final project = viewModel.project; final state = viewModel.state; - final company = state.company; + final company = state.company!; final localization = AppLocalization.of(context); final documents = project.documents; @@ -90,7 +90,7 @@ class _ProjectViewState extends State isScrollable: false, tabs: [ Tab( - text: localization.overview, + text: localization!.overview, ), Tab( text: documents.isEmpty diff --git a/lib/ui/project/view/project_view_documents.dart b/lib/ui/project/view/project_view_documents.dart index 260f0262a..7ce9b42c7 100644 --- a/lib/ui/project/view/project_view_documents.dart +++ b/lib/ui/project/view/project_view_documents.dart @@ -9,7 +9,7 @@ import 'package:invoiceninja_flutter/ui/app/document_grid.dart'; import 'package:invoiceninja_flutter/ui/project/view/project_view_vm.dart'; class ProjectViewDocuments extends StatelessWidget { - const ProjectViewDocuments({Key key, @required this.viewModel}) + const ProjectViewDocuments({Key? key, required this.viewModel}) : super(key: key); final ProjectViewVM viewModel; diff --git a/lib/ui/project/view/project_view_overview.dart b/lib/ui/project/view/project_view_overview.dart index efd3829a3..6c707371b 100644 --- a/lib/ui/project/view/project_view_overview.dart +++ b/lib/ui/project/view/project_view_overview.dart @@ -23,9 +23,9 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class ProjectOverview extends StatefulWidget { const ProjectOverview({ - Key key, - @required this.viewModel, - @required this.isFilter, + Key? key, + required this.viewModel, + required this.isFilter, }) : super(key: key); final ProjectViewVM viewModel; @@ -36,7 +36,7 @@ class ProjectOverview extends StatefulWidget { } class _ProjectOverviewState extends State { - Timer _timer; + Timer? _timer; @override void initState() { @@ -47,7 +47,7 @@ class _ProjectOverviewState extends State { @override void dispose() { - _timer.cancel(); + _timer!.cancel(); _timer = null; super.dispose(); } @@ -56,11 +56,11 @@ class _ProjectOverviewState extends State { Widget build(BuildContext context) { final project = widget.viewModel.project; final client = widget.viewModel.client; - final company = widget.viewModel.company; + final company = widget.viewModel.company!; final state = widget.viewModel.state; final localization = AppLocalization.of(context); - final Map fields = { + final Map fields = { ProjectFields.dueDate: formatDate(project.dueDate, context), ProjectFields.taskRate: formatNumber(project.taskRate, context, formatNumberType: FormatNumberType.money, clientId: project.clientId), @@ -103,7 +103,7 @@ class _ProjectOverviewState extends State { final widgets = [ EntityHeader( entity: project, - label: localization.total, + label: localization!.total, value: formatDuration( taskDurationForProject(project, state.taskState.map)), secondLabel: localization.budgeted, @@ -121,7 +121,7 @@ class _ProjectOverviewState extends State { isFilter: widget.isFilter, ), EntityListTile( - entity: state.userState.get(project.assignedUserId), + entity: state.userState.get(project.assignedUserId!), isFilter: widget.isFilter, ), if (company.isModuleEnabled(EntityType.task)) diff --git a/lib/ui/project/view/project_view_vm.dart b/lib/ui/project/view/project_view_vm.dart index 76228d27e..dd665003b 100644 --- a/lib/ui/project/view/project_view_vm.dart +++ b/lib/ui/project/view/project_view_vm.dart @@ -22,7 +22,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class ProjectViewScreen extends StatelessWidget { const ProjectViewScreen({ - Key key, + Key? key, this.isFilter = false, }) : super(key: key); final bool isFilter; @@ -47,18 +47,18 @@ class ProjectViewScreen extends StatelessWidget { class ProjectViewVM { ProjectViewVM({ - @required this.state, - @required this.project, - @required this.client, - @required this.company, - @required this.onEntityAction, - @required this.onEntityPressed, - @required this.onAddTaskPressed, - @required this.onRefreshed, - @required this.isSaving, - @required this.isLoading, - @required this.isDirty, - @required this.onUploadDocuments, + required this.state, + required this.project, + required this.client, + required this.company, + required this.onEntityAction, + required this.onEntityPressed, + required this.onAddTaskPressed, + required this.onRefreshed, + required this.isSaving, + required this.isLoading, + required this.isDirty, + required this.onUploadDocuments, }); factory ProjectViewVM.fromStore(Store store) { @@ -70,7 +70,7 @@ class ProjectViewVM { Future _handleRefresh(BuildContext context) { final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(LoadProject(completer: completer, projectId: project.id)); return completer.future; } @@ -115,7 +115,7 @@ class ProjectViewVM { project: project, completer: completer)); completer.future.then((client) { - showToast(AppLocalization.of(context).uploadedDocument); + showToast(AppLocalization.of(context)!.uploadedDocument); }).catchError((Object error) { showDialog( context: context, @@ -130,10 +130,10 @@ class ProjectViewVM { final AppState state; final ProjectEntity project; final ClientEntity client; - final CompanyEntity company; + final CompanyEntity? company; final Function(BuildContext, EntityAction) onEntityAction; final Function(BuildContext) onAddTaskPressed; - final Function(BuildContext, EntityType, {bool longPress}) onEntityPressed; + final Function(BuildContext, EntityType, {bool? longPress}) onEntityPressed; final Function(BuildContext) onRefreshed; final bool isSaving; final bool isLoading; diff --git a/lib/ui/purchase_order/edit/purchase_order_edit.dart b/lib/ui/purchase_order/edit/purchase_order_edit.dart index 83aee4a31..3d097fa1a 100644 --- a/lib/ui/purchase_order/edit/purchase_order_edit.dart +++ b/lib/ui/purchase_order/edit/purchase_order_edit.dart @@ -16,8 +16,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class PurchaseOrderEdit extends StatefulWidget { const PurchaseOrderEdit({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final AbstractInvoiceEditVM viewModel; @@ -28,7 +28,7 @@ class PurchaseOrderEdit extends StatefulWidget { class _PurchaseOrderEditState extends State with SingleTickerProviderStateMixin { - TabController _controller; + TabController? _controller; static final GlobalKey _formKey = GlobalKey(debugLabel: '_purchaseOrderEdit'); @@ -54,18 +54,18 @@ class _PurchaseOrderEditState extends State super.didUpdateWidget(oldWidget); if (widget.viewModel.invoiceItemIndex != null) { - _controller.animateTo(kItemScreen); + _controller!.animateTo(kItemScreen); } } @override void dispose() { - _controller.dispose(); + _controller!.dispose(); super.dispose(); } - void _onSavePressed(BuildContext context, [EntityAction action]) { - final bool isValid = _formKey.currentState.validate(); + void _onSavePressed(BuildContext context, [EntityAction? action]) { + final bool isValid = _formKey.currentState!.validate(); /* setState(() { @@ -77,15 +77,15 @@ class _PurchaseOrderEditState extends State return; } - widget.viewModel.onSavePressed(context, action); + widget.viewModel.onSavePressed!(context, action); } @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; - final invoice = viewModel.invoice; - final state = viewModel.state; + final invoice = viewModel.invoice!; + final state = viewModel.state!; final prefState = state.prefState; final client = state.clientState.get(invoice.clientId); final isFullscreen = prefState.isEditorFullScreen(EntityType.invoice); @@ -96,7 +96,7 @@ class _PurchaseOrderEditState extends State title: invoice.isNew ? localization.newPurchaseOrder : localization.editPurchaseOrder, - onCancelPressed: (context) => viewModel.onCancelPressed(context), + onCancelPressed: (context) => viewModel.onCancelPressed!(context), onSavePressed: (context) => _onSavePressed(context), actions: invoice.getActions( userCompany: state.userCompany, @@ -161,16 +161,16 @@ class _PurchaseOrderEditState extends State invoice: invoice, showTasksAndExpenses: false, excluded: invoice.lineItems - .where((item) => item.isTask || item.isExpense) - .map((item) => item.isTask - ? viewModel.state.taskState.map[item.taskId] - : viewModel.state.expenseState.map[item.expenseId]) + .where((item) => item!.isTask || item.isExpense) + .map((item) => item!.isTask + ? viewModel.state!.taskState.map[item.taskId] + : viewModel.state!.expenseState.map[item.expenseId]) .toList(), clientId: invoice.clientId, onItemsSelected: (items, [clientId, projectId]) { - viewModel.onItemsAdded(items, clientId, projectId); + viewModel.onItemsAdded!(items, clientId, projectId); if (!isFullscreen) { - _controller.animateTo(kItemScreen); + _controller!.animateTo(kItemScreen); } }, ); diff --git a/lib/ui/purchase_order/edit/purchase_order_edit_details_vm.dart b/lib/ui/purchase_order/edit/purchase_order_edit_details_vm.dart index 9192c5b65..75213e097 100644 --- a/lib/ui/purchase_order/edit/purchase_order_edit_details_vm.dart +++ b/lib/ui/purchase_order/edit/purchase_order_edit_details_vm.dart @@ -22,7 +22,7 @@ import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_details.dart'; import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_details_vm.dart'; class PurchaseOrderEditDetailsScreen extends StatelessWidget { - const PurchaseOrderEditDetailsScreen({Key key, @required this.viewModel}) + const PurchaseOrderEditDetailsScreen({Key? key, required this.viewModel}) : super(key: key); final AbstractInvoiceEditVM viewModel; @@ -34,11 +34,11 @@ class PurchaseOrderEditDetailsScreen extends StatelessWidget { return PurchaseOrderEditDetailsVM.fromStore(store); }, builder: (context, viewModel) { - if (viewModel.state.prefState.isEditorFullScreen(EntityType.invoice)) { + if (viewModel.state!.prefState.isEditorFullScreen(EntityType.invoice)) { return InvoiceEditDesktop( viewModel: viewModel, entityViewModel: this.viewModel, - key: ValueKey('__purchaseOrder_${viewModel.invoice.id}__'), + key: ValueKey('__purchaseOrder_${viewModel.invoice!.id}__'), ); } else { return InvoiceEditDetails( @@ -53,17 +53,17 @@ class PurchaseOrderEditDetailsScreen extends StatelessWidget { class PurchaseOrderEditDetailsVM extends EntityEditDetailsVM { PurchaseOrderEditDetailsVM({ - AppState state, - CompanyEntity company, - InvoiceEntity invoice, - Function(InvoiceEntity) onChanged, - Function(BuildContext, InvoiceEntity, ClientEntity) onClientChanged, - Function(BuildContext, InvoiceEntity, VendorEntity) onVendorChanged, - BuiltMap clientMap, - BuiltList clientList, - Function(BuildContext context, Completer completer) + AppState? state, + CompanyEntity? company, + InvoiceEntity? invoice, + Function(InvoiceEntity)? onChanged, + Function(BuildContext, InvoiceEntity, ClientEntity)? onClientChanged, + Function(BuildContext, InvoiceEntity, VendorEntity)? onVendorChanged, + BuiltMap? clientMap, + BuiltList? clientList, + Function(BuildContext context, Completer completer)? onAddClientPressed, - Function(BuildContext context, Completer completer) + Function(BuildContext context, Completer completer)? onAddVendorPressed, }) : super( state: state, @@ -106,7 +106,7 @@ class PurchaseOrderEditDetailsVM extends EntityEditDetailsVM { ..future.then((_) { store.dispatch( UpdateCurrentRoute(PurchaseOrderEditScreen.route)); - })); + } as FutureOr<_> Function(Null))); completer.future.then((SelectableEntity client) { store.dispatch(UpdateCurrentRoute(PurchaseOrderEditScreen.route)); }); diff --git a/lib/ui/purchase_order/edit/purchase_order_edit_items_vm.dart b/lib/ui/purchase_order/edit/purchase_order_edit_items_vm.dart index 70b1ee828..9a0f2dc64 100644 --- a/lib/ui/purchase_order/edit/purchase_order_edit_items_vm.dart +++ b/lib/ui/purchase_order/edit/purchase_order_edit_items_vm.dart @@ -16,8 +16,8 @@ import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_vm.dart'; class PurchaseOrderEditItemsScreen extends StatelessWidget { const PurchaseOrderEditItemsScreen({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final AbstractInvoiceEditVM viewModel; @@ -29,7 +29,7 @@ class PurchaseOrderEditItemsScreen extends StatelessWidget { return PurchaseOrderEditItemsVM.fromStore(store); }, builder: (context, viewModel) { - if (viewModel.state.prefState.isEditorFullScreen(EntityType.invoice)) { + if (viewModel.state!.prefState.isEditorFullScreen(EntityType.invoice)) { return InvoiceEditItemsDesktop( viewModel: viewModel, entityViewModel: this.viewModel, @@ -48,16 +48,16 @@ class PurchaseOrderEditItemsScreen extends StatelessWidget { class PurchaseOrderEditItemsVM extends EntityEditItemsVM { PurchaseOrderEditItemsVM({ - AppState state, - CompanyEntity company, - InvoiceEntity invoice, - int invoiceItemIndex, - Function addLineItem, - Function deleteLineItem, - Function(int) onRemoveInvoiceItemPressed, - Function onDoneInvoiceItemPressed, - Function(InvoiceItemEntity, int) onChangedInvoiceItem, - Function(int, int) onMovedInvoiceItem, + AppState? state, + CompanyEntity? company, + InvoiceEntity? invoice, + int? invoiceItemIndex, + Function? addLineItem, + Function? deleteLineItem, + Function(int)? onRemoveInvoiceItemPressed, + Function? onDoneInvoiceItemPressed, + Function(InvoiceItemEntity, int)? onChangedInvoiceItem, + Function(int, int)? onMovedInvoiceItem, }) : super( state: state, company: company, @@ -84,7 +84,7 @@ class PurchaseOrderEditItemsVM extends EntityEditItemsVM { store.dispatch(EditPurchaseOrderItem()); }, onChangedInvoiceItem: (purchaseOrderItem, index) { - final purchaseOrder = store.state.purchaseOrderUIState.editing; + final purchaseOrder = store.state.purchaseOrderUIState.editing!; if (index == purchaseOrder.lineItems.length) { store.dispatch( AddPurchaseOrderItem(purchaseOrderItem: purchaseOrderItem)); diff --git a/lib/ui/purchase_order/edit/purchase_order_edit_notes_vm.dart b/lib/ui/purchase_order/edit/purchase_order_edit_notes_vm.dart index 1b7ef17f0..64a0a3b70 100644 --- a/lib/ui/purchase_order/edit/purchase_order_edit_notes_vm.dart +++ b/lib/ui/purchase_order/edit/purchase_order_edit_notes_vm.dart @@ -13,7 +13,7 @@ import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_notes.dart'; import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_notes_vm.dart'; class PurchaseOrderEditNotesScreen extends StatelessWidget { - const PurchaseOrderEditNotesScreen({Key key}) : super(key: key); + const PurchaseOrderEditNotesScreen({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -32,10 +32,10 @@ class PurchaseOrderEditNotesScreen extends StatelessWidget { class PurchaseOrderEditNotesVM extends EntityEditNotesVM { PurchaseOrderEditNotesVM({ - CompanyEntity company, - InvoiceEntity invoice, - Function(InvoiceEntity) onChanged, - AppState state, + CompanyEntity? company, + InvoiceEntity? invoice, + Function(InvoiceEntity)? onChanged, + AppState? state, }) : super( company: company, invoice: invoice, diff --git a/lib/ui/purchase_order/edit/purchase_order_edit_pdf_vm.dart b/lib/ui/purchase_order/edit/purchase_order_edit_pdf_vm.dart index 01b7bdf35..e1dce2177 100644 --- a/lib/ui/purchase_order/edit/purchase_order_edit_pdf_vm.dart +++ b/lib/ui/purchase_order/edit/purchase_order_edit_pdf_vm.dart @@ -12,7 +12,7 @@ import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_pdf.dart'; import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_pdf_vm.dart'; class PurchaseOrderEditPDFScreen extends StatelessWidget { - const PurchaseOrderEditPDFScreen({Key key}) : super(key: key); + const PurchaseOrderEditPDFScreen({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -31,9 +31,9 @@ class PurchaseOrderEditPDFScreen extends StatelessWidget { class PurchaseOrderEditPDFVM extends EntityEditPDFVM { PurchaseOrderEditPDFVM({ - @required CompanyEntity company, - @required InvoiceEntity invoice, - @required AppState state, + required CompanyEntity? company, + required InvoiceEntity? invoice, + required AppState state, }) : super( company: company, invoice: invoice, diff --git a/lib/ui/purchase_order/edit/purchase_order_edit_vm.dart b/lib/ui/purchase_order/edit/purchase_order_edit_vm.dart index 52317fe71..32e0ef014 100644 --- a/lib/ui/purchase_order/edit/purchase_order_edit_vm.dart +++ b/lib/ui/purchase_order/edit/purchase_order_edit_vm.dart @@ -25,7 +25,7 @@ import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_vm.dart'; import 'package:invoiceninja_flutter/utils/completers.dart'; class PurchaseOrderEditScreen extends StatelessWidget { - const PurchaseOrderEditScreen({Key key}) : super(key: key); + const PurchaseOrderEditScreen({Key? key}) : super(key: key); static const String route = '/purchase_order/edit'; @@ -38,7 +38,7 @@ class PurchaseOrderEditScreen extends StatelessWidget { builder: (context, viewModel) { return PurchaseOrderEdit( viewModel: viewModel, - key: ValueKey(viewModel.invoice.updatedAt), + key: ValueKey(viewModel.invoice!.updatedAt), ); }, ); @@ -47,16 +47,16 @@ class PurchaseOrderEditScreen extends StatelessWidget { class PurchaseOrderEditVM extends AbstractInvoiceEditVM { PurchaseOrderEditVM({ - AppState state, - CompanyEntity company, - InvoiceEntity purchaseOrder, - int invoiceItemIndex, - InvoiceEntity origInvoice, - Function(BuildContext, [EntityAction]) onSavePressed, - Function(List, String, String) onItemsAdded, - bool isSaving, - Function(BuildContext) onCancelPressed, - Function(BuildContext, List, bool) onUploadDocuments, + AppState? state, + CompanyEntity? company, + InvoiceEntity? purchaseOrder, + int? invoiceItemIndex, + InvoiceEntity? origInvoice, + Function(BuildContext, [EntityAction])? onSavePressed, + Function(List, String, String)? onItemsAdded, + bool? isSaving, + Function(BuildContext)? onCancelPressed, + Function(BuildContext, List, bool?)? onUploadDocuments, }) : super( state: state, company: company, @@ -72,7 +72,7 @@ class PurchaseOrderEditVM extends AbstractInvoiceEditVM { factory PurchaseOrderEditVM.fromStore(Store store) { final AppState state = store.state; - final purchaseOrder = state.purchaseOrderUIState.editing; + final purchaseOrder = state.purchaseOrderUIState.editing!; return PurchaseOrderEditVM( state: state, @@ -81,16 +81,16 @@ class PurchaseOrderEditVM extends AbstractInvoiceEditVM { purchaseOrder: purchaseOrder, invoiceItemIndex: state.purchaseOrderUIState.editingItemIndex, origInvoice: store.state.purchaseOrderState.map[purchaseOrder.id], - onSavePressed: (BuildContext context, [EntityAction action]) { + onSavePressed: (BuildContext context, [EntityAction? action]) { Debouncer.runOnComplete(() { - final purchaseOrder = store.state.purchaseOrderUIState.editing; + final purchaseOrder = store.state.purchaseOrderUIState.editing!; final localization = navigatorKey.localization; final navigator = navigatorKey.currentState; if (purchaseOrder.vendorId.isEmpty) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { - return ErrorDialog(localization.pleaseSelectAVendor); + return ErrorDialog(localization!.pleaseSelectAVendor); }); return null; } @@ -109,16 +109,16 @@ class PurchaseOrderEditVM extends AbstractInvoiceEditVM { )); return completer.future.then((savedPurchaseOrder) { showToast(purchaseOrder.isNew - ? localization.createdPurchaseOrder - : localization.updatedPurchaseOrder); + ? localization!.createdPurchaseOrder + : localization!.updatedPurchaseOrder); if (state.prefState.isMobile) { store.dispatch( UpdateCurrentRoute(PurchaseOrderViewScreen.route)); if (purchaseOrder.isNew) { - navigator.pushReplacementNamed(PurchaseOrderViewScreen.route); + navigator!.pushReplacementNamed(PurchaseOrderViewScreen.route); } else { - navigator.pop(savedPurchaseOrder); + navigator!.pop(savedPurchaseOrder); } } else { if (!state.prefState.isPreviewVisible) { @@ -141,7 +141,7 @@ class PurchaseOrderEditVM extends AbstractInvoiceEditVM { } }).catchError((Object error) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { return ErrorDialog(error); }); @@ -164,7 +164,7 @@ class PurchaseOrderEditVM extends AbstractInvoiceEditVM { } }, onUploadDocuments: (BuildContext context, - List multipartFiles, bool isPrivate) { + List multipartFiles, bool? isPrivate) { final Completer completer = Completer(); store.dispatch(SavePurchaseOrderDocumentRequest( isPrivate: isPrivate, @@ -172,7 +172,7 @@ class PurchaseOrderEditVM extends AbstractInvoiceEditVM { purchaseOrder: purchaseOrder, completer: completer)); completer.future.then((client) { - showToast(AppLocalization.of(context).uploadedDocument); + showToast(AppLocalization.of(context)!.uploadedDocument); }).catchError((Object error) { showDialog( context: context, diff --git a/lib/ui/purchase_order/purchase_order_email_vm.dart b/lib/ui/purchase_order/purchase_order_email_vm.dart index ac2abd4db..e0c7823c8 100644 --- a/lib/ui/purchase_order/purchase_order_email_vm.dart +++ b/lib/ui/purchase_order/purchase_order_email_vm.dart @@ -18,7 +18,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/platforms.dart'; class PurchaseOrderEmailScreen extends StatelessWidget { - const PurchaseOrderEmailScreen({Key key}) : super(key: key); + const PurchaseOrderEmailScreen({Key? key}) : super(key: key); static const String route = '/purchase_order/email'; @@ -28,8 +28,8 @@ class PurchaseOrderEmailScreen extends StatelessWidget { onInit: (Store store) { final state = store.state; final purchaseOrderId = state.uiState.purchaseOrderUIState.selectedId; - final purchaseOrder = state.purchaseOrderState.map[purchaseOrderId]; - final vendor = state.vendorState.map[purchaseOrder.vendorId]; + final purchaseOrder = state.purchaseOrderState.map[purchaseOrderId]!; + final vendor = state.vendorState.map[purchaseOrder.vendorId]!; if (vendor.isStale) { store.dispatch(LoadVendor(vendorId: vendor.id)); } @@ -37,7 +37,7 @@ class PurchaseOrderEmailScreen extends StatelessWidget { converter: (Store store) { final state = store.state; final purchaseOrderId = state.uiState.purchaseOrderUIState.selectedId; - final purchaseOrder = state.purchaseOrderState.map[purchaseOrderId]; + final purchaseOrder = state.purchaseOrderState.map[purchaseOrderId]!; return EmailPurchaseOrderVM.fromStore(store, purchaseOrder); }, builder: (context, viewModel) { @@ -51,14 +51,14 @@ class PurchaseOrderEmailScreen extends StatelessWidget { class EmailPurchaseOrderVM extends EmailEntityVM { EmailPurchaseOrderVM({ - @required AppState state, - @required bool isLoading, - @required bool isSaving, - @required CompanyEntity company, - @required InvoiceEntity invoice, - @required ClientEntity client, - @required VendorEntity vendor, - @required + required AppState state, + required bool isLoading, + required bool isSaving, + required CompanyEntity? company, + required InvoiceEntity invoice, + required ClientEntity? client, + required VendorEntity? vendor, + required Function(BuildContext, EmailTemplate, String, String, String) onSendPressed, }) : super( @@ -86,12 +86,12 @@ class EmailPurchaseOrderVM extends EmailEntityVM { vendor: state.vendorState.map[purchaseOrder.vendorId], onSendPressed: (context, template, subject, body, ccEmail) { final completer = snackBarCompleter( - context, AppLocalization.of(context).emailedPurchaseOrder, + context, AppLocalization.of(context)!.emailedPurchaseOrder, shouldPop: isMobile(context)); if (!isMobile(context)) { completer.future.then((value) { viewEntity(entity: purchaseOrder); - }); + } as FutureOr<_> Function(Null)); } store.dispatch(EmailPurchaseOrderRequest( completer: completer, diff --git a/lib/ui/purchase_order/purchase_order_list_item.dart b/lib/ui/purchase_order/purchase_order_list_item.dart index aa7d73119..61a8fdc1e 100644 --- a/lib/ui/purchase_order/purchase_order_list_item.dart +++ b/lib/ui/purchase_order/purchase_order_list_item.dart @@ -19,23 +19,23 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class PurchaseOrderListItem extends StatelessWidget { const PurchaseOrderListItem({ - @required this.user, - @required this.purchaseOrder, - @required this.vendor, - @required this.filter, + required this.user, + required this.purchaseOrder, + required this.vendor, + required this.filter, this.onTap, this.onLongPress, this.onCheckboxChanged, this.isChecked = false, }); - final UserEntity user; - final GestureTapCallback onTap; - final GestureTapCallback onLongPress; + final UserEntity? user; + final GestureTapCallback? onTap; + final GestureTapCallback? onLongPress; final InvoiceEntity purchaseOrder; - final VendorEntity vendor; - final String filter; - final Function(bool) onCheckboxChanged; + final VendorEntity? vendor; + final String? filter; + final Function(bool?)? onCheckboxChanged; final bool isChecked; @override @@ -43,16 +43,16 @@ class PurchaseOrderListItem extends StatelessWidget { final state = StoreProvider.of(context).state; final uiState = state.uiState; final purchaseOrderUIState = uiState.purchaseOrderUIState; - final listUIState = state.getUIState(purchaseOrder.entityType).listUIState; + final listUIState = state.getUIState(purchaseOrder.entityType)!.listUIState; final isInMultiselect = listUIState.isInMultiselect(); final showCheckbox = onCheckboxChanged != null || isInMultiselect; final textStyle = TextStyle(fontSize: 16); final localization = AppLocalization.of(context); - final filterMatch = filter != null && filter.isNotEmpty + final filterMatch = filter != null && filter!.isNotEmpty ? (purchaseOrder.matchesFilterValue(filter) ?? - vendor.matchesFilterValue(filter)) + vendor!.matchesFilterValue(filter)) : null; - final textColor = Theme.of(context).textTheme.bodyLarge.color; + final textColor = Theme.of(context).textTheme.bodyLarge!.color; String subtitle = ''; if (purchaseOrder.date.isNotEmpty) { @@ -62,7 +62,7 @@ class PurchaseOrderListItem extends StatelessWidget { return DismissibleEntity( isSelected: purchaseOrder.id == (uiState.isEditing - ? purchaseOrderUIState.editing.id + ? purchaseOrderUIState.editing!.id : purchaseOrderUIState.selectedId), userCompany: state.userCompany, entity: purchaseOrder, @@ -71,10 +71,10 @@ class PurchaseOrderListItem extends StatelessWidget { return constraints.maxWidth > kTableListWidthCutoff ? InkWell( onTap: () => onTap != null - ? onTap() + ? onTap!() : selectEntity(entity: purchaseOrder), onLongPress: () => onLongPress != null - ? onLongPress() + ? onLongPress!() : selectEntity(entity: purchaseOrder, longPress: true), child: Padding( padding: const EdgeInsets.only( @@ -95,7 +95,7 @@ class PurchaseOrderListItem extends StatelessWidget { materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, onChanged: (value) => - onCheckboxChanged(value), + onCheckboxChanged!(value), activeColor: Theme.of(context).colorScheme.secondary, ), @@ -117,7 +117,7 @@ class PurchaseOrderListItem extends StatelessWidget { children: [ Text( (purchaseOrder.number ?? '').isEmpty - ? localization.pending + ? localization!.pending : purchaseOrder.number, style: textStyle, overflow: TextOverflow.ellipsis, @@ -133,7 +133,7 @@ class PurchaseOrderListItem extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - vendor.name + + vendor!.name + (purchaseOrder.documents.isNotEmpty ? ' 📎' : ''), @@ -144,10 +144,10 @@ class PurchaseOrderListItem extends StatelessWidget { overflow: TextOverflow.ellipsis, style: Theme.of(context) .textTheme - .titleSmall + .titleSmall! .copyWith( color: - textColor.withOpacity(kLighterOpacity), + textColor!.withOpacity(kLighterOpacity), ), ), ], @@ -158,8 +158,8 @@ class PurchaseOrderListItem extends StatelessWidget { formatNumber( purchaseOrder.amount, context, - vendorId: vendor.id, - ), + vendorId: vendor!.id, + )!, style: textStyle, textAlign: TextAlign.end, ), @@ -171,10 +171,10 @@ class PurchaseOrderListItem extends StatelessWidget { ) : ListTile( onTap: () => onTap != null - ? onTap() + ? onTap!() : selectEntity(entity: purchaseOrder), onLongPress: () => onLongPress != null - ? onLongPress() + ? onLongPress!() : selectEntity(entity: purchaseOrder, longPress: true), leading: showCheckbox ? IgnorePointer( @@ -183,7 +183,7 @@ class PurchaseOrderListItem extends StatelessWidget { value: isChecked, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, - onChanged: (value) => onCheckboxChanged(value), + onChanged: (value) => onCheckboxChanged!(value), activeColor: Theme.of(context).colorScheme.secondary, ), ) @@ -194,7 +194,7 @@ class PurchaseOrderListItem extends StatelessWidget { children: [ Expanded( child: Text( - vendor.name, + vendor!.name, style: Theme.of(context).textTheme.titleMedium, overflow: TextOverflow.ellipsis, ), @@ -204,8 +204,8 @@ class PurchaseOrderListItem extends StatelessWidget { formatNumber( purchaseOrder.amount, context, - vendorId: vendor.id, - ), + vendorId: vendor!.id, + )!, style: Theme.of(context).textTheme.titleMedium), ], ), @@ -218,7 +218,7 @@ class PurchaseOrderListItem extends StatelessWidget { Expanded( child: filterMatch == null ? Text((((purchaseOrder.number ?? '').isEmpty - ? localization.pending + ? localization!.pending : purchaseOrder.number) + ' • ' + formatDate(purchaseOrder.date, context) + @@ -233,8 +233,8 @@ class PurchaseOrderListItem extends StatelessWidget { ), ), Text( - localization.lookup(kPurchaseOrderStatuses[ - purchaseOrder.calculatedStatusId]), + localization!.lookup(kPurchaseOrderStatuses[ + purchaseOrder.calculatedStatusId])!, style: TextStyle( color: !purchaseOrder.isSent ? textColor diff --git a/lib/ui/purchase_order/purchase_order_list_vm.dart b/lib/ui/purchase_order/purchase_order_list_vm.dart index 728deec44..beb04c9a9 100644 --- a/lib/ui/purchase_order/purchase_order_list_vm.dart +++ b/lib/ui/purchase_order/purchase_order_list_vm.dart @@ -24,7 +24,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class PurchaseOrderListBuilder extends StatelessWidget { - const PurchaseOrderListBuilder({Key key}) : super(key: key); + const PurchaseOrderListBuilder({Key? key}) : super(key: key); static const String route = '/purchase_orders/edit'; @@ -45,7 +45,7 @@ class PurchaseOrderListBuilder extends StatelessWidget { itemBuilder: (BuildContext context, index) { final state = viewModel.state; final invoiceId = viewModel.invoiceList[index]; - final invoice = viewModel.invoiceMap[invoiceId]; + final invoice = viewModel.invoiceMap[invoiceId]!; final listUIState = state.getListState(EntityType.purchaseOrder); final isInMultiselect = listUIState.isInMultiselect(); @@ -65,20 +65,20 @@ class PurchaseOrderListBuilder extends StatelessWidget { class PurchaseOrderListVM extends EntityListVM { PurchaseOrderListVM({ - @required AppState state, - @required List invoiceList, - @required BuiltMap invoiceMap, - @required BuiltMap clientMap, - @required String filter, - @required bool isLoading, - @required Function(BuildContext) onRefreshed, - @required + required AppState state, + required List invoiceList, + required BuiltMap invoiceMap, + required BuiltMap clientMap, + required String? filter, + required bool isLoading, + required Function(BuildContext) onRefreshed, + required Function(BuildContext, List, EntityAction) onEntityAction, - @required List tableColumns, - @required EntityType entityType, - @required Function(String) onSortColumn, - @required Function onClearMultiselect, + required List tableColumns, + required EntityType entityType, + required Function(String) onSortColumn, + required Function onClearMultiselect, }) : super( state: state, invoiceList: invoiceList, @@ -99,7 +99,7 @@ class PurchaseOrderListVM extends EntityListVM { return Future(null); } final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(RefreshData(completer: completer)); return completer.future; } @@ -124,7 +124,7 @@ class PurchaseOrderListVM extends EntityListVM { onEntityAction: (BuildContext context, List purchaseOrders, EntityAction action) => handlePurchaseOrderAction(context, purchaseOrders, action), - tableColumns: state.userCompany.settings + tableColumns: state.userCompany!.settings ?.getTableColumns(EntityType.purchaseOrder) ?? PurchaseOrderPresenter.getDefaultTableFields(state.userCompany), entityType: EntityType.purchaseOrder, diff --git a/lib/ui/purchase_order/purchase_order_pdf_vm.dart b/lib/ui/purchase_order/purchase_order_pdf_vm.dart index d1c3e1b61..a8172cf82 100644 --- a/lib/ui/purchase_order/purchase_order_pdf_vm.dart +++ b/lib/ui/purchase_order/purchase_order_pdf_vm.dart @@ -12,7 +12,7 @@ import 'package:invoiceninja_flutter/ui/invoice/invoice_pdf.dart'; import 'package:invoiceninja_flutter/ui/invoice/invoice_pdf_vm.dart'; class PurchaseOrderPdfScreen extends StatelessWidget { - const PurchaseOrderPdfScreen({Key key, this.showAppBar = true}) + const PurchaseOrderPdfScreen({Key? key, this.showAppBar = true}) : super(key: key); final bool showAppBar; @@ -27,7 +27,7 @@ class PurchaseOrderPdfScreen extends StatelessWidget { }, builder: (context, vm) { return InvoicePdfView( - key: ValueKey('__purchase_order_pdf_${vm.invoice.id}__'), + key: ValueKey('__purchase_order_pdf_${vm.invoice!.id}__'), viewModel: vm, showAppBar: showAppBar, ); @@ -38,9 +38,9 @@ class PurchaseOrderPdfScreen extends StatelessWidget { class PurchaseOrderPdfVM extends EntityPdfVM { PurchaseOrderPdfVM({ - AppState state, - InvoiceEntity invoice, - String activityId, + AppState? state, + InvoiceEntity? invoice, + String? activityId, }) : super( state: state, invoice: invoice, @@ -50,7 +50,7 @@ class PurchaseOrderPdfVM extends EntityPdfVM { factory PurchaseOrderPdfVM.fromStore(Store store) { final state = store.state; final purchaseOrderUIState = state.uiState.purchaseOrderUIState; - final invoiceId = purchaseOrderUIState.selectedId; + final invoiceId = purchaseOrderUIState.selectedId!; final invoice = state.purchaseOrderState.get(invoiceId); return PurchaseOrderPdfVM( diff --git a/lib/ui/purchase_order/purchase_order_presenter.dart b/lib/ui/purchase_order/purchase_order_presenter.dart index 57d27ce09..3b58a2a22 100644 --- a/lib/ui/purchase_order/purchase_order_presenter.dart +++ b/lib/ui/purchase_order/purchase_order_presenter.dart @@ -18,7 +18,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:url_launcher/url_launcher.dart'; class PurchaseOrderPresenter extends EntityPresenter { - static List getDefaultTableFields(UserCompanyEntity userCompany) { + static List getDefaultTableFields(UserCompanyEntity? userCompany) { return [ PurchaseOrderFields.status, PurchaseOrderFields.number, @@ -30,7 +30,7 @@ class PurchaseOrderPresenter extends EntityPresenter { ]; } - static List getAllTableFields(UserCompanyEntity userCompany) { + static List getAllTableFields(UserCompanyEntity? userCompany) { return [ ...getDefaultTableFields(userCompany), ...EntityPresenter.getBaseFields(), @@ -61,7 +61,7 @@ class PurchaseOrderPresenter extends EntityPresenter { } @override - Widget getField({String field, BuildContext context}) { + Widget getField({String? field, required BuildContext context}) { final localization = AppLocalization.of(context); final state = StoreProvider.of(context).state; final purchaseOrder = entity as InvoiceEntity; @@ -74,7 +74,7 @@ class PurchaseOrderPresenter extends EntityPresenter { return EntityStatusChip(entity: purchaseOrder, showState: true); case PurchaseOrderFields.number: return Text((purchaseOrder.number ?? '').isEmpty - ? localization.pending + ? localization!.pending : purchaseOrder.number); case PurchaseOrderFields.client: return LinkTextRelatedEntity(entity: client, relation: purchaseOrder); @@ -86,18 +86,18 @@ class PurchaseOrderPresenter extends EntityPresenter { return Align( alignment: Alignment.centerRight, child: Text(formatNumber(purchaseOrder.amount, context, - vendorId: purchaseOrder.vendorId)), + vendorId: purchaseOrder.vendorId)!), ); case PurchaseOrderFields.dueDate: return Text(formatDate(purchaseOrder.dueDate, context)); case PurchaseOrderFields.customValue1: - return Text(presentCustomField(context, purchaseOrder.customValue1)); + return Text(presentCustomField(context, purchaseOrder.customValue1)!); case PurchaseOrderFields.customValue2: - return Text(presentCustomField(context, purchaseOrder.customValue2)); + return Text(presentCustomField(context, purchaseOrder.customValue2)!); case PurchaseOrderFields.customValue3: - return Text(presentCustomField(context, purchaseOrder.customValue3)); + return Text(presentCustomField(context, purchaseOrder.customValue3)!); case PurchaseOrderFields.customValue4: - return Text(presentCustomField(context, purchaseOrder.customValue4)); + return Text(presentCustomField(context, purchaseOrder.customValue4)!); case PurchaseOrderFields.publicNotes: return TableTooltip(message: purchaseOrder.publicNotes); case PurchaseOrderFields.privateNotes: @@ -106,22 +106,22 @@ class PurchaseOrderPresenter extends EntityPresenter { return Text(purchaseOrder.isAmountDiscount ? formatNumber(purchaseOrder.discount, context, formatNumberType: FormatNumberType.money, - vendorId: purchaseOrder.vendorId) + vendorId: purchaseOrder.vendorId)! : formatNumber(purchaseOrder.discount, context, - formatNumberType: FormatNumberType.percent)); + formatNumberType: FormatNumberType.percent)!); case PurchaseOrderFields.poNumber: return Text(purchaseOrder.poNumber); case PurchaseOrderFields.documents: return Text('${purchaseOrder.documents.length}'); case PurchaseOrderFields.taxAmount: return Text(formatNumber(purchaseOrder.taxAmount, context, - vendorId: purchaseOrder.vendorId)); + vendorId: purchaseOrder.vendorId)!); case PurchaseOrderFields.exchangeRate: return Text(formatNumber(purchaseOrder.exchangeRate, context, - formatNumberType: FormatNumberType.double)); + formatNumberType: FormatNumberType.double)!); case PurchaseOrderFields.isViewed: return Text( - purchaseOrder.isViewed ? localization.yes : localization.no); + purchaseOrder.isViewed ? localization!.yes : localization!.no); case PurchaseOrderFields.project: final project = state.projectState.get(purchaseOrder.projectId); return LinkTextRelatedEntity(entity: project, relation: purchaseOrder); @@ -129,17 +129,17 @@ class PurchaseOrderPresenter extends EntityPresenter { final vendor = state.vendorState.get(purchaseOrder.vendorId); return LinkTextRelatedEntity(entity: vendor, relation: purchaseOrder); case PurchaseOrderFields.vendorState: - return Text(vendor.state); + return Text(vendor!.state); case PurchaseOrderFields.vendorCity: - return Text(vendor.city); + return Text(vendor!.city); case PurchaseOrderFields.vendorPostalCode: - return Text(vendor.postalCode); + return Text(vendor!.postalCode); case PurchaseOrderFields.vendorCountry: - return Text(state.staticState.countryMap[client.countryId]?.name ?? ''); + return Text(state.staticState.countryMap[client!.countryId]?.name ?? ''); case PurchaseOrderFields.contactName: case PurchaseOrderFields.contactEmail: final contact = purchaseOrderContactSelector( - purchaseOrder, state.vendorState.get(purchaseOrder.vendorId)); + purchaseOrder, state.vendorState.get(purchaseOrder.vendorId)!); if (contact == null) { return SizedBox(); } @@ -153,7 +153,7 @@ class PurchaseOrderPresenter extends EntityPresenter { ); case PurchaseOrderFields.partial: return Text(formatNumber(purchaseOrder.partial, context, - vendorId: purchaseOrder.vendorId)); + vendorId: purchaseOrder.vendorId)!); case PurchaseOrderFields.partialDueDate: return Text(formatDate(purchaseOrder.partialDueDate, context)); case PurchaseOrderFields.expense: diff --git a/lib/ui/purchase_order/purchase_order_screen.dart b/lib/ui/purchase_order/purchase_order_screen.dart index 079ac324b..0cabe3b16 100644 --- a/lib/ui/purchase_order/purchase_order_screen.dart +++ b/lib/ui/purchase_order/purchase_order_screen.dart @@ -17,8 +17,8 @@ import 'purchase_order_screen_vm.dart'; class PurchaseOrderScreen extends StatelessWidget { const PurchaseOrderScreen({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); static const String route = '/purchase_order'; @@ -29,7 +29,7 @@ class PurchaseOrderScreen extends StatelessWidget { Widget build(BuildContext context) { final store = StoreProvider.of(context); final state = store.state; - final company = state.company; + final company = state.company!; final userCompany = state.userCompany; final localization = AppLocalization.of(context); @@ -37,22 +37,22 @@ class PurchaseOrderScreen extends StatelessWidget { InvoiceStatusEntity().rebuild( (b) => b ..id = kPurchaseOrderStatusDraft - ..name = localization.draft, + ..name = localization!.draft, ), InvoiceStatusEntity().rebuild( (b) => b ..id = kPurchaseOrderStatusSent - ..name = localization.sent, + ..name = localization!.sent, ), InvoiceStatusEntity().rebuild( (b) => b ..id = kPurchaseOrderStatusAccepted - ..name = localization.accepted, + ..name = localization!.accepted, ), InvoiceStatusEntity().rebuild( (b) => b ..id = kPurchaseOrderStatusCancelled - ..name = localization.cancelled, + ..name = localization!.cancelled, ), ]; @@ -131,7 +131,7 @@ class PurchaseOrderScreen extends StatelessWidget { store.dispatch(FilterPurchaseOrdersByCustom4(value)), ), floatingActionButton: state.prefState.isMenuFloated && - userCompany.canCreate(EntityType.purchaseOrder) + userCompany!.canCreate(EntityType.purchaseOrder) ? FloatingActionButton( heroTag: 'purchase_order_fab', backgroundColor: Theme.of(context).primaryColorDark, @@ -143,7 +143,7 @@ class PurchaseOrderScreen extends StatelessWidget { Icons.add, color: Colors.white, ), - tooltip: localization.newPurchaseOrder, + tooltip: localization!.newPurchaseOrder, ) : null, ); diff --git a/lib/ui/purchase_order/purchase_order_screen_vm.dart b/lib/ui/purchase_order/purchase_order_screen_vm.dart index a1947a2fb..5b2c5b877 100644 --- a/lib/ui/purchase_order/purchase_order_screen_vm.dart +++ b/lib/ui/purchase_order/purchase_order_screen_vm.dart @@ -11,7 +11,7 @@ import 'package:redux/redux.dart'; import 'purchase_order_screen.dart'; class PurchaseOrderScreenBuilder extends StatelessWidget { - const PurchaseOrderScreenBuilder({Key key}) : super(key: key); + const PurchaseOrderScreenBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -28,18 +28,18 @@ class PurchaseOrderScreenBuilder extends StatelessWidget { class PurchaseOrderScreenVM { PurchaseOrderScreenVM({ - @required this.isInMultiselect, - @required this.purchaseOrderList, - @required this.userCompany, - @required this.onEntityAction, - @required this.purchaseOrderMap, + required this.isInMultiselect, + required this.purchaseOrderList, + required this.userCompany, + required this.onEntityAction, + required this.purchaseOrderMap, }); final bool isInMultiselect; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List purchaseOrderList; final Function(BuildContext, List, EntityAction) onEntityAction; - final BuiltMap purchaseOrderMap; + final BuiltMap purchaseOrderMap; static PurchaseOrderScreenVM fromStore(Store store) { final state = store.state; diff --git a/lib/ui/purchase_order/view/purchase_order_view_vm.dart b/lib/ui/purchase_order/view/purchase_order_view_vm.dart index b43aa03b5..65cae3c72 100644 --- a/lib/ui/purchase_order/view/purchase_order_view_vm.dart +++ b/lib/ui/purchase_order/view/purchase_order_view_vm.dart @@ -23,7 +23,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class PurchaseOrderViewScreen extends StatelessWidget { const PurchaseOrderViewScreen({ - Key key, + Key? key, this.isFilter = false, }) : super(key: key); @@ -41,7 +41,7 @@ class PurchaseOrderViewScreen extends StatelessWidget { return InvoiceView( viewModel: viewModel, isFilter: isFilter, - tabIndex: viewModel.state.purchaseOrderUIState.tabIndex, + tabIndex: viewModel.state!.purchaseOrderUIState.tabIndex, ); }, ); @@ -50,20 +50,20 @@ class PurchaseOrderViewScreen extends StatelessWidget { class PurchaseOrderViewVM extends AbstractInvoiceViewVM { PurchaseOrderViewVM({ - AppState state, - CompanyEntity company, - InvoiceEntity invoice, - ClientEntity client, - bool isSaving, - bool isDirty, - Function(BuildContext, EntityAction) onEntityAction, - Function(BuildContext, [int]) onEditPressed, - Function(BuildContext) onPaymentsPressed, - Function(BuildContext, PaymentEntity) onPaymentPressed, - Function(BuildContext) onRefreshed, - Function(BuildContext, List, bool) onUploadDocuments, - Function(BuildContext, DocumentEntity) onViewExpense, - Function(BuildContext, InvoiceEntity, [String]) onViewPdf, + AppState? state, + CompanyEntity? company, + InvoiceEntity? invoice, + ClientEntity? client, + bool? isSaving, + bool? isDirty, + Function(BuildContext, EntityAction)? onEntityAction, + Function(BuildContext, [int])? onEditPressed, + Function(BuildContext)? onPaymentsPressed, + Function(BuildContext, PaymentEntity)? onPaymentPressed, + Function(BuildContext)? onRefreshed, + Function(BuildContext, List, bool)? onUploadDocuments, + Function(BuildContext, DocumentEntity)? onViewExpense, + Function(BuildContext, InvoiceEntity, [String?])? onViewPdf, }) : super( state: state, company: company, @@ -90,7 +90,7 @@ class PurchaseOrderViewVM extends AbstractInvoiceViewVM { Future _handleRefresh(BuildContext context) { final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(LoadPurchaseOrder( completer: completer, purchaseOrderId: purchaseOrder.id)); return completer.future; @@ -103,12 +103,12 @@ class PurchaseOrderViewVM extends AbstractInvoiceViewVM { isDirty: purchaseOrder.isNew, invoice: purchaseOrder, client: client, - onEditPressed: (BuildContext context, [int index]) { + onEditPressed: (BuildContext context, [int? index]) { editEntity( entity: purchaseOrder, subIndex: index, completer: snackBarCompleter( - context, AppLocalization.of(context).updatedPurchaseOrder)); + context, AppLocalization.of(context)!.updatedPurchaseOrder)); }, onRefreshed: (context) => _handleRefresh(context), onEntityAction: (BuildContext context, EntityAction action) => @@ -122,7 +122,7 @@ class PurchaseOrderViewVM extends AbstractInvoiceViewVM { purchaseOrder: purchaseOrder, completer: completer)); completer.future.then((client) { - showToast(AppLocalization.of(context).uploadedDocument); + showToast(AppLocalization.of(context)!.uploadedDocument); }).catchError((Object error) { showDialog( context: context, diff --git a/lib/ui/quote/edit/quote_edit.dart b/lib/ui/quote/edit/quote_edit.dart index a313c25da..c4dd33387 100644 --- a/lib/ui/quote/edit/quote_edit.dart +++ b/lib/ui/quote/edit/quote_edit.dart @@ -16,8 +16,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class QuoteEdit extends StatefulWidget { const QuoteEdit({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final AbstractInvoiceEditVM viewModel; @@ -28,7 +28,7 @@ class QuoteEdit extends StatefulWidget { class _QuoteEditState extends State with SingleTickerProviderStateMixin { - TabController _controller; + TabController? _controller; static final GlobalKey _formKey = GlobalKey(debugLabel: '_quoteEdit'); @@ -54,18 +54,18 @@ class _QuoteEditState extends State super.didUpdateWidget(oldWidget); if (widget.viewModel.invoiceItemIndex != null) { - _controller.animateTo(kItemScreen); + _controller!.animateTo(kItemScreen); } } @override void dispose() { - _controller.dispose(); + _controller!.dispose(); super.dispose(); } - void _onSavePressed(BuildContext context, [EntityAction action]) { - final bool isValid = _formKey.currentState.validate(); + void _onSavePressed(BuildContext context, [EntityAction? action]) { + final bool isValid = _formKey.currentState!.validate(); /* setState(() { @@ -77,15 +77,15 @@ class _QuoteEditState extends State return; } - widget.viewModel.onSavePressed(context, action); + widget.viewModel.onSavePressed!(context, action); } @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; - final invoice = viewModel.invoice; - final state = viewModel.state; + final invoice = viewModel.invoice!; + final state = viewModel.state!; final prefState = state.prefState; final client = state.clientState.get(invoice.clientId); final isFullscreen = prefState.isEditorFullScreen(EntityType.invoice); @@ -94,7 +94,7 @@ class _QuoteEditState extends State isFullscreen: isFullscreen, entity: invoice, title: invoice.isNew ? localization.newQuote : localization.editQuote, - onCancelPressed: (context) => viewModel.onCancelPressed(context), + onCancelPressed: (context) => viewModel.onCancelPressed!(context), onSavePressed: (context) => _onSavePressed(context), actions: invoice.getActions( userCompany: state.userCompany, @@ -158,16 +158,16 @@ class _QuoteEditState extends State invoice: invoice, showTasksAndExpenses: false, excluded: invoice.lineItems - .where((item) => item.isTask || item.isExpense) - .map((item) => item.isTask - ? viewModel.state.taskState.map[item.taskId] - : viewModel.state.expenseState.map[item.expenseId]) + .where((item) => item!.isTask || item.isExpense) + .map((item) => item!.isTask + ? viewModel.state!.taskState.map[item.taskId] + : viewModel.state!.expenseState.map[item.expenseId]) .toList(), clientId: invoice.clientId, onItemsSelected: (items, [clientId, projectId]) { - viewModel.onItemsAdded(items, clientId, projectId); + viewModel.onItemsAdded!(items, clientId, projectId); if (!isFullscreen) { - _controller.animateTo(kItemScreen); + _controller!.animateTo(kItemScreen); } }, ); diff --git a/lib/ui/quote/edit/quote_edit_details_vm.dart b/lib/ui/quote/edit/quote_edit_details_vm.dart index f8828a509..7959807e6 100644 --- a/lib/ui/quote/edit/quote_edit_details_vm.dart +++ b/lib/ui/quote/edit/quote_edit_details_vm.dart @@ -21,7 +21,7 @@ import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_details.dart'; import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_details_vm.dart'; class QuoteEditDetailsScreen extends StatelessWidget { - const QuoteEditDetailsScreen({Key key, @required this.viewModel}) + const QuoteEditDetailsScreen({Key? key, required this.viewModel}) : super(key: key); final AbstractInvoiceEditVM viewModel; @@ -33,11 +33,11 @@ class QuoteEditDetailsScreen extends StatelessWidget { return QuoteEditDetailsVM.fromStore(store); }, builder: (context, viewModel) { - if (viewModel.state.prefState.isEditorFullScreen(EntityType.invoice)) { + if (viewModel.state!.prefState.isEditorFullScreen(EntityType.invoice)) { return InvoiceEditDesktop( viewModel: viewModel, entityViewModel: this.viewModel, - key: ValueKey('__quote_${viewModel.invoice.id}__'), + key: ValueKey('__quote_${viewModel.invoice!.id}__'), ); } else { return InvoiceEditDetails( @@ -52,17 +52,17 @@ class QuoteEditDetailsScreen extends StatelessWidget { class QuoteEditDetailsVM extends EntityEditDetailsVM { QuoteEditDetailsVM({ - AppState state, - CompanyEntity company, - InvoiceEntity invoice, - Function(InvoiceEntity) onChanged, - Function(BuildContext, InvoiceEntity, ClientEntity) onClientChanged, - Function(BuildContext, InvoiceEntity, VendorEntity) onVendorChanged, - BuiltMap clientMap, - BuiltList clientList, - Function(BuildContext context, Completer completer) + AppState? state, + CompanyEntity? company, + InvoiceEntity? invoice, + Function(InvoiceEntity)? onChanged, + Function(BuildContext, InvoiceEntity, ClientEntity)? onClientChanged, + Function(BuildContext, InvoiceEntity, VendorEntity)? onVendorChanged, + BuiltMap? clientMap, + BuiltList? clientList, + Function(BuildContext context, Completer completer)? onAddClientPressed, - Function(BuildContext context, Completer completer) + Function(BuildContext context, Completer completer)? onAddVendorPressed, }) : super( state: state, @@ -102,7 +102,7 @@ class QuoteEditDetailsVM extends EntityEditDetailsVM { cancelCompleter: Completer() ..future.then((_) { store.dispatch(UpdateCurrentRoute(QuoteEditScreen.route)); - })); + } as FutureOr<_> Function(Null))); completer.future.then((SelectableEntity client) { store.dispatch(UpdateCurrentRoute(QuoteEditScreen.route)); }); diff --git a/lib/ui/quote/edit/quote_edit_items_vm.dart b/lib/ui/quote/edit/quote_edit_items_vm.dart index ace0f16c8..a62001005 100644 --- a/lib/ui/quote/edit/quote_edit_items_vm.dart +++ b/lib/ui/quote/edit/quote_edit_items_vm.dart @@ -16,8 +16,8 @@ import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_vm.dart'; class QuoteEditItemsScreen extends StatelessWidget { const QuoteEditItemsScreen({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, this.isTasks = false, }) : super(key: key); @@ -31,7 +31,7 @@ class QuoteEditItemsScreen extends StatelessWidget { return QuoteEditItemsVM.fromStore(store, isTasks); }, builder: (context, viewModel) { - if (viewModel.state.prefState.isEditorFullScreen(EntityType.invoice)) { + if (viewModel.state!.prefState.isEditorFullScreen(EntityType.invoice)) { return InvoiceEditItemsDesktop( viewModel: viewModel, entityViewModel: this.viewModel, @@ -50,16 +50,16 @@ class QuoteEditItemsScreen extends StatelessWidget { class QuoteEditItemsVM extends EntityEditItemsVM { QuoteEditItemsVM({ - AppState state, - CompanyEntity company, - InvoiceEntity invoice, - int invoiceItemIndex, - Function addLineItem, - Function deleteLineItem, - Function(int) onRemoveInvoiceItemPressed, - Function onDoneInvoiceItemPressed, - Function(InvoiceItemEntity, int) onChangedInvoiceItem, - Function(int, int) onMovedInvoiceItem, + AppState? state, + CompanyEntity? company, + InvoiceEntity? invoice, + int? invoiceItemIndex, + Function? addLineItem, + Function? deleteLineItem, + Function(int)? onRemoveInvoiceItemPressed, + Function? onDoneInvoiceItemPressed, + Function(InvoiceItemEntity, int)? onChangedInvoiceItem, + Function(int, int)? onMovedInvoiceItem, }) : super( state: state, company: company, @@ -89,7 +89,7 @@ class QuoteEditItemsVM extends EntityEditItemsVM { store.dispatch(EditQuoteItem()); }, onChangedInvoiceItem: (quoteItem, index) { - final quote = store.state.quoteUIState.editing; + final quote = store.state.quoteUIState.editing!; if (index == quote.lineItems.length) { store.dispatch(AddQuoteItem( quoteItem: quoteItem.rebuild((b) => b diff --git a/lib/ui/quote/edit/quote_edit_notes_vm.dart b/lib/ui/quote/edit/quote_edit_notes_vm.dart index 3950f9cdc..c9f373935 100644 --- a/lib/ui/quote/edit/quote_edit_notes_vm.dart +++ b/lib/ui/quote/edit/quote_edit_notes_vm.dart @@ -13,7 +13,7 @@ import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_notes.dart'; import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_notes_vm.dart'; class QuoteEditNotesScreen extends StatelessWidget { - const QuoteEditNotesScreen({Key key}) : super(key: key); + const QuoteEditNotesScreen({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -32,10 +32,10 @@ class QuoteEditNotesScreen extends StatelessWidget { class QuoteEditNotesVM extends EntityEditNotesVM { QuoteEditNotesVM({ - CompanyEntity company, - InvoiceEntity invoice, - Function(InvoiceEntity) onChanged, - AppState state, + CompanyEntity? company, + InvoiceEntity? invoice, + Function(InvoiceEntity)? onChanged, + AppState? state, }) : super( company: company, invoice: invoice, diff --git a/lib/ui/quote/edit/quote_edit_pdf_vm.dart b/lib/ui/quote/edit/quote_edit_pdf_vm.dart index ce6d2f1cc..34d47df22 100644 --- a/lib/ui/quote/edit/quote_edit_pdf_vm.dart +++ b/lib/ui/quote/edit/quote_edit_pdf_vm.dart @@ -12,7 +12,7 @@ import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_pdf.dart'; import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_pdf_vm.dart'; class QuoteEditPDFScreen extends StatelessWidget { - const QuoteEditPDFScreen({Key key}) : super(key: key); + const QuoteEditPDFScreen({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -31,9 +31,9 @@ class QuoteEditPDFScreen extends StatelessWidget { class QuoteEditPDFVM extends EntityEditPDFVM { QuoteEditPDFVM({ - @required CompanyEntity company, - @required InvoiceEntity invoice, - @required AppState state, + required CompanyEntity? company, + required InvoiceEntity? invoice, + required AppState state, }) : super( company: company, invoice: invoice, diff --git a/lib/ui/quote/edit/quote_edit_vm.dart b/lib/ui/quote/edit/quote_edit_vm.dart index 37b562b47..124cf3ab8 100644 --- a/lib/ui/quote/edit/quote_edit_vm.dart +++ b/lib/ui/quote/edit/quote_edit_vm.dart @@ -25,7 +25,7 @@ import 'package:invoiceninja_flutter/ui/quote/view/quote_view_vm.dart'; import 'package:invoiceninja_flutter/utils/completers.dart'; class QuoteEditScreen extends StatelessWidget { - const QuoteEditScreen({Key key}) : super(key: key); + const QuoteEditScreen({Key? key}) : super(key: key); static const String route = '/quote/edit'; @@ -38,7 +38,7 @@ class QuoteEditScreen extends StatelessWidget { builder: (context, viewModel) { return QuoteEdit( viewModel: viewModel, - key: ValueKey(viewModel.invoice.updatedAt), + key: ValueKey(viewModel.invoice!.updatedAt), ); }, ); @@ -47,16 +47,16 @@ class QuoteEditScreen extends StatelessWidget { class QuoteEditVM extends AbstractInvoiceEditVM { QuoteEditVM({ - AppState state, - CompanyEntity company, - InvoiceEntity invoice, - int invoiceItemIndex, - InvoiceEntity origInvoice, - Function(BuildContext, [EntityAction]) onSavePressed, - Function(List, String, String) onItemsAdded, - bool isSaving, - Function(BuildContext) onCancelPressed, - Function(BuildContext, List, bool) onUploadDocument, + AppState? state, + CompanyEntity? company, + InvoiceEntity? invoice, + int? invoiceItemIndex, + InvoiceEntity? origInvoice, + Function(BuildContext, [EntityAction])? onSavePressed, + Function(List, String, String)? onItemsAdded, + bool? isSaving, + Function(BuildContext)? onCancelPressed, + Function(BuildContext, List, bool?)? onUploadDocument, }) : super( state: state, company: company, @@ -72,7 +72,7 @@ class QuoteEditVM extends AbstractInvoiceEditVM { factory QuoteEditVM.fromStore(Store store) { final AppState state = store.state; - final quote = state.quoteUIState.editing; + final quote = state.quoteUIState.editing!; return QuoteEditVM( state: state, @@ -81,16 +81,16 @@ class QuoteEditVM extends AbstractInvoiceEditVM { invoice: quote, invoiceItemIndex: state.quoteUIState.editingItemIndex, origInvoice: store.state.quoteState.map[quote.id], - onSavePressed: (BuildContext context, [EntityAction action]) { + onSavePressed: (BuildContext context, [EntityAction? action]) { Debouncer.runOnComplete(() { - final quote = store.state.quoteUIState.editing; + final quote = store.state.quoteUIState.editing!; final localization = navigatorKey.localization; final navigator = navigatorKey.currentState; if (quote.clientId.isEmpty) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { - return ErrorDialog(localization.pleaseSelectAClient); + return ErrorDialog(localization!.pleaseSelectAClient); }); return null; } @@ -109,15 +109,15 @@ class QuoteEditVM extends AbstractInvoiceEditVM { )); return completer.future.then((savedQuote) { showToast(quote.isNew - ? localization.createdQuote - : localization.updatedQuote); + ? localization!.createdQuote + : localization!.updatedQuote); if (state.prefState.isMobile) { store.dispatch(UpdateCurrentRoute(QuoteViewScreen.route)); if (quote.isNew) { - navigator.pushReplacementNamed(QuoteViewScreen.route); + navigator!.pushReplacementNamed(QuoteViewScreen.route); } else { - navigator.pop(savedQuote); + navigator!.pop(savedQuote); } } else { if (!state.prefState.isPreviewVisible) { @@ -140,7 +140,7 @@ class QuoteEditVM extends AbstractInvoiceEditVM { } }).catchError((Object error) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { return ErrorDialog(error); }); @@ -163,7 +163,7 @@ class QuoteEditVM extends AbstractInvoiceEditVM { } }, onUploadDocument: (BuildContext context, - List multipartFile, bool isPrivate) { + List multipartFile, bool? isPrivate) { final Completer completer = Completer(); store.dispatch(SaveQuoteDocumentRequest( isPrivate: isPrivate, @@ -171,7 +171,7 @@ class QuoteEditVM extends AbstractInvoiceEditVM { quote: quote, completer: completer)); completer.future.then((client) { - showToast(AppLocalization.of(context).uploadedDocument); + showToast(AppLocalization.of(context)!.uploadedDocument); }).catchError((Object error) { showDialog( context: context, diff --git a/lib/ui/quote/quote_email_vm.dart b/lib/ui/quote/quote_email_vm.dart index 8650fca54..5150b4eab 100644 --- a/lib/ui/quote/quote_email_vm.dart +++ b/lib/ui/quote/quote_email_vm.dart @@ -18,7 +18,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/platforms.dart'; class QuoteEmailScreen extends StatelessWidget { - const QuoteEmailScreen({Key key}) : super(key: key); + const QuoteEmailScreen({Key? key}) : super(key: key); static const String route = '/quote/email'; @@ -28,8 +28,8 @@ class QuoteEmailScreen extends StatelessWidget { onInit: (Store store) { final state = store.state; final quoteId = state.uiState.quoteUIState.selectedId; - final quote = state.quoteState.map[quoteId]; - final client = state.clientState.map[quote.clientId]; + final quote = state.quoteState.map[quoteId]!; + final client = state.clientState.map[quote.clientId]!; if (client.isStale) { store.dispatch(LoadClient(clientId: client.id)); } @@ -37,7 +37,7 @@ class QuoteEmailScreen extends StatelessWidget { converter: (Store store) { final state = store.state; final quoteId = state.uiState.quoteUIState.selectedId; - final quote = state.quoteState.map[quoteId]; + final quote = state.quoteState.map[quoteId]!; return EmailQuoteVM.fromStore(store, quote); }, builder: (context, viewModel) { @@ -51,14 +51,14 @@ class QuoteEmailScreen extends StatelessWidget { class EmailQuoteVM extends EmailEntityVM { EmailQuoteVM({ - @required AppState state, - @required bool isLoading, - @required bool isSaving, - @required CompanyEntity company, - @required InvoiceEntity invoice, - @required ClientEntity client, - @required VendorEntity vendor, - @required + required AppState state, + required bool isLoading, + required bool isSaving, + required CompanyEntity? company, + required InvoiceEntity invoice, + required ClientEntity? client, + required VendorEntity? vendor, + required Function(BuildContext, EmailTemplate, String, String, String) onSendPressed, }) : super( @@ -85,12 +85,12 @@ class EmailQuoteVM extends EmailEntityVM { vendor: state.vendorState.map[quote.vendorId], onSendPressed: (context, template, subject, body, ccEmail) { final completer = snackBarCompleter( - context, AppLocalization.of(context).emailedQuote, + context, AppLocalization.of(context)!.emailedQuote, shouldPop: isMobile(context)); if (!isMobile(context)) { completer.future.then((value) { viewEntity(entity: quote); - }); + } as FutureOr<_> Function(Null)); } store.dispatch(EmailQuoteRequest( completer: completer, diff --git a/lib/ui/quote/quote_list_item.dart b/lib/ui/quote/quote_list_item.dart index 074581b17..16cba730d 100644 --- a/lib/ui/quote/quote_list_item.dart +++ b/lib/ui/quote/quote_list_item.dart @@ -19,47 +19,47 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class QuoteListItem extends StatelessWidget { const QuoteListItem({ - @required this.quote, + required this.quote, this.filter, this.showCheckbox = true, }); - final InvoiceEntity quote; - final String filter; + final InvoiceEntity? quote; + final String? filter; final bool showCheckbox; @override Widget build(BuildContext context) { final state = StoreProvider.of(context).state; - final client = state.clientState.get(quote.clientId); + final client = state.clientState.get(quote!.clientId); final uiState = state.uiState; final quoteUIState = uiState.quoteUIState; - final listUIState = state.getUIState(quote.entityType).listUIState; + final listUIState = state.getUIState(quote!.entityType)!.listUIState; final isInMultiselect = showCheckbox && listUIState.isInMultiselect(); - final isChecked = isInMultiselect && listUIState.isSelected(quote.id); + final isChecked = isInMultiselect && listUIState.isSelected(quote!.id); final textStyle = TextStyle(fontSize: 16); final localization = AppLocalization.of(context); - final textColor = Theme.of(context).textTheme.bodyLarge.color; - final filterMatch = filter != null && filter.isNotEmpty - ? (quote.matchesFilterValue(filter) ?? - client.matchesFilterValue(filter)) + final textColor = Theme.of(context).textTheme.bodyLarge!.color; + final filterMatch = filter != null && filter!.isNotEmpty + ? (quote!.matchesFilterValue(filter) ?? + client!.matchesFilterValue(filter)) : null; String subtitle = ''; - if (quote.date.isNotEmpty) { - subtitle = formatDate(quote.date, context); + if (quote!.date.isNotEmpty) { + subtitle = formatDate(quote!.date, context); } - if (quote.dueDate.isNotEmpty) { + if (quote!.dueDate.isNotEmpty) { if (subtitle.isNotEmpty) { subtitle += ' • '; } - subtitle += formatDate(quote.dueDate, context); + subtitle += formatDate(quote!.dueDate, context); } return DismissibleEntity( - isSelected: quote.id == + isSelected: quote!.id == (uiState.isEditing - ? quoteUIState.editing.id + ? quoteUIState.editing!.id : quoteUIState.selectedId), userCompany: state.userCompany, showMultiselect: showCheckbox, @@ -69,9 +69,9 @@ class QuoteListItem extends StatelessWidget { return constraints.maxWidth > kTableListWidthCutoff ? InkWell( onTap: () => - selectEntity(entity: quote, forceView: !showCheckbox), + selectEntity(entity: quote!, forceView: !showCheckbox), onLongPress: () => - selectEntity(entity: quote, longPress: true), + selectEntity(entity: quote!, longPress: true), child: Padding( padding: const EdgeInsets.only( left: 10, @@ -97,7 +97,7 @@ class QuoteListItem extends StatelessWidget { ), ) : ActionMenuButton( - entityActions: quote.getActions( + entityActions: quote!.getActions( userCompany: state.userCompany, client: client, includeEdit: true, @@ -113,13 +113,13 @@ class QuoteListItem extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - (quote.number ?? '').isEmpty - ? localization.pending - : quote.number, + (quote!.number ?? '').isEmpty + ? localization!.pending + : quote!.number, style: textStyle, overflow: TextOverflow.ellipsis, ), - if (!quote.isActive) EntityStateLabel(quote) + if (!quote!.isActive) EntityStateLabel(quote) ], ), ), @@ -129,8 +129,8 @@ class QuoteListItem extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - client.displayName + - (quote.documents.isNotEmpty + client!.displayName + + (quote!.documents.isNotEmpty ? ' 📎' : ''), style: textStyle), @@ -140,9 +140,9 @@ class QuoteListItem extends StatelessWidget { overflow: TextOverflow.ellipsis, style: Theme.of(context) .textTheme - .titleSmall + .titleSmall! .copyWith( - color: textColor + color: textColor! .withOpacity(kLighterOpacity), ), ), @@ -151,8 +151,8 @@ class QuoteListItem extends StatelessWidget { ), SizedBox(width: 10), Text( - formatNumber(quote.amount, context, - clientId: client.id), + formatNumber(quote!.amount, context, + clientId: client.id)!, style: textStyle, textAlign: TextAlign.end, ), @@ -164,9 +164,9 @@ class QuoteListItem extends StatelessWidget { ) : ListTile( onTap: () => - selectEntity(entity: quote, forceView: !showCheckbox), + selectEntity(entity: quote!, forceView: !showCheckbox), onLongPress: () => - selectEntity(entity: quote, longPress: true), + selectEntity(entity: quote!, longPress: true), leading: isInMultiselect ? IgnorePointer( ignoring: listUIState.isInMultiselect(), @@ -186,15 +186,15 @@ class QuoteListItem extends StatelessWidget { children: [ Expanded( child: Text( - client.displayName, + client!.displayName, style: Theme.of(context).textTheme.titleMedium, overflow: TextOverflow.ellipsis, ), ), SizedBox(width: 4), Text( - formatNumber(quote.amount, context, - clientId: quote.clientId), + formatNumber(quote!.amount, context, + clientId: quote!.clientId)!, style: Theme.of(context).textTheme.titleMedium), ], ), @@ -206,16 +206,16 @@ class QuoteListItem extends StatelessWidget { children: [ Expanded( child: filterMatch == null - ? Text((((quote.number ?? '').isEmpty - ? localization.pending - : quote.number) + + ? Text((((quote!.number ?? '').isEmpty + ? localization!.pending + : quote!.number) + ' • ' + formatDate( - quote.dueDate.isNotEmpty - ? quote.dueDate - : quote.date, + quote!.dueDate.isNotEmpty + ? quote!.dueDate + : quote!.date, context) + - (quote.documents.isNotEmpty + (quote!.documents.isNotEmpty ? ' 📎' : '')) .trim()) @@ -226,14 +226,14 @@ class QuoteListItem extends StatelessWidget { ), ), Text( - localization.lookup( - kQuoteStatuses[quote.calculatedStatusId]), + localization!.lookup( + kQuoteStatuses[quote!.calculatedStatusId])!, style: TextStyle( - color: !quote.isSent + color: !quote!.isSent ? textColor : QuoteStatusColors( state.prefState.colorThemeModel) - .colors[quote.calculatedStatusId], + .colors[quote!.calculatedStatusId], )), ], ), diff --git a/lib/ui/quote/quote_list_vm.dart b/lib/ui/quote/quote_list_vm.dart index b62245f6a..7d72854c0 100644 --- a/lib/ui/quote/quote_list_vm.dart +++ b/lib/ui/quote/quote_list_vm.dart @@ -24,7 +24,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class QuoteListBuilder extends StatelessWidget { - const QuoteListBuilder({Key key}) : super(key: key); + const QuoteListBuilder({Key? key}) : super(key: key); static const String route = '/quotes/edit'; @@ -58,20 +58,20 @@ class QuoteListBuilder extends StatelessWidget { class QuoteListVM extends EntityListVM { QuoteListVM({ - @required AppState state, - @required List invoiceList, - @required BuiltMap invoiceMap, - @required BuiltMap clientMap, - @required String filter, - @required bool isLoading, - @required Function(BuildContext) onRefreshed, - @required + required AppState state, + required List invoiceList, + required BuiltMap invoiceMap, + required BuiltMap clientMap, + required String? filter, + required bool isLoading, + required Function(BuildContext) onRefreshed, + required Function(BuildContext, List, EntityAction) onEntityAction, - @required List tableColumns, - @required EntityType entityType, - @required Function(String) onSortColumn, - @required Function onClearMultiselect, + required List tableColumns, + required EntityType entityType, + required Function(String) onSortColumn, + required Function onClearMultiselect, }) : super( state: state, invoiceList: invoiceList, @@ -92,7 +92,7 @@ class QuoteListVM extends EntityListVM { return Future(null); } final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(RefreshData(completer: completer)); return completer.future; } @@ -118,7 +118,7 @@ class QuoteListVM extends EntityListVM { EntityAction action) => handleQuoteAction(context, quotes, action), tableColumns: - state.userCompany.settings?.getTableColumns(EntityType.quote) ?? + state.userCompany!.settings?.getTableColumns(EntityType.quote) ?? QuotePresenter.getDefaultTableFields(state.userCompany), onSortColumn: (field) => store.dispatch(SortQuotes(field)), onClearMultiselect: () => store.dispatch(ClearQuoteMultiselect()), diff --git a/lib/ui/quote/quote_pdf_vm.dart b/lib/ui/quote/quote_pdf_vm.dart index cf224808f..1cf3fc397 100644 --- a/lib/ui/quote/quote_pdf_vm.dart +++ b/lib/ui/quote/quote_pdf_vm.dart @@ -12,7 +12,7 @@ import 'package:invoiceninja_flutter/ui/invoice/invoice_pdf.dart'; import 'package:invoiceninja_flutter/ui/invoice/invoice_pdf_vm.dart'; class QuotePdfScreen extends StatelessWidget { - const QuotePdfScreen({Key key, this.showAppBar = true}) : super(key: key); + const QuotePdfScreen({Key? key, this.showAppBar = true}) : super(key: key); final bool showAppBar; @@ -26,7 +26,7 @@ class QuotePdfScreen extends StatelessWidget { }, builder: (context, vm) { return InvoicePdfView( - key: ValueKey('__quote_pdf_${vm.invoice.id}__'), + key: ValueKey('__quote_pdf_${vm.invoice!.id}__'), viewModel: vm, showAppBar: showAppBar, ); @@ -37,9 +37,9 @@ class QuotePdfScreen extends StatelessWidget { class QuotePdfVM extends EntityPdfVM { QuotePdfVM({ - AppState state, - InvoiceEntity invoice, - String activityId, + AppState? state, + InvoiceEntity? invoice, + String? activityId, }) : super( state: state, invoice: invoice, @@ -49,7 +49,7 @@ class QuotePdfVM extends EntityPdfVM { factory QuotePdfVM.fromStore(Store store) { final state = store.state; final quoteUIState = state.uiState.quoteUIState; - final invoiceId = quoteUIState.selectedId; + final invoiceId = quoteUIState.selectedId!; final invoice = state.quoteState.get(invoiceId); return QuotePdfVM( diff --git a/lib/ui/quote/quote_presenter.dart b/lib/ui/quote/quote_presenter.dart index f206740ae..1bf8e08a8 100644 --- a/lib/ui/quote/quote_presenter.dart +++ b/lib/ui/quote/quote_presenter.dart @@ -18,7 +18,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:url_launcher/url_launcher.dart'; class QuotePresenter extends EntityPresenter { - static List getDefaultTableFields(UserCompanyEntity userCompany) { + static List getDefaultTableFields(UserCompanyEntity? userCompany) { return [ QuoteFields.status, QuoteFields.number, @@ -29,7 +29,7 @@ class QuotePresenter extends EntityPresenter { ]; } - static List getAllTableFields(UserCompanyEntity userCompany) { + static List getAllTableFields(UserCompanyEntity? userCompany) { return [ ...getDefaultTableFields(userCompany), ...EntityPresenter.getBaseFields(), @@ -60,7 +60,7 @@ class QuotePresenter extends EntityPresenter { } @override - Widget getField({String field, BuildContext context}) { + Widget getField({String? field, required BuildContext context}) { final localization = AppLocalization.of(context); final state = StoreProvider.of(context).state; final quote = entity as InvoiceEntity; @@ -71,7 +71,7 @@ class QuotePresenter extends EntityPresenter { return EntityStatusChip(entity: quote, showState: true); case QuoteFields.number: return Text( - (quote.number ?? '').isEmpty ? localization.pending : quote.number); + (quote.number ?? '').isEmpty ? localization!.pending : quote.number); case QuoteFields.client: return LinkTextRelatedEntity(entity: client, relation: quote); case QuoteFields.date: @@ -82,18 +82,18 @@ class QuotePresenter extends EntityPresenter { return Align( alignment: Alignment.centerRight, child: Text( - formatNumber(quote.amount, context, clientId: quote.clientId)), + formatNumber(quote.amount, context, clientId: quote.clientId)!), ); case QuoteFields.validUntil: return Text(formatDate(quote.dueDate, context)); case QuoteFields.customValue1: - return Text(presentCustomField(context, quote.customValue1)); + return Text(presentCustomField(context, quote.customValue1)!); case QuoteFields.customValue2: - return Text(presentCustomField(context, quote.customValue2)); + return Text(presentCustomField(context, quote.customValue2)!); case QuoteFields.customValue3: - return Text(presentCustomField(context, quote.customValue3)); + return Text(presentCustomField(context, quote.customValue3)!); case QuoteFields.customValue4: - return Text(presentCustomField(context, quote.customValue4)); + return Text(presentCustomField(context, quote.customValue4)!); case QuoteFields.publicNotes: return TableTooltip(message: quote.publicNotes); case QuoteFields.privateNotes: @@ -102,21 +102,21 @@ class QuotePresenter extends EntityPresenter { return Text(quote.isAmountDiscount ? formatNumber(quote.discount, context, formatNumberType: FormatNumberType.money, - clientId: quote.clientId) + clientId: quote.clientId)! : formatNumber(quote.discount, context, - formatNumberType: FormatNumberType.percent)); + formatNumberType: FormatNumberType.percent)!); case QuoteFields.poNumber: return Text(quote.poNumber); case QuoteFields.documents: return Text('${quote.documents.length}'); case QuoteFields.taxAmount: return Text( - formatNumber(quote.taxAmount, context, clientId: quote.clientId)); + formatNumber(quote.taxAmount, context, clientId: quote.clientId)!); case QuoteFields.exchangeRate: return Text(formatNumber(quote.exchangeRate, context, - formatNumberType: FormatNumberType.double)); + formatNumberType: FormatNumberType.double)!); case QuoteFields.isViewed: - return Text(quote.isViewed ? localization.yes : localization.no); + return Text(quote.isViewed ? localization!.yes : localization!.no); case QuoteFields.project: final project = state.projectState.get(quote.projectId); return LinkTextRelatedEntity(entity: project, relation: quote); @@ -124,17 +124,17 @@ class QuotePresenter extends EntityPresenter { final vendor = state.vendorState.get(quote.vendorId); return LinkTextRelatedEntity(entity: vendor, relation: quote); case QuoteFields.clientState: - return Text(client.state); + return Text(client!.state); case QuoteFields.clientCity: - return Text(client.city); + return Text(client!.city); case QuoteFields.clientPostalCode: - return Text(client.postalCode); + return Text(client!.postalCode); case QuoteFields.clientCountry: - return Text(state.staticState.countryMap[client.countryId]?.name ?? ''); + return Text(state.staticState.countryMap[client!.countryId]?.name ?? ''); case QuoteFields.contactName: case QuoteFields.contactEmail: final contact = - quoteContactSelector(quote, state.clientState.get(quote.clientId)); + quoteContactSelector(quote, state.clientState.get(quote.clientId)!); if (contact == null) { return SizedBox(); } @@ -147,7 +147,7 @@ class QuotePresenter extends EntityPresenter { onLongPress: () => launchUrl(Uri.parse('mailto:${contact.email}')), ); case QuoteFields.partial: - return Text(formatNumber(quote.partial, context)); + return Text(formatNumber(quote.partial, context)!); case QuoteFields.partialDueDate: return Text(formatDate(quote.partialDueDate, context)); } diff --git a/lib/ui/quote/quote_screen.dart b/lib/ui/quote/quote_screen.dart index 155ab47a0..fc278a1dc 100644 --- a/lib/ui/quote/quote_screen.dart +++ b/lib/ui/quote/quote_screen.dart @@ -21,8 +21,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class QuoteScreen extends StatelessWidget { const QuoteScreen({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); static const String route = '/quote'; @@ -33,39 +33,39 @@ class QuoteScreen extends StatelessWidget { Widget build(BuildContext context) { final store = StoreProvider.of(context); final state = store.state; - final company = store.state.company; + final company = store.state.company!; final userCompany = store.state.userCompany; final localization = AppLocalization.of(context); final statuses = [ InvoiceStatusEntity().rebuild( (b) => b ..id = kQuoteStatusDraft - ..name = localization.draft, + ..name = localization!.draft, ), InvoiceStatusEntity().rebuild( (b) => b ..id = kQuoteStatusSent - ..name = localization.sent, + ..name = localization!.sent, ), InvoiceStatusEntity().rebuild( (b) => b ..id = kQuoteStatusViewed - ..name = localization.viewed, + ..name = localization!.viewed, ), InvoiceStatusEntity().rebuild( (b) => b ..id = kQuoteStatusApproved - ..name = localization.approved, + ..name = localization!.approved, ), InvoiceStatusEntity().rebuild( (b) => b ..id = kQuoteStatusConverted - ..name = localization.converted, + ..name = localization!.converted, ), InvoiceStatusEntity().rebuild( (b) => b ..id = kQuoteStatusExpired - ..name = localization.expired, + ..name = localization!.expired, ), ]; @@ -139,7 +139,7 @@ class QuoteScreen extends StatelessWidget { }, ), floatingActionButton: state.prefState.isMenuFloated && - userCompany.canCreate(EntityType.quote) + userCompany!.canCreate(EntityType.quote) ? FloatingActionButton( heroTag: 'quote_fab', backgroundColor: Theme.of(context).primaryColorDark, @@ -151,7 +151,7 @@ class QuoteScreen extends StatelessWidget { Icons.add, color: Colors.white, ), - tooltip: localization.newQuote, + tooltip: localization!.newQuote, ) : null, ); diff --git a/lib/ui/quote/quote_screen_vm.dart b/lib/ui/quote/quote_screen_vm.dart index 462578f54..ededcba51 100644 --- a/lib/ui/quote/quote_screen_vm.dart +++ b/lib/ui/quote/quote_screen_vm.dart @@ -14,7 +14,7 @@ import 'package:invoiceninja_flutter/redux/quote/quote_selectors.dart'; import 'quote_screen.dart'; class QuoteScreenBuilder extends StatelessWidget { - const QuoteScreenBuilder({Key key}) : super(key: key); + const QuoteScreenBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -31,16 +31,16 @@ class QuoteScreenBuilder extends StatelessWidget { class QuoteScreenVM { QuoteScreenVM({ - @required this.isInMultiselect, - @required this.quoteList, - @required this.userCompany, - @required this.quoteMap, + required this.isInMultiselect, + required this.quoteList, + required this.userCompany, + required this.quoteMap, }); final bool isInMultiselect; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List quoteList; - final BuiltMap quoteMap; + final BuiltMap quoteMap; static QuoteScreenVM fromStore(Store store) { final state = store.state; diff --git a/lib/ui/quote/view/quote_view_vm.dart b/lib/ui/quote/view/quote_view_vm.dart index 0a70d6c5c..d692f23e6 100644 --- a/lib/ui/quote/view/quote_view_vm.dart +++ b/lib/ui/quote/view/quote_view_vm.dart @@ -23,7 +23,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class QuoteViewScreen extends StatelessWidget { const QuoteViewScreen({ - Key key, + Key? key, this.isFilter = false, }) : super(key: key); final bool isFilter; @@ -40,7 +40,7 @@ class QuoteViewScreen extends StatelessWidget { return InvoiceView( viewModel: viewModel, isFilter: isFilter, - tabIndex: viewModel.state.quoteUIState.tabIndex, + tabIndex: viewModel.state!.quoteUIState.tabIndex, ); }, ); @@ -49,20 +49,20 @@ class QuoteViewScreen extends StatelessWidget { class QuoteViewVM extends AbstractInvoiceViewVM { QuoteViewVM({ - AppState state, - CompanyEntity company, - InvoiceEntity invoice, - ClientEntity client, - bool isSaving, - bool isDirty, - Function(BuildContext, EntityAction) onEntityAction, - Function(BuildContext, [int]) onEditPressed, - Function(BuildContext) onPaymentsPressed, - Function(BuildContext, PaymentEntity) onPaymentPressed, - Function(BuildContext) onRefreshed, - Function(BuildContext, List, bool) onUploadDocuments, - Function(BuildContext, DocumentEntity) onViewExpense, - Function(BuildContext, InvoiceEntity, [String]) onViewPdf, + AppState? state, + CompanyEntity? company, + InvoiceEntity? invoice, + ClientEntity? client, + bool? isSaving, + bool? isDirty, + Function(BuildContext, EntityAction)? onEntityAction, + Function(BuildContext, [int])? onEditPressed, + Function(BuildContext)? onPaymentsPressed, + Function(BuildContext, PaymentEntity)? onPaymentPressed, + Function(BuildContext)? onRefreshed, + Function(BuildContext, List, bool)? onUploadDocuments, + Function(BuildContext, DocumentEntity)? onViewExpense, + Function(BuildContext, InvoiceEntity, [String?])? onViewPdf, }) : super( state: state, company: company, @@ -88,7 +88,7 @@ class QuoteViewVM extends AbstractInvoiceViewVM { Future _handleRefresh(BuildContext context) { final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(LoadQuote(completer: completer, quoteId: quote.id)); return completer.future; } @@ -100,12 +100,12 @@ class QuoteViewVM extends AbstractInvoiceViewVM { isDirty: quote.isNew, invoice: quote, client: client, - onEditPressed: (BuildContext context, [int index]) { + onEditPressed: (BuildContext context, [int? index]) { editEntity( entity: quote, subIndex: index, completer: snackBarCompleter( - context, AppLocalization.of(context).updatedQuote)); + context, AppLocalization.of(context)!.updatedQuote)); }, onRefreshed: (context) => _handleRefresh(context), onEntityAction: (BuildContext context, EntityAction action) => @@ -119,7 +119,7 @@ class QuoteViewVM extends AbstractInvoiceViewVM { quote: quote, completer: completer)); completer.future.then((client) { - showToast(AppLocalization.of(context).uploadedDocument); + showToast(AppLocalization.of(context)!.uploadedDocument); }).catchError((Object error) { showDialog( context: context, diff --git a/lib/ui/recurring_expense/edit/recurring_expense_edit_vm.dart b/lib/ui/recurring_expense/edit/recurring_expense_edit_vm.dart index 340e6ec5d..a70689567 100644 --- a/lib/ui/recurring_expense/edit/recurring_expense_edit_vm.dart +++ b/lib/ui/recurring_expense/edit/recurring_expense_edit_vm.dart @@ -24,7 +24,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class RecurringExpenseEditScreen extends StatelessWidget { - const RecurringExpenseEditScreen({Key key}) : super(key: key); + const RecurringExpenseEditScreen({Key? key}) : super(key: key); static const String route = '/recurring_expense/edit'; @override @@ -36,7 +36,7 @@ class RecurringExpenseEditScreen extends StatelessWidget { builder: (context, viewModel) { return ExpenseEdit( viewModel: viewModel, - key: ValueKey(viewModel.expense.updatedAt), + key: ValueKey(viewModel.expense!.updatedAt), ); }, ); @@ -45,24 +45,24 @@ class RecurringExpenseEditScreen extends StatelessWidget { class RecurringExpenseEditVM extends AbstractExpenseEditVM { RecurringExpenseEditVM({ - AppState state, - ExpenseEntity expense, - Function(ExpenseEntity) onChanged, - Function(BuildContext) onSavePressed, - Function(BuildContext) onCancelPressed, - bool isLoading, - bool isSaving, - ExpenseEntity origExpense, - Function(BuildContext context, Completer completer) + AppState? state, + ExpenseEntity? expense, + Function(ExpenseEntity)? onChanged, + Function(BuildContext)? onSavePressed, + Function(BuildContext)? onCancelPressed, + bool? isLoading, + bool? isSaving, + ExpenseEntity? origExpense, + Function(BuildContext context, Completer completer)? onAddClientPressed, - Function(BuildContext context, Completer completer) + Function(BuildContext context, Completer completer)? onAddVendorPressed, - Function(BuildContext, List, bool) onUploadDocuments, + Function(BuildContext, List, bool)? onUploadDocuments, }) : super( state: state, expense: expense, onChanged: onChanged, - onSavePressed: onSavePressed, + onSavePressed: onSavePressed as dynamic Function(BuildContext, [EntityAction])?, onCancelPressed: onCancelPressed, origExpense: origExpense, onAddClientPressed: onAddClientPressed, @@ -72,7 +72,7 @@ class RecurringExpenseEditVM extends AbstractExpenseEditVM { factory RecurringExpenseEditVM.fromStore(Store store) { final state = store.state; - final recurringExpense = state.recurringExpenseUIState.editing; + final recurringExpense = state.recurringExpenseUIState.editing!; return RecurringExpenseEditVM( state: state, @@ -93,7 +93,7 @@ class RecurringExpenseEditVM extends AbstractExpenseEditVM { ..future.then((_) { store.dispatch( UpdateCurrentRoute(RecurringExpenseEditScreen.route)); - })); + } as FutureOr<_> Function(Null))); completer.future.then((SelectableEntity client) { store.dispatch(UpdateCurrentRoute(RecurringExpenseEditScreen.route)); }); @@ -108,7 +108,7 @@ class RecurringExpenseEditVM extends AbstractExpenseEditVM { ..future.then((_) { store.dispatch( UpdateCurrentRoute(RecurringExpenseEditScreen.route)); - })); + } as FutureOr<_> Function(Null))); completer.future.then((SelectableEntity expense) { store.dispatch(UpdateCurrentRoute(RecurringExpenseEditScreen.route)); }); @@ -119,14 +119,14 @@ class RecurringExpenseEditVM extends AbstractExpenseEditVM { entity: ExpenseEntity(entityType: EntityType.recurringExpense), force: true); if (state.recurringExpenseUIState.cancelCompleter != null) { - state.recurringExpenseUIState.cancelCompleter.complete(); + state.recurringExpenseUIState.cancelCompleter!.complete(); } else { store.dispatch(UpdateCurrentRoute(state.uiState.previousRoute)); } }, - onSavePressed: (BuildContext context, [EntityAction action]) { + onSavePressed: (BuildContext context, [EntityAction? action]) { Debouncer.runOnComplete(() { - final recurringExpense = store.state.recurringExpenseUIState.editing; + final recurringExpense = store.state.recurringExpenseUIState.editing!; final localization = AppLocalization.of(context); if (recurringExpense.isOld && recurringExpense.isChanged != true && @@ -143,8 +143,8 @@ class RecurringExpenseEditVM extends AbstractExpenseEditVM { )); return completer.future.then((savedRecurringExpense) { showToast(recurringExpense.isNew - ? localization.createdRecurringExpense - : localization.updatedRecurringExpense); + ? localization!.createdRecurringExpense + : localization!.updatedRecurringExpense); if (state.prefState.isMobile) { store.dispatch( UpdateCurrentRoute(RecurringExpenseViewScreen.route)); @@ -192,7 +192,7 @@ class RecurringExpenseEditVM extends AbstractExpenseEditVM { expense: recurringExpense, completer: completer)); completer.future.then((client) { - showToast(AppLocalization.of(context).uploadedDocument); + showToast(AppLocalization.of(context)!.uploadedDocument); }).catchError((Object error) { showDialog( context: context, diff --git a/lib/ui/recurring_expense/recurring_expense_list_item.dart b/lib/ui/recurring_expense/recurring_expense_list_item.dart index fdd3827c4..ed92ddb21 100644 --- a/lib/ui/recurring_expense/recurring_expense_list_item.dart +++ b/lib/ui/recurring_expense/recurring_expense_list_item.dart @@ -18,7 +18,7 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class RecurringExpenseListItem extends StatelessWidget { const RecurringExpenseListItem({ - @required this.expense, + required this.expense, this.filter, this.onTap, this.onCheckboxChanged, @@ -27,10 +27,10 @@ class RecurringExpenseListItem extends StatelessWidget { this.isChecked = false, }); - final Function(bool) onCheckboxChanged; - final GestureTapCallback onTap; - final ExpenseEntity expense; - final String filter; + final Function(bool?)? onCheckboxChanged; + final GestureTapCallback? onTap; + final ExpenseEntity? expense; + final String? filter; final bool showCheckbox; final bool isDismissible; final bool isChecked; @@ -41,29 +41,29 @@ class RecurringExpenseListItem extends StatelessWidget { final state = store.state; final uiState = state.uiState; final expenseUIState = uiState.recurringExpenseUIState; - final client = state.clientState.get(expense.clientId); - final vendor = state.vendorState.get(expense.vendorId); - final category = state.expenseCategoryState.get(expense.categoryId); - final filterMatch = filter != null && filter.isNotEmpty - ? (expense.matchesFilterValue(filter) ?? - client.matchesFilterValue(filter)) + final client = state.clientState.get(expense!.clientId!); + final vendor = state.vendorState.get(expense!.vendorId!); + final category = state.expenseCategoryState.get(expense!.categoryId); + final filterMatch = filter != null && filter!.isNotEmpty + ? (expense!.matchesFilterValue(filter) ?? + client!.matchesFilterValue(filter)) : null; final listUIState = expenseUIState.listUIState; final isInMultiselect = listUIState.isInMultiselect(); final showCheckbox = onCheckboxChanged != null || isInMultiselect; final isChecked = isDismissible - ? (isInMultiselect && listUIState.isSelected(expense.id)) + ? (isInMultiselect && listUIState.isSelected(expense!.id)) : this.isChecked; final textStyle = TextStyle(fontSize: 16); - final textColor = Theme.of(context).textTheme.bodyLarge.color; + final textColor = Theme.of(context).textTheme.bodyLarge!.color; String subtitle = ''; if (filterMatch != null) { subtitle = filterMatch; } else if (client != null || vendor != null || category != null) { final parts = []; - if (expense.nextSendDate.isNotEmpty) { - parts.add(formatDate(expense.nextSendDate, context)); + if (expense!.nextSendDate.isNotEmpty) { + parts.add(formatDate(expense!.nextSendDate, context)); } if (category != null && category.isOld) { parts.add(category.name); @@ -81,9 +81,9 @@ class RecurringExpenseListItem extends StatelessWidget { showMultiselect: this.showCheckbox, isDismissible: isDismissible, isSelected: isDesktop(context) && - expense.id == + expense!.id == (uiState.isEditing - ? expenseUIState.editing.id + ? expenseUIState.editing!.id : expenseUIState.selectedId), userCompany: store.state.userCompany, entity: expense, @@ -92,9 +92,9 @@ class RecurringExpenseListItem extends StatelessWidget { return constraints.maxWidth > kTableListWidthCutoff ? InkWell( onTap: () => - onTap != null ? onTap() : selectEntity(entity: expense), + onTap != null ? onTap!() : selectEntity(entity: expense!), onLongPress: () => - selectEntity(entity: expense, longPress: true), + selectEntity(entity: expense!, longPress: true), child: Padding( padding: const EdgeInsets.only( left: 10, @@ -116,14 +116,14 @@ class RecurringExpenseListItem extends StatelessWidget { materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, onChanged: (value) => - onCheckboxChanged(value), + onCheckboxChanged!(value), activeColor: Theme.of(context).colorScheme.secondary, ), ), ) : ActionMenuButton( - entityActions: expense.getActions( + entityActions: expense!.getActions( userCompany: state.userCompany, includeEdit: true, ), @@ -139,11 +139,11 @@ class RecurringExpenseListItem extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - expense.number, + expense!.number, style: textStyle, overflow: TextOverflow.ellipsis, ), - if (!expense.isActive) EntityStateLabel(expense) + if (!expense!.isActive) EntityStateLabel(expense) ], ), ), @@ -153,19 +153,19 @@ class RecurringExpenseListItem extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - (expense.publicNotes ?? '') + - (expense.documents.isNotEmpty ? ' 📎' : ''), + (expense!.publicNotes ?? '') + + (expense!.documents.isNotEmpty ? ' 📎' : ''), style: textStyle, maxLines: 1, ), - Text(subtitle ?? filterMatch, + Text(subtitle ?? filterMatch!, maxLines: 3, overflow: TextOverflow.ellipsis, style: Theme.of(context) .textTheme - .titleSmall + .titleSmall! .copyWith( - color: textColor + color: textColor! .withOpacity(kLighterOpacity), )), ], @@ -173,8 +173,8 @@ class RecurringExpenseListItem extends StatelessWidget { ), SizedBox(width: 8), Text( - formatNumber(expense.convertedAmount, context, - currencyId: expense.currencyId), + formatNumber(expense!.convertedAmount, context, + currencyId: expense!.currencyId)!, style: textStyle, textAlign: TextAlign.end, ), @@ -186,9 +186,9 @@ class RecurringExpenseListItem extends StatelessWidget { ) : ListTile( onTap: () => - onTap != null ? onTap() : selectEntity(entity: expense), + onTap != null ? onTap!() : selectEntity(entity: expense!), onLongPress: () => - selectEntity(entity: expense, longPress: true), + selectEntity(entity: expense!, longPress: true), leading: showCheckbox ? IgnorePointer( ignoring: listUIState.isInMultiselect(), @@ -196,7 +196,7 @@ class RecurringExpenseListItem extends StatelessWidget { value: isChecked, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, - onChanged: (value) => onCheckboxChanged(value), + onChanged: (value) => onCheckboxChanged!(value), activeColor: Theme.of(context).colorScheme.secondary, ), ) @@ -207,17 +207,17 @@ class RecurringExpenseListItem extends StatelessWidget { children: [ Expanded( child: Text( - (expense.publicNotes.isEmpty - ? expense.number - : expense.publicNotes) + - (expense.documents.isNotEmpty ? ' 📎' : ''), + (expense!.publicNotes.isEmpty + ? expense!.number + : expense!.publicNotes) + + (expense!.documents.isNotEmpty ? ' 📎' : ''), style: Theme.of(context).textTheme.titleMedium, maxLines: 1, ), ), Text( - formatNumber(expense.convertedAmount, context, - currencyId: expense.currencyId), + formatNumber(expense!.convertedAmount, context, + currencyId: expense!.currencyId)!, style: Theme.of(context).textTheme.titleMedium), ], ), @@ -228,8 +228,8 @@ class RecurringExpenseListItem extends StatelessWidget { Text(filterMatch == null ? subtitle : filterMatch, maxLines: 3, overflow: TextOverflow.ellipsis, - style: Theme.of(context).textTheme.titleSmall.copyWith( - color: textColor.withOpacity(kLighterOpacity), + style: Theme.of(context).textTheme.titleSmall!.copyWith( + color: textColor!.withOpacity(kLighterOpacity), )), EntityStateLabel(expense), ], diff --git a/lib/ui/recurring_expense/recurring_expense_list_vm.dart b/lib/ui/recurring_expense/recurring_expense_list_vm.dart index ce394b4fc..dd62cfba5 100644 --- a/lib/ui/recurring_expense/recurring_expense_list_vm.dart +++ b/lib/ui/recurring_expense/recurring_expense_list_vm.dart @@ -24,7 +24,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class RecurringExpenseListBuilder extends StatelessWidget { - const RecurringExpenseListBuilder({Key key}) : super(key: key); + const RecurringExpenseListBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -52,7 +52,7 @@ class RecurringExpenseListBuilder extends StatelessWidget { filter: viewModel.filter, expense: recurringExpense, isChecked: isInMultiselect && - listState.isSelected(recurringExpense.id), + listState.isSelected(recurringExpense!.id), ); }); }, @@ -62,18 +62,18 @@ class RecurringExpenseListBuilder extends StatelessWidget { class RecurringExpenseListVM { RecurringExpenseListVM({ - @required this.state, - @required this.userCompany, - @required this.recurringExpenseList, - @required this.recurringExpenseMap, - @required this.filter, - @required this.isLoading, - @required this.listState, - @required this.onRefreshed, - @required this.onEntityAction, - @required this.tableColumns, - @required this.onSortColumn, - @required this.onClearMultielsect, + required this.state, + required this.userCompany, + required this.recurringExpenseList, + required this.recurringExpenseMap, + required this.filter, + required this.isLoading, + required this.listState, + required this.onRefreshed, + required this.onEntityAction, + required this.tableColumns, + required this.onSortColumn, + required this.onClearMultielsect, }); static RecurringExpenseListVM fromStore(Store store) { @@ -82,7 +82,7 @@ class RecurringExpenseListVM { return Future(null); } final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(RefreshData(completer: completer)); return completer.future; } @@ -110,7 +110,7 @@ class RecurringExpenseListVM { EntityAction action) => handleRecurringExpenseAction(context, recurringExpenses, action), onRefreshed: (context) => _handleRefresh(context), - tableColumns: state.userCompany.settings + tableColumns: state.userCompany!.settings ?.getTableColumns(EntityType.recurringExpense) ?? RecurringExpensePresenter.getDefaultTableFields(state.userCompany), onSortColumn: (field) => store.dispatch(SortRecurringExpenses(field)), @@ -120,11 +120,11 @@ class RecurringExpenseListVM { } final AppState state; - final UserCompanyEntity userCompany; - final List recurringExpenseList; - final BuiltMap recurringExpenseMap; + final UserCompanyEntity? userCompany; + final List recurringExpenseList; + final BuiltMap recurringExpenseMap; final ListUIState listState; - final String filter; + final String? filter; final bool isLoading; final Function(BuildContext) onRefreshed; final Function(BuildContext, List, EntityAction) onEntityAction; diff --git a/lib/ui/recurring_expense/recurring_expense_presenter.dart b/lib/ui/recurring_expense/recurring_expense_presenter.dart index f0a122305..d3b92620a 100644 --- a/lib/ui/recurring_expense/recurring_expense_presenter.dart +++ b/lib/ui/recurring_expense/recurring_expense_presenter.dart @@ -16,7 +16,7 @@ import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class RecurringExpensePresenter extends EntityPresenter { - static List getDefaultTableFields(UserCompanyEntity userCompany) { + static List getDefaultTableFields(UserCompanyEntity? userCompany) { return [ RecurringExpenseFields.status, RecurringExpenseFields.number, @@ -30,7 +30,7 @@ class RecurringExpensePresenter extends EntityPresenter { ]; } - static List getAllTableFields(UserCompanyEntity userCompany) { + static List getAllTableFields(UserCompanyEntity? userCompany) { return [ ...getDefaultTableFields(userCompany), ...EntityPresenter.getBaseFields(), @@ -63,95 +63,95 @@ class RecurringExpensePresenter extends EntityPresenter { } @override - Widget getField({String field, BuildContext context}) { + Widget getField({String? field, required BuildContext context}) { final localization = AppLocalization.of(context); final state = StoreProvider.of(context).state; - final expense = entity as ExpenseEntity; + final expense = entity as ExpenseEntity?; switch (field) { case RecurringExpenseFields.status: return EntityStatusChip(entity: expense, showState: true); case RecurringExpenseFields.vendor: case RecurringExpenseFields.vendorId: - final vendor = state.vendorState.get(expense.vendorId); + final vendor = state.vendorState.get(expense!.vendorId!); return LinkTextRelatedEntity(entity: vendor, relation: expense); case RecurringExpenseFields.clientId: case RecurringExpenseFields.client: - final client = state.clientState.get(expense.clientId); + final client = state.clientState.get(expense!.clientId!); return LinkTextRelatedEntity(entity: client, relation: expense); case RecurringExpenseFields.nextSendDate: - return Text(formatDate(expense.nextSendDate, context)); + return Text(formatDate(expense!.nextSendDate, context)); case RecurringExpenseFields.lastSentDate: - return Text(formatDate(expense.lastSentDate, context)); + return Text(formatDate(expense!.lastSentDate, context)); case RecurringExpenseFields.netAmount: - return Text(formatNumber(expense.netAmount, context, - currencyId: expense.currencyId)); + return Text(formatNumber(expense!.netAmount, context, + currencyId: expense.currencyId)!); case RecurringExpenseFields.amount: - return Text(formatNumber(expense.grossAmount, context, - currencyId: expense.currencyId)); + return Text(formatNumber(expense!.grossAmount, context, + currencyId: expense.currencyId)!); case RecurringExpenseFields.convertedAmount: - return Text(formatNumber(expense.convertedAmount, context, - currencyId: expense.invoiceCurrencyId)); + return Text(formatNumber(expense!.convertedAmount, context, + currencyId: expense.invoiceCurrencyId)!); case RecurringExpenseFields.taxAmount: - return Text(formatNumber(expense.taxAmount, context, - currencyId: expense.currencyId)); + return Text(formatNumber(expense!.taxAmount, context, + currencyId: expense.currencyId)!); case RecurringExpenseFields.publicNotes: - return TableTooltip(message: expense.publicNotes); + return TableTooltip(message: expense!.publicNotes); case RecurringExpenseFields.number: - return Text(expense.number); + return Text(expense!.number); case RecurringExpenseFields.privateNotes: - return TableTooltip(message: expense.privateNotes); + return TableTooltip(message: expense!.privateNotes); case RecurringExpenseFields.shouldBeInvoiced: - return Text(expense.shouldBeInvoiced.toString()); + return Text(expense!.shouldBeInvoiced.toString()); case RecurringExpenseFields.currencyId: return Text(state - .staticState.currencyMap[expense.currencyId]?.listDisplayName ?? + .staticState.currencyMap[expense!.currencyId]?.listDisplayName ?? ''); case RecurringExpenseFields.category: - return Text(state.expenseCategoryState.map[expense.categoryId] + return Text(state.expenseCategoryState.map[expense!.categoryId] ?.listDisplayName ?? ''); case RecurringExpenseFields.paymentDate: - return Text(formatDate(expense.paymentDate, context)); + return Text(formatDate(expense!.paymentDate, context)); case RecurringExpenseFields.exchangeRate: - return Text(formatNumber(expense.exchangeRate, context, - formatNumberType: FormatNumberType.double)); + return Text(formatNumber(expense!.exchangeRate, context, + formatNumberType: FormatNumberType.double)!); case RecurringExpenseFields.invoiceCurrencyId: - return Text(state.staticState.currencyMap[expense.invoiceCurrencyId] + return Text(state.staticState.currencyMap[expense!.invoiceCurrencyId] ?.listDisplayName ?? ''); case RecurringExpenseFields.taxName1: - return Text(expense.taxName1); + return Text(expense!.taxName1); case RecurringExpenseFields.taxName2: - return Text(expense.taxName2); + return Text(expense!.taxName2); case RecurringExpenseFields.taxName3: - return Text(expense.taxName3); + return Text(expense!.taxName3); case RecurringExpenseFields.taxRate1: - return Text(formatNumber(expense.taxRate1, context, - formatNumberType: FormatNumberType.percent)); + return Text(formatNumber(expense!.taxRate1, context, + formatNumberType: FormatNumberType.percent)!); case RecurringExpenseFields.taxRate2: - return Text(formatNumber(expense.taxRate2, context, - formatNumberType: FormatNumberType.percent)); + return Text(formatNumber(expense!.taxRate2, context, + formatNumberType: FormatNumberType.percent)!); case RecurringExpenseFields.taxRate3: - return Text(formatNumber(expense.taxRate3, context, - formatNumberType: FormatNumberType.percent)); + return Text(formatNumber(expense!.taxRate3, context, + formatNumberType: FormatNumberType.percent)!); case RecurringExpenseFields.invoiceId: return Text( - state.invoiceState.map[expense.invoiceId]?.listDisplayName ?? ''); + state.invoiceState.map[expense!.invoiceId]?.listDisplayName ?? ''); case RecurringExpenseFields.customValue1: - return Text(presentCustomField(context, expense.customValue1)); + return Text(presentCustomField(context, expense!.customValue1)!); case RecurringExpenseFields.customValue2: - return Text(presentCustomField(context, expense.customValue2)); + return Text(presentCustomField(context, expense!.customValue2)!); case RecurringExpenseFields.customValue3: - return Text(presentCustomField(context, expense.customValue3)); + return Text(presentCustomField(context, expense!.customValue3)!); case RecurringExpenseFields.customValue4: - return Text(presentCustomField(context, expense.customValue4)); + return Text(presentCustomField(context, expense!.customValue4)!); case RecurringExpenseFields.documents: - return Text('${expense.documents.length}'); + return Text('${expense!.documents.length}'); case RecurringExpenseFields.remainingCycles: - return Text('${expense.remainingCycles}'); + return Text('${expense!.remainingCycles}'); case RecurringExpenseFields.frequency: - return Text(localization.lookup(kFrequencies[expense.frequencyId])); + return Text(localization!.lookup(kFrequencies[expense!.frequencyId])!); } return super.getField(field: field, context: context); diff --git a/lib/ui/recurring_expense/recurring_expense_screen.dart b/lib/ui/recurring_expense/recurring_expense_screen.dart index 7a85b8d6e..0248acf9b 100644 --- a/lib/ui/recurring_expense/recurring_expense_screen.dart +++ b/lib/ui/recurring_expense/recurring_expense_screen.dart @@ -21,8 +21,8 @@ import 'recurring_expense_screen_vm.dart'; class RecurringExpenseScreen extends StatelessWidget { const RecurringExpenseScreen({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); static const String route = '/recurring_expense'; @@ -33,7 +33,7 @@ class RecurringExpenseScreen extends StatelessWidget { Widget build(BuildContext context) { final store = StoreProvider.of(context); final state = store.state; - final company = state.company; + final company = state.company!; final userCompany = state.userCompany; final localization = AppLocalization.of(context); @@ -41,27 +41,27 @@ class RecurringExpenseScreen extends StatelessWidget { ExpenseStatusEntity().rebuild( (b) => b ..id = kRecurringExpenseStatusDraft - ..name = localization.draft, + ..name = localization!.draft, ), ExpenseStatusEntity().rebuild( (b) => b ..id = kRecurringExpenseStatusPending - ..name = localization.pending, + ..name = localization!.pending, ), ExpenseStatusEntity().rebuild( (b) => b ..id = kRecurringExpenseStatusActive - ..name = localization.active, + ..name = localization!.active, ), ExpenseStatusEntity().rebuild( (b) => b ..id = kRecurringExpenseStatusPaused - ..name = localization.paused, + ..name = localization!.paused, ), ExpenseStatusEntity().rebuild( (b) => b ..id = kRecurringExpenseStatusCompleted - ..name = localization.completed, + ..name = localization!.completed, ), ]; @@ -139,7 +139,7 @@ class RecurringExpenseScreen extends StatelessWidget { store.dispatch(FilterRecurringExpensesByCustom4(value)), ), floatingActionButton: state.prefState.isMenuFloated && - userCompany.canCreate(EntityType.recurringExpense) + userCompany!.canCreate(EntityType.recurringExpense) ? FloatingActionButton( heroTag: 'recurring_expense_fab', backgroundColor: Theme.of(context).primaryColorDark, @@ -151,7 +151,7 @@ class RecurringExpenseScreen extends StatelessWidget { Icons.add, color: Colors.white, ), - tooltip: localization.newRecurringExpense, + tooltip: localization!.newRecurringExpense, ) : null, ); diff --git a/lib/ui/recurring_expense/recurring_expense_screen_vm.dart b/lib/ui/recurring_expense/recurring_expense_screen_vm.dart index 2c04e7ded..89434a48b 100644 --- a/lib/ui/recurring_expense/recurring_expense_screen_vm.dart +++ b/lib/ui/recurring_expense/recurring_expense_screen_vm.dart @@ -15,7 +15,7 @@ import 'package:invoiceninja_flutter/redux/recurring_expense/recurring_expense_s import 'recurring_expense_screen.dart'; class RecurringExpenseScreenBuilder extends StatelessWidget { - const RecurringExpenseScreenBuilder({Key key}) : super(key: key); + const RecurringExpenseScreenBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -32,18 +32,18 @@ class RecurringExpenseScreenBuilder extends StatelessWidget { class RecurringExpenseScreenVM { RecurringExpenseScreenVM({ - @required this.isInMultiselect, - @required this.recurringExpenseList, - @required this.userCompany, - @required this.onEntityAction, - @required this.recurringExpenseMap, + required this.isInMultiselect, + required this.recurringExpenseList, + required this.userCompany, + required this.onEntityAction, + required this.recurringExpenseMap, }); final bool isInMultiselect; - final UserCompanyEntity userCompany; - final List recurringExpenseList; + final UserCompanyEntity? userCompany; + final List recurringExpenseList; final Function(BuildContext, List, EntityAction) onEntityAction; - final BuiltMap recurringExpenseMap; + final BuiltMap recurringExpenseMap; static RecurringExpenseScreenVM fromStore(Store store) { final state = store.state; diff --git a/lib/ui/recurring_expense/view/recurring_expense_view_vm.dart b/lib/ui/recurring_expense/view/recurring_expense_view_vm.dart index 61a61912b..c73d60bc6 100644 --- a/lib/ui/recurring_expense/view/recurring_expense_view_vm.dart +++ b/lib/ui/recurring_expense/view/recurring_expense_view_vm.dart @@ -24,7 +24,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class RecurringExpenseViewScreen extends StatelessWidget { const RecurringExpenseViewScreen({ - Key key, + Key? key, this.isFilter = false, }) : super(key: key); static const String route = '/recurring_expense/view'; @@ -40,7 +40,7 @@ class RecurringExpenseViewScreen extends StatelessWidget { return ExpenseView( viewModel: vm, isFilter: isFilter, - tabIndex: vm.state.recurringExpenseUIState.tabIndex, + tabIndex: vm.state!.recurringExpenseUIState.tabIndex, ); }, ); @@ -49,15 +49,15 @@ class RecurringExpenseViewScreen extends StatelessWidget { class RecurringExpenseViewVM extends AbstractExpenseViewVM { RecurringExpenseViewVM({ - AppState state, - ExpenseEntity expense, - CompanyEntity company, - Function(BuildContext, EntityAction) onEntityAction, - Function(BuildContext) onRefreshed, - Function(BuildContext, List, bool) onUploadDocuments, - bool isSaving, - bool isLoading, - bool isDirty, + AppState? state, + ExpenseEntity? expense, + CompanyEntity? company, + Function(BuildContext, EntityAction)? onEntityAction, + Function(BuildContext)? onRefreshed, + Function(BuildContext, List, bool)? onUploadDocuments, + bool? isSaving, + bool? isLoading, + bool? isDirty, }) : super( state: state, expense: expense, @@ -78,7 +78,7 @@ class RecurringExpenseViewVM extends AbstractExpenseViewVM { Future _handleRefresh(BuildContext context) { final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(LoadRecurringExpense( completer: completer, recurringExpenseId: recurringExpense.id)); return completer.future; @@ -103,10 +103,10 @@ class RecurringExpenseViewVM extends AbstractExpenseViewVM { expense: recurringExpense, completer: completer)); completer.future.then((client) { - showToast(AppLocalization.of(context).uploadedDocument); + showToast(AppLocalization.of(context)!.uploadedDocument); }).catchError((Object error) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { return ErrorDialog(error); }); diff --git a/lib/ui/recurring_invoice/edit/recurring_invoice_edit.dart b/lib/ui/recurring_invoice/edit/recurring_invoice_edit.dart index 04d6df74a..f6bea62e1 100644 --- a/lib/ui/recurring_invoice/edit/recurring_invoice_edit.dart +++ b/lib/ui/recurring_invoice/edit/recurring_invoice_edit.dart @@ -16,8 +16,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class RecurringInvoiceEdit extends StatefulWidget { const RecurringInvoiceEdit({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final AbstractInvoiceEditVM viewModel; @@ -30,7 +30,7 @@ class _RecurringInvoiceEditState extends State with SingleTickerProviderStateMixin { static final GlobalKey _formKey = GlobalKey(debugLabel: '_recurringInvoiceEdit'); - TabController _controller; + TabController? _controller; static const kDetailsScreen = 0; static const kItemScreen = 2; @@ -53,18 +53,18 @@ class _RecurringInvoiceEditState extends State super.didUpdateWidget(oldWidget); if (widget.viewModel.invoiceItemIndex != null) { - _controller.animateTo(kItemScreen); + _controller!.animateTo(kItemScreen); } } @override void dispose() { - _controller.dispose(); + _controller!.dispose(); super.dispose(); } - void _onSavePressed(BuildContext context, [EntityAction action]) { - final bool isValid = _formKey.currentState.validate(); + void _onSavePressed(BuildContext context, [EntityAction? action]) { + final bool isValid = _formKey.currentState!.validate(); /* setState(() { @@ -76,16 +76,16 @@ class _RecurringInvoiceEditState extends State return; } - widget.viewModel.onSavePressed(context, action); + widget.viewModel.onSavePressed!(context, action); } @override Widget build(BuildContext context) { final viewModel = widget.viewModel; - final localization = AppLocalization.of(context); - final recurringInvoice = viewModel.invoice; - final state = viewModel.state; - final invoice = viewModel.invoice; + final localization = AppLocalization.of(context)!; + final recurringInvoice = viewModel.invoice!; + final state = viewModel.state!; + final invoice = viewModel.invoice!; final prefState = state.prefState; final client = state.clientState.get(invoice.clientId); final isFullscreen = prefState.isEditorFullScreen(EntityType.invoice); @@ -96,7 +96,7 @@ class _RecurringInvoiceEditState extends State title: recurringInvoice.isNew ? localization.newRecurringInvoice : localization.editRecurringInvoice, - onCancelPressed: (context) => viewModel.onCancelPressed(context), + onCancelPressed: (context) => viewModel.onCancelPressed!(context), onSavePressed: (context) => _onSavePressed(context), actions: invoice.getActions( userCompany: state.userCompany, @@ -161,16 +161,16 @@ class _RecurringInvoiceEditState extends State invoice: invoice, showTasksAndExpenses: false, excluded: invoice.lineItems - .where((item) => item.isTask || item.isExpense) - .map((item) => item.isTask - ? viewModel.state.taskState.map[item.taskId] - : viewModel.state.expenseState.map[item.expenseId]) + .where((item) => item!.isTask || item.isExpense) + .map((item) => item!.isTask + ? viewModel.state!.taskState.map[item.taskId] + : viewModel.state!.expenseState.map[item.expenseId]) .toList(), clientId: invoice.clientId, onItemsSelected: (items, [clientId, projectId]) { - viewModel.onItemsAdded(items, clientId, projectId); + viewModel.onItemsAdded!(items, clientId, projectId); if (!isFullscreen) { - _controller.animateTo(kItemScreen); + _controller!.animateTo(kItemScreen); } }, ); diff --git a/lib/ui/recurring_invoice/edit/recurring_invoice_edit_details_vm.dart b/lib/ui/recurring_invoice/edit/recurring_invoice_edit_details_vm.dart index fa2d49835..21d36968d 100644 --- a/lib/ui/recurring_invoice/edit/recurring_invoice_edit_details_vm.dart +++ b/lib/ui/recurring_invoice/edit/recurring_invoice_edit_details_vm.dart @@ -22,7 +22,7 @@ import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_details_vm.dar import 'package:invoiceninja_flutter/ui/recurring_invoice/edit/recurring_invoice_edit_vm.dart'; class RecurringInvoiceEditDetailsScreen extends StatelessWidget { - const RecurringInvoiceEditDetailsScreen({Key key, @required this.viewModel}) + const RecurringInvoiceEditDetailsScreen({Key? key, required this.viewModel}) : super(key: key); final AbstractInvoiceEditVM viewModel; @@ -34,11 +34,11 @@ class RecurringInvoiceEditDetailsScreen extends StatelessWidget { return RecurringInvoiceEditDetailsVM.fromStore(store); }, builder: (context, viewModel) { - if (viewModel.state.prefState.isEditorFullScreen(EntityType.invoice)) { + if (viewModel.state!.prefState.isEditorFullScreen(EntityType.invoice)) { return InvoiceEditDesktop( viewModel: viewModel, entityViewModel: this.viewModel, - key: ValueKey('__recurring_invoice_${viewModel.invoice.id}__'), + key: ValueKey('__recurring_invoice_${viewModel.invoice!.id}__'), ); } else { return InvoiceEditDetails( @@ -53,17 +53,17 @@ class RecurringInvoiceEditDetailsScreen extends StatelessWidget { class RecurringInvoiceEditDetailsVM extends EntityEditDetailsVM { RecurringInvoiceEditDetailsVM({ - AppState state, - CompanyEntity company, - InvoiceEntity invoice, - Function(InvoiceEntity) onChanged, - Function(BuildContext, InvoiceEntity, ClientEntity) onClientChanged, - Function(BuildContext, InvoiceEntity, VendorEntity) onVendorChanged, - BuiltMap clientMap, - BuiltList clientList, - Function(BuildContext context, Completer completer) + AppState? state, + CompanyEntity? company, + InvoiceEntity? invoice, + Function(InvoiceEntity)? onChanged, + Function(BuildContext, InvoiceEntity, ClientEntity)? onClientChanged, + Function(BuildContext, InvoiceEntity, VendorEntity)? onVendorChanged, + BuiltMap? clientMap, + BuiltList? clientList, + Function(BuildContext context, Completer completer)? onAddClientPressed, - Function(BuildContext context, Completer completer) + Function(BuildContext context, Completer completer)? onAddVendorPressed, }) : super( state: state, @@ -106,7 +106,7 @@ class RecurringInvoiceEditDetailsVM extends EntityEditDetailsVM { ..future.then((_) { store.dispatch( UpdateCurrentRoute(RecurringInvoiceEditScreen.route)); - })); + } as FutureOr<_> Function(Null))); completer.future.then((SelectableEntity client) { store.dispatch(UpdateCurrentRoute(RecurringInvoiceEditScreen.route)); }); diff --git a/lib/ui/recurring_invoice/edit/recurring_invoice_edit_items_vm.dart b/lib/ui/recurring_invoice/edit/recurring_invoice_edit_items_vm.dart index 292251a87..66c319ff5 100644 --- a/lib/ui/recurring_invoice/edit/recurring_invoice_edit_items_vm.dart +++ b/lib/ui/recurring_invoice/edit/recurring_invoice_edit_items_vm.dart @@ -16,8 +16,8 @@ import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_vm.dart'; class RecurringInvoiceEditItemsScreen extends StatelessWidget { const RecurringInvoiceEditItemsScreen({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, this.isTasks = false, }) : super(key: key); @@ -31,7 +31,7 @@ class RecurringInvoiceEditItemsScreen extends StatelessWidget { return RecurringInvoiceEditItemsVM.fromStore(store, isTasks); }, builder: (context, viewModel) { - if (viewModel.state.prefState.isEditorFullScreen(EntityType.invoice)) { + if (viewModel.state!.prefState.isEditorFullScreen(EntityType.invoice)) { return InvoiceEditItemsDesktop( viewModel: viewModel, entityViewModel: this.viewModel, @@ -50,16 +50,16 @@ class RecurringInvoiceEditItemsScreen extends StatelessWidget { class RecurringInvoiceEditItemsVM extends EntityEditItemsVM { RecurringInvoiceEditItemsVM({ - AppState state, - CompanyEntity company, - InvoiceEntity invoice, - int invoiceItemIndex, - Function addLineItem, - Function deleteLineItem, - Function(int) onRemoveInvoiceItemPressed, - Function onDoneInvoiceItemPressed, - Function(InvoiceItemEntity, int) onChangedInvoiceItem, - Function(int, int) onMovedInvoiceItem, + AppState? state, + CompanyEntity? company, + InvoiceEntity? invoice, + int? invoiceItemIndex, + Function? addLineItem, + Function? deleteLineItem, + Function(int)? onRemoveInvoiceItemPressed, + Function? onDoneInvoiceItemPressed, + Function(InvoiceItemEntity, int)? onChangedInvoiceItem, + Function(int, int)? onMovedInvoiceItem, }) : super( state: state, company: company, @@ -87,7 +87,7 @@ class RecurringInvoiceEditItemsVM extends EntityEditItemsVM { store.dispatch(EditRecurringInvoiceItem()); }, onChangedInvoiceItem: (item, index) { - final invoice = store.state.recurringInvoiceUIState.editing; + final invoice = store.state.recurringInvoiceUIState.editing!; if (index == invoice.lineItems.length) { store.dispatch(AddRecurringInvoiceItem( invoiceItem: item.rebuild((b) => b diff --git a/lib/ui/recurring_invoice/edit/recurring_invoice_edit_notes_vm.dart b/lib/ui/recurring_invoice/edit/recurring_invoice_edit_notes_vm.dart index 11975ef14..7c861aaac 100644 --- a/lib/ui/recurring_invoice/edit/recurring_invoice_edit_notes_vm.dart +++ b/lib/ui/recurring_invoice/edit/recurring_invoice_edit_notes_vm.dart @@ -13,7 +13,7 @@ import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_notes.dart'; import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_notes_vm.dart'; class RecurringInvoiceEditNotesScreen extends StatelessWidget { - const RecurringInvoiceEditNotesScreen({Key key}) : super(key: key); + const RecurringInvoiceEditNotesScreen({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -32,10 +32,10 @@ class RecurringInvoiceEditNotesScreen extends StatelessWidget { class RecurringInvoiceEditNotesVM extends EntityEditNotesVM { RecurringInvoiceEditNotesVM({ - CompanyEntity company, - InvoiceEntity invoice, - Function(InvoiceEntity) onChanged, - AppState state, + CompanyEntity? company, + InvoiceEntity? invoice, + Function(InvoiceEntity)? onChanged, + AppState? state, }) : super( company: company, invoice: invoice, diff --git a/lib/ui/recurring_invoice/edit/recurring_invoice_edit_pdf_vm.dart b/lib/ui/recurring_invoice/edit/recurring_invoice_edit_pdf_vm.dart index 096a63e52..bc143d84e 100644 --- a/lib/ui/recurring_invoice/edit/recurring_invoice_edit_pdf_vm.dart +++ b/lib/ui/recurring_invoice/edit/recurring_invoice_edit_pdf_vm.dart @@ -12,7 +12,7 @@ import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_pdf.dart'; import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_pdf_vm.dart'; class RecurringInvoiceEditPDFScreen extends StatelessWidget { - const RecurringInvoiceEditPDFScreen({Key key}) : super(key: key); + const RecurringInvoiceEditPDFScreen({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -31,9 +31,9 @@ class RecurringInvoiceEditPDFScreen extends StatelessWidget { class RecurringInvoiceEditPDFVM extends EntityEditPDFVM { RecurringInvoiceEditPDFVM({ - @required CompanyEntity company, - @required InvoiceEntity invoice, - @required AppState state, + required CompanyEntity? company, + required InvoiceEntity? invoice, + required AppState state, }) : super( company: company, invoice: invoice, diff --git a/lib/ui/recurring_invoice/edit/recurring_invoice_edit_vm.dart b/lib/ui/recurring_invoice/edit/recurring_invoice_edit_vm.dart index dfaf67827..8af29ef31 100644 --- a/lib/ui/recurring_invoice/edit/recurring_invoice_edit_vm.dart +++ b/lib/ui/recurring_invoice/edit/recurring_invoice_edit_vm.dart @@ -25,7 +25,7 @@ import 'package:invoiceninja_flutter/ui/recurring_invoice/view/recurring_invoice import 'package:invoiceninja_flutter/utils/completers.dart'; class RecurringInvoiceEditScreen extends StatelessWidget { - const RecurringInvoiceEditScreen({Key key}) : super(key: key); + const RecurringInvoiceEditScreen({Key? key}) : super(key: key); static const String route = '/recurring_invoice/edit'; @@ -38,7 +38,7 @@ class RecurringInvoiceEditScreen extends StatelessWidget { builder: (context, viewModel) { return RecurringInvoiceEdit( viewModel: viewModel, - key: ValueKey(viewModel.invoice.updatedAt), + key: ValueKey(viewModel.invoice!.updatedAt), ); }, ); @@ -47,23 +47,23 @@ class RecurringInvoiceEditScreen extends StatelessWidget { class RecurringInvoiceEditVM extends AbstractInvoiceEditVM { RecurringInvoiceEditVM({ - AppState state, - CompanyEntity company, - InvoiceEntity invoice, - int invoiceItemIndex, - InvoiceEntity origInvoice, - Function(BuildContext) onSavePressed, - Function(List, String, String) onItemsAdded, - bool isSaving, - Function(BuildContext) onCancelPressed, - Function(BuildContext, List, bool) onUploadDocuments, + AppState? state, + CompanyEntity? company, + InvoiceEntity? invoice, + int? invoiceItemIndex, + InvoiceEntity? origInvoice, + Function(BuildContext)? onSavePressed, + Function(List, String, String)? onItemsAdded, + bool? isSaving, + Function(BuildContext)? onCancelPressed, + Function(BuildContext, List, bool)? onUploadDocuments, }) : super( state: state, company: company, invoice: invoice, invoiceItemIndex: invoiceItemIndex, origInvoice: origInvoice, - onSavePressed: onSavePressed, + onSavePressed: onSavePressed as dynamic Function(BuildContext, [EntityAction])?, onItemsAdded: onItemsAdded, isSaving: isSaving, onCancelPressed: onCancelPressed, @@ -72,7 +72,7 @@ class RecurringInvoiceEditVM extends AbstractInvoiceEditVM { factory RecurringInvoiceEditVM.fromStore(Store store) { final AppState state = store.state; - final recurringInvoice = state.recurringInvoiceUIState.editing; + final recurringInvoice = state.recurringInvoiceUIState.editing!; return RecurringInvoiceEditVM( state: state, @@ -81,17 +81,17 @@ class RecurringInvoiceEditVM extends AbstractInvoiceEditVM { invoice: recurringInvoice, invoiceItemIndex: state.recurringInvoiceUIState.editingItemIndex, origInvoice: store.state.recurringInvoiceState.map[recurringInvoice.id], - onSavePressed: (BuildContext context, [EntityAction action]) { + onSavePressed: (BuildContext context, [EntityAction? action]) { Debouncer.runOnComplete(() { - final recurringInvoice = store.state.recurringInvoiceUIState.editing; + final recurringInvoice = store.state.recurringInvoiceUIState.editing!; final localization = navigatorKey.localization; final navigator = navigatorKey.currentState; if (recurringInvoice.clientId.isEmpty) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { - return ErrorDialog(localization.pleaseSelectAClient); + return ErrorDialog(localization!.pleaseSelectAClient); }); return null; } @@ -109,17 +109,17 @@ class RecurringInvoiceEditVM extends AbstractInvoiceEditVM { action: action)); return completer.future.then((savedRecurringInvoice) { showToast(recurringInvoice.isNew - ? localization.createdRecurringInvoice - : localization.updatedRecurringInvoice); + ? localization!.createdRecurringInvoice + : localization!.updatedRecurringInvoice); if (state.prefState.isMobile) { store.dispatch( UpdateCurrentRoute(RecurringInvoiceViewScreen.route)); if (recurringInvoice.isNew) { - navigator + navigator! .pushReplacementNamed(RecurringInvoiceViewScreen.route); } else { - navigator.pop(savedRecurringInvoice); + navigator!.pop(savedRecurringInvoice); } } else { if (!state.prefState.isPreviewVisible) { @@ -142,7 +142,7 @@ class RecurringInvoiceEditVM extends AbstractInvoiceEditVM { } }).catchError((Object error) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { return ErrorDialog(error); }); @@ -174,7 +174,7 @@ class RecurringInvoiceEditVM extends AbstractInvoiceEditVM { invoice: recurringInvoice, completer: completer)); completer.future.then((client) { - showToast(AppLocalization.of(context).uploadedDocument); + showToast(AppLocalization.of(context)!.uploadedDocument); }).catchError((Object error) { showDialog( context: context, diff --git a/lib/ui/recurring_invoice/recurring_invoice_list_item.dart b/lib/ui/recurring_invoice/recurring_invoice_list_item.dart index 10f3ffae7..7e6542789 100644 --- a/lib/ui/recurring_invoice/recurring_invoice_list_item.dart +++ b/lib/ui/recurring_invoice/recurring_invoice_list_item.dart @@ -20,53 +20,53 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class RecurringInvoiceListItem extends StatelessWidget { const RecurringInvoiceListItem({ - @required this.invoice, + required this.invoice, this.filter, this.showCheckbox = true, }); - final InvoiceEntity invoice; - final String filter; + final InvoiceEntity? invoice; + final String? filter; final bool showCheckbox; @override Widget build(BuildContext context) { final store = StoreProvider.of(context); final state = store.state; - final client = state.clientState.get(invoice.clientId); + final client = state.clientState.get(invoice!.clientId); final uiState = state.uiState; final invoiceUIState = uiState.recurringInvoiceUIState; - final listUIState = state.getUIState(invoice.entityType).listUIState; + final listUIState = state.getUIState(invoice!.entityType)!.listUIState; final isInMultiselect = showCheckbox && listUIState.isInMultiselect(); - final isChecked = isInMultiselect && listUIState.isSelected(invoice.id); + final isChecked = isInMultiselect && listUIState.isSelected(invoice!.id); final textStyle = TextStyle(fontSize: 16); - final localization = AppLocalization.of(context); - final filterMatch = filter != null && filter.isNotEmpty - ? (invoice.matchesFilterValue(filter) ?? - client.matchesFilterValue(filter)) + final localization = AppLocalization.of(context)!; + final filterMatch = filter != null && filter!.isNotEmpty + ? (invoice!.matchesFilterValue(filter) ?? + client!.matchesFilterValue(filter)) : null; final statusLabel = localization - .lookup(kRecurringInvoiceStatuses[invoice.calculatedStatusId]); + .lookup(kRecurringInvoiceStatuses[invoice!.calculatedStatusId]); final statusColor = RecurringInvoiceStatusColors(state.prefState.colorThemeModel) - .colors[invoice.calculatedStatusId]; - final textColor = Theme.of(context).textTheme.bodyLarge.color; + .colors[invoice!.calculatedStatusId]; + final textColor = Theme.of(context).textTheme.bodyLarge!.color; String subtitle = ''; - if (invoice.nextSendDate.isNotEmpty) { - subtitle += formatDate(invoice.nextSendDate, context); + if (invoice!.nextSendDate.isNotEmpty) { + subtitle += formatDate(invoice!.nextSendDate, context); } if (subtitle.isNotEmpty) { subtitle += ' • '; } - subtitle += localization.lookup(kFrequencies[invoice.frequencyId]); + subtitle += localization.lookup(kFrequencies[invoice!.frequencyId])!; return DismissibleEntity( isSelected: isDesktop(context) && - invoice.id == + invoice!.id == (uiState.isEditing - ? invoiceUIState.editing.id + ? invoiceUIState.editing!.id : invoiceUIState.selectedId), showMultiselect: showCheckbox, userCompany: state.userCompany, @@ -76,11 +76,11 @@ class RecurringInvoiceListItem extends StatelessWidget { return constraints.maxWidth > kTableListWidthCutoff ? InkWell( onTap: () => selectEntity( - entity: invoice, + entity: invoice!, forceView: !showCheckbox, ), onLongPress: () => - selectEntity(entity: invoice, longPress: true), + selectEntity(entity: invoice!, longPress: true), child: Padding( padding: const EdgeInsets.only( left: 10, @@ -106,7 +106,7 @@ class RecurringInvoiceListItem extends StatelessWidget { ), ) : ActionMenuButton( - entityActions: invoice.getActions( + entityActions: invoice!.getActions( userCompany: state.userCompany, client: client, includeEdit: true, @@ -122,13 +122,13 @@ class RecurringInvoiceListItem extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - (invoice.number ?? '').isEmpty + (invoice!.number ?? '').isEmpty ? localization.pending - : invoice.number, + : invoice!.number, style: textStyle, overflow: TextOverflow.ellipsis, ), - if (!invoice.isActive) EntityStateLabel(invoice) + if (!invoice!.isActive) EntityStateLabel(invoice) ], ), ), @@ -138,8 +138,8 @@ class RecurringInvoiceListItem extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - client.displayName + - (invoice.documents.isNotEmpty + client!.displayName + + (invoice!.documents.isNotEmpty ? ' 📎' : ''), style: textStyle), @@ -149,9 +149,9 @@ class RecurringInvoiceListItem extends StatelessWidget { overflow: TextOverflow.ellipsis, style: Theme.of(context) .textTheme - .titleSmall + .titleSmall! .copyWith( - color: textColor + color: textColor! .withOpacity(kLighterOpacity), ), ), @@ -160,8 +160,8 @@ class RecurringInvoiceListItem extends StatelessWidget { ), SizedBox(width: 10), Text( - formatNumber(invoice.amount, context, - clientId: client.id), + formatNumber(invoice!.amount, context, + clientId: client.id)!, style: textStyle, textAlign: TextAlign.end, ), @@ -173,9 +173,9 @@ class RecurringInvoiceListItem extends StatelessWidget { ) : ListTile( onTap: () => - selectEntity(entity: invoice, forceView: !showCheckbox), + selectEntity(entity: invoice!, forceView: !showCheckbox), onLongPress: () => - selectEntity(entity: invoice, longPress: true), + selectEntity(entity: invoice!, longPress: true), leading: isInMultiselect ? IgnorePointer( ignoring: listUIState.isInMultiselect(), @@ -195,15 +195,15 @@ class RecurringInvoiceListItem extends StatelessWidget { children: [ Expanded( child: Text( - client.displayName, + client!.displayName, style: Theme.of(context).textTheme.titleMedium, overflow: TextOverflow.ellipsis, ), ), SizedBox(width: 4), Text( - formatNumber(invoice.amount, context, - clientId: invoice.clientId), + formatNumber(invoice!.amount, context, + clientId: invoice!.clientId)!, style: Theme.of(context).textTheme.titleMedium), ], ), @@ -216,15 +216,15 @@ class RecurringInvoiceListItem extends StatelessWidget { Expanded( child: filterMatch == null ? Text( - (((invoice.number ?? '').isEmpty + (((invoice!.number ?? '').isEmpty ? localization.pending - : invoice.number) + - (invoice.nextSendDate.isNotEmpty + : invoice!.number) + + (invoice!.nextSendDate.isNotEmpty ? ' • ' : '') + formatDate( - invoice.nextSendDate, context) + - (invoice.documents.isNotEmpty + invoice!.nextSendDate, context) + + (invoice!.documents.isNotEmpty ? ' 📎' : '')) .trim(), @@ -235,10 +235,10 @@ class RecurringInvoiceListItem extends StatelessWidget { overflow: TextOverflow.ellipsis, ), ), - Text(statusLabel, + Text(statusLabel!, style: TextStyle( color: - !invoice.isSent ? textColor : statusColor, + !invoice!.isSent ? textColor : statusColor, )), ], ), diff --git a/lib/ui/recurring_invoice/recurring_invoice_list_vm.dart b/lib/ui/recurring_invoice/recurring_invoice_list_vm.dart index 45d8eb7c4..17396ed01 100644 --- a/lib/ui/recurring_invoice/recurring_invoice_list_vm.dart +++ b/lib/ui/recurring_invoice/recurring_invoice_list_vm.dart @@ -24,7 +24,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class RecurringInvoiceListBuilder extends StatelessWidget { - const RecurringInvoiceListBuilder({Key key}) : super(key: key); + const RecurringInvoiceListBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -57,18 +57,18 @@ class RecurringInvoiceListBuilder extends StatelessWidget { class RecurringInvoiceListVM { RecurringInvoiceListVM({ - @required this.state, - @required this.userCompany, - @required this.recurringInvoiceList, - @required this.recurringInvoiceMap, - @required this.filter, - @required this.isLoading, - @required this.listState, - @required this.onRefreshed, - @required this.onEntityAction, - @required this.tableColumns, - @required this.onSortColumn, - @required this.onClearMultielsect, + required this.state, + required this.userCompany, + required this.recurringInvoiceList, + required this.recurringInvoiceMap, + required this.filter, + required this.isLoading, + required this.listState, + required this.onRefreshed, + required this.onEntityAction, + required this.tableColumns, + required this.onSortColumn, + required this.onClearMultielsect, }); static RecurringInvoiceListVM fromStore(Store store) { @@ -77,7 +77,7 @@ class RecurringInvoiceListVM { return Future(null); } final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(RefreshData(completer: completer)); return completer.future; } @@ -103,7 +103,7 @@ class RecurringInvoiceListVM { EntityAction action) => handleRecurringInvoiceAction(context, recurringInvoices, action), onRefreshed: (context) => _handleRefresh(context), - tableColumns: state.userCompany.settings + tableColumns: state.userCompany!.settings ?.getTableColumns(EntityType.recurringInvoice) ?? RecurringInvoicePresenter.getDefaultTableFields(state.userCompany), onSortColumn: (field) => store.dispatch(SortRecurringInvoices(field)), @@ -113,11 +113,11 @@ class RecurringInvoiceListVM { } final AppState state; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List recurringInvoiceList; - final BuiltMap recurringInvoiceMap; + final BuiltMap recurringInvoiceMap; final ListUIState listState; - final String filter; + final String? filter; final bool isLoading; final Function(BuildContext) onRefreshed; final Function(BuildContext, List, EntityAction) onEntityAction; diff --git a/lib/ui/recurring_invoice/recurring_invoice_pdf_vm.dart b/lib/ui/recurring_invoice/recurring_invoice_pdf_vm.dart index 1870ab5f3..842742268 100644 --- a/lib/ui/recurring_invoice/recurring_invoice_pdf_vm.dart +++ b/lib/ui/recurring_invoice/recurring_invoice_pdf_vm.dart @@ -12,7 +12,7 @@ import 'package:invoiceninja_flutter/ui/invoice/invoice_pdf.dart'; import 'package:invoiceninja_flutter/ui/invoice/invoice_pdf_vm.dart'; class RecurringInvoicePdfScreen extends StatelessWidget { - const RecurringInvoicePdfScreen({Key key, this.showAppBar = true}) + const RecurringInvoicePdfScreen({Key? key, this.showAppBar = true}) : super(key: key); final bool showAppBar; @@ -27,7 +27,7 @@ class RecurringInvoicePdfScreen extends StatelessWidget { }, builder: (context, vm) { return InvoicePdfView( - key: ValueKey('__recurring_invoice_pdf_${vm.invoice.id}__'), + key: ValueKey('__recurring_invoice_pdf_${vm.invoice!.id}__'), viewModel: vm, showAppBar: showAppBar, ); @@ -38,9 +38,9 @@ class RecurringInvoicePdfScreen extends StatelessWidget { class RecurringInvoicePdfVM extends EntityPdfVM { RecurringInvoicePdfVM({ - AppState state, - InvoiceEntity invoice, - String activityId, + AppState? state, + InvoiceEntity? invoice, + String? activityId, }) : super( state: state, invoice: invoice, @@ -50,7 +50,7 @@ class RecurringInvoicePdfVM extends EntityPdfVM { factory RecurringInvoicePdfVM.fromStore(Store store) { final state = store.state; final recurringInvoiceUIState = state.uiState.recurringInvoiceUIState; - final invoiceId = recurringInvoiceUIState.selectedId; + final invoiceId = recurringInvoiceUIState.selectedId!; final invoice = state.recurringInvoiceState.get(invoiceId); return RecurringInvoicePdfVM( diff --git a/lib/ui/recurring_invoice/recurring_invoice_presenter.dart b/lib/ui/recurring_invoice/recurring_invoice_presenter.dart index 5ab7e531a..a607d03bf 100644 --- a/lib/ui/recurring_invoice/recurring_invoice_presenter.dart +++ b/lib/ui/recurring_invoice/recurring_invoice_presenter.dart @@ -16,7 +16,7 @@ import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class RecurringInvoicePresenter extends EntityPresenter { - static List getDefaultTableFields(UserCompanyEntity userCompany) { + static List getDefaultTableFields(UserCompanyEntity? userCompany) { return [ RecurringInvoiceFields.status, RecurringInvoiceFields.number, @@ -30,7 +30,7 @@ class RecurringInvoicePresenter extends EntityPresenter { ]; } - static List getAllTableFields(UserCompanyEntity userCompany) { + static List getAllTableFields(UserCompanyEntity? userCompany) { return [ ...getDefaultTableFields(userCompany), ...EntityPresenter.getBaseFields(), @@ -49,90 +49,90 @@ class RecurringInvoicePresenter extends EntityPresenter { } @override - Widget getField({String field, BuildContext context}) { + Widget getField({String? field, required BuildContext context}) { final localization = AppLocalization.of(context); final state = StoreProvider.of(context).state; - final invoice = entity as InvoiceEntity; + final invoice = entity as InvoiceEntity?; switch (field) { case RecurringInvoiceFields.status: return EntityStatusChip(entity: invoice, showState: true); case RecurringInvoiceFields.number: - return Text((invoice.number ?? '').isEmpty - ? localization.pending + return Text((invoice!.number ?? '').isEmpty + ? localization!.pending : invoice.number); case RecurringInvoiceFields.client: - final client = state.clientState.get(invoice.clientId); + final client = state.clientState.get(invoice!.clientId); return LinkTextRelatedEntity(entity: client, relation: invoice); case RecurringInvoiceFields.date: - return Text(formatDate(invoice.date, context)); + return Text(formatDate(invoice!.date, context)); case RecurringInvoiceFields.reminder1Sent: - return Text(formatDate(invoice.reminder1Sent, context)); + return Text(formatDate(invoice!.reminder1Sent, context)); case RecurringInvoiceFields.reminder2Sent: - return Text(formatDate(invoice.reminder2Sent, context)); + return Text(formatDate(invoice!.reminder2Sent, context)); case RecurringInvoiceFields.reminder3Sent: - return Text(formatDate(invoice.reminder3Sent, context)); + return Text(formatDate(invoice!.reminder3Sent, context)); case RecurringInvoiceFields.reminderLastSent: - return Text(formatDate(invoice.reminderLastSent, context)); + return Text(formatDate(invoice!.reminderLastSent, context)); case RecurringInvoiceFields.amount: return Align( alignment: Alignment.centerRight, - child: Text(formatNumber(invoice.amount, context, - clientId: invoice.clientId)), + child: Text(formatNumber(invoice!.amount, context, + clientId: invoice.clientId)!), ); case RecurringInvoiceFields.customValue1: - return Text(presentCustomField(context, invoice.customValue1)); + return Text(presentCustomField(context, invoice!.customValue1)!); case RecurringInvoiceFields.customValue2: - return Text(presentCustomField(context, invoice.customValue2)); + return Text(presentCustomField(context, invoice!.customValue2)!); case RecurringInvoiceFields.customValue3: - return Text(presentCustomField(context, invoice.customValue3)); + return Text(presentCustomField(context, invoice!.customValue3)!); case RecurringInvoiceFields.customValue4: - return Text(presentCustomField(context, invoice.customValue4)); + return Text(presentCustomField(context, invoice!.customValue4)!); case RecurringInvoiceFields.publicNotes: - return TableTooltip(message: invoice.publicNotes); + return TableTooltip(message: invoice!.publicNotes); case RecurringInvoiceFields.privateNotes: - return TableTooltip(message: invoice.privateNotes); + return TableTooltip(message: invoice!.privateNotes); case RecurringInvoiceFields.discount: - return Text(invoice.isAmountDiscount + return Text(invoice!.isAmountDiscount ? formatNumber(invoice.discount, context, formatNumberType: FormatNumberType.money, - clientId: invoice.clientId) + clientId: invoice.clientId)! : formatNumber(invoice.discount, context, - formatNumberType: FormatNumberType.percent)); + formatNumberType: FormatNumberType.percent)!); case RecurringInvoiceFields.poNumber: - return Text(invoice.poNumber); + return Text(invoice!.poNumber); case RecurringInvoiceFields.documents: - return Text('${invoice.documents.length}'); + return Text('${invoice!.documents.length}'); case RecurringInvoiceFields.taxAmount: - return Text(formatNumber(invoice.taxAmount, context, - clientId: invoice.clientId)); + return Text(formatNumber(invoice!.taxAmount, context, + clientId: invoice.clientId)!); case RecurringInvoiceFields.exchangeRate: - return Text(formatNumber(invoice.exchangeRate, context, - formatNumberType: FormatNumberType.double)); + return Text(formatNumber(invoice!.exchangeRate, context, + formatNumberType: FormatNumberType.double)!); case RecurringInvoiceFields.remainingCycles: - return Text(invoice.remainingCycles == -1 - ? localization.endless + return Text(invoice!.remainingCycles == -1 + ? localization!.endless : '${invoice.remainingCycles}'); case RecurringInvoiceFields.nextSendDate: - return Text(invoice.nextSendDatetime.isNotEmpty + return Text(invoice!.nextSendDatetime.isNotEmpty ? formatDate(invoice.nextSendDatetime, context, showTime: true, showSeconds: false) : formatDate(invoice.nextSendDate, context)); case RecurringInvoiceFields.frequency: - return Text(localization.lookup(kFrequencies[invoice.frequencyId])); + return Text(localization!.lookup(kFrequencies[invoice!.frequencyId])!); case RecurringInvoiceFields.dueDateDays: - return Text(invoice.dueDateDays == 'terms' - ? localization.paymentTerm + return Text(invoice!.dueDateDays == 'terms' + ? localization!.paymentTerm : invoice.dueDateDays == 'on_receipt' - ? localization.dueOnReceipt + ? localization!.dueOnReceipt! : invoice.dueDateDays == '1' - ? localization.firstDayOfTheMonth + ? localization!.firstDayOfTheMonth : invoice.dueDateDays == '31' - ? localization.lastDayOfTheMonth - : localization.dayCount + ? localization!.lastDayOfTheMonth + : localization!.dayCount .replaceFirst(':count', '${invoice.dueDateDays}')); case RecurringInvoiceFields.autoBill: - return Text(localization.lookup(invoice.autoBill)); + return Text(localization!.lookup(invoice!.autoBill)!); } return super.getField(field: field, context: context); diff --git a/lib/ui/recurring_invoice/recurring_invoice_screen.dart b/lib/ui/recurring_invoice/recurring_invoice_screen.dart index 6446d51b3..27196ec2c 100644 --- a/lib/ui/recurring_invoice/recurring_invoice_screen.dart +++ b/lib/ui/recurring_invoice/recurring_invoice_screen.dart @@ -21,8 +21,8 @@ import 'recurring_invoice_screen_vm.dart'; class RecurringInvoiceScreen extends StatelessWidget { const RecurringInvoiceScreen({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); static const String route = '/recurring_invoice'; @@ -33,7 +33,7 @@ class RecurringInvoiceScreen extends StatelessWidget { Widget build(BuildContext context) { final store = StoreProvider.of(context); final state = store.state; - final company = state.company; + final company = state.company!; final userCompany = state.userCompany; final localization = AppLocalization.of(context); @@ -41,27 +41,27 @@ class RecurringInvoiceScreen extends StatelessWidget { InvoiceStatusEntity().rebuild( (b) => b ..id = kRecurringInvoiceStatusDraft - ..name = localization.draft, + ..name = localization!.draft, ), InvoiceStatusEntity().rebuild( (b) => b ..id = kRecurringInvoiceStatusPending - ..name = localization.pending, + ..name = localization!.pending, ), InvoiceStatusEntity().rebuild( (b) => b ..id = kRecurringInvoiceStatusActive - ..name = localization.active, + ..name = localization!.active, ), InvoiceStatusEntity().rebuild( (b) => b ..id = kRecurringInvoiceStatusPaused - ..name = localization.paused, + ..name = localization!.paused, ), InvoiceStatusEntity().rebuild( (b) => b ..id = kRecurringInvoiceStatusCompleted - ..name = localization.completed, + ..name = localization!.completed, ), ]; @@ -139,7 +139,7 @@ class RecurringInvoiceScreen extends StatelessWidget { store.dispatch(FilterRecurringInvoicesByCustom4(value)), ), floatingActionButton: state.prefState.isMenuFloated && - userCompany.canCreate(EntityType.recurringInvoice) + userCompany!.canCreate(EntityType.recurringInvoice) ? FloatingActionButton( heroTag: 'recurring_invoice_fab', backgroundColor: Theme.of(context).primaryColorDark, @@ -151,7 +151,7 @@ class RecurringInvoiceScreen extends StatelessWidget { Icons.add, color: Colors.white, ), - tooltip: localization.newRecurringInvoice, + tooltip: localization!.newRecurringInvoice, ) : null, ); diff --git a/lib/ui/recurring_invoice/recurring_invoice_screen_vm.dart b/lib/ui/recurring_invoice/recurring_invoice_screen_vm.dart index 635aa6441..2ec2c4336 100644 --- a/lib/ui/recurring_invoice/recurring_invoice_screen_vm.dart +++ b/lib/ui/recurring_invoice/recurring_invoice_screen_vm.dart @@ -15,7 +15,7 @@ import 'package:invoiceninja_flutter/redux/recurring_invoice/recurring_invoice_s import 'recurring_invoice_screen.dart'; class RecurringInvoiceScreenBuilder extends StatelessWidget { - const RecurringInvoiceScreenBuilder({Key key}) : super(key: key); + const RecurringInvoiceScreenBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -32,18 +32,18 @@ class RecurringInvoiceScreenBuilder extends StatelessWidget { class RecurringInvoiceScreenVM { RecurringInvoiceScreenVM({ - @required this.isInMultiselect, - @required this.recurringInvoiceList, - @required this.userCompany, - @required this.onEntityAction, - @required this.recurringInvoiceMap, + required this.isInMultiselect, + required this.recurringInvoiceList, + required this.userCompany, + required this.onEntityAction, + required this.recurringInvoiceMap, }); final bool isInMultiselect; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List recurringInvoiceList; final Function(BuildContext, List, EntityAction) onEntityAction; - final BuiltMap recurringInvoiceMap; + final BuiltMap recurringInvoiceMap; static RecurringInvoiceScreenVM fromStore(Store store) { final state = store.state; diff --git a/lib/ui/recurring_invoice/view/recurring_invoice_view_vm.dart b/lib/ui/recurring_invoice/view/recurring_invoice_view_vm.dart index 4433844e7..fd84459db 100644 --- a/lib/ui/recurring_invoice/view/recurring_invoice_view_vm.dart +++ b/lib/ui/recurring_invoice/view/recurring_invoice_view_vm.dart @@ -23,7 +23,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class RecurringInvoiceViewScreen extends StatelessWidget { const RecurringInvoiceViewScreen({ - Key key, + Key? key, this.isFilter = false, }) : super(key: key); static const String route = '/recurring_invoice/view'; @@ -39,7 +39,7 @@ class RecurringInvoiceViewScreen extends StatelessWidget { return InvoiceView( viewModel: vm, isFilter: isFilter, - tabIndex: vm.state.recurringInvoiceUIState.tabIndex, + tabIndex: vm.state!.recurringInvoiceUIState.tabIndex, ); }, ); @@ -48,20 +48,20 @@ class RecurringInvoiceViewScreen extends StatelessWidget { class RecurringInvoiceViewVM extends AbstractInvoiceViewVM { RecurringInvoiceViewVM({ - AppState state, - CompanyEntity company, - InvoiceEntity invoice, - ClientEntity client, - bool isSaving, - bool isDirty, - Function(BuildContext, EntityAction) onEntityAction, - Function(BuildContext, [int]) onEditPressed, - Function(BuildContext) onPaymentsPressed, - Function(BuildContext, PaymentEntity) onPaymentPressed, - Function(BuildContext) onRefreshed, - Function(BuildContext, List, bool) onUploadDocuments, - Function(BuildContext, DocumentEntity) onViewExpense, - Function(BuildContext, InvoiceEntity, [String]) onViewPdf, + AppState? state, + CompanyEntity? company, + InvoiceEntity? invoice, + ClientEntity? client, + bool? isSaving, + bool? isDirty, + Function(BuildContext, EntityAction)? onEntityAction, + Function(BuildContext, [int])? onEditPressed, + Function(BuildContext)? onPaymentsPressed, + Function(BuildContext, PaymentEntity)? onPaymentPressed, + Function(BuildContext)? onRefreshed, + Function(BuildContext, List, bool)? onUploadDocuments, + Function(BuildContext, DocumentEntity)? onViewExpense, + Function(BuildContext, InvoiceEntity, [String?])? onViewPdf, }) : super( state: state, company: company, @@ -88,7 +88,7 @@ class RecurringInvoiceViewVM extends AbstractInvoiceViewVM { Future _handleRefresh(BuildContext context) { final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(LoadRecurringInvoice( completer: completer, recurringInvoiceId: invoice.id)); return completer.future; @@ -101,12 +101,12 @@ class RecurringInvoiceViewVM extends AbstractInvoiceViewVM { isDirty: invoice.isNew, invoice: invoice, client: client, - onEditPressed: (BuildContext context, [int index]) { + onEditPressed: (BuildContext context, [int? index]) { editEntity( entity: invoice, subIndex: index, completer: snackBarCompleter( - context, AppLocalization.of(context).updatedRecurringInvoice)); + context, AppLocalization.of(context)!.updatedRecurringInvoice)); }, onRefreshed: (context) => _handleRefresh(context), onEntityAction: (BuildContext context, EntityAction action) => @@ -120,7 +120,7 @@ class RecurringInvoiceViewVM extends AbstractInvoiceViewVM { invoice: invoice, completer: completer)); completer.future.then((client) { - showToast(AppLocalization.of(context).uploadedDocument); + showToast(AppLocalization.of(context)!.uploadedDocument); }).catchError((Object error) { showDialog( context: context, diff --git a/lib/ui/reports/client_report.dart b/lib/ui/reports/client_report.dart index def5f12ef..25b97178a 100644 --- a/lib/ui/reports/client_report.dart +++ b/lib/ui/reports/client_report.dart @@ -1,5 +1,6 @@ // Package imports: import 'package:built_collection/built_collection.dart'; +import 'package:collection/collection.dart' show IterableNullableExtension; import 'package:invoiceninja_flutter/data/models/group_model.dart'; import 'package:invoiceninja_flutter/main_app.dart'; import 'package:invoiceninja_flutter/redux/reports/reports_selectors.dart'; @@ -80,22 +81,22 @@ enum ClientReportFields { } var memoizedClientReport = memo6(( - UserCompanyEntity userCompany, + UserCompanyEntity? userCompany, ReportsUIState reportsUIState, - BuiltMap clientMap, - BuiltMap userMap, - BuiltMap groupMap, + BuiltMap clientMap, + BuiltMap userMap, + BuiltMap groupMap, StaticState staticState, ) => - clientReport(userCompany, reportsUIState, clientMap, userMap, groupMap, + clientReport(userCompany!, reportsUIState, clientMap, userMap, groupMap, staticState)); ReportResult clientReport( UserCompanyEntity userCompany, ReportsUIState reportsUIState, - BuiltMap clientMap, - BuiltMap userMap, - BuiltMap groupMap, + BuiltMap clientMap, + BuiltMap userMap, + BuiltMap groupMap, StaticState staticState, ) { final List> data = []; @@ -105,7 +106,7 @@ ReportResult clientReport( final reportSettings = userCompany.settings?.reportSettings; final clientReportSettings = reportSettings != null && reportSettings.containsKey(kReportClient) - ? reportSettings[kReportClient] + ? reportSettings[kReportClient]! : ReportSettingsEntity(); final defaultColumns = [ @@ -123,16 +124,16 @@ ReportResult clientReport( if (clientReportSettings.columns.isNotEmpty) { columns = BuiltList(clientReportSettings.columns .map((e) => EnumUtils.fromString(ClientReportFields.values, e)) - .where((element) => element != null) + .whereNotNull() .toList()); } else { columns = BuiltList(defaultColumns); } for (var clientId in clientMap.keys) { - final client = clientMap[clientId]; + final client = clientMap[clientId]!; final contact = client.primaryContact; - if (client.isDeleted && !userCompany.company.reportIncludeDeleted) { + if (client.isDeleted! && !userCompany.company!.reportIncludeDeleted) { continue; } @@ -141,7 +142,7 @@ ReportResult clientReport( final exchangeRate = getExchangeRate(staticState.currencyMap, fromCurrencyId: client.currencyId, - toCurrencyId: userCompany.company.currencyId); + toCurrencyId: userCompany.company!.currencyId); for (var column in columns) { dynamic value = ''; @@ -184,28 +185,28 @@ ReportResult clientReport( value = presentCustomField( value: client.customValue1, customFieldType: CustomFieldType.client1, - company: userCompany.company, + company: userCompany.company!, ); break; case ClientReportFields.client2: value = presentCustomField( value: client.customValue2, customFieldType: CustomFieldType.client2, - company: userCompany.company, + company: userCompany.company!, ); break; case ClientReportFields.client3: value = presentCustomField( value: client.customValue3, customFieldType: CustomFieldType.client3, - company: userCompany.company, + company: userCompany.company!, ); break; case ClientReportFields.client4: value = presentCustomField( value: client.customValue4, customFieldType: CustomFieldType.client4, - company: userCompany.company, + company: userCompany.company!, ); break; case ClientReportFields.address1: @@ -266,53 +267,53 @@ ReportResult clientReport( value = userMap[client.createdUserId]?.listDisplayName ?? ''; break; case ClientReportFields.contact_full_name: - value = contact.fullName; + value = contact!.fullName; break; case ClientReportFields.contact_first_name: - value = contact.firstName; + value = contact!.firstName; break; case ClientReportFields.contact_last_name: - value = contact.lastName; + value = contact!.lastName; break; case ClientReportFields.contact_email: - value = contact.email; + value = contact!.email; break; case ClientReportFields.contact_phone: - value = contact.phone; + value = contact!.phone; break; case ClientReportFields.contact1: value = presentCustomField( - value: contact.customValue1, + value: contact!.customValue1, customFieldType: CustomFieldType.contact1, - company: userCompany.company, + company: userCompany.company!, ); break; case ClientReportFields.contact2: value = presentCustomField( - value: contact.customValue2, + value: contact!.customValue2, customFieldType: CustomFieldType.contact2, - company: userCompany.company, + company: userCompany.company!, ); break; case ClientReportFields.contact3: value = presentCustomField( - value: contact.customValue3, + value: contact!.customValue3, customFieldType: CustomFieldType.contact3, - company: userCompany.company, + company: userCompany.company!, ); break; case ClientReportFields.contact4: value = presentCustomField( - value: contact.customValue4, + value: contact!.customValue4, customFieldType: CustomFieldType.contact4, - company: userCompany.company, + company: userCompany.company!, ); break; case ClientReportFields.last_login: value = convertTimestampToDateString(client.lastLogin); break; case ClientReportFields.contact_last_login: - value = convertTimestampToDateString(contact.lastLogin); + value = convertTimestampToDateString(contact!.lastLogin); break; case ClientReportFields.total: value = client.balance + client.paidToDate; @@ -363,7 +364,7 @@ ReportResult clientReport( value = client.isTaxExempt; break; case ClientReportFields.classification: - value = AppLocalization.of(navigatorKey.currentContext) + value = AppLocalization.of(navigatorKey.currentContext!)! .lookup(client.classification); break; } @@ -372,8 +373,8 @@ ReportResult clientReport( value: value, userCompany: userCompany, reportsUIState: reportsUIState, - column: EnumUtils.parse(column), - )) { + column: EnumUtils.parse(column)!, + )!) { skip = true; } @@ -382,14 +383,14 @@ ReportResult clientReport( } else if (column == ClientReportFields.documents) { row.add(client.getReportInt(value: value)); } else if (value.runtimeType == double || value.runtimeType == int) { - String currencyId = client.currencyId; + String? currencyId = client.currencyId; if ([ ClientReportFields.converted_balance, ClientReportFields.converted_credit_balance, ClientReportFields.converted_paid_to_date, ClientReportFields.converted_total, ].contains(column)) { - currencyId = userCompany.company.currencyId; + currencyId = userCompany.company!.currencyId; } row.add(client.getReportDouble( value: value, @@ -409,7 +410,7 @@ ReportResult clientReport( final selectedColumns = columns.map((item) => EnumUtils.parse(item)).toList(); data.sort((rowA, rowB) => - sortReportTableRows(rowA, rowB, clientReportSettings, selectedColumns)); + sortReportTableRows(rowA, rowB, clientReportSettings, selectedColumns)!); return ReportResult( allColumns: diff --git a/lib/ui/reports/contact_report.dart b/lib/ui/reports/contact_report.dart index 4a40c2aff..d86427c9d 100644 --- a/lib/ui/reports/contact_report.dart +++ b/lib/ui/reports/contact_report.dart @@ -1,5 +1,6 @@ // Package imports: import 'package:built_collection/built_collection.dart'; +import 'package:collection/collection.dart' show IterableNullableExtension; import 'package:invoiceninja_flutter/redux/reports/reports_selectors.dart'; import 'package:memoize/memoize.dart'; @@ -69,20 +70,20 @@ enum ContactReportFields { } var memoizedContactReport = memo5(( - UserCompanyEntity userCompany, + UserCompanyEntity? userCompany, ReportsUIState reportsUIState, - BuiltMap clientMap, - BuiltMap userMap, + BuiltMap clientMap, + BuiltMap userMap, StaticState staticState, ) => contactReport( - userCompany, reportsUIState, clientMap, userMap, staticState)); + userCompany!, reportsUIState, clientMap, userMap, staticState)); ReportResult contactReport( UserCompanyEntity userCompany, ReportsUIState reportsUIState, - BuiltMap clientMap, - BuiltMap userMap, + BuiltMap clientMap, + BuiltMap userMap, StaticState staticState, ) { final List> data = []; @@ -91,7 +92,7 @@ ReportResult contactReport( final reportSettings = userCompany.settings?.reportSettings; final clientReportSettings = reportSettings != null && reportSettings.containsKey(kReportClient) - ? reportSettings[kReportClient] + ? reportSettings[kReportClient]! : ReportSettingsEntity(); final defaultColumns = [ @@ -109,15 +110,15 @@ ReportResult contactReport( if (clientReportSettings.columns.isNotEmpty) { columns = BuiltList(clientReportSettings.columns .map((e) => EnumUtils.fromString(ContactReportFields.values, e)) - .where((element) => element != null) + .whereNotNull() .toList()); } else { columns = BuiltList(defaultColumns); } for (var clientId in clientMap.keys) { - final client = clientMap[clientId]; - if (client.isDeleted && !userCompany.company.reportIncludeDeleted) { + final client = clientMap[clientId]!; + if (client.isDeleted! && !userCompany.company!.reportIncludeDeleted) { continue; } @@ -127,14 +128,14 @@ ReportResult contactReport( final exchangeRate = getExchangeRate(staticState.currencyMap, fromCurrencyId: client.currencyId, - toCurrencyId: userCompany.company.currencyId); + toCurrencyId: userCompany.company!.currencyId); for (var column in columns) { dynamic value = ''; switch (column) { case ContactReportFields.id: - value = contact.id; + value = contact!.id; break; case ContactReportFields.name: value = client.displayName; @@ -170,28 +171,28 @@ ReportResult contactReport( value = presentCustomField( value: client.customValue1, customFieldType: CustomFieldType.client1, - company: userCompany.company, + company: userCompany.company!, ); break; case ContactReportFields.client2: value = presentCustomField( value: client.customValue2, customFieldType: CustomFieldType.client2, - company: userCompany.company, + company: userCompany.company!, ); break; case ContactReportFields.client3: value = presentCustomField( value: client.customValue3, customFieldType: CustomFieldType.client3, - company: userCompany.company, + company: userCompany.company!, ); break; case ContactReportFields.client4: value = presentCustomField( value: client.customValue4, customFieldType: CustomFieldType.client4, - company: userCompany.company, + company: userCompany.company!, ); break; case ContactReportFields.address1: @@ -252,81 +253,81 @@ ReportResult contactReport( value = userMap[client.createdUserId]?.listDisplayName ?? ''; break; case ContactReportFields.contact_full_name: - value = contact.fullName; + value = contact!.fullName; break; case ContactReportFields.contact_first_name: - value = contact.firstName; + value = contact!.firstName; break; case ContactReportFields.contact_last_name: - value = contact.lastName; + value = contact!.lastName; break; case ContactReportFields.contact_email: - value = contact.email; + value = contact!.email; break; case ContactReportFields.contact_phone: - value = contact.phone; + value = contact!.phone; break; case ContactReportFields.contact1: value = presentCustomField( - value: contact.customValue1, + value: contact!.customValue1, customFieldType: CustomFieldType.contact1, - company: userCompany.company, + company: userCompany.company!, ); break; case ContactReportFields.contact2: value = presentCustomField( - value: contact.customValue2, + value: contact!.customValue2, customFieldType: CustomFieldType.contact2, - company: userCompany.company, + company: userCompany.company!, ); break; case ContactReportFields.contact3: value = presentCustomField( - value: contact.customValue3, + value: contact!.customValue3, customFieldType: CustomFieldType.contact3, - company: userCompany.company, + company: userCompany.company!, ); break; case ContactReportFields.contact4: value = presentCustomField( - value: contact.customValue4, + value: contact!.customValue4, customFieldType: CustomFieldType.contact4, - company: userCompany.company, + company: userCompany.company!, ); break; case ContactReportFields.contact_last_login: - value = convertTimestampToDateString(contact.lastLogin); + value = convertTimestampToDateString(contact!.lastLogin); break; case ContactReportFields.total: value = - contact.isPrimary ? (client.balance + client.paidToDate) : 0.0; + contact!.isPrimary ? (client.balance + client.paidToDate) : 0.0; break; case ContactReportFields.balance: - value = contact.isPrimary ? client.balance : 0.0; + value = contact!.isPrimary ? client.balance : 0.0; break; case ContactReportFields.credit_balance: - value = contact.isPrimary ? client.creditBalance : 0.0; + value = contact!.isPrimary ? client.creditBalance : 0.0; break; case ContactReportFields.paid_to_date: - value = contact.isPrimary ? client.paidToDate : 0.0; + value = contact!.isPrimary ? client.paidToDate : 0.0; break; case ContactReportFields.converted_total: - value = contact.isPrimary + value = contact!.isPrimary ? round((client.balance + client.paidToDate) * exchangeRate, 2) : 0.0; break; case ContactReportFields.converted_balance: - value = contact.isPrimary + value = contact!.isPrimary ? round(client.balance * exchangeRate, 2) : 0.0; break; case ContactReportFields.converted_credit_balance: - value = contact.isPrimary + value = contact!.isPrimary ? round(client.creditBalance * exchangeRate, 2) : 0.0; break; case ContactReportFields.converted_paid_to_date: - value = contact.isPrimary + value = contact!.isPrimary ? round(client.paidToDate * exchangeRate, 2) : 0.0; break; @@ -345,22 +346,22 @@ ReportResult contactReport( value: value, userCompany: userCompany, reportsUIState: reportsUIState, - column: EnumUtils.parse(column), - )) { + column: EnumUtils.parse(column)!, + )!) { skip = true; } if (value.runtimeType == bool) { row.add(client.getReportBool(value: value)); } else if (value.runtimeType == double || value.runtimeType == int) { - String currencyId = client.currencyId; + String? currencyId = client.currencyId; if ([ ContactReportFields.converted_balance, ContactReportFields.converted_credit_balance, ContactReportFields.converted_paid_to_date, ContactReportFields.converted_total, ].contains(column)) { - currencyId = userCompany.company.currencyId; + currencyId = userCompany.company!.currencyId; } row.add(client.getReportDouble( value: value, @@ -380,7 +381,7 @@ ReportResult contactReport( final selectedColumns = columns.map((item) => EnumUtils.parse(item)).toList(); data.sort((rowA, rowB) => - sortReportTableRows(rowA, rowB, clientReportSettings, selectedColumns)); + sortReportTableRows(rowA, rowB, clientReportSettings, selectedColumns)!); return ReportResult( allColumns: ContactReportFields.values diff --git a/lib/ui/reports/credit_item_report.dart b/lib/ui/reports/credit_item_report.dart index 311070645..505a8c168 100644 --- a/lib/ui/reports/credit_item_report.dart +++ b/lib/ui/reports/credit_item_report.dart @@ -1,5 +1,6 @@ // Package imports: import 'package:built_collection/built_collection.dart'; +import 'package:collection/collection.dart' show IterableNullableExtension; import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:memoize/memoize.dart'; @@ -43,22 +44,22 @@ enum CreditItemReportFields { } var memoizedCreditItemReport = memo6(( - UserCompanyEntity userCompany, + UserCompanyEntity? userCompany, ReportsUIState reportsUIState, - BuiltMap productMap, - BuiltMap creditMap, - BuiltMap clientMap, + BuiltMap productMap, + BuiltMap creditMap, + BuiltMap clientMap, StaticState staticState, ) => - lineItemReport(userCompany, reportsUIState, productMap, creditMap, + lineItemReport(userCompany!, reportsUIState, productMap, creditMap, clientMap, staticState)); ReportResult lineItemReport( UserCompanyEntity userCompany, ReportsUIState reportsUIState, - BuiltMap productMap, - BuiltMap creditMap, - BuiltMap clientMap, + BuiltMap productMap, + BuiltMap creditMap, + BuiltMap clientMap, StaticState staticState, ) { final List> data = []; @@ -67,7 +68,7 @@ ReportResult lineItemReport( final reportSettings = userCompany.settings?.reportSettings; final lineItemReportSettings = reportSettings != null && reportSettings.containsKey(kReportCreditItem) - ? reportSettings[kReportCreditItem] + ? reportSettings[kReportCreditItem]! : ReportSettingsEntity(); final defaultColumns = [ @@ -81,7 +82,7 @@ ReportResult lineItemReport( if (lineItemReportSettings.columns.isNotEmpty) { columns = BuiltList(lineItemReportSettings.columns .map((e) => EnumUtils.fromString(CreditItemReportFields.values, e)) - .where((element) => element != null) + .whereNotNull() .toList()); } else { columns = BuiltList(defaultColumns); @@ -89,21 +90,21 @@ ReportResult lineItemReport( final productKeyMap = {}; for (var entry in productMap.entries) { - productKeyMap[entry.value.productKey] = entry.value.id; + productKeyMap[entry.value!.productKey] = entry.value!.id; } for (var entry in creditMap.entries) { - final credit = entry.value; + final credit = entry.value!; final client = clientMap[credit.clientId] ?? ClientEntity(); final precision = staticState.currencyMap[client.currencyId]?.precision ?? 2; - if ((credit.isDeleted && !userCompany.company.reportIncludeDeleted) || - client.isDeleted) { + if ((credit.isDeleted! && !userCompany.company!.reportIncludeDeleted) || + client.isDeleted!) { continue; } - if (!userCompany.company.reportIncludeDrafts && credit.isDraft) { + if (!userCompany.company!.reportIncludeDrafts && credit.isDraft) { continue; } @@ -113,7 +114,7 @@ ReportResult lineItemReport( for (var column in columns) { dynamic value = ''; - final productId = productKeyMap[lineItem.productKey]; + final productId = productKeyMap[lineItem!.productKey]; switch (column) { case CreditItemReportFields.price: @@ -126,7 +127,7 @@ ReportResult lineItemReport( if (lineItem.productCost != 0) { value = lineItem.productCost; } else { - value = productId == null ? 0.0 : productMap[productId].cost; + value = productId == null ? 0.0 : productMap[productId]!.cost; } break; case CreditItemReportFields.profit: @@ -135,7 +136,7 @@ ReportResult lineItemReport( if (lineItem.productCost != 0) { cost = lineItem.productCost; } else { - cost = productId == null ? 0.0 : productMap[productId].cost; + cost = productId == null ? 0.0 : productMap[productId]!.cost; } value = lineItem.netTotal(credit, precision) - cost; if (column == CreditItemReportFields.markup && cost != 0) { @@ -176,7 +177,7 @@ ReportResult lineItemReport( value = client.displayName; break; case CreditItemReportFields.clientEmail: - value = client.primaryContact.email; + value = client.primaryContact!.email; break; case CreditItemReportFields.dueDate: value = credit.dueDate; @@ -210,8 +211,8 @@ ReportResult lineItemReport( value: value, userCompany: userCompany, reportsUIState: reportsUIState, - column: EnumUtils.parse(column), - )) { + column: EnumUtils.parse(column)!, + )!) { skip = true; } @@ -236,13 +237,13 @@ ReportResult lineItemReport( final selectedColumns = columns.map((item) => EnumUtils.parse(item)).toList(); data.sort((rowA, rowB) => - sortReportTableRows(rowA, rowB, lineItemReportSettings, selectedColumns)); + sortReportTableRows(rowA, rowB, lineItemReportSettings, selectedColumns)!); return ReportResult( allColumns: CreditItemReportFields.values .where((field) => field != CreditItemReportFields.discount || - userCompany.company.enableProductDiscount) + userCompany.company!.enableProductDiscount) .map((e) => EnumUtils.parse(e)) .toList(), columns: selectedColumns, diff --git a/lib/ui/reports/credit_report.dart b/lib/ui/reports/credit_report.dart index 283ed2b00..49839f383 100644 --- a/lib/ui/reports/credit_report.dart +++ b/lib/ui/reports/credit_report.dart @@ -1,5 +1,6 @@ // Package imports: import 'package:built_collection/built_collection.dart'; +import 'package:collection/collection.dart' show IterableNullableExtension; import 'package:invoiceninja_flutter/redux/reports/reports_selectors.dart'; import 'package:memoize/memoize.dart'; @@ -79,22 +80,22 @@ enum CreditReportFields { } var memoizedCreditReport = memo6(( - UserCompanyEntity userCompany, + UserCompanyEntity? userCompany, ReportsUIState reportsUIState, - BuiltMap creditMap, - BuiltMap clientMap, - BuiltMap userMap, + BuiltMap creditMap, + BuiltMap clientMap, + BuiltMap userMap, StaticState staticState, ) => - creditReport(userCompany, reportsUIState, creditMap, clientMap, userMap, + creditReport(userCompany!, reportsUIState, creditMap, clientMap, userMap, staticState)); ReportResult creditReport( UserCompanyEntity userCompany, ReportsUIState reportsUIState, - BuiltMap creditMap, - BuiltMap clientMap, - BuiltMap userMap, + BuiltMap creditMap, + BuiltMap clientMap, + BuiltMap userMap, StaticState staticState, ) { final List> data = []; @@ -104,7 +105,7 @@ ReportResult creditReport( final reportSettings = userCompany.settings?.reportSettings; final creditReportSettings = reportSettings != null && reportSettings.containsKey(kReportCredit) - ? reportSettings[kReportCredit] + ? reportSettings[kReportCredit]! : ReportSettingsEntity(); final defaultColumns = [ @@ -119,14 +120,14 @@ ReportResult creditReport( if (creditReportSettings.columns.isNotEmpty) { columns = BuiltList(creditReportSettings.columns .map((e) => EnumUtils.fromString(CreditReportFields.values, e)) - .where((element) => element != null) + .whereNotNull() .toList()); } else { columns = BuiltList(defaultColumns); } for (var creditId in creditMap.keys) { - final credit = creditMap[creditId]; + final credit = creditMap[creditId]!; final client = clientMap[credit.clientId] ?? ClientEntity(); if (credit.invitations.isEmpty) { @@ -135,12 +136,12 @@ ReportResult creditReport( final contact = client.getContact(credit.invitations.first.clientContactId); - if ((credit.isDeleted && !userCompany.company.reportIncludeDeleted) || - client.isDeleted) { + if ((credit.isDeleted! && !userCompany.company!.reportIncludeDeleted) || + client.isDeleted!) { continue; } - if (!userCompany.company.reportIncludeDrafts && credit.isDraft) { + if (!userCompany.company!.reportIncludeDrafts && credit.isDraft) { continue; } @@ -215,28 +216,28 @@ ReportResult creditReport( value = presentCustomField( value: credit.customValue1, customFieldType: CustomFieldType.invoice1, - company: userCompany.company, + company: userCompany.company!, ); break; case CreditReportFields.invoice2: value = presentCustomField( value: credit.customValue2, customFieldType: CustomFieldType.invoice2, - company: userCompany.company, + company: userCompany.company!, ); break; case CreditReportFields.invoice3: value = presentCustomField( value: credit.customValue3, customFieldType: CustomFieldType.invoice3, - company: userCompany.company, + company: userCompany.company!, ); break; case CreditReportFields.invoice4: value = presentCustomField( value: credit.customValue4, customFieldType: CustomFieldType.invoice4, - company: userCompany.company, + company: userCompany.company!, ); break; case CreditReportFields.surcharge1: @@ -363,20 +364,20 @@ ReportResult creditReport( value: value, userCompany: userCompany, reportsUIState: reportsUIState, - column: EnumUtils.parse(column), - )) { + column: EnumUtils.parse(column)!, + )!) { skip = true; } if (value.runtimeType == bool) { row.add(credit.getReportBool(value: value)); } else if (value.runtimeType == double || value.runtimeType == int) { - String currencyId = client.currencyId; + String? currencyId = client.currencyId; if ([ CreditReportFields.converted_amount, CreditReportFields.converted_balance ].contains(column)) { - currencyId = userCompany.company.currencyId; + currencyId = userCompany.company!.currencyId; } row.add(credit.getReportDouble( value: value, @@ -396,7 +397,7 @@ ReportResult creditReport( final selectedColumns = columns.map((item) => EnumUtils.parse(item)).toList(); data.sort((rowA, rowB) => - sortReportTableRows(rowA, rowB, creditReportSettings, selectedColumns)); + sortReportTableRows(rowA, rowB, creditReportSettings, selectedColumns)!); return ReportResult( allColumns: diff --git a/lib/ui/reports/document_report.dart b/lib/ui/reports/document_report.dart index 9f067dd54..28863205e 100644 --- a/lib/ui/reports/document_report.dart +++ b/lib/ui/reports/document_report.dart @@ -1,5 +1,6 @@ // Package imports: import 'package:built_collection/built_collection.dart'; +import 'package:collection/collection.dart' show IterableNullableExtension; import 'package:intl/intl.dart'; import 'package:memoize/memoize.dart'; @@ -26,13 +27,13 @@ enum DocumentReportFields { } var memoizedDocumentReport = memo4(( - UserCompanyEntity userCompany, + UserCompanyEntity? userCompany, ReportsUIState reportsUIState, - BuiltMap documentMap, - BuiltMap userMap, + BuiltMap documentMap, + BuiltMap userMap, ) => documentReport( - userCompany, + userCompany!, reportsUIState, documentMap, userMap, @@ -41,11 +42,11 @@ var memoizedDocumentReport = memo4(( ReportResult documentReport( UserCompanyEntity userCompany, ReportsUIState reportsUIState, - BuiltMap documentMap, - BuiltMap userMap, + BuiltMap documentMap, + BuiltMap userMap, ) { final List> data = []; - final List entities = []; + final List entities = []; BuiltList columns; final localization = @@ -53,7 +54,7 @@ ReportResult documentReport( final reportSettings = userCompany.settings?.reportSettings; final documentReportSettings = reportSettings != null && reportSettings.containsKey(kReportDocument) - ? reportSettings[kReportDocument] + ? reportSettings[kReportDocument]! : ReportSettingsEntity(); final defaultColumns = [ @@ -69,7 +70,7 @@ ReportResult documentReport( if (documentReportSettings.columns.isNotEmpty) { columns = BuiltList(documentReportSettings.columns .map((e) => EnumUtils.fromString(DocumentReportFields.values, e)) - .where((element) => element != null) + .whereNotNull() .toList()); } else { columns = BuiltList(defaultColumns); @@ -84,34 +85,34 @@ ReportResult documentReport( switch (column) { case DocumentReportFields.name: - value = document.name; + value = document!.name; break; case DocumentReportFields.file_type: - value = document.type; + value = document!.type; break; case DocumentReportFields.created_at: - value = convertTimestampToDateString(document.createdAt); + value = convertTimestampToDateString(document!.createdAt); break; case DocumentReportFields.created_by: - value = userMap[document.createdUserId]?.listDisplayName ?? ''; + value = userMap[document!.createdUserId]?.listDisplayName ?? ''; break; case DocumentReportFields.record_type: - value = document.parentType; + value = document!.parentType; break; case DocumentReportFields.updated_at: - value = convertTimestampToDateString(document.updatedAt); + value = convertTimestampToDateString(document!.updatedAt); break; case DocumentReportFields.size: - value = document.size; + value = document!.size; break; case DocumentReportFields.width: - value = document.width; + value = document!.width; break; case DocumentReportFields.height: - value = document.height; + value = document!.height; break; case DocumentReportFields.private: - value = !document.isPublic; + value = !document!.isPublic; break; } @@ -119,9 +120,9 @@ ReportResult documentReport( value: value, userCompany: userCompany, reportsUIState: reportsUIState, - column: EnumUtils.parse(column), + column: EnumUtils.parse(column)!, localization: localization, - )) { + )!) { skip = true; } @@ -149,7 +150,7 @@ ReportResult documentReport( final selectedColumns = columns.map((item) => EnumUtils.parse(item)).toList(); data.sort((rowA, rowB) => - sortReportTableRows(rowA, rowB, documentReportSettings, selectedColumns)); + sortReportTableRows(rowA, rowB, documentReportSettings, selectedColumns)!); return ReportResult( allColumns: diff --git a/lib/ui/reports/expense_report.dart b/lib/ui/reports/expense_report.dart index 15d99df3a..cbe1e82c2 100644 --- a/lib/ui/reports/expense_report.dart +++ b/lib/ui/reports/expense_report.dart @@ -1,5 +1,6 @@ // Package imports: import 'package:built_collection/built_collection.dart'; +import 'package:collection/collection.dart' show IterableNullableExtension; import 'package:invoiceninja_flutter/redux/reports/reports_selectors.dart'; import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:memoize/memoize.dart'; @@ -55,19 +56,19 @@ enum ExpenseReportFields { } var memoizedExpenseReport = memo10(( - UserCompanyEntity userCompany, + UserCompanyEntity? userCompany, ReportsUIState reportsUIState, - BuiltMap expenseMap, - BuiltMap expenseCategoryMap, - BuiltMap invoiceMap, - BuiltMap clientMap, - BuiltMap vendorMap, - BuiltMap projectMap, - BuiltMap userMap, + BuiltMap expenseMap, + BuiltMap expenseCategoryMap, + BuiltMap invoiceMap, + BuiltMap clientMap, + BuiltMap vendorMap, + BuiltMap projectMap, + BuiltMap userMap, StaticState staticState, ) => expenseReport( - userCompany, + userCompany!, reportsUIState, expenseMap, expenseCategoryMap, @@ -82,13 +83,13 @@ var memoizedExpenseReport = memo10(( ReportResult expenseReport( UserCompanyEntity userCompany, ReportsUIState reportsUIState, - BuiltMap expenseMap, - BuiltMap expenseCategoryMap, - BuiltMap invoiceMap, - BuiltMap clientMap, - BuiltMap vendorMap, - BuiltMap projectMap, - BuiltMap userMap, + BuiltMap expenseMap, + BuiltMap expenseCategoryMap, + BuiltMap invoiceMap, + BuiltMap clientMap, + BuiltMap vendorMap, + BuiltMap projectMap, + BuiltMap userMap, StaticState staticState, ) { final List> data = []; @@ -98,7 +99,7 @@ ReportResult expenseReport( final reportSettings = userCompany.settings?.reportSettings; final expenseReportSettings = reportSettings != null && reportSettings.containsKey(kReportExpense) - ? reportSettings[kReportExpense] + ? reportSettings[kReportExpense]! : ReportSettingsEntity(); final defaultColumns = [ @@ -114,20 +115,20 @@ ReportResult expenseReport( if (expenseReportSettings.columns.isNotEmpty) { columns = BuiltList(expenseReportSettings.columns .map((e) => EnumUtils.fromString(ExpenseReportFields.values, e)) - .where((element) => element != null) + .whereNotNull() .toList()); } else { columns = BuiltList(defaultColumns); } for (var expenseId in expenseMap.keys) { - final expense = expenseMap[expenseId]; + final expense = expenseMap[expenseId]!; final client = clientMap[expense.clientId] ?? ClientEntity(); final invoice = invoiceMap[expense.invoiceId] ?? InvoiceEntity(); final vendor = vendorMap[expense.vendorId] ?? VendorEntity(); final project = projectMap[expense.projectId] ?? ProjectEntity(); - if (expense.isDeleted && !userCompany.company.reportIncludeDeleted) { + if (expense.isDeleted! && !userCompany.company!.reportIncludeDeleted) { continue; } @@ -216,28 +217,28 @@ ReportResult expenseReport( value = presentCustomField( value: expense.customValue1, customFieldType: CustomFieldType.expense1, - company: userCompany.company, + company: userCompany.company!, ); break; case ExpenseReportFields.expense2: value = presentCustomField( value: expense.customValue2, customFieldType: CustomFieldType.expense2, - company: userCompany.company, + company: userCompany.company!, ); break; case ExpenseReportFields.expense3: value = presentCustomField( value: expense.customValue3, customFieldType: CustomFieldType.expense3, - company: userCompany.company, + company: userCompany.company!, ); break; case ExpenseReportFields.expense4: value = presentCustomField( value: expense.customValue4, customFieldType: CustomFieldType.expense4, - company: userCompany.company, + company: userCompany.company!, ); break; case ExpenseReportFields.category: @@ -279,8 +280,8 @@ ReportResult expenseReport( value: value, userCompany: userCompany, reportsUIState: reportsUIState, - column: EnumUtils.parse(column), - )) { + column: EnumUtils.parse(column)!, + )!) { skip = true; } @@ -305,7 +306,7 @@ ReportResult expenseReport( final selectedColumns = columns.map((item) => EnumUtils.parse(item)).toList(); data.sort((rowA, rowB) => - sortReportTableRows(rowA, rowB, expenseReportSettings, selectedColumns)); + sortReportTableRows(rowA, rowB, expenseReportSettings, selectedColumns)!); return ReportResult( allColumns: diff --git a/lib/ui/reports/invoice_item_report.dart b/lib/ui/reports/invoice_item_report.dart index 13d6bfb21..963df2bdf 100644 --- a/lib/ui/reports/invoice_item_report.dart +++ b/lib/ui/reports/invoice_item_report.dart @@ -1,5 +1,6 @@ // Package imports: import 'package:built_collection/built_collection.dart'; +import 'package:collection/collection.dart' show IterableNullableExtension; import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:memoize/memoize.dart'; @@ -43,22 +44,22 @@ enum InvoiceItemReportFields { } var memoizedInvoiceItemReport = memo6(( - UserCompanyEntity userCompany, + UserCompanyEntity? userCompany, ReportsUIState reportsUIState, - BuiltMap productMap, - BuiltMap invoiceMap, - BuiltMap clientMap, + BuiltMap productMap, + BuiltMap invoiceMap, + BuiltMap clientMap, StaticState staticState, ) => - lineItemReport(userCompany, reportsUIState, productMap, invoiceMap, + lineItemReport(userCompany!, reportsUIState, productMap, invoiceMap, clientMap, staticState)); ReportResult lineItemReport( UserCompanyEntity userCompany, ReportsUIState reportsUIState, - BuiltMap productMap, - BuiltMap invoiceMap, - BuiltMap clientMap, + BuiltMap productMap, + BuiltMap invoiceMap, + BuiltMap clientMap, StaticState staticState, ) { final List> data = []; @@ -67,7 +68,7 @@ ReportResult lineItemReport( final reportSettings = userCompany.settings?.reportSettings; final lineItemReportSettings = reportSettings != null && reportSettings.containsKey(kReportInvoiceItem) - ? reportSettings[kReportInvoiceItem] + ? reportSettings[kReportInvoiceItem]! : ReportSettingsEntity(); final defaultColumns = [ @@ -81,7 +82,7 @@ ReportResult lineItemReport( if (lineItemReportSettings.columns.isNotEmpty) { columns = BuiltList(lineItemReportSettings.columns .map((e) => EnumUtils.fromString(InvoiceItemReportFields.values, e)) - .where((element) => element != null) + .whereNotNull() .toList()); } else { columns = BuiltList(defaultColumns); @@ -89,21 +90,21 @@ ReportResult lineItemReport( final productKeyMap = {}; for (var entry in productMap.entries) { - productKeyMap[entry.value.productKey] = entry.value.id; + productKeyMap[entry.value!.productKey] = entry.value!.id; } for (var entry in invoiceMap.entries) { - final invoice = entry.value; + final invoice = entry.value!; final client = clientMap[invoice.clientId] ?? ClientEntity(); final precision = staticState.currencyMap[client.currencyId]?.precision ?? 2; - if ((invoice.isDeleted && !userCompany.company.reportIncludeDeleted) || - client.isDeleted) { + if ((invoice.isDeleted! && !userCompany.company!.reportIncludeDeleted) || + client.isDeleted!) { continue; } - if (!userCompany.company.reportIncludeDrafts && invoice.isDraft) { + if (!userCompany.company!.reportIncludeDrafts && invoice.isDraft) { continue; } @@ -113,7 +114,7 @@ ReportResult lineItemReport( for (var column in columns) { dynamic value = ''; - final productId = productKeyMap[lineItem.productKey]; + final productId = productKeyMap[lineItem!.productKey]; switch (column) { case InvoiceItemReportFields.price: @@ -126,7 +127,7 @@ ReportResult lineItemReport( if (lineItem.productCost != 0) { value = lineItem.productCost; } else { - value = productId == null ? 0.0 : productMap[productId].cost; + value = productId == null ? 0.0 : productMap[productId]!.cost; } break; case InvoiceItemReportFields.profit: @@ -135,7 +136,7 @@ ReportResult lineItemReport( if (lineItem.productCost != 0) { cost = lineItem.productCost; } else { - cost = productId == null ? 0.0 : productMap[productId].cost; + cost = productId == null ? 0.0 : productMap[productId]!.cost; } value = lineItem.netTotal(invoice, precision) - cost; if (column == InvoiceItemReportFields.markup && cost != 0) { @@ -176,7 +177,7 @@ ReportResult lineItemReport( value = client.displayName; break; case InvoiceItemReportFields.clientEmail: - value = client.primaryContact.email; + value = client.primaryContact!.email; break; case InvoiceItemReportFields.dueDate: value = invoice.dueDate; @@ -210,8 +211,8 @@ ReportResult lineItemReport( value: value, userCompany: userCompany, reportsUIState: reportsUIState, - column: EnumUtils.parse(column), - )) { + column: EnumUtils.parse(column)!, + )!) { skip = true; } @@ -236,13 +237,13 @@ ReportResult lineItemReport( final selectedColumns = columns.map((item) => EnumUtils.parse(item)).toList(); data.sort((rowA, rowB) => - sortReportTableRows(rowA, rowB, lineItemReportSettings, selectedColumns)); + sortReportTableRows(rowA, rowB, lineItemReportSettings, selectedColumns)!); return ReportResult( allColumns: InvoiceItemReportFields.values .where((field) => field != InvoiceItemReportFields.discount || - userCompany.company.enableProductDiscount) + userCompany.company!.enableProductDiscount) .map((e) => EnumUtils.parse(e)) .toList(), columns: selectedColumns, diff --git a/lib/ui/reports/invoice_report.dart b/lib/ui/reports/invoice_report.dart index abb0f668a..e81955d29 100644 --- a/lib/ui/reports/invoice_report.dart +++ b/lib/ui/reports/invoice_report.dart @@ -1,5 +1,6 @@ // Package imports: import 'package:built_collection/built_collection.dart'; +import 'package:collection/collection.dart' show IterableNullableExtension; import 'package:invoiceninja_flutter/redux/reports/reports_selectors.dart'; import 'package:memoize/memoize.dart'; @@ -95,18 +96,18 @@ enum InvoiceReportFields { } var memoizedInvoiceReport = memo9(( - UserCompanyEntity userCompany, + UserCompanyEntity? userCompany, ReportsUIState reportsUIState, - BuiltMap invoiceMap, - BuiltMap clientMap, - BuiltMap userMap, - BuiltMap vendorMap, - BuiltMap projectMap, - BuiltMap paymentMap, + BuiltMap invoiceMap, + BuiltMap clientMap, + BuiltMap userMap, + BuiltMap vendorMap, + BuiltMap projectMap, + BuiltMap paymentMap, StaticState staticState, ) => invoiceReport( - userCompany, + userCompany!, reportsUIState, invoiceMap, clientMap, @@ -120,12 +121,12 @@ var memoizedInvoiceReport = memo9(( ReportResult invoiceReport( UserCompanyEntity userCompany, ReportsUIState reportsUIState, - BuiltMap invoiceMap, - BuiltMap clientMap, - BuiltMap userMap, - BuiltMap vendorMap, - BuiltMap projectMap, - BuiltMap paymentMap, + BuiltMap invoiceMap, + BuiltMap clientMap, + BuiltMap userMap, + BuiltMap vendorMap, + BuiltMap projectMap, + BuiltMap paymentMap, StaticState staticState, ) { final List> data = []; @@ -135,7 +136,7 @@ ReportResult invoiceReport( final reportSettings = userCompany.settings?.reportSettings; final invoiceReportSettings = reportSettings != null && reportSettings.containsKey(kReportInvoice) - ? reportSettings[kReportInvoice] + ? reportSettings[kReportInvoice]! : ReportSettingsEntity(); final defaultColumns = [ @@ -151,24 +152,24 @@ ReportResult invoiceReport( if (invoiceReportSettings.columns.isNotEmpty) { columns = BuiltList(invoiceReportSettings.columns .map((e) => EnumUtils.fromString(InvoiceReportFields.values, e)) - .where((element) => element != null) + .whereNotNull() .toList()); } else { columns = BuiltList(defaultColumns); } // Get the last payment for each invoice - final lastPaymentMap = {}; + final lastPaymentMap = {}; if (columns.contains(InvoiceReportFields.paid_date)) { // Loop through each payment and add to the map if it is the last payment for the invoice paymentMap.forEach((paymentId, payment) { - if (payment.paymentables != null && payment.paymentables.isNotEmpty) { + if (payment!.paymentables != null && payment.paymentables.isNotEmpty) { // Loop through each invoice on the payment payment.paymentables.forEach((paymentable) { final invoiceId = paymentable.invoiceId; // If the invoice is in the invoice map and the payment is the last payment for the invoice if (lastPaymentMap.containsKey(invoiceId)) { - if (payment.date.compareTo(lastPaymentMap[invoiceId].date) == 1) { + if (payment.date.compareTo(lastPaymentMap[invoiceId]!.date) == 1) { lastPaymentMap[invoiceId] = payment; } } else { @@ -180,7 +181,7 @@ ReportResult invoiceReport( } for (var invoiceId in invoiceMap.keys) { - final invoice = invoiceMap[invoiceId]; + final invoice = invoiceMap[invoiceId]!; final client = clientMap[invoice.clientId] ?? ClientEntity(); if (invoice.invitations.isEmpty) { @@ -190,12 +191,12 @@ ReportResult invoiceReport( final contact = client.getContact(invoice.invitations.first.clientContactId); - if ((invoice.isDeleted && !userCompany.company.reportIncludeDeleted) || - client.isDeleted) { + if ((invoice.isDeleted! && !userCompany.company!.reportIncludeDeleted) || + client.isDeleted!) { continue; } - if (!userCompany.company.reportIncludeDrafts && invoice.isDraft) { + if (!userCompany.company!.reportIncludeDrafts && invoice.isDraft) { continue; } @@ -290,28 +291,28 @@ ReportResult invoiceReport( value = presentCustomField( value: invoice.customValue1, customFieldType: CustomFieldType.invoice1, - company: userCompany.company, + company: userCompany.company!, ); break; case InvoiceReportFields.invoice2: value = presentCustomField( value: invoice.customValue2, customFieldType: CustomFieldType.invoice2, - company: userCompany.company, + company: userCompany.company!, ); break; case InvoiceReportFields.invoice3: value = presentCustomField( value: invoice.customValue3, customFieldType: CustomFieldType.invoice3, - company: userCompany.company, + company: userCompany.company!, ); break; case InvoiceReportFields.invoice4: value = presentCustomField( value: invoice.customValue4, customFieldType: CustomFieldType.invoice4, - company: userCompany.company, + company: userCompany.company!, ); break; case InvoiceReportFields.has_expenses: @@ -474,8 +475,8 @@ ReportResult invoiceReport( value: value, userCompany: userCompany, reportsUIState: reportsUIState, - column: EnumUtils.parse(column), - )) { + column: EnumUtils.parse(column)!, + )!) { skip = true; } @@ -485,12 +486,12 @@ ReportResult invoiceReport( row.add( invoice.getReportAge(value: value, currencyId: client.currencyId)); } else if (value.runtimeType == double || value.runtimeType == int) { - String currencyId = client.currencyId; + String? currencyId = client.currencyId; if ([ InvoiceReportFields.converted_amount, InvoiceReportFields.converted_balance ].contains(column)) { - currencyId = userCompany.company.currencyId; + currencyId = userCompany.company!.currencyId; } row.add(invoice.getReportDouble( value: value, @@ -510,7 +511,7 @@ ReportResult invoiceReport( final selectedColumns = columns.map((item) => EnumUtils.parse(item)).toList(); data.sort((rowA, rowB) => - sortReportTableRows(rowA, rowB, invoiceReportSettings, selectedColumns)); + sortReportTableRows(rowA, rowB, invoiceReportSettings, selectedColumns)!); return ReportResult( allColumns: diff --git a/lib/ui/reports/invoice_tax_report.dart b/lib/ui/reports/invoice_tax_report.dart index b862109e1..6a2aeef01 100644 --- a/lib/ui/reports/invoice_tax_report.dart +++ b/lib/ui/reports/invoice_tax_report.dart @@ -1,5 +1,6 @@ // Package imports: import 'package:built_collection/built_collection.dart'; +import 'package:collection/collection.dart' show IterableNullableExtension; import 'package:memoize/memoize.dart'; // Project imports: @@ -25,28 +26,28 @@ enum TaxRateReportFields { } var memoizedInvoiceTaxReport = memo9(( - UserCompanyEntity userCompany, + UserCompanyEntity? userCompany, ReportsUIState reportsUIState, - BuiltMap taxRateMap, - BuiltMap invoiceMap, - BuiltMap creditMap, - BuiltMap clientMap, - BuiltMap paymentMap, - BuiltMap userMap, + BuiltMap taxRateMap, + BuiltMap invoiceMap, + BuiltMap creditMap, + BuiltMap clientMap, + BuiltMap paymentMap, + BuiltMap userMap, StaticState staticState, ) => - taxReport(userCompany, reportsUIState, taxRateMap, invoiceMap, creditMap, + taxReport(userCompany!, reportsUIState, taxRateMap, invoiceMap, creditMap, clientMap, paymentMap, userMap, staticState)); ReportResult taxReport( UserCompanyEntity userCompany, ReportsUIState reportsUIState, - BuiltMap taxRateMap, - BuiltMap invoiceMap, - BuiltMap creditMap, - BuiltMap clientMap, - BuiltMap paymentMap, - BuiltMap userMap, + BuiltMap taxRateMap, + BuiltMap invoiceMap, + BuiltMap creditMap, + BuiltMap clientMap, + BuiltMap paymentMap, + BuiltMap userMap, StaticState staticState, ) { final List> data = []; @@ -55,7 +56,7 @@ ReportResult taxReport( final reportSettings = userCompany.settings?.reportSettings; final taxRateReportSettings = reportSettings != null && reportSettings.containsKey(kReportInvoiceTax) - ? reportSettings[kReportInvoiceTax] + ? reportSettings[kReportInvoiceTax]! : ReportSettingsEntity(); final defaultColumns = [ @@ -70,7 +71,7 @@ ReportResult taxReport( if (taxRateReportSettings.columns.isNotEmpty) { columns = BuiltList(taxRateReportSettings.columns .map((e) => EnumUtils.fromString(TaxRateReportFields.values, e)) - .where((element) => element != null) + .whereNotNull() .toList()); } else { columns = BuiltList(defaultColumns); @@ -79,11 +80,11 @@ ReportResult taxReport( for (var invoiceId in invoiceMap.keys) { final invoice = invoiceMap[invoiceId]; - if (!userCompany.company.reportIncludeDrafts && invoice.isDraft) { + if (!userCompany.company!.reportIncludeDrafts && invoice!.isDraft) { continue; } - if (!invoice.isDeleted && invoice.isSent) { + if (!invoice!.isDeleted! && invoice.isSent) { final client = clientMap[invoice.clientId] ?? ClientEntity(); final precision = staticState.currencyMap[client.currencyId]?.precision ?? 2; @@ -93,8 +94,8 @@ ReportResult taxReport( bool skip = false; final List row = []; - final String taxName = taxes[key]['name']; - final double taxRate = taxes[key]['rate']; + final String? taxName = taxes[key]!['name']; + final double? taxRate = taxes[key]!['rate']; for (var column in columns) { dynamic value = ''; @@ -122,10 +123,10 @@ ReportResult taxReport( value = taxRate; break; case TaxRateReportFields.tax_amount: - value = taxes[key]['amount'] ?? 0.0; + value = taxes[key]!['amount'] ?? 0.0; break; case TaxRateReportFields.tax_paid: - value = taxes[key]['paid'] ?? 0.0; + value = taxes[key]!['paid'] ?? 0.0; break; case TaxRateReportFields.currency: value = staticState.currencyMap[client.currencyId]?.name ?? @@ -140,8 +141,8 @@ ReportResult taxReport( value: value, userCompany: userCompany, reportsUIState: reportsUIState, - column: EnumUtils.parse(column), - )) { + column: EnumUtils.parse(column)!, + )!) { skip = true; } @@ -163,8 +164,8 @@ ReportResult taxReport( } for (var creditId in creditMap.keys) { - final credit = creditMap[creditId]; - if (!credit.isDeleted && credit.isSent) { + final credit = creditMap[creditId]!; + if (!credit.isDeleted! && credit.isSent) { final client = clientMap[credit.clientId] ?? ClientEntity(id: credit.clientId); final precision = @@ -175,8 +176,8 @@ ReportResult taxReport( bool skip = false; final List row = []; - final String taxName = taxes[key]['name']; - final double taxRate = taxes[key]['rate']; + final String? taxName = taxes[key]!['name']; + final double? taxRate = taxes[key]!['rate']; for (var column in columns) { dynamic value = ''; @@ -204,10 +205,10 @@ ReportResult taxReport( value = taxRate; break; case TaxRateReportFields.tax_amount: - value = (taxes[key]['amount'] ?? 0.0) * -1; + value = (taxes[key]!['amount'] ?? 0.0) * -1; break; case TaxRateReportFields.tax_paid: - value = (taxes[key]['paid'] ?? 0.0) * -1; + value = (taxes[key]!['paid'] ?? 0.0) * -1; break; case TaxRateReportFields.currency: value = staticState.currencyMap[client.currencyId]?.name ?? @@ -222,8 +223,8 @@ ReportResult taxReport( value: value, userCompany: userCompany, reportsUIState: reportsUIState, - column: EnumUtils.parse(column), - )) { + column: EnumUtils.parse(column)!, + )!) { skip = true; } @@ -246,7 +247,7 @@ ReportResult taxReport( final selectedColumns = columns.map((item) => EnumUtils.parse(item)).toList(); data.sort((rowA, rowB) => - sortReportTableRows(rowA, rowB, taxRateReportSettings, selectedColumns)); + sortReportTableRows(rowA, rowB, taxRateReportSettings, selectedColumns)!); return ReportResult( allColumns: diff --git a/lib/ui/reports/payment_report.dart b/lib/ui/reports/payment_report.dart index 3d3f13c9d..163f47fcd 100644 --- a/lib/ui/reports/payment_report.dart +++ b/lib/ui/reports/payment_report.dart @@ -1,5 +1,6 @@ // Package imports: import 'package:built_collection/built_collection.dart'; +import 'package:collection/collection.dart' show IterableNullableExtension; import 'package:invoiceninja_flutter/redux/reports/reports_selectors.dart'; import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:memoize/memoize.dart'; @@ -48,17 +49,17 @@ enum PaymentReportFields { var memoizedPaymentReport = memo8( ( - UserCompanyEntity userCompany, + UserCompanyEntity? userCompany, ReportsUIState reportsUIState, - BuiltMap paymentMap, - BuiltMap clientMap, - BuiltMap userMap, - BuiltMap invoiceMap, - BuiltMap creditMap, + BuiltMap paymentMap, + BuiltMap clientMap, + BuiltMap userMap, + BuiltMap invoiceMap, + BuiltMap creditMap, StaticState staticState, ) => paymentReport( - userCompany, + userCompany!, reportsUIState, paymentMap, clientMap, @@ -72,11 +73,11 @@ var memoizedPaymentReport = memo8( ReportResult paymentReport( UserCompanyEntity userCompany, ReportsUIState reportsUIState, - BuiltMap paymentMap, - BuiltMap clientMap, - BuiltMap userMap, - BuiltMap invoiceMap, - BuiltMap creditMap, + BuiltMap paymentMap, + BuiltMap clientMap, + BuiltMap userMap, + BuiltMap invoiceMap, + BuiltMap creditMap, StaticState staticState, ) { final List> data = []; @@ -86,7 +87,7 @@ ReportResult paymentReport( final reportSettings = userCompany.settings?.reportSettings; final paymentReportSettings = reportSettings != null && reportSettings.containsKey(kReportPayment) - ? reportSettings[kReportPayment] + ? reportSettings[kReportPayment]! : ReportSettingsEntity(); final defaultColumns = [ @@ -100,7 +101,7 @@ ReportResult paymentReport( if (paymentReportSettings.columns.isNotEmpty) { columns = BuiltList(paymentReportSettings.columns .map((e) => EnumUtils.fromString(PaymentReportFields.values, e)) - .where((element) => element != null) + .whereNotNull() .toList()); } else { columns = BuiltList(defaultColumns); @@ -113,16 +114,16 @@ ReportResult paymentReport( for (var paymentId in paymentMap.keys) { final payment = paymentMap[paymentId] ?? PaymentEntity(); paymentInvoiceMap[payment.id] = []; - if (payment.isDeleted && !userCompany.company.reportIncludeDeleted) { + if (payment.isDeleted! && !userCompany.company!.reportIncludeDeleted) { continue; } for (var invoicePaymentable in payment.invoicePaymentables) { final invoice = invoiceMap[invoicePaymentable.invoiceId] ?? InvoiceEntity(); - if (invoice.isDeleted && !userCompany.company.reportIncludeDeleted) { + if (invoice.isDeleted! && !userCompany.company!.reportIncludeDeleted) { continue; } - paymentInvoiceMap[payment.id].add(invoice.number); + paymentInvoiceMap[payment.id]!.add(invoice.number); } } } @@ -131,16 +132,16 @@ ReportResult paymentReport( for (var paymentId in paymentMap.keys) { final payment = paymentMap[paymentId] ?? PaymentEntity(); paymentCreditMap[payment.id] = []; - if (payment.isDeleted && !userCompany.company.reportIncludeDeleted) { + if (payment.isDeleted! && !userCompany.company!.reportIncludeDeleted) { continue; } for (var creditPaymentable in payment.creditPaymentables) { final credit = creditMap[creditPaymentable.invoiceId] ?? InvoiceEntity(); - if (credit.isDeleted && !userCompany.company.reportIncludeDeleted) { + if (credit.isDeleted! && !userCompany.company!.reportIncludeDeleted) { continue; } - paymentCreditMap[payment.id].add(credit.number); + paymentCreditMap[payment.id]!.add(credit.number); } } } @@ -149,8 +150,8 @@ ReportResult paymentReport( final payment = paymentMap[paymentId] ?? PaymentEntity(); final client = clientMap[payment.clientId] ?? ClientEntity(); - if ((payment.isDeleted && !userCompany.company.reportIncludeDeleted) || - client.isDeleted) { + if ((payment.isDeleted! && !userCompany.company!.reportIncludeDeleted) || + client.isDeleted!) { continue; } @@ -222,7 +223,7 @@ ReportResult paymentReport( value = client.number; break; case PaymentReportFields.client_email: - value = client.primaryContact.email; + value = client.primaryContact!.email; break; case PaymentReportFields.transaction_reference: value = payment.transactionReference; @@ -234,28 +235,28 @@ ReportResult paymentReport( value = presentCustomField( value: payment.customValue1, customFieldType: CustomFieldType.payment1, - company: userCompany.company, + company: userCompany.company!, ); break; case PaymentReportFields.payment2: value = presentCustomField( value: payment.customValue2, customFieldType: CustomFieldType.payment2, - company: userCompany.company, + company: userCompany.company!, ); break; case PaymentReportFields.payment3: value = presentCustomField( value: payment.customValue3, customFieldType: CustomFieldType.payment3, - company: userCompany.company, + company: userCompany.company!, ); break; case PaymentReportFields.payment4: value = presentCustomField( value: payment.customValue4, customFieldType: CustomFieldType.payment4, - company: userCompany.company, + company: userCompany.company!, ); break; case PaymentReportFields.exchange_rate: @@ -276,8 +277,8 @@ ReportResult paymentReport( value: value, userCompany: userCompany, reportsUIState: reportsUIState, - column: EnumUtils.parse(column), - )) { + column: EnumUtils.parse(column)!, + )!) { skip = true; } @@ -302,7 +303,7 @@ ReportResult paymentReport( final selectedColumns = columns.map((item) => EnumUtils.parse(item)).toList(); data.sort((rowA, rowB) => - sortReportTableRows(rowA, rowB, paymentReportSettings, selectedColumns)); + sortReportTableRows(rowA, rowB, paymentReportSettings, selectedColumns)!); return ReportResult( allColumns: diff --git a/lib/ui/reports/payment_tax_report.dart b/lib/ui/reports/payment_tax_report.dart index 6c99849cc..9a616f15a 100644 --- a/lib/ui/reports/payment_tax_report.dart +++ b/lib/ui/reports/payment_tax_report.dart @@ -1,5 +1,6 @@ // Package imports: import 'package:built_collection/built_collection.dart'; +import 'package:collection/collection.dart' show IterableNullableExtension; import 'package:memoize/memoize.dart'; // Project imports: @@ -26,28 +27,28 @@ enum TaxRateReportFields { } var memoizedPaymentTaxReport = memo9(( - UserCompanyEntity userCompany, + UserCompanyEntity? userCompany, ReportsUIState reportsUIState, - BuiltMap taxRateMap, - BuiltMap invoiceMap, - BuiltMap creditMap, - BuiltMap clientMap, - BuiltMap paymentMap, - BuiltMap userMap, + BuiltMap taxRateMap, + BuiltMap invoiceMap, + BuiltMap creditMap, + BuiltMap clientMap, + BuiltMap paymentMap, + BuiltMap userMap, StaticState staticState, ) => - paymentTaxReport(userCompany, reportsUIState, taxRateMap, invoiceMap, + paymentTaxReport(userCompany!, reportsUIState, taxRateMap, invoiceMap, creditMap, clientMap, paymentMap, userMap, staticState)); ReportResult paymentTaxReport( UserCompanyEntity userCompany, ReportsUIState reportsUIState, - BuiltMap taxRateMap, - BuiltMap invoiceMap, - BuiltMap creditMap, - BuiltMap clientMap, - BuiltMap paymentMap, - BuiltMap userMap, + BuiltMap taxRateMap, + BuiltMap invoiceMap, + BuiltMap creditMap, + BuiltMap clientMap, + BuiltMap paymentMap, + BuiltMap userMap, StaticState staticState, ) { final List> data = []; @@ -56,7 +57,7 @@ ReportResult paymentTaxReport( final reportSettings = userCompany.settings?.reportSettings; final taxRateReportSettings = reportSettings != null && reportSettings.containsKey(kReportPaymentTax) - ? reportSettings[kReportPaymentTax] + ? reportSettings[kReportPaymentTax]! : ReportSettingsEntity(); final defaultColumns = [ @@ -72,7 +73,7 @@ ReportResult paymentTaxReport( if (taxRateReportSettings.columns.isNotEmpty) { columns = BuiltList(taxRateReportSettings.columns .map((e) => EnumUtils.fromString(TaxRateReportFields.values, e)) - .where((element) => element != null) + .whereNotNull() .toList()); } else { columns = BuiltList(defaultColumns); @@ -81,8 +82,8 @@ ReportResult paymentTaxReport( for (var paymentId in paymentMap.keys) { final payment = paymentMap[paymentId] ?? PaymentEntity(); - if (!payment.isDeleted) { - final client = clientMap[payment.clientId]; + if (!payment.isDeleted!) { + final client = clientMap[payment.clientId]!; final precision = staticState.currencyMap[client.currencyId]?.precision ?? 2; @@ -96,15 +97,15 @@ ReportResult paymentTaxReport( multiplier = -1; } - if (invoice.isSent && !invoice.isDeleted) { + if (invoice.isSent && !invoice.isDeleted!) { final taxes = invoice.getTaxes(precision); for (final key in taxes.keys) { bool skip = false; final List row = []; - final String taxName = taxes[key]['name']; - final double taxRate = taxes[key]['rate']; + final String? taxName = taxes[key]!['name']; + final double? taxRate = taxes[key]!['rate']; for (var column in columns) { dynamic value = ''; @@ -135,13 +136,13 @@ ReportResult paymentTaxReport( value = taxRate; break; case TaxRateReportFields.tax_amount: - value = (taxes[key]['amount'] ?? 0.0) * + value = (taxes[key]!['amount'] ?? 0.0) * paymentable.amount / invoice.amount * multiplier; break; case TaxRateReportFields.tax_paid: - value = (taxes[key]['paid'] ?? 0.0) * + value = (taxes[key]!['paid'] ?? 0.0) * paymentable.amount / invoice.amount * multiplier; @@ -162,8 +163,8 @@ ReportResult paymentTaxReport( value: value, userCompany: userCompany, reportsUIState: reportsUIState, - column: EnumUtils.parse(column), - )) { + column: EnumUtils.parse(column)!, + )!) { skip = true; } @@ -189,7 +190,7 @@ ReportResult paymentTaxReport( final selectedColumns = columns.map((item) => EnumUtils.parse(item)).toList(); data.sort((rowA, rowB) => - sortReportTableRows(rowA, rowB, taxRateReportSettings, selectedColumns)); + sortReportTableRows(rowA, rowB, taxRateReportSettings, selectedColumns)!); return ReportResult( allColumns: diff --git a/lib/ui/reports/product_report.dart b/lib/ui/reports/product_report.dart index c6f845d22..28028605f 100644 --- a/lib/ui/reports/product_report.dart +++ b/lib/ui/reports/product_report.dart @@ -1,5 +1,6 @@ // Package imports: import 'package:built_collection/built_collection.dart'; +import 'package:collection/collection.dart' show IterableNullableExtension; import 'package:invoiceninja_flutter/redux/product/product_selectors.dart'; import 'package:invoiceninja_flutter/redux/reports/reports_selectors.dart'; import 'package:memoize/memoize.dart'; @@ -34,22 +35,22 @@ enum ProductReportFields { } var memoizedProductReport = memo6(( - UserCompanyEntity userCompany, + UserCompanyEntity? userCompany, ReportsUIState reportsUIState, - BuiltMap productMap, - BuiltMap vendorMap, - BuiltMap userMap, + BuiltMap productMap, + BuiltMap vendorMap, + BuiltMap userMap, StaticState staticState, ) => - productReport(userCompany, reportsUIState, productMap, vendorMap, userMap, + productReport(userCompany!, reportsUIState, productMap, vendorMap, userMap, staticState)); ReportResult productReport( UserCompanyEntity userCompany, ReportsUIState reportsUIState, - BuiltMap productMap, - BuiltMap vendorMap, - BuiltMap userMap, + BuiltMap productMap, + BuiltMap vendorMap, + BuiltMap userMap, StaticState staticState, ) { final List> data = []; @@ -59,7 +60,7 @@ ReportResult productReport( final reportSettings = userCompany.settings?.reportSettings; final productReportSettings = reportSettings != null && reportSettings.containsKey(kReportProduct) - ? reportSettings[kReportProduct] + ? reportSettings[kReportProduct]! : ReportSettingsEntity(); final defaultColumns = [ @@ -73,16 +74,16 @@ ReportResult productReport( if (productReportSettings.columns.isNotEmpty) { columns = BuiltList(productReportSettings.columns .map((e) => EnumUtils.fromString(ProductReportFields.values, e)) - .where((element) => element != null) + .whereNotNull() .toList()); } else { columns = BuiltList(defaultColumns); } for (var productId in productMap.keys) { - final product = productMap[productId]; + final product = productMap[productId]!; - if (product.isDeleted && !userCompany.company.reportIncludeDeleted) { + if (product.isDeleted! && !userCompany.company!.reportIncludeDeleted) { continue; } @@ -124,28 +125,28 @@ ReportResult productReport( value = presentCustomField( value: product.customValue1, customFieldType: CustomFieldType.product1, - company: userCompany.company, + company: userCompany.company!, ); break; case ProductReportFields.product2: value = presentCustomField( value: product.customValue2, customFieldType: CustomFieldType.product2, - company: userCompany.company, + company: userCompany.company!, ); break; case ProductReportFields.product3: value = presentCustomField( value: product.customValue3, customFieldType: CustomFieldType.product3, - company: userCompany.company, + company: userCompany.company!, ); break; case ProductReportFields.product4: value = presentCustomField( value: product.customValue4, customFieldType: CustomFieldType.product4, - company: userCompany.company, + company: userCompany.company!, ); break; case ProductReportFields.stock_quantity: @@ -167,8 +168,8 @@ ReportResult productReport( value: value, userCompany: userCompany, reportsUIState: reportsUIState, - column: EnumUtils.parse(column), - )) { + column: EnumUtils.parse(column)!, + )!) { skip = true; } @@ -180,7 +181,7 @@ ReportResult productReport( ].contains(column)) { row.add(product.getReportDouble( value: value, - currencyId: userCompany.company.currencyId, + currencyId: userCompany.company!.currencyId, formatNumberType: FormatNumberType.double, )); } else if (column == ProductReportFields.notification_threshold) { @@ -189,7 +190,7 @@ ReportResult productReport( )); } else if (value.runtimeType == double || value.runtimeType == int) { row.add(product.getReportDouble( - value: value, currencyId: userCompany.company.currencyId)); + value: value, currencyId: userCompany.company!.currencyId)); } else { row.add(product.getReportString(value: value)); } @@ -203,7 +204,7 @@ ReportResult productReport( final selectedColumns = columns.map((item) => EnumUtils.parse(item)).toList(); data.sort((rowA, rowB) => - sortReportTableRows(rowA, rowB, productReportSettings, selectedColumns)); + sortReportTableRows(rowA, rowB, productReportSettings, selectedColumns)!); return ReportResult( allColumns: diff --git a/lib/ui/reports/profit_loss_report.dart b/lib/ui/reports/profit_loss_report.dart index 108bb7a8c..1e0a87f68 100644 --- a/lib/ui/reports/profit_loss_report.dart +++ b/lib/ui/reports/profit_loss_report.dart @@ -1,5 +1,6 @@ // Package imports: import 'package:built_collection/built_collection.dart'; +import 'package:collection/collection.dart' show IterableNullableExtension; import 'package:invoiceninja_flutter/main_app.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:memoize/memoize.dart'; @@ -37,18 +38,18 @@ enum ProfitAndLossReportFields { } var memoizedProfitAndLossReport = memo9(( - UserCompanyEntity userCompany, + UserCompanyEntity? userCompany, ReportsUIState reportsUIState, - BuiltMap clientMap, - BuiltMap paymentMap, - BuiltMap expenseMap, - BuiltMap expenseCategoryMap, - BuiltMap vendorMap, - BuiltMap userMap, + BuiltMap clientMap, + BuiltMap paymentMap, + BuiltMap expenseMap, + BuiltMap expenseCategoryMap, + BuiltMap vendorMap, + BuiltMap userMap, StaticState staticState, ) => profitAndLossReport( - userCompany, + userCompany!, reportsUIState, clientMap, paymentMap, @@ -62,12 +63,12 @@ var memoizedProfitAndLossReport = memo9(( ReportResult profitAndLossReport( UserCompanyEntity userCompany, ReportsUIState reportsUIState, - BuiltMap clientMap, - BuiltMap paymentMap, - BuiltMap expenseMap, - BuiltMap expenseCategoryMap, - BuiltMap vendorMap, - BuiltMap userMap, + BuiltMap clientMap, + BuiltMap paymentMap, + BuiltMap expenseMap, + BuiltMap expenseCategoryMap, + BuiltMap vendorMap, + BuiltMap userMap, StaticState staticState, ) { final List> data = []; @@ -76,7 +77,7 @@ ReportResult profitAndLossReport( final reportSettings = userCompany.settings?.reportSettings; final profitAndLossReportSettings = reportSettings != null && reportSettings.containsKey(kReportProfitAndLoss) - ? reportSettings[kReportProfitAndLoss] + ? reportSettings[kReportProfitAndLoss]! : ReportSettingsEntity(); final defaultColumns = [ @@ -92,18 +93,18 @@ ReportResult profitAndLossReport( if (profitAndLossReportSettings.columns.isNotEmpty) { columns = BuiltList(profitAndLossReportSettings.columns .map((e) => EnumUtils.fromString(ProfitAndLossReportFields.values, e)) - .where((element) => element != null) + .whereNotNull() .toList()); } else { columns = BuiltList(defaultColumns); } for (var paymentId in paymentMap.keys) { - final payment = paymentMap[paymentId]; + final payment = paymentMap[paymentId]!; final client = clientMap[payment.clientId] ?? ClientEntity(); final vendor = vendorMap[payment.vendorId] ?? VendorEntity(); - bool skip = payment.isDeleted || client.isDeleted; + bool skip = payment.isDeleted! || client.isDeleted!; final List row = []; for (var column in columns) { @@ -111,7 +112,7 @@ ReportResult profitAndLossReport( switch (column) { case ProfitAndLossReportFields.type: - value = AppLocalization.of(navigatorKey.currentContext).payment; + value = AppLocalization.of(navigatorKey.currentContext!)!.payment; break; case ProfitAndLossReportFields.client: value = client?.displayName; @@ -168,7 +169,7 @@ ReportResult profitAndLossReport( value = ''; break; case ProfitAndLossReportFields.currency: - value = staticState.currencyMap[client.currencyId].name; + value = staticState.currencyMap[client.currencyId]!.name; break; case ProfitAndLossReportFields.transaction_reference: value = payment.transactionReference; @@ -179,8 +180,8 @@ ReportResult profitAndLossReport( value: value, userCompany: userCompany, reportsUIState: reportsUIState, - column: EnumUtils.parse(column), - )) { + column: EnumUtils.parse(column)!, + )!) { skip = true; } @@ -202,11 +203,11 @@ ReportResult profitAndLossReport( } for (var expenseId in expenseMap.keys) { - final expense = expenseMap[expenseId]; + final expense = expenseMap[expenseId]!; final client = clientMap[expense.clientId] ?? ClientEntity(); final vendor = vendorMap[expense.vendorId] ?? VendorEntity(); - bool skip = expense.isDeleted || (client?.isDeleted ?? false); + bool skip = expense.isDeleted! || (client?.isDeleted ?? false); final List row = []; for (var column in columns) { @@ -214,7 +215,7 @@ ReportResult profitAndLossReport( switch (column) { case ProfitAndLossReportFields.type: - value = AppLocalization.of(navigatorKey.currentContext).expense; + value = AppLocalization.of(navigatorKey.currentContext!)!.expense; break; case ProfitAndLossReportFields.client: value = client?.displayName; @@ -271,7 +272,7 @@ ReportResult profitAndLossReport( value = expenseCategoryMap[expense.categoryId]?.name ?? ''; break; case ProfitAndLossReportFields.currency: - value = staticState.currencyMap[expense.currencyId].name; + value = staticState.currencyMap[expense.currencyId]!.name; break; case ProfitAndLossReportFields.transaction_reference: value = expense.transactionReference; @@ -282,8 +283,8 @@ ReportResult profitAndLossReport( value: value, userCompany: userCompany, reportsUIState: reportsUIState, - column: EnumUtils.parse(column), - )) { + column: EnumUtils.parse(column)!, + )!) { skip = true; } @@ -306,7 +307,7 @@ ReportResult profitAndLossReport( final selectedColumns = columns.map((item) => EnumUtils.parse(item)).toList(); data.sort((rowA, rowB) => sortReportTableRows( - rowA, rowB, profitAndLossReportSettings, selectedColumns)); + rowA, rowB, profitAndLossReportSettings, selectedColumns)!); return ReportResult( allColumns: ProfitAndLossReportFields.values diff --git a/lib/ui/reports/purchase_order_item_report.dart b/lib/ui/reports/purchase_order_item_report.dart index 6461b2c10..e62e10f71 100644 --- a/lib/ui/reports/purchase_order_item_report.dart +++ b/lib/ui/reports/purchase_order_item_report.dart @@ -1,5 +1,6 @@ // Package imports: import 'package:built_collection/built_collection.dart'; +import 'package:collection/collection.dart' show IterableNullableExtension; import 'package:invoiceninja_flutter/constants.dart'; import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:memoize/memoize.dart'; @@ -40,24 +41,24 @@ enum PurchaseOrderItemReportFields { } var memoizedPurchaseOrderItemReport = memo7(( - UserCompanyEntity userCompany, + UserCompanyEntity? userCompany, ReportsUIState reportsUIState, - BuiltMap productMap, - BuiltMap purchaseOrderMap, - BuiltMap clientMap, - BuiltMap vendorMap, + BuiltMap productMap, + BuiltMap purchaseOrderMap, + BuiltMap clientMap, + BuiltMap vendorMap, StaticState staticState, ) => - lineItemReport(userCompany, reportsUIState, productMap, purchaseOrderMap, + lineItemReport(userCompany!, reportsUIState, productMap, purchaseOrderMap, clientMap, vendorMap, staticState)); ReportResult lineItemReport( UserCompanyEntity userCompany, ReportsUIState reportsUIState, - BuiltMap productMap, - BuiltMap purchaseOrderMap, - BuiltMap clientMap, - BuiltMap vendorMap, + BuiltMap productMap, + BuiltMap purchaseOrderMap, + BuiltMap clientMap, + BuiltMap vendorMap, StaticState staticState, ) { final List> data = []; @@ -66,7 +67,7 @@ ReportResult lineItemReport( final reportSettings = userCompany.settings?.reportSettings; final lineItemReportSettings = reportSettings != null && reportSettings.containsKey(kReportPurchaseOrderItem) - ? reportSettings[kReportPurchaseOrderItem] + ? reportSettings[kReportPurchaseOrderItem]! : ReportSettingsEntity(); final defaultColumns = [ @@ -81,7 +82,7 @@ ReportResult lineItemReport( columns = BuiltList(lineItemReportSettings.columns .map((e) => EnumUtils.fromString(PurchaseOrderItemReportFields.values, e)) - .where((element) => element != null) + .whereNotNull() .toList()); } else { columns = BuiltList(defaultColumns); @@ -89,22 +90,22 @@ ReportResult lineItemReport( final productKeyMap = {}; for (var entry in productMap.entries) { - productKeyMap[entry.value.productKey] = entry.value.id; + productKeyMap[entry.value!.productKey] = entry.value!.id; } for (var entry in purchaseOrderMap.entries) { - final invoice = entry.value; + final invoice = entry.value!; final client = clientMap[invoice.clientId] ?? ClientEntity(); final vendor = vendorMap[invoice.vendorId] ?? VendorEntity(); final precision = staticState.currencyMap[client.currencyId]?.precision ?? 2; - if ((invoice.isDeleted && !userCompany.company.reportIncludeDeleted) || - client.isDeleted) { + if ((invoice.isDeleted! && !userCompany.company!.reportIncludeDeleted) || + client.isDeleted!) { continue; } - if (!userCompany.company.reportIncludeDrafts && invoice.isDraft) { + if (!userCompany.company!.reportIncludeDrafts && invoice.isDraft) { continue; } @@ -114,7 +115,7 @@ ReportResult lineItemReport( for (var column in columns) { dynamic value = ''; - final productId = productKeyMap[lineItem.productKey]; + final productId = productKeyMap[lineItem!.productKey]; switch (column) { case PurchaseOrderItemReportFields.price: @@ -127,12 +128,12 @@ ReportResult lineItemReport( if (lineItem.productCost != 0) { value = lineItem.productCost; } else { - value = productId == null ? 0.0 : productMap[productId].cost; + value = productId == null ? 0.0 : productMap[productId]!.cost; } break; case PurchaseOrderItemReportFields.profit: value = lineItem.netTotal(invoice, precision) - - (productId == null ? 0.0 : productMap[productId].cost); + (productId == null ? 0.0 : productMap[productId]!.cost); break; case PurchaseOrderItemReportFields.custom1: value = lineItem.customValue1; @@ -168,13 +169,13 @@ ReportResult lineItemReport( value = client.displayName; break; case PurchaseOrderItemReportFields.clientEmail: - value = client.primaryContact.email; + value = client.primaryContact!.email; break; case PurchaseOrderItemReportFields.vendor: value = vendor.name; break; case PurchaseOrderItemReportFields.vendorEmail: - value = vendor.primaryContact.email; + value = vendor.primaryContact!.email; break; case PurchaseOrderItemReportFields.dueDate: value = invoice.dueDate; @@ -208,8 +209,8 @@ ReportResult lineItemReport( value: value, userCompany: userCompany, reportsUIState: reportsUIState, - column: EnumUtils.parse(column), - )) { + column: EnumUtils.parse(column)!, + )!) { skip = true; } @@ -234,13 +235,13 @@ ReportResult lineItemReport( final selectedColumns = columns.map((item) => EnumUtils.parse(item)).toList(); data.sort((rowA, rowB) => - sortReportTableRows(rowA, rowB, lineItemReportSettings, selectedColumns)); + sortReportTableRows(rowA, rowB, lineItemReportSettings, selectedColumns)!); return ReportResult( allColumns: PurchaseOrderItemReportFields.values .where((field) => field != PurchaseOrderItemReportFields.discount || - userCompany.company.enableProductDiscount) + userCompany.company!.enableProductDiscount) .map((e) => EnumUtils.parse(e)) .toList(), columns: selectedColumns, diff --git a/lib/ui/reports/purchase_order_report.dart b/lib/ui/reports/purchase_order_report.dart index c643b78aa..51949c9bb 100644 --- a/lib/ui/reports/purchase_order_report.dart +++ b/lib/ui/reports/purchase_order_report.dart @@ -1,5 +1,6 @@ // Package imports: import 'package:built_collection/built_collection.dart'; +import 'package:collection/collection.dart' show IterableNullableExtension; import 'package:invoiceninja_flutter/redux/reports/reports_selectors.dart'; import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:memoize/memoize.dart'; @@ -78,24 +79,24 @@ enum PurchaseOrderReportFields { } var memoizedPurchaseOrderReport = memo7(( - UserCompanyEntity userCompany, + UserCompanyEntity? userCompany, ReportsUIState reportsUIState, - BuiltMap purchaseOrderMap, - BuiltMap clientMap, - BuiltMap vendorMap, - BuiltMap userMap, + BuiltMap purchaseOrderMap, + BuiltMap clientMap, + BuiltMap vendorMap, + BuiltMap userMap, StaticState staticState, ) => - purchaseOrderReport(userCompany, reportsUIState, purchaseOrderMap, + purchaseOrderReport(userCompany!, reportsUIState, purchaseOrderMap, clientMap, vendorMap, userMap, staticState)); ReportResult purchaseOrderReport( UserCompanyEntity userCompany, ReportsUIState reportsUIState, - BuiltMap purchaseOrderMap, - BuiltMap clientMap, - BuiltMap vendorMap, - BuiltMap userMap, + BuiltMap purchaseOrderMap, + BuiltMap clientMap, + BuiltMap vendorMap, + BuiltMap userMap, StaticState staticState, ) { final List> data = []; @@ -105,7 +106,7 @@ ReportResult purchaseOrderReport( final reportSettings = userCompany.settings?.reportSettings; final purchaseOrderReportSettings = reportSettings != null && reportSettings.containsKey(kReportPurchaseOrder) - ? reportSettings[kReportPurchaseOrder] + ? reportSettings[kReportPurchaseOrder]! : ReportSettingsEntity(); final defaultColumns = [ @@ -119,14 +120,14 @@ ReportResult purchaseOrderReport( if (purchaseOrderReportSettings.columns.isNotEmpty) { columns = BuiltList(purchaseOrderReportSettings.columns .map((e) => EnumUtils.fromString(PurchaseOrderReportFields.values, e)) - .where((element) => element != null) + .whereNotNull() .toList()); } else { columns = BuiltList(defaultColumns); } for (var purchaseOrderId in purchaseOrderMap.keys) { - final purchaseOrder = purchaseOrderMap[purchaseOrderId]; + final purchaseOrder = purchaseOrderMap[purchaseOrderId]!; final vendor = vendorMap[purchaseOrder.vendorId] ?? VendorEntity(); if (purchaseOrder.invitations.isEmpty) { @@ -137,13 +138,13 @@ ReportResult purchaseOrderReport( vendor.getContact(purchaseOrder.invitations.first.vendorContactId); //final vendor = vendorMap[purchaseOrder.vendorId]; - if ((purchaseOrder.isDeleted && - !userCompany.company.reportIncludeDeleted) || - vendor.isDeleted) { + if ((purchaseOrder.isDeleted! && + !userCompany.company!.reportIncludeDeleted) || + vendor.isDeleted!) { continue; } - if (!userCompany.company.reportIncludeDrafts && purchaseOrder.isDraft) { + if (!userCompany.company!.reportIncludeDrafts && purchaseOrder.isDraft) { continue; } @@ -208,28 +209,28 @@ ReportResult purchaseOrderReport( value = presentCustomField( value: purchaseOrder.customValue1, customFieldType: CustomFieldType.invoice1, - company: userCompany.company, + company: userCompany.company!, ); break; case PurchaseOrderReportFields.invoice2: value = presentCustomField( value: purchaseOrder.customValue2, customFieldType: CustomFieldType.invoice2, - company: userCompany.company, + company: userCompany.company!, ); break; case PurchaseOrderReportFields.invoice3: value = presentCustomField( value: purchaseOrder.customValue3, customFieldType: CustomFieldType.invoice3, - company: userCompany.company, + company: userCompany.company!, ); break; case PurchaseOrderReportFields.invoice4: value = presentCustomField( value: purchaseOrder.customValue4, customFieldType: CustomFieldType.invoice4, - company: userCompany.company, + company: userCompany.company!, ); break; case PurchaseOrderReportFields.surcharge1: @@ -302,7 +303,7 @@ ReportResult purchaseOrderReport( value = vendor.city; break; case PurchaseOrderReportFields.currency: - value = staticState.currencyMap[userCompany.company.currencyId] + value = staticState.currencyMap[userCompany.company!.currencyId] ?.listDisplayName ?? ''; break; @@ -362,8 +363,8 @@ ReportResult purchaseOrderReport( value: value, userCompany: userCompany, reportsUIState: reportsUIState, - column: EnumUtils.parse(column), - )) { + column: EnumUtils.parse(column)!, + )!) { skip = true; } @@ -374,7 +375,7 @@ ReportResult purchaseOrderReport( if ([ PurchaseOrderReportFields.converted_amount, ].contains(column)) { - currencyId = userCompany.company.currencyId; + currencyId = userCompany.company!.currencyId; } row.add(purchaseOrder.getReportDouble( value: value, @@ -394,7 +395,7 @@ ReportResult purchaseOrderReport( final selectedColumns = columns.map((item) => EnumUtils.parse(item)).toList(); data.sort((rowA, rowB) => sortReportTableRows( - rowA, rowB, purchaseOrderReportSettings, selectedColumns)); + rowA, rowB, purchaseOrderReportSettings, selectedColumns)!); return ReportResult( allColumns: PurchaseOrderReportFields.values diff --git a/lib/ui/reports/quote_item_report.dart b/lib/ui/reports/quote_item_report.dart index b3edc9fc5..733ddaf5a 100644 --- a/lib/ui/reports/quote_item_report.dart +++ b/lib/ui/reports/quote_item_report.dart @@ -1,5 +1,6 @@ // Package imports: import 'package:built_collection/built_collection.dart'; +import 'package:collection/collection.dart' show IterableNullableExtension; import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:memoize/memoize.dart'; @@ -43,22 +44,22 @@ enum QuoteItemReportFields { } var memoizedQuoteItemReport = memo6(( - UserCompanyEntity userCompany, + UserCompanyEntity? userCompany, ReportsUIState reportsUIState, - BuiltMap productMap, - BuiltMap invoiceMap, - BuiltMap clientMap, + BuiltMap productMap, + BuiltMap invoiceMap, + BuiltMap clientMap, StaticState staticState, ) => - lineItemReport(userCompany, reportsUIState, productMap, invoiceMap, + lineItemReport(userCompany!, reportsUIState, productMap, invoiceMap, clientMap, staticState)); ReportResult lineItemReport( UserCompanyEntity userCompany, ReportsUIState reportsUIState, - BuiltMap productMap, - BuiltMap invoiceMap, - BuiltMap clientMap, + BuiltMap productMap, + BuiltMap invoiceMap, + BuiltMap clientMap, StaticState staticState, ) { final List> data = []; @@ -67,7 +68,7 @@ ReportResult lineItemReport( final reportSettings = userCompany.settings?.reportSettings; final lineItemReportSettings = reportSettings != null && reportSettings.containsKey(kReportQuoteItem) - ? reportSettings[kReportQuoteItem] + ? reportSettings[kReportQuoteItem]! : ReportSettingsEntity(); final defaultColumns = [ @@ -81,7 +82,7 @@ ReportResult lineItemReport( if (lineItemReportSettings.columns.isNotEmpty) { columns = BuiltList(lineItemReportSettings.columns .map((e) => EnumUtils.fromString(QuoteItemReportFields.values, e)) - .where((element) => element != null) + .whereNotNull() .toList()); } else { columns = BuiltList(defaultColumns); @@ -89,21 +90,21 @@ ReportResult lineItemReport( final productKeyMap = {}; for (var entry in productMap.entries) { - productKeyMap[entry.value.productKey] = entry.value.id; + productKeyMap[entry.value!.productKey] = entry.value!.id; } for (var entry in invoiceMap.entries) { - final invoice = entry.value; + final invoice = entry.value!; final client = clientMap[invoice.clientId] ?? ClientEntity(); final precision = staticState.currencyMap[client.currencyId]?.precision ?? 2; - if ((invoice.isDeleted && !userCompany.company.reportIncludeDeleted) || - client.isDeleted) { + if ((invoice.isDeleted! && !userCompany.company!.reportIncludeDeleted) || + client.isDeleted!) { continue; } - if (!userCompany.company.reportIncludeDrafts && invoice.isDraft) { + if (!userCompany.company!.reportIncludeDrafts && invoice.isDraft) { continue; } @@ -113,7 +114,7 @@ ReportResult lineItemReport( for (var column in columns) { dynamic value = ''; - final productId = productKeyMap[lineItem.productKey]; + final productId = productKeyMap[lineItem!.productKey]; switch (column) { case QuoteItemReportFields.price: @@ -123,7 +124,7 @@ ReportResult lineItemReport( value = lineItem.quantity; break; case QuoteItemReportFields.cost: - value = productId == null ? 0.0 : productMap[productId].cost; + value = productId == null ? 0.0 : productMap[productId]!.cost; break; case QuoteItemReportFields.profit: case QuoteItemReportFields.markup: @@ -131,7 +132,7 @@ ReportResult lineItemReport( if (lineItem.productCost != 0) { cost = lineItem.productCost; } else { - cost = productId == null ? 0.0 : productMap[productId].cost; + cost = productId == null ? 0.0 : productMap[productId]!.cost; } value = lineItem.netTotal(invoice, precision) - cost; if (column == QuoteItemReportFields.markup && cost != 0) { @@ -172,7 +173,7 @@ ReportResult lineItemReport( value = client.displayName; break; case QuoteItemReportFields.clientEmail: - value = client.primaryContact.email; + value = client.primaryContact!.email; break; case QuoteItemReportFields.validUntil: value = invoice.dueDate; @@ -206,8 +207,8 @@ ReportResult lineItemReport( value: value, userCompany: userCompany, reportsUIState: reportsUIState, - column: EnumUtils.parse(column), - )) { + column: EnumUtils.parse(column)!, + )!) { skip = true; } @@ -232,13 +233,13 @@ ReportResult lineItemReport( final selectedColumns = columns.map((item) => EnumUtils.parse(item)).toList(); data.sort((rowA, rowB) => - sortReportTableRows(rowA, rowB, lineItemReportSettings, selectedColumns)); + sortReportTableRows(rowA, rowB, lineItemReportSettings, selectedColumns)!); return ReportResult( allColumns: QuoteItemReportFields.values .where((field) => field != QuoteItemReportFields.discount || - userCompany.company.enableProductDiscount) + userCompany.company!.enableProductDiscount) .map((e) => EnumUtils.parse(e)) .toList(), columns: selectedColumns, diff --git a/lib/ui/reports/quote_report.dart b/lib/ui/reports/quote_report.dart index 00fd02aae..b74b64d88 100644 --- a/lib/ui/reports/quote_report.dart +++ b/lib/ui/reports/quote_report.dart @@ -1,5 +1,6 @@ // Package imports: import 'package:built_collection/built_collection.dart'; +import 'package:collection/collection.dart' show IterableNullableExtension; import 'package:invoiceninja_flutter/redux/reports/reports_selectors.dart'; import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:memoize/memoize.dart'; @@ -77,24 +78,24 @@ enum QuoteReportFields { } var memoizedQuoteReport = memo7(( - UserCompanyEntity userCompany, + UserCompanyEntity? userCompany, ReportsUIState reportsUIState, - BuiltMap quoteMap, - BuiltMap clientMap, - BuiltMap vendorMap, - BuiltMap userMap, + BuiltMap quoteMap, + BuiltMap clientMap, + BuiltMap vendorMap, + BuiltMap userMap, StaticState staticState, ) => - quoteReport(userCompany, reportsUIState, quoteMap, clientMap, vendorMap, + quoteReport(userCompany!, reportsUIState, quoteMap, clientMap, vendorMap, userMap, staticState)); ReportResult quoteReport( UserCompanyEntity userCompany, ReportsUIState reportsUIState, - BuiltMap quoteMap, - BuiltMap clientMap, - BuiltMap vendorMap, - BuiltMap userMap, + BuiltMap quoteMap, + BuiltMap clientMap, + BuiltMap vendorMap, + BuiltMap userMap, StaticState staticState, ) { final List> data = []; @@ -104,7 +105,7 @@ ReportResult quoteReport( final reportSettings = userCompany.settings?.reportSettings; final quoteReportSettings = reportSettings != null && reportSettings.containsKey(kReportQuote) - ? reportSettings[kReportQuote] + ? reportSettings[kReportQuote]! : ReportSettingsEntity(); final defaultColumns = [ @@ -118,14 +119,14 @@ ReportResult quoteReport( if (quoteReportSettings.columns.isNotEmpty) { columns = BuiltList(quoteReportSettings.columns .map((e) => EnumUtils.fromString(QuoteReportFields.values, e)) - .where((element) => element != null) + .whereNotNull() .toList()); } else { columns = BuiltList(defaultColumns); } for (var quoteId in quoteMap.keys) { - final quote = quoteMap[quoteId]; + final quote = quoteMap[quoteId]!; final client = clientMap[quote.clientId] ?? ClientEntity(); if (quote.invitations.isEmpty) { @@ -135,12 +136,12 @@ ReportResult quoteReport( final contact = client.getContact(quote.invitations.first.clientContactId); //final vendor = vendorMap[quote.vendorId]; - if ((quote.isDeleted && !userCompany.company.reportIncludeDeleted) || - client.isDeleted) { + if ((quote.isDeleted! && !userCompany.company!.reportIncludeDeleted) || + client.isDeleted!) { continue; } - if (!userCompany.company.reportIncludeDrafts && quote.isDraft) { + if (!userCompany.company!.reportIncludeDrafts && quote.isDraft) { continue; } @@ -209,28 +210,28 @@ ReportResult quoteReport( value = presentCustomField( value: quote.customValue1, customFieldType: CustomFieldType.invoice1, - company: userCompany.company, + company: userCompany.company!, ); break; case QuoteReportFields.invoice2: value = presentCustomField( value: quote.customValue2, customFieldType: CustomFieldType.invoice2, - company: userCompany.company, + company: userCompany.company!, ); break; case QuoteReportFields.invoice3: value = presentCustomField( value: quote.customValue3, customFieldType: CustomFieldType.invoice3, - company: userCompany.company, + company: userCompany.company!, ); break; case QuoteReportFields.invoice4: value = presentCustomField( value: quote.customValue4, customFieldType: CustomFieldType.invoice4, - company: userCompany.company, + company: userCompany.company!, ); break; case QuoteReportFields.surcharge1: @@ -357,19 +358,19 @@ ReportResult quoteReport( value: value, userCompany: userCompany, reportsUIState: reportsUIState, - column: EnumUtils.parse(column), - )) { + column: EnumUtils.parse(column)!, + )!) { skip = true; } if (value.runtimeType == bool) { row.add(quote.getReportBool(value: value)); } else if (value.runtimeType == double || value.runtimeType == int) { - String currencyId = client.currencyId; + String? currencyId = client.currencyId; if ([ QuoteReportFields.converted_amount, ].contains(column)) { - currencyId = userCompany.company.currencyId; + currencyId = userCompany.company!.currencyId; } row.add(quote.getReportDouble( value: value, @@ -389,7 +390,7 @@ ReportResult quoteReport( final selectedColumns = columns.map((item) => EnumUtils.parse(item)).toList(); data.sort((rowA, rowB) => - sortReportTableRows(rowA, rowB, quoteReportSettings, selectedColumns)); + sortReportTableRows(rowA, rowB, quoteReportSettings, selectedColumns)!); return ReportResult( allColumns: diff --git a/lib/ui/reports/recurring_expense_report.dart b/lib/ui/reports/recurring_expense_report.dart index 0bba098a5..7fa82ef46 100644 --- a/lib/ui/reports/recurring_expense_report.dart +++ b/lib/ui/reports/recurring_expense_report.dart @@ -1,5 +1,6 @@ // Package imports: import 'package:built_collection/built_collection.dart'; +import 'package:collection/collection.dart' show IterableNullableExtension; import 'package:invoiceninja_flutter/main_app.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:memoize/memoize.dart'; @@ -47,18 +48,18 @@ enum RecurringExpenseReportFields { } var memoizedRecurringExpenseReport = memo9(( - UserCompanyEntity userCompany, + UserCompanyEntity? userCompany, ReportsUIState reportsUIState, - BuiltMap expenseMap, - BuiltMap expenseCategoryMap, - BuiltMap invoiceMap, - BuiltMap clientMap, - BuiltMap vendorMap, - BuiltMap userMap, + BuiltMap expenseMap, + BuiltMap expenseCategoryMap, + BuiltMap invoiceMap, + BuiltMap clientMap, + BuiltMap vendorMap, + BuiltMap userMap, StaticState staticState, ) => recurringExpenseReport( - userCompany, + userCompany!, reportsUIState, expenseMap, expenseCategoryMap, @@ -72,23 +73,23 @@ var memoizedRecurringExpenseReport = memo9(( ReportResult recurringExpenseReport( UserCompanyEntity userCompany, ReportsUIState reportsUIState, - BuiltMap expenseMap, - BuiltMap expenseCategoryMap, - BuiltMap invoiceMap, - BuiltMap clientMap, - BuiltMap vendorMap, - BuiltMap userMap, + BuiltMap expenseMap, + BuiltMap expenseCategoryMap, + BuiltMap invoiceMap, + BuiltMap clientMap, + BuiltMap vendorMap, + BuiltMap userMap, StaticState staticState, ) { final List> data = []; final List entities = []; BuiltList columns; - final localization = AppLocalization.of(navigatorKey.currentContext); + final localization = AppLocalization.of(navigatorKey.currentContext!); final reportSettings = userCompany.settings?.reportSettings; final expenseReportSettings = reportSettings != null && reportSettings.containsKey(kReportRecurringExpense) - ? reportSettings[kReportRecurringExpense] + ? reportSettings[kReportRecurringExpense]! : ReportSettingsEntity(); final defaultColumns = [ @@ -106,19 +107,19 @@ ReportResult recurringExpenseReport( columns = BuiltList(expenseReportSettings.columns .map( (e) => EnumUtils.fromString(RecurringExpenseReportFields.values, e)) - .where((element) => element != null) + .whereNotNull() .toList()); } else { columns = BuiltList(defaultColumns); } for (var expenseId in expenseMap.keys) { - final expense = expenseMap[expenseId]; + final expense = expenseMap[expenseId]!; final client = clientMap[expense.clientId] ?? ClientEntity(); final invoice = invoiceMap[expense.invoiceId] ?? InvoiceEntity(); final vendor = vendorMap[expense.vendorId] ?? VendorEntity(); - if (expense.isDeleted && !userCompany.company.reportIncludeDeleted) { + if (expense.isDeleted! && !userCompany.company!.reportIncludeDeleted) { continue; } @@ -216,14 +217,14 @@ ReportResult recurringExpenseReport( value = expense.privateNotes; break; case RecurringExpenseReportFields.frequency: - value = localization.lookup(kFrequencies[invoice.frequencyId]); + value = localization!.lookup(kFrequencies[invoice.frequencyId]); break; case RecurringExpenseReportFields.start_date: value = invoice.nextSendDate; break; case RecurringExpenseReportFields.remaining_cycles: value = invoice.remainingCycles == -1 - ? localization.endless + ? localization!.endless : '${invoice.remainingCycles}'; break; } @@ -232,8 +233,8 @@ ReportResult recurringExpenseReport( value: value, userCompany: userCompany, reportsUIState: reportsUIState, - column: EnumUtils.parse(column), - )) { + column: EnumUtils.parse(column)!, + )!) { skip = true; } @@ -255,7 +256,7 @@ ReportResult recurringExpenseReport( final selectedColumns = columns.map((item) => EnumUtils.parse(item)).toList(); data.sort((rowA, rowB) => - sortReportTableRows(rowA, rowB, expenseReportSettings, selectedColumns)); + sortReportTableRows(rowA, rowB, expenseReportSettings, selectedColumns)!); return ReportResult( allColumns: RecurringExpenseReportFields.values diff --git a/lib/ui/reports/recurring_invoice_report.dart b/lib/ui/reports/recurring_invoice_report.dart index 9aab2e24b..237239913 100644 --- a/lib/ui/reports/recurring_invoice_report.dart +++ b/lib/ui/reports/recurring_invoice_report.dart @@ -1,5 +1,6 @@ // Package imports: import 'package:built_collection/built_collection.dart'; +import 'package:collection/collection.dart' show IterableNullableExtension; import 'package:invoiceninja_flutter/main_app.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:memoize/memoize.dart'; @@ -86,17 +87,17 @@ enum RecurringInvoiceReportFields { } var memoizedRecurringInvoiceReport = memo8(( - UserCompanyEntity userCompany, + UserCompanyEntity? userCompany, ReportsUIState reportsUIState, - BuiltMap invoiceMap, - BuiltMap clientMap, - BuiltMap userMap, - BuiltMap vendorMap, - BuiltMap projectMap, + BuiltMap invoiceMap, + BuiltMap clientMap, + BuiltMap userMap, + BuiltMap vendorMap, + BuiltMap projectMap, StaticState staticState, ) => recurringInvoiceReport( - userCompany, + userCompany!, reportsUIState, invoiceMap, clientMap, @@ -109,22 +110,22 @@ var memoizedRecurringInvoiceReport = memo8(( ReportResult recurringInvoiceReport( UserCompanyEntity userCompany, ReportsUIState reportsUIState, - BuiltMap invoiceMap, - BuiltMap clientMap, - BuiltMap userMap, - BuiltMap vendorMap, - BuiltMap projectMap, + BuiltMap invoiceMap, + BuiltMap clientMap, + BuiltMap userMap, + BuiltMap vendorMap, + BuiltMap projectMap, StaticState staticState, ) { final List> data = []; final List entities = []; BuiltList columns; - final localization = AppLocalization.of(navigatorKey.currentContext); + final localization = AppLocalization.of(navigatorKey.currentContext!); final reportSettings = userCompany.settings?.reportSettings; final invoiceReportSettings = reportSettings != null && reportSettings.containsKey(kReportRecurringInvoice) - ? reportSettings[kReportRecurringInvoice] + ? reportSettings[kReportRecurringInvoice]! : ReportSettingsEntity(); final defaultColumns = [ @@ -140,14 +141,14 @@ ReportResult recurringInvoiceReport( columns = BuiltList(invoiceReportSettings.columns .map( (e) => EnumUtils.fromString(RecurringInvoiceReportFields.values, e)) - .where((element) => element != null) + .whereNotNull() .toList()); } else { columns = BuiltList(defaultColumns); } for (var invoiceId in invoiceMap.keys) { - final invoice = invoiceMap[invoiceId]; + final invoice = invoiceMap[invoiceId]!; final client = clientMap[invoice.clientId] ?? ClientEntity(); if (invoice.invitations.isEmpty) { @@ -157,12 +158,12 @@ ReportResult recurringInvoiceReport( final contact = client.getContact(invoice.invitations.first.clientContactId); - if ((invoice.isDeleted && !userCompany.company.reportIncludeDeleted) || - client.isDeleted) { + if ((invoice.isDeleted! && !userCompany.company!.reportIncludeDeleted) || + client.isDeleted!) { continue; } - if (!userCompany.company.reportIncludeDrafts && invoice.isDraft) { + if (!userCompany.company!.reportIncludeDrafts && invoice.isDraft) { continue; } @@ -364,14 +365,14 @@ ReportResult recurringInvoiceReport( value = staticState.countryMap[client.shippingCountryId]?.name ?? ''; break; case RecurringInvoiceReportFields.frequency: - value = localization.lookup(kFrequencies[invoice.frequencyId]); + value = localization!.lookup(kFrequencies[invoice.frequencyId]); break; case RecurringInvoiceReportFields.start_date: value = invoice.nextSendDate; break; case RecurringInvoiceReportFields.remaining_cycles: value = invoice.remainingCycles == -1 - ? localization.endless + ? localization!.endless : '${invoice.remainingCycles}'; break; case RecurringInvoiceReportFields.client_number: @@ -382,15 +383,15 @@ ReportResult recurringInvoiceReport( break; case RecurringInvoiceReportFields.due_on: if (invoice.dueDateDays == 'terms') { - value = localization.usePaymentTerms; + value = localization!.usePaymentTerms; } else if (invoice.dueDateDays == 'on_receipt') { - value = localization.dueOnReceipt; + value = localization!.dueOnReceipt; } else if (invoice.dueDateDays == '1') { - value = localization.firstDayOfTheMonth; + value = localization!.firstDayOfTheMonth; } else if (invoice.dueDateDays == '31') { - value = localization.lastDayOfTheMonth; + value = localization!.lastDayOfTheMonth; } else { - value = localization.dayCount + value = localization!.dayCount .replaceFirst(':count', '${invoice.dueDateDays}'); } break; @@ -400,19 +401,19 @@ ReportResult recurringInvoiceReport( value: value, userCompany: userCompany, reportsUIState: reportsUIState, - column: EnumUtils.parse(column), - )) { + column: EnumUtils.parse(column)!, + )!) { skip = true; } if (value.runtimeType == bool) { row.add(invoice.getReportBool(value: value)); } else if (value.runtimeType == double || value.runtimeType == int) { - String currencyId = client.currencyId; + String? currencyId = client.currencyId; if ([ RecurringInvoiceReportFields.converted_amount, ].contains(column)) { - currencyId = userCompany.company.currencyId; + currencyId = userCompany.company!.currencyId; } row.add(invoice.getReportDouble( value: value, @@ -432,7 +433,7 @@ ReportResult recurringInvoiceReport( final selectedColumns = columns.map((item) => EnumUtils.parse(item)).toList(); data.sort((rowA, rowB) => - sortReportTableRows(rowA, rowB, invoiceReportSettings, selectedColumns)); + sortReportTableRows(rowA, rowB, invoiceReportSettings, selectedColumns)!); return ReportResult( allColumns: RecurringInvoiceReportFields.values diff --git a/lib/ui/reports/report_charts.dart b/lib/ui/reports/report_charts.dart index 63b99a39d..da32fea5d 100644 --- a/lib/ui/reports/report_charts.dart +++ b/lib/ui/reports/report_charts.dart @@ -11,7 +11,7 @@ import 'package:invoiceninja_flutter/ui/reports/reports_screen_vm.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class ReportCharts extends StatelessWidget { - const ReportCharts({@required this.viewModel}); + const ReportCharts({required this.viewModel}); final ReportsScreenVM viewModel; @@ -48,7 +48,7 @@ class ReportCharts extends StatelessWidget { lineStyle: charts.LineStyleSpec(color: color), )); - Widget child; + Widget? child; final columnType = getReportColumnType(reportState.group, context); switch (columnType) { @@ -59,22 +59,22 @@ class ReportCharts extends StatelessWidget { case ReportColumnType.duration: child = charts.BarChart( [ - charts.Series( + charts.Series( id: 'chart', colorFn: (dynamic _, __) => - charts.ColorUtil.fromDartColor(state.accentColor), + charts.ColorUtil.fromDartColor(state.accentColor!), domainFn: (dynamic item, _) => columnType == ReportColumnType.age - ? localization.lookup(item['name']) + ? localization!.lookup(item['name']) : item['name'], measureFn: (dynamic item, _) => item['value'], - data: viewModel.groupTotals.rows.map((key) { + data: viewModel.groupTotals.rows!.map((key) { return { 'name': key, - 'value': viewModel.groupTotals.totals[key] + 'value': viewModel.groupTotals.totals![key]! [reportState.chart] }; - }).toList()) + }).toList()) as Series ], animate: true, primaryMeasureAxis: numericAxis, @@ -83,25 +83,25 @@ class ReportCharts extends StatelessWidget { break; case ReportColumnType.date: case ReportColumnType.dateTime: - final keys = viewModel.groupTotals.rows - .where((element) => element.isNotEmpty) + final keys = viewModel.groupTotals.rows! + .where((element) => element!.isNotEmpty) .toList(); - keys.sort((String str1, String str2) => str1.compareTo(str2)); + keys.sort((String? str1, String? str2) => str1!.compareTo(str2!)); child = charts.TimeSeriesChart( [ - charts.Series( + charts.Series( id: 'chart', colorFn: (dynamic _, __) => - charts.ColorUtil.fromDartColor(state.accentColor), + charts.ColorUtil.fromDartColor(state.accentColor!), domainFn: (dynamic item, _) => DateTime.tryParse(item['name']), measureFn: (dynamic item, _) => item['value'], data: keys.map((key) { return { 'name': key, - 'value': viewModel.groupTotals.totals[key] + 'value': viewModel.groupTotals.totals![key]! [reportState.chart] }; - }).toList()) + }).toList()) as Series ], animate: true, primaryMeasureAxis: numericAxis, diff --git a/lib/ui/reports/reports_screen.dart b/lib/ui/reports/reports_screen.dart index 824d8687e..1eec66671 100644 --- a/lib/ui/reports/reports_screen.dart +++ b/lib/ui/reports/reports_screen.dart @@ -1,4 +1,5 @@ // Flutter imports: +import 'package:collection/collection.dart' show IterableNullableExtension; import 'package:flutter/material.dart' hide DataRow, DataCell, DataColumn; import 'package:flutter/material.dart' as mt; @@ -48,8 +49,8 @@ import 'package:url_launcher/url_launcher.dart'; class ReportsScreen extends StatelessWidget { const ReportsScreen({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); static const String route = '/reports'; @@ -58,11 +59,11 @@ class ReportsScreen extends StatelessWidget { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final store = StoreProvider.of(context); final state = viewModel.state; final reportsState = viewModel.reportState; - final reportResult = viewModel.reportResult; + final reportResult = viewModel.reportResult!; Widget leading = SizedBox(); final hideReports = state.isHosted && !state.isProPlan && !state.isTrial; @@ -92,41 +93,41 @@ class ReportsScreen extends StatelessWidget { final reports = [ kReportClient, kReportContact, - if (state.company.isModuleEnabled(EntityType.invoice)) ...[ + if (state.company!.isModuleEnabled(EntityType.invoice)) ...[ kReportInvoice, kReportInvoiceItem, kReportPayment, - if (state.company.hasTaxes) ...[ + if (state.company!.hasTaxes) ...[ kReportInvoiceTax, kReportPaymentTax, ], - if (state.company.isModuleEnabled(EntityType.recurringInvoice)) + if (state.company!.isModuleEnabled(EntityType.recurringInvoice)) kReportRecurringInvoice, ], - if (state.company.isModuleEnabled(EntityType.quote)) ...[ + if (state.company!.isModuleEnabled(EntityType.quote)) ...[ kReportQuote, kReportQuoteItem, ], - if (state.company.isModuleEnabled(EntityType.credit)) ...[ + if (state.company!.isModuleEnabled(EntityType.credit)) ...[ kReportCredit, kReportCreditItem, ], kReportDocument, - if (state.company.isModuleEnabled(EntityType.expense)) ...[ + if (state.company!.isModuleEnabled(EntityType.expense)) ...[ kReportExpense, - if (state.company.isModuleEnabled(EntityType.recurringExpense)) + if (state.company!.isModuleEnabled(EntityType.recurringExpense)) kReportRecurringExpense, ], kReportProduct, kReportProfitAndLoss, kReportTask, - if (state.company.isModuleEnabled(EntityType.vendor)) ...[ + if (state.company!.isModuleEnabled(EntityType.vendor)) ...[ kReportVendor, - if (state.company.isModuleEnabled(EntityType.purchaseOrder)) + if (state.company!.isModuleEnabled(EntityType.purchaseOrder)) kReportPurchaseOrder, kReportPurchaseOrderItem, ], - if (state.company.isModuleEnabled(EntityType.transaction)) + if (state.company!.isModuleEnabled(EntityType.transaction)) kReportTransaction, ]..sort((a, b) => a.compareTo(b)); @@ -139,7 +140,7 @@ class ReportsScreen extends StatelessWidget { items: reports .map((report) => DropdownMenuItem( value: report, - child: Text(localization.lookup(report)), + child: Text(localization.lookup(report)!), )) .toList(), ), @@ -155,10 +156,10 @@ class ReportsScreen extends StatelessWidget { .where((column) => getReportColumnType(column, context) != ReportColumnType.number) .map((column) { - final columnTitle = state.company.getCustomFieldLabel(column); + final columnTitle = state.company!.getCustomFieldLabel(column!); return DropdownMenuItem( child: Text(columnTitle.isEmpty - ? localization.lookup(column) + ? localization.lookup(column)! : columnTitle), value: column, ); @@ -180,7 +181,7 @@ class ReportsScreen extends StatelessWidget { value: kReportGroupDay, ), DropdownMenuItem( - child: Text(localization.week), + child: Text(localization.week!), value: kReportGroupWeek, ), DropdownMenuItem( @@ -242,7 +243,7 @@ class ReportsScreen extends StatelessWidget { .map((column) => DropdownMenuItem( value: column, child: Text( - localization.lookup(column), + localization.lookup(column)!, ), )) .toList()), @@ -265,7 +266,7 @@ class ReportsScreen extends StatelessWidget { items: DateRange.values .where((value) => value != DateRange.allTime) .map((dateRange) => DropdownMenuItem( - child: Text(localization.lookup(dateRange.toString())), + child: Text(localization.lookup(dateRange.toString())!), value: dateRange, )) .toList(), @@ -286,7 +287,7 @@ class ReportsScreen extends StatelessWidget { ] ]; - final cappedEntities = [...reportResult.entities ?? []]; + final cappedEntities = [...reportResult.entities ?? []]; final firstEntity = cappedEntities.isNotEmpty ? cappedEntities.first : null; if (cappedEntities.length > kMaxEntitiesPerBulkAction) { cappedEntities.removeRange( @@ -310,7 +311,7 @@ class ReportsScreen extends StatelessWidget { ReportColumnType.duration, ].contains(getReportColumnType(column, context))) .map((column) => DropdownMenuItem( - child: Text(localization.lookup(column)), + child: Text(localization.lookup(column)!), value: column, )) .toList(), @@ -357,7 +358,7 @@ class ReportsScreen extends StatelessWidget { onPressed: () { multiselectDialog( // Using the navigatorKey to prevent using the appBarTheme - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, onSelected: (selected) { viewModel.onReportColumnsChanged( context, selected); @@ -389,14 +390,14 @@ class ReportsScreen extends StatelessWidget { onSelected: (context, action) { final entities = action.applyMaxLimit ? cappedEntities - : reportResult.entities; + : reportResult.entities!; confirmCallback( context: context, - message: localization.lookup(action.toString()) + + message: localization.lookup(action.toString())! + ' • ' + (entities.length == 1 - ? '1 ${localization.lookup(firstEntity.entityType.toString())}' - : '${entities.length} ${localization.lookup(firstEntity.entityType.plural)}'), + ? '1 ${localization.lookup(firstEntity!.entityType.toString())}' + : '${entities.length} ${localization.lookup(firstEntity!.entityType!.plural)}'), callback: (_) { handleEntitiesActions(entities, action); }); @@ -433,14 +434,14 @@ class ReportsScreen extends StatelessWidget { label: localization.upgrade.toUpperCase(), onPressed: () { if (supportsInAppPurchase() && - state.account.canMakeIAP) { + state.account!.canMakeIAP) { showDialog( context: context, builder: (context) => UpgradeDialog(), ); } else { launchUrl( - Uri.parse(state.userCompany.ninjaPortalUrl)); + Uri.parse(state.userCompany!.ninjaPortalUrl)); } }) ], @@ -449,7 +450,7 @@ class ReportsScreen extends StatelessWidget { : ScrollableListView( primary: true, key: ValueKey( - '${viewModel.state.company.id}_${viewModel.state.isSaving}_${reportsState.report}_${reportsState.group}'), + '${viewModel.state.company!.id}_${viewModel.state.isSaving}_${reportsState.report}_${reportsState.group}'), children: [ isMobile(context) ? FormCard( @@ -541,7 +542,7 @@ class ReportsScreen extends StatelessWidget { } class ReportDataTable extends StatefulWidget { - const ReportDataTable({Key key, @required this.viewModel}) : super(key: key); + const ReportDataTable({Key? key, required this.viewModel}) : super(key: key); final ReportsScreenVM viewModel; @@ -550,10 +551,10 @@ class ReportDataTable extends StatefulWidget { } class _ReportDataTableState extends State { - final Map> + final Map> _textEditingControllers = {}; - final Map> _textEditingFocusNodes = {}; - ReportDataTableSource dataTableSource; + final Map> _textEditingFocusNodes = {}; + late ReportDataTableSource dataTableSource; @override void initState() { @@ -594,32 +595,32 @@ class _ReportDataTableState extends State { void didChangeDependencies() { final viewModel = widget.viewModel; final reportState = viewModel.reportState; - final reportResult = viewModel.reportResult; + final reportResult = viewModel.reportResult!; for (var column in reportResult.columns) { if (_textEditingControllers[reportState.report] == null) { _textEditingControllers[reportState.report] = {}; _textEditingFocusNodes[reportState.report] = {}; } - if (!_textEditingControllers[reportState.report].containsKey(column)) { + if (!_textEditingControllers[reportState.report]!.containsKey(column)) { final textEditingController = TextEditingController(); // TODO figure out how to remove this listener in dispose textEditingController.addListener(() { _onChanged(column, textEditingController.text); }); - if (reportState.filters.containsKey(column)) { - textEditingController.text = reportState.filters[column]; + if (reportState.filters.containsKey(column!)) { + textEditingController.text = reportState.filters[column]!; } - _textEditingControllers[reportState.report][column] = + _textEditingControllers[reportState.report]![column] = textEditingController; - _textEditingFocusNodes[reportState.report][column] = FocusNode(); + _textEditingFocusNodes[reportState.report]![column] = FocusNode(); } } super.didChangeDependencies(); } - void _onChanged(String column, String value) { + void _onChanged(String? column, String value) { widget.viewModel.onReportFiltersChanged( context, widget.viewModel.reportState.filters @@ -629,9 +630,9 @@ class _ReportDataTableState extends State { @override void dispose() { _textEditingControllers.keys.forEach((i) { - _textEditingControllers[i].keys.forEach((j) { - _textEditingControllers[i][j].dispose(); - _textEditingFocusNodes[i][j].dispose(); + _textEditingControllers[i]!.keys.forEach((j) { + _textEditingControllers[i]![j]!.dispose(); + _textEditingFocusNodes[i]![j]!.dispose(); }); }); super.dispose(); @@ -641,12 +642,12 @@ class _ReportDataTableState extends State { Widget build(BuildContext context) { final state = widget.viewModel.state; final viewModel = widget.viewModel; - final reportResult = viewModel.reportResult; + final reportResult = viewModel.reportResult!; final reportState = viewModel.reportState; - final settings = state.userCompany.settings; + final settings = state.userCompany!.settings; final reportSettings = settings != null && settings.reportSettings.containsKey(reportState.report) - ? settings.reportSettings[reportState.report] + ? settings.reportSettings[reportState.report]! : ReportSettingsEntity(); final sortedColumns = reportResult.sortedColumns(reportState); @@ -706,23 +707,23 @@ class TotalsDataTable extends StatelessWidget { const TotalsDataTable( {this.reportSettings, this.reportResult, this.viewModel}); - final ReportsScreenVM viewModel; - final ReportSettingsEntity reportSettings; - final ReportResult reportResult; + final ReportsScreenVM? viewModel; + final ReportSettingsEntity? reportSettings; + final ReportResult? reportResult; @override Widget build(BuildContext context) { return mt.DataTable( - sortColumnIndex: reportSettings.sortTotalsIndex != null && - reportResult.columns.length > reportSettings.sortTotalsIndex - ? reportSettings.sortTotalsIndex + sortColumnIndex: reportSettings!.sortTotalsIndex != null && + reportResult!.columns.length > reportSettings!.sortTotalsIndex + ? reportSettings!.sortTotalsIndex : null, - sortAscending: reportSettings.sortTotalsAscending ?? true, - columns: reportResult.totalColumns( + sortAscending: reportSettings!.sortTotalsAscending ?? true, + columns: reportResult!.totalColumns( context, (index, ascending) => - viewModel.onReportTotalsSorted(index, ascending)), - rows: reportResult.totalRows(context), + viewModel!.onReportTotalsSorted(index, ascending)), + rows: reportResult!.totalRows(context), ); } } @@ -737,19 +738,19 @@ enum ReportColumnType { duration, } -bool canTotalColumn(String column) { +bool canTotalColumn(String? column) { if (['notification_threshold', 'age'].contains(column)) { return false; } - if (column.contains('_rate')) { + if (column!.contains('_rate')) { return false; } return true; } -ReportColumnType getReportColumnType(String column, BuildContext context) { +ReportColumnType getReportColumnType(String? column, BuildContext context) { column = toSnakeCase(column); ReportColumnType convertCustomFieldType(String type) { @@ -763,13 +764,13 @@ ReportColumnType getReportColumnType(String column, BuildContext context) { } final store = StoreProvider.of(context); - final company = store.state.userCompany.company; + final company = store.state.userCompany!.company; if (column.startsWith('surcharge')) { return ReportColumnType.number; } else if (column == 'duration') { return ReportColumnType.duration; - } else if (company.hasCustomField(column)) { + } else if (company!.hasCustomField(column)) { return convertCustomFieldType(company.getCustomFieldType(column)); } else if (EntityPresenter.isFieldNumeric(column)) { return ReportColumnType.number; @@ -790,18 +791,18 @@ ReportColumnType getReportColumnType(String column, BuildContext context) { class ReportDataTableSource extends AppDataTableSource { ReportDataTableSource({ - @required this.context, - @required this.textEditingControllers, - @required this.textEditingFocusNodes, - @required this.onFilterChanged, - @required this.viewModel, + required this.context, + required this.textEditingControllers, + required this.textEditingFocusNodes, + required this.onFilterChanged, + required this.viewModel, }); ReportsScreenVM viewModel; final BuildContext context; - final Map> textEditingControllers; - final Map> textEditingFocusNodes; - final Function(String, String) onFilterChanged; + final Map> textEditingControllers; + final Map> textEditingFocusNodes; + final Function(String?, String) onFilterChanged; @override int get selectedRowCount => 0; @@ -814,11 +815,11 @@ class ReportDataTableSource extends AppDataTableSource { final reportState = viewModel.reportState; if (reportState.group.isEmpty || reportState.isGroupByFiltered) { - return viewModel.reportResult.data.length + 1; + return viewModel.reportResult!.data.length + 1; } else { return viewModel.groupTotals.totals == null ? 1 - : viewModel.groupTotals.totals.length + 1; + : viewModel.groupTotals.totals!.length + 1; } } @@ -826,43 +827,43 @@ class ReportDataTableSource extends AppDataTableSource { DataRow getRow(int index) { final reportResult = viewModel.reportResult; if (index == 0) { - return reportResult.tableFilters( + return reportResult!.tableFilters( context, textEditingControllers[viewModel.reportState.report], textEditingFocusNodes[viewModel.reportState.report], (column, value) => onFilterChanged(column, value)); } else { - return reportResult.tableRow(context, viewModel, index); + return reportResult!.tableRow(context, viewModel, index); } } } class ReportResult { ReportResult({ - @required this.columns, - @required this.allColumns, - @required this.defaultColumns, - @required this.data, + required this.columns, + required this.allColumns, + required this.defaultColumns, + required this.data, this.entities, this.showTotals = true, }); - final List columns; - final List allColumns; - final List defaultColumns; + final List columns; + final List allColumns; + final List defaultColumns; final List> data; - final List entities; + final List? entities; final bool showTotals; - static bool matchField({ - @required String column, - @required dynamic value, - @required UserCompanyEntity userCompany, - @required ReportsUIState reportsUIState, - AppLocalization localization, + static bool? matchField({ + required String column, + required dynamic value, + required UserCompanyEntity userCompany, + required ReportsUIState reportsUIState, + AppLocalization? localization, }) { if (reportsUIState.filters.containsKey(column)) { - final filter = reportsUIState.filters[column]; + final filter = reportsUIState.filters[column]!; if (filter.isNotEmpty) { if (column == 'age') { @@ -872,7 +873,7 @@ class ReportResult { } else if (filter == kAgeGroup120) { return value > min; } else { - final max = min + 30; + final max = min! + 30; if (value < min || value >= max) { return false; } @@ -920,7 +921,7 @@ class ReportResult { return true; } - static bool matchString({String filter, String value}) { + static bool matchString({required String filter, String? value}) { filter = filter.trim(); if (filter == null || filter.isEmpty) { @@ -938,21 +939,21 @@ class ReportResult { return true; } - final localization = AppLocalization.of(navigatorKey.currentContext); - if (localization.lookup(value).toLowerCase().contains(filter)) { + final localization = AppLocalization.of(navigatorKey.currentContext!)!; + if (localization.lookup(value)!.toLowerCase().contains(filter)) { return true; } return false; } - static bool matchAmount({String filter, num amount}) { + static bool matchAmount({required String filter, required num amount}) { final String range = filter.replaceAll(',', '-') + '-'; final List parts = range.split('-'); - final min = parseDouble(parts[0]); + final min = parseDouble(parts[0])!; final max = parts.length > 1 ? parseDouble(parts[1]) : 0; - if (amount < min || (max > 0 && amount > max)) { + if (amount < min || (max! > 0 && amount > max)) { return false; } @@ -960,10 +961,10 @@ class ReportResult { } static bool matchDateTime({ - String filter, - String value, - UserCompanyEntity userCompany, - ReportsUIState reportsUIState, + String? filter, + required String value, + required UserCompanyEntity userCompany, + required ReportsUIState reportsUIState, }) { DateRange dateRange = DateRange.last30Days; try { @@ -974,13 +975,13 @@ class ReportResult { final startDate = calculateStartDate( dateRange: dateRange, - company: userCompany.company, + company: userCompany.company!, customStartDate: reportsUIState.customStartDate, customEndDate: reportsUIState.customEndDate, ); final endDate = calculateEndDate( dateRange: dateRange, - company: userCompany.company, + company: userCompany.company!, customStartDate: reportsUIState.customStartDate, customEndDate: reportsUIState.customEndDate, ); @@ -992,21 +993,21 @@ class ReportResult { if (dateRange == DateRange.custom) { if (customStartDate.isNotEmpty && customEndDate.isNotEmpty) { - if (!(startDate.compareTo(value) <= 0 && - endDate.compareTo(value) >= 0)) { + if (!(startDate!.compareTo(value) <= 0 && + endDate!.compareTo(value) >= 0)) { return false; } } else if (customStartDate.isNotEmpty) { - if (!(startDate.compareTo(value) <= 0)) { + if (!(startDate!.compareTo(value) <= 0)) { return false; } } else if (customEndDate.isNotEmpty) { - if (!(endDate.compareTo(value) >= 0)) { + if (!(endDate!.compareTo(value) >= 0)) { return false; } } } else { - if (!(startDate.compareTo(value) <= 0 && endDate.compareTo(value) >= 0)) { + if (!(startDate!.compareTo(value) <= 0 && endDate!.compareTo(value) >= 0)) { return false; } } @@ -1014,7 +1015,7 @@ class ReportResult { return true; } - List sortedColumns(ReportsUIState reportState) { + List sortedColumns(ReportsUIState reportState) { final data = columns.toList(); final group = reportState.group; @@ -1034,16 +1035,16 @@ class ReportResult { final reportState = store.state.uiState.reportsUIState; return [ - for (String column in sortedColumns(reportState)) + for (String? column in sortedColumns(reportState)) DataColumn( label: Container( constraints: BoxConstraints(minWidth: kTableColumnWidthMin), child: Row( children: [ Text( - (company.getCustomFieldLabel(column).isNotEmpty + (company!.getCustomFieldLabel(column!).isNotEmpty ? company.getCustomFieldLabel(column) - : localization.lookup(column)) + + : localization!.lookup(column))! + ' ', maxLines: 1, overflow: TextOverflow.ellipsis, @@ -1069,16 +1070,16 @@ class ReportResult { DataRow tableFilters( BuildContext context, - Map textEditingControllers, - Map textEditingFocusNodes, - Function(String, String) onFilterChanged) { + Map? textEditingControllers, + Map? textEditingFocusNodes, + Function(String?, String) onFilterChanged) { final localization = AppLocalization.of(context); final theme = Theme.of(context); final store = StoreProvider.of(context); final reportState = store.state.uiState.reportsUIState; return DataRow(cells: [ - for (String column in sortedColumns(reportState)) + for (String? column in sortedColumns(reportState)) if (textEditingControllers == null || !textEditingControllers.containsKey(column)) DataCell(Text('')) @@ -1087,45 +1088,45 @@ class ReportResult { labelText: null, showBlank: true, blankValue: null, - value: textEditingControllers[column].text == 'true' + value: textEditingControllers[column]!.text == 'true' ? true - : textEditingControllers[column].text == 'false' + : textEditingControllers[column]!.text == 'false' ? false : null, onChanged: (dynamic value) { if (value == null) { - textEditingControllers[column].text = ''; + textEditingControllers[column]!.text = ''; onFilterChanged(column, ''); } else { - textEditingControllers[column].text = value.toString(); + textEditingControllers[column]!.text = value.toString(); onFilterChanged(column, value.toString()); } }, items: [ DropdownMenuItem( - child: Text(AppLocalization.of(context).yes), + child: Text(AppLocalization.of(context)!.yes), value: true, ), DropdownMenuItem( - child: Text(AppLocalization.of(context).no), + child: Text(AppLocalization.of(context)!.no), value: false, ), ], )) else if (getReportColumnType(column, context) == ReportColumnType.age) DataCell(AppDropdownButton( - value: (textEditingControllers[column].text ?? '').isNotEmpty && - textEditingControllers[column].text != 'null' - ? textEditingControllers[column].text + value: (textEditingControllers[column]!.text ?? '').isNotEmpty && + textEditingControllers[column]!.text != 'null' + ? textEditingControllers[column]!.text : null, showBlank: true, onChanged: (dynamic value) { - textEditingControllers[column].text = value; + textEditingControllers[column]!.text = value; onFilterChanged(column, value); }, items: kAgeGroups.keys .map((ageGroup) => DropdownMenuItem( - child: Text(localization.lookup(ageGroup)), + child: Text(localization!.lookup(ageGroup)!), value: ageGroup, )) .toList(), @@ -1149,7 +1150,7 @@ class ReportResult { color: Colors.grey, ), onPressed: () { - textEditingControllers[column].text = ''; + textEditingControllers[column]!.text = ''; onFilterChanged(column, ''); }, )), @@ -1167,17 +1168,17 @@ class ReportResult { : null, onChanged: (dynamic value) { if (value == null) { - textEditingControllers[column].text = ''; + textEditingControllers[column]!.text = ''; onFilterChanged(column, ''); } else { - textEditingControllers[column].text = value.toString(); + textEditingControllers[column]!.text = value.toString(); onFilterChanged(column, value.toString()); } }, items: DateRange.values .where((value) => value != DateRange.allTime) .map((dateRange) => DropdownMenuItem( - child: Text(localization.lookup(dateRange.toString())), + child: Text(localization!.lookup(dateRange.toString())!), value: dateRange, )) .toList(), @@ -1199,7 +1200,7 @@ class ReportResult { color: Colors.grey, ), onPressed: () { - textEditingControllers[column].text = ''; + textEditingControllers[column]!.text = ''; onFilterChanged(column, ''); }, )), @@ -1208,31 +1209,31 @@ class ReportResult { DataCell( RawAutocomplete( textEditingController: textEditingControllers[column], - focusNode: textEditingFocusNodes[column], + focusNode: textEditingFocusNodes![column], optionsBuilder: (TextEditingValue textEditingValue) { final filter = textEditingValue.text.toLowerCase(); final index = columns.indexOf(column); final options = data .where((row) => row[index] - .renderText(context, column) + .renderText(context, column)! .toLowerCase() .contains(filter) && row[index] - .renderText(context, column) + .renderText(context, column)! .trim() .isNotEmpty) .map((row) => row[index].renderText(context, column)) .toSet() .toList(); - return options; - }, + return options as FutureOr>; + } as FutureOr> Function(TextEditingValue), onSelected: (value) { - final textEditingController = textEditingControllers[column]; + final textEditingController = textEditingControllers[column]!; textEditingController.text = value; onFilterChanged(column, value); - textEditingFocusNodes[column].requestFocus(); + textEditingFocusNodes[column]!.requestFocus(); WidgetsBinding.instance.addPostFrameCallback((duration) { textEditingController.selection = TextSelection.fromPosition( TextPosition(offset: textEditingController.text.length)); @@ -1253,9 +1254,9 @@ class ReportResult { color: Colors.grey, ), onPressed: () { - textEditingControllers[column].text = ''; + textEditingControllers[column]!.text = ''; onFilterChanged(column, ''); - textEditingFocusNodes[column].unfocus(); + textEditingFocusNodes[column]!.unfocus(); }, )), controller: textEditingController, @@ -1344,46 +1345,46 @@ class ReportResult { return DataRow(cells: cells); } else { final groupTotals = viewModel.groupTotals; - final group = groupTotals.rows[index - 1]; - final values = viewModel.groupTotals.totals[group]; + final group = groupTotals.rows![index - 1]; + final values = viewModel.groupTotals.totals![group]; final cells = []; final localization = AppLocalization.of(context); for (var column in sortedColumns(reportState)) { - String value = ''; + String? value = ''; final columnType = getReportColumnType(column, context); if (column == groupBy) { - if (group.isEmpty) { - value = localization.blank; + if (group!.isEmpty) { + value = localization!.blank; } else if (columnType == ReportColumnType.dateTime || columnType == ReportColumnType.date) { value = formatDate(group, context); } else if (columnType == ReportColumnType.age || EntityPresenter.isFieldLocalized(column)) { - value = localization.lookup(group); + value = localization!.lookup(group); } else { - value = group == 'null' ? localization.blank : group; + value = group == 'null' ? localization!.blank : group; } - value = value + ' (' + values['count'].floor().toString() + ')'; + value = value! + ' (' + values!['count']!.floor().toString() + ')'; } else if (columnType == ReportColumnType.number) { - final currencyId = values['${column}_currency_id']; + final currencyId = values!['${column}_currency_id']; value = formatNumber(values[column], context, - formatNumberType: column.toLowerCase().contains('quantity') + formatNumberType: column!.toLowerCase().contains('quantity') ? FormatNumberType.double : FormatNumberType.money, currencyId: currencyId == null ? null : currencyId.round().toString()); } else if (columnType == ReportColumnType.duration) { - value = formatDuration(Duration(seconds: values[column].toInt())); + value = formatDuration(Duration(seconds: values![column]!.toInt())); } - cells.add(DataCell(Text(value), onTap: () { - if (group.isEmpty) { + cells.add(DataCell(Text(value!), onTap: () { + if (group!.isEmpty) { return; } if (column == groupBy) { - String filter = group; - String customStartDate = ''; + String? filter = group; + String? customStartDate = ''; String customEndDate = ''; if (getReportColumnType(column, context) == ReportColumnType.dateTime || @@ -1395,16 +1396,16 @@ class ReportResult { customEndDate = convertDateTimeToSqlDate(date); } else if (reportState.subgroup == kReportGroupMonth) { customEndDate = - convertDateTimeToSqlDate(addDays(addMonths(date, 1), -1)); + convertDateTimeToSqlDate(addDays(addMonths(date!, 1), -1)); } else if (reportState.subgroup == kReportGroupWeek) { - customEndDate = convertDateTimeToSqlDate(addDays(date, 6)); + customEndDate = convertDateTimeToSqlDate(addDays(date!, 6)); } else { customEndDate = - convertDateTimeToSqlDate(addDays(addYears(date, 1), -1)); + convertDateTimeToSqlDate(addDays(addYears(date!, 1), -1)); } } else if (getReportColumnType(column, context) == ReportColumnType.bool) { - filter = filter == localization.yes + filter = filter == localization!.yes ? 'true' : filter == localization.no ? 'false' @@ -1432,11 +1433,11 @@ class ReportResult { BuildContext context, Function(int, bool) onSortCallback) { final store = StoreProvider.of(context); final company = store.state.company; - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final sortedColumns = columns .where((column) => canTotalColumn(column)) .toList() - ..sort((String str1, String str2) => str1.compareTo(str2)); + ..sort((String? str1, String? str2) => str1!.compareTo(str2!)); //for (String column in sortedColumns) // print('## $column => ${getReportColumnType(column, context)}'); @@ -1450,7 +1451,7 @@ class ReportResult { label: Text(localization.count), onSort: onSortCallback, ), - for (String column in sortedColumns) + for (String? column in sortedColumns) if ([ ReportColumnType.number, ReportColumnType.age, @@ -1458,8 +1459,8 @@ class ReportResult { ].contains(getReportColumnType(column, context))) mt.DataColumn( label: Text( - company.getCustomFieldLabel(column).isEmpty - ? localization.lookup(column) + company!.getCustomFieldLabel(column!).isEmpty + ? localization.lookup(column)! : company.getCustomFieldLabel(column), overflow: TextOverflow.ellipsis, ), @@ -1478,15 +1479,15 @@ class ReportResult { final store = StoreProvider.of(context); final state = store.state; final reportState = state.uiState.reportsUIState; - final settings = state.userCompany.settings; + final settings = state.userCompany!.settings; final reportSettings = settings != null && settings.reportSettings.containsKey(reportState.report) - ? settings.reportSettings[reportState.report] + ? settings.reportSettings[reportState.report]! : ReportSettingsEntity(); - final Map> totals = {}; + final Map> totals = {}; - final allColumns = []; + final allColumns = []; for (var i = 0; i < data.length; i++) { final row = data[i]; @@ -1532,26 +1533,26 @@ class ReportResult { totals[currencyId] = {'count': 0}; } if (!countedRow) { - totals[currencyId]['count']++; + totals[currencyId]!['count']++; countedRow = true; } - if (!totals[currencyId].containsKey(column)) { - totals[currencyId][column] = 0; + if (!totals[currencyId]!.containsKey(column)) { + totals[currencyId]![column] = 0; } - totals[currencyId][column] += cell.doubleValue; + totals[currencyId]![column] += cell.doubleValue!; } } } for (var currencyId in totals.keys) { for (var column in allColumns) { - if (!totals[currencyId].containsKey(column)) { - totals[currencyId][column] = 0; + if (!totals[currencyId]!.containsKey(column)) { + totals[currencyId]![column] = 0; } } } - final keys = totals.keys.where((element) => element != null).toList(); + final keys = totals.keys.whereNotNull().toList(); if (reportSettings.sortTotalsIndex != null) { keys.sort((rowA, rowB) { dynamic valueA; @@ -1562,15 +1563,15 @@ class ReportResult { valueA = currencyMap[rowA]?.listDisplayName; valueB = currencyMap[rowB]?.listDisplayName; } else if (reportSettings.sortTotalsIndex == 1) { - valueA = totals[rowA]['count']; - valueB = totals[rowB]['count']; + valueA = totals[rowA]!['count']; + valueB = totals[rowB]!['count']; } else { - final List fields = totals[rowA].keys.toList() + final List fields = totals[rowA]!.keys.toList() ..remove('count') - ..sort((String str1, String str2) => str1.compareTo(str2)); + ..sort((String? str1, String? str2) => str1!.compareTo(str2!)); final sortColumn = fields[reportSettings.sortTotalsIndex - 2]; - valueA = totals[rowA][sortColumn]; - valueB = totals[rowB][sortColumn]; + valueA = totals[rowA]![sortColumn]; + valueB = totals[rowB]![sortColumn]; } if (valueA == null || valueB == null) { @@ -1583,32 +1584,32 @@ class ReportResult { }); } - List allFields = []; + List allFields = []; keys.forEach((currencyId) { - final values = totals[currencyId]; + final values = totals[currencyId]!; allFields.addAll(values.keys); }); allFields = allFields.toSet().toList() - ..sort((String str1, String str2) => str1.compareTo(str2)); + ..sort((String? str1, String? str2) => str1!.compareTo(str2!)); keys.forEach((currencyId) { - final values = totals[currencyId]; + final values = totals[currencyId]!; final cells = [ mt.DataCell(Text( store.state.staticState.currencyMap[currencyId]?.listDisplayName ?? '')), - mt.DataCell(Text(values['count'].toInt().toString())), + mt.DataCell(Text(values['count']!.toInt().toString())), ]; allFields.forEach((field) { final amount = values[field]; if (field != 'count') { - String value; + String? value; if (field == 'age') { - value = formatNumber(amount / values['count'], context, + value = formatNumber(amount! / values['count']!, context, formatNumberType: FormatNumberType.double); } else if (field == 'duration') { - value = formatDuration(Duration(seconds: amount.toInt())); + value = formatDuration(Duration(seconds: amount!.toInt())); } else { value = formatNumber(amount, context, currencyId: currencyId, @@ -1616,7 +1617,7 @@ class ReportResult { ? FormatNumberType.double : FormatNumberType.money); } - cells.add(mt.DataCell(Text(value))); + cells.add(mt.DataCell(Text(value!))); } }); @@ -1631,52 +1632,52 @@ class ReportResult { abstract class ReportElement { ReportElement({this.entityType, this.entityId}); - final EntityType entityType; - final String entityId; + final EntityType? entityType; + final String? entityId; - double get doubleValue => 0; + double? get doubleValue => 0; - String get stringValue => ''; + String? get stringValue => ''; - Widget renderWidget(BuildContext context, String column) { + Widget renderWidget(BuildContext context, String? column) { throw 'Error: need to override renderWidget()'; } - String renderText(BuildContext context, String column) { + String? renderText(BuildContext context, String? column) { throw 'Error: need to override sortString()'; } } class ReportStringValue extends ReportElement { ReportStringValue({ - @required this.value, - @required EntityType entityType, - @required String entityId, + required this.value, + required EntityType? entityType, + required String entityId, }) : super(entityType: entityType, entityId: entityId); - final String value; + final String? value; @override - String get stringValue => value; + String? get stringValue => value; @override - Widget renderWidget(BuildContext context, String column) { + Widget renderWidget(BuildContext context, String? column) { return Text( - renderText(context, column), + renderText(context, column)!, maxLines: 2, overflow: TextOverflow.ellipsis, ); } @override - String renderText(BuildContext context, String column) { + String? renderText(BuildContext context, String? column) { if (getReportColumnType(column, context) == ReportColumnType.dateTime || getReportColumnType(column, context) == ReportColumnType.date) { return formatDate(value, context, showTime: getReportColumnType(column, context) == ReportColumnType.dateTime); } else if (EntityPresenter.isFieldLocalized(column)) { - return AppLocalization.of(context).lookup(value); + return AppLocalization.of(context)!.lookup(value); } else { return value ?? ''; } @@ -1685,140 +1686,140 @@ class ReportStringValue extends ReportElement { class ReportEntityTypeValue extends ReportElement { ReportEntityTypeValue({ - @required this.value, - @required EntityType entityType, - @required String entityId, + required this.value, + required EntityType? entityType, + required String? entityId, }) : super(entityType: entityType, entityId: entityId); - final EntityType value; + final EntityType? value; @override String get stringValue => '$value'; @override - Widget renderWidget(BuildContext context, String column) { - return Text(renderText(context, column)); + Widget renderWidget(BuildContext context, String? column) { + return Text(renderText(context, column)!); } @override - String renderText(BuildContext context, String column) { - return AppLocalization.of(context).lookup('$value'); + String? renderText(BuildContext context, String? column) { + return AppLocalization.of(context)!.lookup('$value'); } } class ReportAgeValue extends ReportElement { ReportAgeValue({ - @required this.value, - @required EntityType entityType, - @required String entityId, - @required this.currencyId, + required this.value, + required EntityType? entityType, + required String entityId, + required this.currencyId, }) : super(entityType: entityType, entityId: entityId); - final int value; - final String currencyId; + final int? value; + final String? currencyId; @override String get stringValue => '$value'; @override - double get doubleValue => value == -1 ? 0 : value.toDouble(); + double get doubleValue => value == -1 ? 0 : value!.toDouble(); @override - Widget renderWidget(BuildContext context, String column) { + Widget renderWidget(BuildContext context, String? column) { return Text(renderText(context, column)); } @override - String renderText(BuildContext context, String column) { - return value == -1 ? AppLocalization.of(context).paid : '$value'; + String renderText(BuildContext context, String? column) { + return value == -1 ? AppLocalization.of(context)!.paid : '$value'; } } class ReportDurationValue extends ReportElement { ReportDurationValue({ - @required this.value, - @required EntityType entityType, - @required String entityId, - @required this.currencyId, + required this.value, + required EntityType? entityType, + required String entityId, + required this.currencyId, }) : super(entityType: entityType, entityId: entityId); - final int value; - final String currencyId; + final int? value; + final String? currencyId; @override String get stringValue => '$value'; @override - double get doubleValue => value.toDouble(); + double get doubleValue => value!.toDouble(); @override - Widget renderWidget(BuildContext context, String column) { + Widget renderWidget(BuildContext context, String? column) { return Text(renderText(context, column)); } @override - String renderText(BuildContext context, String column) { - return formatDuration(Duration(seconds: value)); + String renderText(BuildContext context, String? column) { + return formatDuration(Duration(seconds: value!)); } } class ReportIntValue extends ReportElement { ReportIntValue({ this.value, - EntityType entityType, - String entityId, + EntityType? entityType, + String? entityId, }) : super(entityType: entityType, entityId: entityId); - final int value; + final int? value; @override String get stringValue => '$value'; @override - double get doubleValue => value.toDouble(); + double get doubleValue => value!.toDouble(); @override - Widget renderWidget(BuildContext context, String column) { - return Text(renderText(context, column)); + Widget renderWidget(BuildContext context, String? column) { + return Text(renderText(context, column)!); } @override - String renderText(BuildContext context, String column) { - return formatNumber(value.toDouble(), context, + String? renderText(BuildContext context, String? column) { + return formatNumber(value!.toDouble(), context, formatNumberType: FormatNumberType.int); } } class ReportNumberValue extends ReportElement { ReportNumberValue({ - @required this.value, - @required EntityType entityType, - @required String entityId, - @required this.currencyId, - @required this.exchangeRate, + required this.value, + required EntityType? entityType, + required String entityId, + required this.currencyId, + required this.exchangeRate, this.formatNumberType = FormatNumberType.money, }) : super(entityType: entityType, entityId: entityId); - final double value; - final FormatNumberType formatNumberType; - final String currencyId; - final double exchangeRate; + final double? value; + final FormatNumberType? formatNumberType; + final String? currencyId; + final double? exchangeRate; @override - double get doubleValue => value; + double? get doubleValue => value; @override String get stringValue => '$value'; @override - Widget renderWidget(BuildContext context, String column) { - return Text(renderText(context, column)); + Widget renderWidget(BuildContext context, String? column) { + return Text(renderText(context, column)!); } @override - String renderText(BuildContext context, String column) { + String? renderText(BuildContext context, String? column) { if (currencyId == null || - column.endsWith('_rate') || + column!.endsWith('_rate') || column.endsWith('_rate1') || column.endsWith('_rate2') || column.endsWith('_rate3')) { @@ -1834,37 +1835,37 @@ class ReportNumberValue extends ReportElement { class ReportBoolValue extends ReportElement { ReportBoolValue({ - @required this.value, - @required EntityType entityType, - @required String entityId, + required this.value, + required EntityType? entityType, + required String entityId, }) : super(entityType: entityType, entityId: entityId); - final bool value; + final bool? value; @override String get stringValue => '$value'; @override - Widget renderWidget(BuildContext context, String column) { + Widget renderWidget(BuildContext context, String? column) { final localization = AppLocalization.of(context); return SizedBox( width: 80, child: Text( - value == true ? localization.yes : localization.no, + value == true ? localization!.yes : localization!.no, textAlign: TextAlign.center, ), ); } @override - String renderText(BuildContext context, String column) { + String renderText(BuildContext context, String? column) { final localization = AppLocalization.of(context); - return value == true ? localization.yes : localization.no; + return value == true ? localization!.yes : localization!.no; } } -int sortReportTableRows(dynamic rowA, dynamic rowB, - ReportSettingsEntity reportSettings, List columns) { +int? sortReportTableRows(dynamic rowA, dynamic rowB, + ReportSettingsEntity reportSettings, List columns) { if (reportSettings.sortColumn == null || reportSettings.sortColumn.isEmpty) { return 0; } diff --git a/lib/ui/reports/reports_screen_vm.dart b/lib/ui/reports/reports_screen_vm.dart index a21ab863d..ab5f4740e 100644 --- a/lib/ui/reports/reports_screen_vm.dart +++ b/lib/ui/reports/reports_screen_vm.dart @@ -58,7 +58,7 @@ import 'package:invoiceninja_flutter/utils/web_stub.dart' if (dart.library.html) 'package:invoiceninja_flutter/utils/web.dart'; class ReportsScreenBuilder extends StatelessWidget { - const ReportsScreenBuilder({Key key}) : super(key: key); + const ReportsScreenBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -75,35 +75,35 @@ class ReportsScreenBuilder extends StatelessWidget { class ReportsScreenVM { ReportsScreenVM({ - @required this.state, - @required this.onSettingsChanged, - @required this.onReportColumnsChanged, - @required this.onReportFiltersChanged, - @required this.onExportPressed, - @required this.onReportSorted, - @required this.groupTotals, - @required this.reportResult, - @required this.onReportTotalsSorted, - @required this.reportState, + required this.state, + required this.onSettingsChanged, + required this.onReportColumnsChanged, + required this.onReportFiltersChanged, + required this.onExportPressed, + required this.onReportSorted, + required this.groupTotals, + required this.reportResult, + required this.onReportTotalsSorted, + required this.reportState, }); final AppState state; - final ReportResult reportResult; + final ReportResult? reportResult; final ReportsUIState reportState; final GroupTotals groupTotals; final Function(BuildContext, List) onReportColumnsChanged; final Function(BuildContext) onExportPressed; - final Function(BuildContext, BuiltMap) onReportFiltersChanged; - final Function(String, bool) onReportSorted; + final Function(BuildContext, BuiltMap) onReportFiltersChanged; + final Function(String?, bool) onReportSorted; final Function(int, bool) onReportTotalsSorted; final Function({ - String report, - String customStartDate, - String customEndDate, - String group, - String selectedGroup, - String subgroup, - String chart, + String? report, + String? customStartDate, + String? customEndDate, + String? group, + String? selectedGroup, + String? subgroup, + String? chart, }) onSettingsChanged; static ReportsScreenVM fromStore(Store store) { @@ -115,7 +115,7 @@ class ReportsScreenVM { ? allReportSettings[report] : ReportSettingsEntity(); - ReportResult reportResult; + ReportResult? reportResult; switch (state.uiState.reportsUIState.report) { case kReportInvoice: @@ -403,16 +403,16 @@ class ReportsScreenVM { )); }, onReportColumnsChanged: (context, columns) { - final settings = state.userCompany.settings.rebuild((b) => b + final settings = state.userCompany!.settings!.rebuild((b) => b ..reportSettings[state.uiState.reportsUIState.report] = - reportSettings.rebuild( + reportSettings!.rebuild( (b) => b..columns.replace(BuiltList(columns)))); final userCompany = - state.userCompany.rebuild((b) => b..settings.replace(settings)); + state.userCompany!.rebuild((b) => b..settings.replace(settings)); final user = - state.user.rebuild((b) => b..userCompany.replace(userCompany)); + state.user!.rebuild((b) => b..userCompany.replace(userCompany)); final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch( SaveUserSettingsRequest( completer: completer, @@ -421,13 +421,13 @@ class ReportsScreenVM { ); }, onSettingsChanged: ({ - String report, - String group, - String selectedGroup, - String subgroup, - String chart, - String customStartDate, - String customEndDate, + String? report, + String? group, + String? selectedGroup, + String? subgroup, + String? chart, + String? customStartDate, + String? customEndDate, }) { Timer(Duration(milliseconds: 100), () { final reportState = state.uiState.reportsUIState; @@ -448,17 +448,17 @@ class ReportsScreenVM { String csvData = ''; if (reportState.group.isEmpty || reportState.isGroupByFiltered) { - reportResult.columns.forEach((column) { - final value = localization.lookup(column); + reportResult!.columns.forEach((column) { + final value = localization!.lookup(column); csvData += '"$value",'; }); csvData = csvData.substring(0, csvData.length - 1); reportResult.data.forEach((row) { csvData += '\n'; for (var i = 0; i < row.length; i++) { - final column = reportResult.columns[i]; + final column = reportResult!.columns[i]; final value = row[i] - .renderText(context, column) + .renderText(context, column)! .trim() .replaceAll('"', '""'); csvData += '"$value",'; @@ -466,27 +466,27 @@ class ReportsScreenVM { csvData = csvData.substring(0, csvData.length - 1); }); } else { - final columns = reportResult.columns + final columns = reportResult!.columns .where((column) => getReportColumnType(column, context) == ReportColumnType.number) .toList(); - columns.sort((String str1, String str2) => str1.compareTo(str2)); + columns.sort((String? str1, String? str2) => str1!.compareTo(str2!)); - csvData += localization.lookup(reportState.group) + + csvData += localization!.lookup(reportState.group)! + ',' + localization.count; columns.forEach((column) { - csvData += ',' + localization.lookup(column); + csvData += ',' + localization.lookup(column)!; }); csvData += '\n'; - groupTotals.rows.forEach((group) { - final row = groupTotals.totals[group]; + groupTotals.rows!.forEach((group) { + final row = groupTotals.totals![group]!; csvData += - '"${group.trim().replaceAll('"', '""')}",${row['count'].toInt()}'; + '"${group!.trim().replaceAll('"', '""')}",${row['count']!.toInt()}'; columns.forEach((column) { final value = @@ -511,7 +511,7 @@ class ReportsScreenVM { WebUtils.downloadTextFile(filename, csvData); } else { final directory = await (isDesktopOS() - ? getDownloadsDirectory() + ? getDownloadsDirectory() as FutureOr : getApplicationDocumentsDirectory()); final filePath = directory.path + file.Platform.pathSeparator + filename; @@ -519,7 +519,7 @@ class ReportsScreenVM { await csvFile.writeAsString(csvData); if (isDesktopOS()) { - showToast(localization.fileSavedInPath + showToast(localization!.fileSavedInPath! .replaceFirst(':path', directory.path)); } else { await Share.shareXFiles([XFile(filePath)]); @@ -532,19 +532,19 @@ class ReportsScreenVM { class GroupTotals { GroupTotals({this.totals, this.rows}); - final Map> totals; - final List rows; + final Map>? totals; + final List? rows; } var memoizeedGroupTotals = memo5(( - ReportResult reportResult, + ReportResult? reportResult, ReportsUIState reportUIState, - ReportSettingsEntity reportSettings, - BuiltMap currencyMap, - CompanyEntity company, + ReportSettingsEntity? reportSettings, + BuiltMap currencyMap, + CompanyEntity? company, ) => calculateReportTotals( - reportResult: reportResult, + reportResult: reportResult!, reportState: reportUIState, reportSettings: reportSettings, currencyMap: currencyMap, @@ -552,13 +552,13 @@ var memoizeedGroupTotals = memo5(( )); GroupTotals calculateReportTotals({ - ReportResult reportResult, - ReportsUIState reportState, - ReportSettingsEntity reportSettings, - BuiltMap currencyMap, - CompanyEntity company, + required ReportResult reportResult, + required ReportsUIState reportState, + ReportSettingsEntity? reportSettings, + BuiltMap? currencyMap, + CompanyEntity? company, }) { - final Map> totals = {}; + final Map> totals = {}; final data = reportResult.data; final columns = reportResult.columns; @@ -567,7 +567,7 @@ GroupTotals calculateReportTotals({ } bool shouldConverCurrencies = false; - final Map> groupCurrencies = {}; + final Map> groupCurrencies = {}; for (var i = 0; i < data.length; i++) { final row = data[i]; final columnIndex = columns.indexOf(reportState.group); @@ -589,14 +589,14 @@ GroupTotals calculateReportTotals({ final column = columns[j]; if (cell is ReportNumberValue) { - final currencyId = groupCurrencies[group][column] ?? ''; + final currencyId = groupCurrencies[group]![column] ?? ''; if (currencyId.isNotEmpty && currencyId != cell.currencyId) { shouldConverCurrencies = true; break; } - groupCurrencies[group][column] = cell.currencyId; + groupCurrencies[group]![column] = cell.currencyId; } } } @@ -611,7 +611,7 @@ GroupTotals calculateReportTotals({ } final groupCell = row[columnIndex]; - String group = groupCell.stringValue; + String? group = groupCell.stringValue; if (groupCell is ReportAgeValue) { final age = groupCell.doubleValue; @@ -628,7 +628,7 @@ GroupTotals calculateReportTotals({ } else { group = kAgeGroup120; } - } else if (group.isNotEmpty && isValidDate(group)) { + } else if (group!.isNotEmpty && isValidDate(group)) { group = convertDateTimeToSqlDate(DateTime.tryParse(group)); if (reportState.subgroup == kReportGroupYear) { group = group.substring(0, 4) + '-01-01'; @@ -651,34 +651,34 @@ GroupTotals calculateReportTotals({ final column = columns[j]; if (column == reportState.group) { - totals[group]['count'] += 1; + totals[group]!['count'] += 1; } if (cell is ReportNumberValue || cell is ReportAgeValue || cell is ReportDurationValue) { - if (!totals[group].containsKey(column)) { - totals[group][column] = 0; + if (!totals[group]!.containsKey(column)) { + totals[group]![column] = 0; } if (cell is ReportNumberValue && cell.currencyId != null) { - totals[group]['${column}_currency_id'] = parseDouble( - shouldConverCurrencies ? company.currencyId : cell.currencyId); + totals[group]!['${column}_currency_id'] = parseDouble( + shouldConverCurrencies ? company!.currencyId : cell.currencyId); } if (cell is ReportNumberValue && cell.currencyId != null && - cell.currencyId != company.currencyId && + cell.currencyId != company!.currencyId && shouldConverCurrencies) { - double cellValue = cell.value; - final toCurrency = currencyMap[company.currencyId]; + double cellValue = cell.value!; + final toCurrency = currencyMap![company.currencyId]!; final rate = getExchangeRate(currencyMap, fromCurrencyId: cell.currencyId, toCurrencyId: company.currencyId); cellValue = round(cellValue * rate, toCurrency.precision); - totals[group][column] += cellValue; + totals[group]![column] += cellValue; } else { - totals[group][column] += cell.doubleValue; + totals[group]![column] += cell.doubleValue!; } } } @@ -686,7 +686,7 @@ GroupTotals calculateReportTotals({ final rows = totals.keys.toList(); final sortedColumns = reportResult.sortedColumns(reportState); - final index = sortedColumns.contains(reportSettings.sortColumn) + final index = sortedColumns.contains(reportSettings!.sortColumn) ? sortedColumns.indexOf(reportSettings.sortColumn) : 0; @@ -697,13 +697,13 @@ GroupTotals calculateReportTotals({ final sort = sortedColumns[index]; if (index == 0) { return reportSettings.sortAscending - ? rowA.compareTo(rowB) - : rowB.compareTo(rowA); + ? rowA!.compareTo(rowB!) + : rowB!.compareTo(rowA!); } else { - if (valuesA.containsKey(sort) && valuesB.containsKey(sort)) { + if (valuesA!.containsKey(sort) && valuesB!.containsKey(sort)) { return reportSettings.sortAscending - ? valuesA[sort].compareTo(valuesB[sort]) - : valuesB[sort].compareTo(valuesA[sort]); + ? valuesA[sort]!.compareTo(valuesB[sort]!) + : valuesB[sort]!.compareTo(valuesA[sort]!); } } } diff --git a/lib/ui/reports/task_report.dart b/lib/ui/reports/task_report.dart index 0dd86310d..042b18296 100644 --- a/lib/ui/reports/task_report.dart +++ b/lib/ui/reports/task_report.dart @@ -1,5 +1,6 @@ // Package imports: import 'package:built_collection/built_collection.dart'; +import 'package:collection/collection.dart' show IterableNullableExtension; import 'package:invoiceninja_flutter/redux/reports/reports_selectors.dart'; import 'package:memoize/memoize.dart'; @@ -45,19 +46,19 @@ enum TaskReportFields { } var memoizedTaskReport = memo10(( - UserCompanyEntity userCompany, + UserCompanyEntity? userCompany, ReportsUIState reportsUIState, - BuiltMap taskMap, - BuiltMap invoiceMap, - BuiltMap groupMap, - BuiltMap clientMap, - BuiltMap taskStatusMap, - BuiltMap userMap, - BuiltMap projectMap, + BuiltMap taskMap, + BuiltMap invoiceMap, + BuiltMap groupMap, + BuiltMap clientMap, + BuiltMap taskStatusMap, + BuiltMap userMap, + BuiltMap projectMap, StaticState staticState, ) => taskReport( - userCompany, + userCompany!, reportsUIState, taskMap, invoiceMap, @@ -72,13 +73,13 @@ var memoizedTaskReport = memo10(( ReportResult taskReport( UserCompanyEntity userCompany, ReportsUIState reportsUIState, - BuiltMap taskMap, - BuiltMap invoiceMap, - BuiltMap groupMap, - BuiltMap clientMap, - BuiltMap taskStatusMap, - BuiltMap userMap, - BuiltMap projectMap, + BuiltMap taskMap, + BuiltMap invoiceMap, + BuiltMap groupMap, + BuiltMap clientMap, + BuiltMap taskStatusMap, + BuiltMap userMap, + BuiltMap projectMap, StaticState staticState, ) { final List> data = []; @@ -88,7 +89,7 @@ ReportResult taskReport( final reportSettings = userCompany.settings?.reportSettings; final taskReportSettings = reportSettings != null && reportSettings.containsKey(kReportTask) - ? reportSettings[kReportTask] + ? reportSettings[kReportTask]! : ReportSettingsEntity(); final defaultColumns = [ @@ -105,21 +106,21 @@ ReportResult taskReport( if (taskReportSettings.columns.isNotEmpty) { columns = BuiltList(taskReportSettings.columns .map((e) => EnumUtils.fromString(TaskReportFields.values, e)) - .where((element) => element != null) + .whereNotNull() .toList()); } else { columns = BuiltList(defaultColumns); } for (var taskId in taskMap.keys) { - final task = taskMap[taskId]; + final task = taskMap[taskId]!; final client = clientMap[task.clientId] ?? ClientEntity(); final invoice = invoiceMap[task.invoiceId] ?? InvoiceEntity(); final project = projectMap[task.projectId] ?? ProjectEntity(); final group = groupMap[client.groupId] ?? GroupEntity(); - if ((task.isDeleted && !userCompany.company.reportIncludeDeleted) || - client.isDeleted) { + if ((task.isDeleted! && !userCompany.company!.reportIncludeDeleted) || + client.isDeleted!) { continue; } @@ -203,28 +204,28 @@ ReportResult taskReport( value = presentCustomField( value: task.customValue1, customFieldType: CustomFieldType.task1, - company: userCompany.company, + company: userCompany.company!, ); break; case TaskReportFields.task2: value = presentCustomField( value: task.customValue2, customFieldType: CustomFieldType.task2, - company: userCompany.company, + company: userCompany.company!, ); break; case TaskReportFields.task3: value = presentCustomField( value: task.customValue3, customFieldType: CustomFieldType.task3, - company: userCompany.company, + company: userCompany.company!, ); break; case TaskReportFields.task4: value = presentCustomField( value: task.customValue4, customFieldType: CustomFieldType.task4, - company: userCompany.company, + company: userCompany.company!, ); break; case TaskReportFields.status: @@ -244,7 +245,7 @@ ReportResult taskReport( client: client, task: task, group: group, - ), + )!, ); break; } @@ -253,8 +254,8 @@ ReportResult taskReport( value: value, userCompany: userCompany, reportsUIState: reportsUIState, - column: EnumUtils.parse(column), - )) { + column: EnumUtils.parse(column)!, + )!) { skip = true; } @@ -279,7 +280,7 @@ ReportResult taskReport( final selectedColumns = columns.map((item) => EnumUtils.parse(item)).toList(); data.sort((rowA, rowB) => - sortReportTableRows(rowA, rowB, taskReportSettings, selectedColumns)); + sortReportTableRows(rowA, rowB, taskReportSettings, selectedColumns)!); return ReportResult( allColumns: TaskReportFields.values.map((e) => EnumUtils.parse(e)).toList(), diff --git a/lib/ui/reports/transaction_report.dart b/lib/ui/reports/transaction_report.dart index b8c1ad497..1e19ec511 100644 --- a/lib/ui/reports/transaction_report.dart +++ b/lib/ui/reports/transaction_report.dart @@ -1,5 +1,6 @@ // Package imports: import 'package:built_collection/built_collection.dart'; +import 'package:collection/collection.dart' show IterableNullableExtension; import 'package:invoiceninja_flutter/utils/strings.dart'; import 'package:memoize/memoize.dart'; @@ -33,19 +34,19 @@ enum TransactionReportFields { } var memoizedTransactionReport = memo10(( - UserCompanyEntity userCompany, + UserCompanyEntity? userCompany, ReportsUIState reportsUIState, - BuiltMap transactionMap, - BuiltMap vendorMap, - BuiltMap expenseMap, - BuiltMap categoryMap, - BuiltMap invoiceMap, - BuiltMap bankAccountMap, - BuiltMap paymentMap, + BuiltMap transactionMap, + BuiltMap vendorMap, + BuiltMap expenseMap, + BuiltMap categoryMap, + BuiltMap invoiceMap, + BuiltMap bankAccountMap, + BuiltMap paymentMap, StaticState staticState, ) => transactionReport( - userCompany, + userCompany!, reportsUIState, transactionMap, vendorMap, @@ -60,13 +61,13 @@ var memoizedTransactionReport = memo10(( ReportResult transactionReport( UserCompanyEntity userCompany, ReportsUIState reportsUIState, - BuiltMap transactionMap, - BuiltMap vendorMap, - BuiltMap expenseMap, - BuiltMap categoryMap, - BuiltMap invoiceMap, - BuiltMap bankAccountMap, - BuiltMap paymentMap, + BuiltMap transactionMap, + BuiltMap vendorMap, + BuiltMap expenseMap, + BuiltMap categoryMap, + BuiltMap invoiceMap, + BuiltMap bankAccountMap, + BuiltMap paymentMap, StaticState staticState, ) { final List> data = []; @@ -76,7 +77,7 @@ ReportResult transactionReport( final reportSettings = userCompany.settings?.reportSettings; final transactionReportSettings = reportSettings != null && reportSettings.containsKey(kReportTransaction) - ? reportSettings[kReportTransaction] + ? reportSettings[kReportTransaction]! : ReportSettingsEntity(); final defaultColumns = [ @@ -92,16 +93,16 @@ ReportResult transactionReport( if (transactionReportSettings.columns.isNotEmpty) { columns = BuiltList(transactionReportSettings.columns .map((e) => EnumUtils.fromString(TransactionReportFields.values, e)) - .where((element) => element != null) + .whereNotNull() .toList()); } else { columns = BuiltList(defaultColumns); } for (var transactionId in transactionMap.keys) { - final transaction = transactionMap[transactionId]; + final transaction = transactionMap[transactionId]!; - if (transaction.isDeleted && !userCompany.company.reportIncludeDeleted) { + if (transaction.isDeleted! && !userCompany.company!.reportIncludeDeleted) { continue; } @@ -177,8 +178,8 @@ ReportResult transactionReport( value: value, userCompany: userCompany, reportsUIState: reportsUIState, - column: EnumUtils.parse(column), - )) { + column: EnumUtils.parse(column)!, + )!) { skip = true; } @@ -200,7 +201,7 @@ ReportResult transactionReport( final selectedColumns = columns.map((item) => EnumUtils.parse(item)).toList(); data.sort((rowA, rowB) => sortReportTableRows( - rowA, rowB, transactionReportSettings, selectedColumns)); + rowA, rowB, transactionReportSettings, selectedColumns)!); return ReportResult( allColumns: diff --git a/lib/ui/reports/vendor_report.dart b/lib/ui/reports/vendor_report.dart index 4b90d79d5..7b0711e8a 100644 --- a/lib/ui/reports/vendor_report.dart +++ b/lib/ui/reports/vendor_report.dart @@ -1,5 +1,6 @@ // Package imports: import 'package:built_collection/built_collection.dart'; +import 'package:collection/collection.dart' show IterableNullableExtension; import 'package:invoiceninja_flutter/data/models/group_model.dart'; import 'package:invoiceninja_flutter/main_app.dart'; import 'package:invoiceninja_flutter/redux/reports/reports_selectors.dart'; @@ -69,22 +70,22 @@ enum VendorReportFields { } var memoizedVendorReport = memo6(( - UserCompanyEntity userCompany, + UserCompanyEntity? userCompany, ReportsUIState reportsUIState, - BuiltMap vendorMap, - BuiltMap userMap, - BuiltMap groupMap, + BuiltMap vendorMap, + BuiltMap userMap, + BuiltMap groupMap, StaticState staticState, ) => - vendorReport(userCompany, reportsUIState, vendorMap, userMap, groupMap, + vendorReport(userCompany!, reportsUIState, vendorMap, userMap, groupMap, staticState)); ReportResult vendorReport( UserCompanyEntity userCompany, ReportsUIState reportsUIState, - BuiltMap vendorMap, - BuiltMap userMap, - BuiltMap groupMap, + BuiltMap vendorMap, + BuiltMap userMap, + BuiltMap groupMap, StaticState staticState, ) { final List> data = []; @@ -94,7 +95,7 @@ ReportResult vendorReport( final reportSettings = userCompany.settings?.reportSettings; final vendorReportSettings = reportSettings != null && reportSettings.containsKey(kReportVendor) - ? reportSettings[kReportVendor] + ? reportSettings[kReportVendor]! : ReportSettingsEntity(); final defaultColumns = [ @@ -110,16 +111,16 @@ ReportResult vendorReport( if (vendorReportSettings.columns.isNotEmpty) { columns = BuiltList(vendorReportSettings.columns .map((e) => EnumUtils.fromString(VendorReportFields.values, e)) - .where((element) => element != null) + .whereNotNull() .toList()); } else { columns = BuiltList(defaultColumns); } for (var vendorId in vendorMap.keys) { - final vendor = vendorMap[vendorId]; + final vendor = vendorMap[vendorId]!; final contact = vendor.primaryContact; - if (vendor.isDeleted && !userCompany.company.reportIncludeDeleted) { + if (vendor.isDeleted! && !userCompany.company!.reportIncludeDeleted) { continue; } @@ -128,7 +129,7 @@ ReportResult vendorReport( final exchangeRate = getExchangeRate(staticState.currencyMap, fromCurrencyId: vendor.currencyId, - toCurrencyId: userCompany.company.currencyId); + toCurrencyId: userCompany.company!.currencyId); for (var column in columns) { dynamic value = ''; @@ -172,28 +173,28 @@ ReportResult vendorReport( value = presentCustomField( value: vendor.customValue1, customFieldType: CustomFieldType.vendor1, - company: userCompany.company, + company: userCompany.company!, ); break; case VendorReportFields.vendor2: value = presentCustomField( value: vendor.customValue2, customFieldType: CustomFieldType.vendor2, - company: userCompany.company, + company: userCompany.company!, ); break; case VendorReportFields.vendor3: value = presentCustomField( value: vendor.customValue3, customFieldType: CustomFieldType.vendor3, - company: userCompany.company, + company: userCompany.company!, ); break; case VendorReportFields.vendor4: value = presentCustomField( value: vendor.customValue4, customFieldType: CustomFieldType.vendor4, - company: userCompany.company, + company: userCompany.company!, ); break; case VendorReportFields.address1: @@ -256,47 +257,47 @@ ReportResult vendorReport( value = userMap[vendor.createdUserId]?.listDisplayName ?? ''; break; case VendorReportFields.contact_full_name: - value = contact.fullName; + value = contact!.fullName; break; case VendorReportFields.contact_first_name: - value = contact.firstName; + value = contact!.firstName; break; case VendorReportFields.contact_last_name: - value = contact.lastName; + value = contact!.lastName; break; case VendorReportFields.contact_email: - value = contact.email; + value = contact!.email; break; case VendorReportFields.contact_phone: - value = contact.phone; + value = contact!.phone; break; case VendorReportFields.contact1: value = presentCustomField( - value: contact.customValue1, + value: contact!.customValue1, customFieldType: CustomFieldType.vendorContact1, - company: userCompany.company, + company: userCompany.company!, ); break; case VendorReportFields.contact2: value = presentCustomField( - value: contact.customValue2, + value: contact!.customValue2, customFieldType: CustomFieldType.vendorContact2, - company: userCompany.company, + company: userCompany.company!, ); break; case VendorReportFields.contact3: value = presentCustomField( - value: contact.customValue3, + value: contact!.customValue3, customFieldType: CustomFieldType.vendorContact3, - company: userCompany.company, + company: userCompany.company!, ); break; case VendorReportFields.contact4: value = presentCustomField( - value: contact.customValue4, + value: contact!.customValue4, customFieldType: CustomFieldType.vendorContact4, - company: userCompany.company, + company: userCompany.company!, ); break; case VendorReportFields.last_login: @@ -320,7 +321,7 @@ ReportResult vendorReport( value = vendor.documents.length; break; case VendorReportFields.classification: - value = AppLocalization.of(navigatorKey.currentContext) + value = AppLocalization.of(navigatorKey.currentContext!)! .lookup(vendor.classification); break; } @@ -329,8 +330,8 @@ ReportResult vendorReport( value: value, userCompany: userCompany, reportsUIState: reportsUIState, - column: EnumUtils.parse(column), - )) { + column: EnumUtils.parse(column)!, + )!) { skip = true; } @@ -357,7 +358,7 @@ ReportResult vendorReport( final selectedColumns = columns.map((item) => EnumUtils.parse(item)).toList(); data.sort((rowA, rowB) => - sortReportTableRows(rowA, rowB, vendorReportSettings, selectedColumns)); + sortReportTableRows(rowA, rowB, vendorReportSettings, selectedColumns)!); return ReportResult( allColumns: diff --git a/lib/ui/schedule/edit/schedule_edit.dart b/lib/ui/schedule/edit/schedule_edit.dart index ac4d7fb5c..6f85cb6ce 100644 --- a/lib/ui/schedule/edit/schedule_edit.dart +++ b/lib/ui/schedule/edit/schedule_edit.dart @@ -22,8 +22,8 @@ import 'package:invoiceninja_flutter/utils/strings.dart'; class ScheduleEdit extends StatefulWidget { const ScheduleEdit({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final ScheduleEditVM viewModel; @@ -75,7 +75,7 @@ class _ScheduleEditState extends State { } void _onSavePressed() { - final bool isValid = _formKey.currentState.validate(); + final bool isValid = _formKey.currentState!.validate(); if (!isValid) { return; @@ -100,7 +100,7 @@ class _ScheduleEditState extends State { '', state.userState.map, [], - state.company.settings.recurringNumberPrefix, + state.company!.settings.recurringNumberPrefix, ); final quoteIds = memoizedDropdownQuoteList( @@ -130,7 +130,7 @@ class _ScheduleEditState extends State { return EditScaffold( title: - schedule.isNew ? localization.newSchedule : localization.editSchedule, + schedule.isNew ? localization!.newSchedule : localization!.editSchedule, onCancelPressed: (context) => viewModel.onCancelPressed(context), onSavePressed: (context) => _onSavePressed(), body: Form( @@ -163,7 +163,7 @@ class _ScheduleEditState extends State { items: ScheduleEntity.TEMPLATES .map((entry) => DropdownMenuItem( value: entry, - child: Text(localization.lookup(entry)), + child: Text(localization.lookup(entry)!), )) .toList()), DatePicker( @@ -202,7 +202,7 @@ class _ScheduleEditState extends State { .map((entry) => DropdownMenuItem( value: entry.key, child: - Text(localization.lookup(entry.value)), + Text(localization.lookup(entry.value)!), )) .toList()), if (schedule.frequencyId.isNotEmpty) @@ -235,8 +235,8 @@ class _ScheduleEditState extends State { AppDropdownButton( labelText: localization.dateRange, blankValue: null, - value: parameters.dateRange.isNotEmpty - ? DateRange.valueOf(toCamelCase(parameters.dateRange)) + value: parameters.dateRange!.isNotEmpty + ? DateRange.valueOf(toCamelCase(parameters.dateRange!)) : null, onChanged: (dynamic value) { viewModel.onChanged(schedule.rebuild((b) => b @@ -247,7 +247,7 @@ class _ScheduleEditState extends State { .where((value) => value != DateRange.custom) .map((dateRange) => DropdownMenuItem( child: Text( - localization.lookup(dateRange.toString())), + localization.lookup(dateRange.toString())!), value: dateRange, )) .toList(), @@ -266,7 +266,7 @@ class _ScheduleEditState extends State { kStatementStatusUnpaid, ] .map((value) => DropdownMenuItem( - child: Text(localization.lookup(value)), + child: Text(localization.lookup(value)!), value: value, )) .toList(), @@ -303,9 +303,9 @@ class _ScheduleEditState extends State { isRequired: false, clientId: null, clientState: state.clientState, - excludeIds: parameters.clients.toList(), + excludeIds: parameters.clients!.toList(), onSelected: (value) { - if (!parameters.clients.contains(value.id)) { + if (!parameters.clients!.contains(value.id)) { viewModel.onChanged(schedule.rebuild( (b) => b..parameters.clients.add(value.id))); } @@ -315,12 +315,12 @@ class _ScheduleEditState extends State { }); }), SizedBox(height: 20), - if (parameters.clients.isEmpty) + if (parameters.clients!.isEmpty) HelpText(localization.allClients), - for (var clientId in parameters.clients) + for (var clientId in parameters.clients!) ListTile( title: - Text(state.clientState.get(clientId).displayName), + Text(state.clientState.get(clientId)!.displayName), trailing: IconButton( icon: Icon(Icons.clear), onPressed: () { @@ -352,7 +352,7 @@ class _ScheduleEditState extends State { .map((entityType) => DropdownMenuItem( value: entityType.apiValue, child: Text( - localization.lookup(entityType.apiValue), + localization.lookup(entityType.apiValue)!, ), )) .toList()), diff --git a/lib/ui/schedule/edit/schedule_edit_vm.dart b/lib/ui/schedule/edit/schedule_edit_vm.dart index 1bce27045..727c2714a 100644 --- a/lib/ui/schedule/edit/schedule_edit_vm.dart +++ b/lib/ui/schedule/edit/schedule_edit_vm.dart @@ -16,7 +16,7 @@ import 'package:flutter_styled_toast/flutter_styled_toast.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class ScheduleEditScreen extends StatelessWidget { - const ScheduleEditScreen({Key key}) : super(key: key); + const ScheduleEditScreen({Key? key}) : super(key: key); static const String route = '/$kSettings/$kSettingsSchedulesEdit'; @override @@ -37,20 +37,20 @@ class ScheduleEditScreen extends StatelessWidget { class ScheduleEditVM { ScheduleEditVM({ - @required this.state, - @required this.schedule, - @required this.company, - @required this.onChanged, - @required this.isSaving, - @required this.origSchedule, - @required this.onSavePressed, - @required this.onCancelPressed, - @required this.isLoading, + required this.state, + required this.schedule, + required this.company, + required this.onChanged, + required this.isSaving, + required this.origSchedule, + required this.onSavePressed, + required this.onCancelPressed, + required this.isLoading, }); factory ScheduleEditVM.fromStore(Store store) { final state = store.state; - final schedule = state.scheduleUIState.editing; + final schedule = state.scheduleUIState.editing!; return ScheduleEditVM( state: state, @@ -68,7 +68,7 @@ class ScheduleEditVM { entity: ScheduleEntity(ScheduleEntity.TEMPLATE_EMAIL_STATEMENT), force: true); if (state.scheduleUIState.cancelCompleter != null) { - state.scheduleUIState.cancelCompleter.complete(); + state.scheduleUIState.cancelCompleter!.complete(); } else { store.dispatch(UpdateCurrentRoute(state.uiState.previousRoute)); } @@ -82,9 +82,9 @@ class ScheduleEditVM { store.dispatch( SaveScheduleRequest(completer: completer, schedule: schedule)); return completer.future.then((savedSchedule) { - showToast(schedule.isNew - ? localization.createdSchedule - : localization.updatedSchedule); + showToast(schedule!.isNew + ? localization!.createdSchedule + : localization!.updatedSchedule); if (state.prefState.isMobile) { store.dispatch(UpdateCurrentRoute(ScheduleViewScreen.route)); if (schedule.isNew) { @@ -109,12 +109,12 @@ class ScheduleEditVM { } final ScheduleEntity schedule; - final CompanyEntity company; + final CompanyEntity? company; final Function(ScheduleEntity) onChanged; final Function(BuildContext) onSavePressed; final Function(BuildContext) onCancelPressed; final bool isLoading; final bool isSaving; - final ScheduleEntity origSchedule; + final ScheduleEntity? origSchedule; final AppState state; } diff --git a/lib/ui/schedule/schedule_list_item.dart b/lib/ui/schedule/schedule_list_item.dart index 7b1f14681..faa08614b 100644 --- a/lib/ui/schedule/schedule_list_item.dart +++ b/lib/ui/schedule/schedule_list_item.dart @@ -13,21 +13,21 @@ import 'package:timeago/timeago.dart' as timeago; class ScheduleListItem extends StatelessWidget { const ScheduleListItem({ - @required this.user, - @required this.schedule, - @required this.filter, + required this.user, + required this.schedule, + required this.filter, this.onTap, this.onLongPress, this.onCheckboxChanged, this.isChecked = false, }); - final UserEntity user; - final GestureTapCallback onTap; - final GestureTapCallback onLongPress; - final ScheduleEntity schedule; - final String filter; - final Function(bool) onCheckboxChanged; + final UserEntity? user; + final GestureTapCallback? onTap; + final GestureTapCallback? onLongPress; + final ScheduleEntity? schedule; + final String? filter; + final Function(bool?)? onCheckboxChanged; final bool isChecked; @override @@ -39,72 +39,72 @@ class ScheduleListItem extends StatelessWidget { final listUIState = scheduleUIState.listUIState; final isInMultiselect = listUIState.isInMultiselect(); final showCheckbox = onCheckboxChanged != null || isInMultiselect; - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; - String subtitle = formatDate(schedule.nextRun, context); + String subtitle = formatDate(schedule!.nextRun, context); - String title = localization.lookup(schedule.template); - if (schedule.template == ScheduleEntity.TEMPLATE_EMAIL_RECORD) { - final entityType = EntityType.valueOf(schedule.parameters.entityType); + String? title = localization.lookup(schedule!.template); + if (schedule!.template == ScheduleEntity.TEMPLATE_EMAIL_RECORD) { + final entityType = EntityType.valueOf(schedule!.parameters.entityType); final entity = - state.getEntityMap(entityType)[schedule.parameters.entityId]; + state.getEntityMap(entityType)![schedule!.parameters.entityId]; if (entityType == EntityType.purchaseOrder) { final vendor = - state.vendorState.get((entity as BelongsToVendor).vendorId); + state.vendorState.get((entity as BelongsToVendor).vendorId)!; title += ': ' + vendor.name; } else { final client = - state.clientState.get((entity as BelongsToClient).clientId); + state.clientState.get((entity as BelongsToClient).clientId!)!; title += ': ' + client.displayName; } subtitle += ' • ' + - localization.lookup(schedule.parameters.entityType) + + localization.lookup(schedule!.parameters.entityType)! + ' ' + (entity?.listDisplayName ?? ''); - } else if (schedule.template == ScheduleEntity.TEMPLATE_EMAIL_STATEMENT) { - if (schedule.parameters.clients.isEmpty) { - title += ': ' + localization.allClients; - } else if (schedule.parameters.clients.length == 1) { - final clientId = schedule.parameters.clients.first; - title += ': ' + state.clientState.get(clientId).displayName; + } else if (schedule!.template == ScheduleEntity.TEMPLATE_EMAIL_STATEMENT) { + if (schedule!.parameters.clients!.isEmpty) { + title += ': ' + localization.allClients!; + } else if (schedule!.parameters.clients!.length == 1) { + final clientId = schedule!.parameters.clients!.first; + title += ': ' + state.clientState.get(clientId)!.displayName; } else { title += - ': ${schedule.parameters.clients.length} ${localization.clients}'; + ': ${schedule!.parameters.clients!.length} ${localization.clients}'; } subtitle += - ' • ' + localization.lookup(kFrequencies[schedule.frequencyId]); + ' • ' + localization.lookup(kFrequencies[schedule!.frequencyId])!; } return DismissibleEntity( userCompany: state.userCompany, entity: schedule, - isSelected: schedule.id == + isSelected: schedule!.id == (uiState.isEditing - ? scheduleUIState.editing.id + ? scheduleUIState.editing!.id : scheduleUIState.selectedId), child: Container( width: MediaQuery.of(context).size.width, child: ListTile( - onTap: () => onTap != null ? onTap() : selectEntity(entity: schedule), + onTap: () => onTap != null ? onTap!() : selectEntity(entity: schedule!), onLongPress: () => onLongPress != null - ? onLongPress() - : selectEntity(entity: schedule, longPress: true), + ? onLongPress!() + : selectEntity(entity: schedule!, longPress: true), leading: showCheckbox ? IgnorePointer( ignoring: listUIState.isInMultiselect(), child: Checkbox( value: isChecked, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, - onChanged: (value) => onCheckboxChanged(value), + onChanged: (value) => onCheckboxChanged!(value), activeColor: Theme.of(context).colorScheme.secondary, ), ) : null, - title: Text(title), + title: Text(title!), trailing: Text(timeago.format( - convertSqlDateToDateTime(schedule.nextRun), + convertSqlDateToDateTime(schedule!.nextRun), locale: localeSelector(state, twoLetter: true), allowFromNow: true, )), @@ -113,7 +113,7 @@ class ScheduleListItem extends StatelessWidget { children: [ subtitle != null && subtitle.isNotEmpty ? Text( - (filter ?? '').isNotEmpty ? filter : subtitle, + (filter ?? '').isNotEmpty ? filter! : subtitle, maxLines: 3, overflow: TextOverflow.ellipsis, ) diff --git a/lib/ui/schedule/schedule_list_vm.dart b/lib/ui/schedule/schedule_list_vm.dart index 3c2518b8a..ca1f38f13 100644 --- a/lib/ui/schedule/schedule_list_vm.dart +++ b/lib/ui/schedule/schedule_list_vm.dart @@ -17,7 +17,7 @@ import 'package:invoiceninja_flutter/redux/app/app_state.dart'; import 'package:invoiceninja_flutter/redux/schedule/schedule_actions.dart'; class ScheduleListBuilder extends StatelessWidget { - const ScheduleListBuilder({Key key}) : super(key: key); + const ScheduleListBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -44,7 +44,7 @@ class ScheduleListBuilder extends StatelessWidget { user: viewModel.state.user, filter: viewModel.filter, schedule: schedule, - isChecked: isInMultiselect && listState.isSelected(schedule.id), + isChecked: isInMultiselect && listState.isSelected(schedule!.id), ); }); }, @@ -54,18 +54,18 @@ class ScheduleListBuilder extends StatelessWidget { class ScheduleListVM { ScheduleListVM({ - @required this.state, - @required this.userCompany, - @required this.scheduleList, - @required this.scheduleMap, - @required this.filter, - @required this.isLoading, - @required this.listState, - @required this.onRefreshed, - @required this.onEntityAction, - @required this.tableColumns, - @required this.onSortColumn, - @required this.onClearMultielsect, + required this.state, + required this.userCompany, + required this.scheduleList, + required this.scheduleMap, + required this.filter, + required this.isLoading, + required this.listState, + required this.onRefreshed, + required this.onEntityAction, + required this.tableColumns, + required this.onSortColumn, + required this.onClearMultielsect, }); static ScheduleListVM fromStore(Store store) { @@ -74,7 +74,7 @@ class ScheduleListVM { return Future(null); } final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(RefreshData(completer: completer)); return completer.future; } @@ -98,7 +98,7 @@ class ScheduleListVM { handleScheduleAction(context, schedules, action), onRefreshed: (context) => _handleRefresh(context), tableColumns: - state.userCompany.settings?.getTableColumns(EntityType.schedule) ?? + state.userCompany!.settings?.getTableColumns(EntityType.schedule) ?? SchedulePresenter.getDefaultTableFields(state.userCompany), onSortColumn: (field) => store.dispatch(SortSchedules(field)), onClearMultielsect: () => store.dispatch(ClearScheduleMultiselect()), @@ -106,11 +106,11 @@ class ScheduleListVM { } final AppState state; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List scheduleList; - final BuiltMap scheduleMap; + final BuiltMap scheduleMap; final ListUIState listState; - final String filter; + final String? filter; final bool isLoading; final Function(BuildContext) onRefreshed; final Function(BuildContext, List, EntityAction) onEntityAction; diff --git a/lib/ui/schedule/schedule_presenter.dart b/lib/ui/schedule/schedule_presenter.dart index 4c72aa2df..75a5d3d6d 100644 --- a/lib/ui/schedule/schedule_presenter.dart +++ b/lib/ui/schedule/schedule_presenter.dart @@ -3,11 +3,11 @@ import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/ui/app/presenters/entity_presenter.dart'; class SchedulePresenter extends EntityPresenter { - static List getDefaultTableFields(UserCompanyEntity userCompany) { + static List getDefaultTableFields(UserCompanyEntity? userCompany) { return []; } - static List getAllTableFields(UserCompanyEntity userCompany) { + static List getAllTableFields(UserCompanyEntity? userCompany) { return [ ...getDefaultTableFields(userCompany), ...EntityPresenter.getBaseFields(), @@ -15,7 +15,7 @@ class SchedulePresenter extends EntityPresenter { } @override - Widget getField({String field, BuildContext context}) { + Widget getField({String? field, required BuildContext context}) { //final state = StoreProvider.of(context).state; //final schedule = entity as ScheduleEntity; diff --git a/lib/ui/schedule/schedule_screen.dart b/lib/ui/schedule/schedule_screen.dart index 6a59305bf..aff33a800 100644 --- a/lib/ui/schedule/schedule_screen.dart +++ b/lib/ui/schedule/schedule_screen.dart @@ -16,8 +16,8 @@ import 'schedule_screen_vm.dart'; class ScheduleScreen extends StatelessWidget { const ScheduleScreen({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); static const String route = '/$kSettings/$kSettingsSchedules'; @@ -86,7 +86,7 @@ class ScheduleScreen extends StatelessWidget { store.dispatch(FilterSchedulesByCustom4(value)), ), floatingActionButton: state.prefState.isMenuFloated && - userCompany.canCreate(EntityType.schedule) + userCompany!.canCreate(EntityType.schedule) ? FloatingActionButton( heroTag: 'schedule_fab', backgroundColor: Theme.of(context).primaryColorDark, @@ -98,7 +98,7 @@ class ScheduleScreen extends StatelessWidget { Icons.add, color: Colors.white, ), - tooltip: localization.newSchedule, + tooltip: localization!.newSchedule, ) : null, ); diff --git a/lib/ui/schedule/schedule_screen_vm.dart b/lib/ui/schedule/schedule_screen_vm.dart index 63feaee2d..960b4a02a 100644 --- a/lib/ui/schedule/schedule_screen_vm.dart +++ b/lib/ui/schedule/schedule_screen_vm.dart @@ -11,7 +11,7 @@ import 'package:redux/redux.dart'; import 'schedule_screen.dart'; class ScheduleScreenBuilder extends StatelessWidget { - const ScheduleScreenBuilder({Key key}) : super(key: key); + const ScheduleScreenBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -28,18 +28,18 @@ class ScheduleScreenBuilder extends StatelessWidget { class ScheduleScreenVM { ScheduleScreenVM({ - @required this.isInMultiselect, - @required this.scheduleList, - @required this.userCompany, - @required this.onEntityAction, - @required this.scheduleMap, + required this.isInMultiselect, + required this.scheduleList, + required this.userCompany, + required this.onEntityAction, + required this.scheduleMap, }); final bool isInMultiselect; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List scheduleList; final Function(BuildContext, List, EntityAction) onEntityAction; - final BuiltMap scheduleMap; + final BuiltMap scheduleMap; static ScheduleScreenVM fromStore(Store store) { final state = store.state; diff --git a/lib/ui/schedule/view/schedule_view.dart b/lib/ui/schedule/view/schedule_view.dart index ff0a66dd4..ea64d8c25 100644 --- a/lib/ui/schedule/view/schedule_view.dart +++ b/lib/ui/schedule/view/schedule_view.dart @@ -13,9 +13,9 @@ import 'package:timeago/timeago.dart' as timeago; class ScheduleView extends StatefulWidget { const ScheduleView({ - Key key, - @required this.viewModel, - @required this.isFilter, + Key? key, + required this.viewModel, + required this.isFilter, }) : super(key: key); final ScheduleViewVM viewModel; @@ -32,12 +32,12 @@ class _ScheduleViewState extends State { final state = viewModel.state; final schedule = viewModel.schedule; final parameters = schedule.parameters; - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; - BaseEntity entity; + BaseEntity? entity; if (schedule.template == ScheduleEntity.TEMPLATE_EMAIL_RECORD) { final entityType = EntityType.valueOf(schedule.parameters.entityType); - entity = state.getEntityMap(entityType)[schedule.parameters.entityId]; + entity = state.getEntityMap(entityType)![schedule.parameters.entityId] as BaseEntity?; } return ViewScaffold( @@ -60,7 +60,7 @@ class _ScheduleViewState extends State { if (schedule.template == ScheduleEntity.TEMPLATE_EMAIL_RECORD) FieldGrid({ localization.lookup(schedule.parameters.entityType): - entity.listDisplayName + entity!.listDisplayName }) else FieldGrid({ @@ -72,21 +72,21 @@ class _ScheduleViewState extends State { }), if (schedule.template == ScheduleEntity.TEMPLATE_EMAIL_STATEMENT) FieldGrid({ - localization.clients: parameters.clients.isEmpty + localization.clients: parameters.clients!.isEmpty ? localization.allClients - : parameters.clients.length == 1 + : parameters.clients!.length == 1 ? state.clientState - .get(parameters.clients.first) + .get(parameters.clients!.first)! .displayName - : '${parameters.clients.length} ${localization.clients}', + : '${parameters.clients!.length} ${localization.clients}', localization.dateRange: localization.lookup(parameters.dateRange), - localization.showAgingTable: parameters.showAgingTable + localization.showAgingTable: parameters.showAgingTable! ? localization.yes : localization.no, - localization.showPaymentsTable: parameters.showPaymentsTable + localization.showPaymentsTable: parameters.showPaymentsTable! ? localization.yes : localization.no, - localization.onlyClientsWithInvoices: (parameters.onlyClientsWithInvoices != null && parameters.onlyClientsWithInvoices) + localization.onlyClientsWithInvoices: (parameters.onlyClientsWithInvoices != null && parameters.onlyClientsWithInvoices!) ? localization.yes : localization.no, localization.status: localization.lookup(parameters.status), diff --git a/lib/ui/schedule/view/schedule_view_vm.dart b/lib/ui/schedule/view/schedule_view_vm.dart index 0290810d7..9375859d4 100644 --- a/lib/ui/schedule/view/schedule_view_vm.dart +++ b/lib/ui/schedule/view/schedule_view_vm.dart @@ -15,7 +15,7 @@ import 'package:invoiceninja_flutter/redux/app/app_state.dart'; class ScheduleViewScreen extends StatelessWidget { const ScheduleViewScreen({ - Key key, + Key? key, this.isFilter = false, }) : super(key: key); static const String route = '/$kSettings/$kSettingsSchedulesView'; @@ -40,15 +40,15 @@ class ScheduleViewScreen extends StatelessWidget { class ScheduleViewVM { ScheduleViewVM({ - @required this.state, - @required this.schedule, - @required this.company, - @required this.onEntityAction, - @required this.onRefreshed, - @required this.isSaving, - @required this.isLoading, - @required this.isDirty, - @required this.onBackPressed, + required this.state, + required this.schedule, + required this.company, + required this.onEntityAction, + required this.onRefreshed, + required this.isSaving, + required this.isLoading, + required this.isDirty, + required this.onBackPressed, }); factory ScheduleViewVM.fromStore(Store store) { @@ -60,7 +60,7 @@ class ScheduleViewVM { Future _handleRefresh(BuildContext context) { final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch( LoadSchedule(completer: completer, scheduleId: schedule.id)); return completer.future; @@ -84,7 +84,7 @@ class ScheduleViewVM { final AppState state; final ScheduleEntity schedule; - final CompanyEntity company; + final CompanyEntity? company; final Function(BuildContext, EntityAction) onEntityAction; final Function(BuildContext) onRefreshed; final Function onBackPressed; diff --git a/lib/ui/settings/account_management.dart b/lib/ui/settings/account_management.dart index 4c13f7cb9..221f302a1 100644 --- a/lib/ui/settings/account_management.dart +++ b/lib/ui/settings/account_management.dart @@ -39,8 +39,8 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class AccountManagement extends StatefulWidget { const AccountManagement({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final AccountManagementVM viewModel; @@ -53,8 +53,8 @@ class _AccountManagementState extends State with SingleTickerProviderStateMixin { static final GlobalKey _formKey = GlobalKey(debugLabel: '_accountManagement'); - FocusScopeNode _focusNode; - TabController _controller; + FocusScopeNode? _focusNode; + TabController? _controller; final _debouncer = Debouncer(); final _trackingIdController = TextEditingController(); @@ -71,12 +71,12 @@ class _AccountManagementState extends State final settingsUIState = widget.viewModel.state.settingsUIState; _controller = TabController( vsync: this, length: 4, initialIndex: settingsUIState.tabIndex); - _controller.addListener(_onTabChanged); + _controller!.addListener(_onTabChanged); } void _onTabChanged() { final store = StoreProvider.of(context); - store.dispatch(UpdateSettingsTab(tabIndex: _controller.index)); + store.dispatch(UpdateSettingsTab(tabIndex: _controller!.index)); } @override @@ -121,15 +121,15 @@ class _AccountManagementState extends State controller.removeListener(_onChanged); controller.dispose(); }); - _focusNode.dispose(); - _controller.removeListener(_onTabChanged); - _controller.dispose(); + _focusNode!.dispose(); + _controller!.removeListener(_onTabChanged); + _controller!.dispose(); super.dispose(); } @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; final state = viewModel.state; final company = viewModel.company; @@ -205,12 +205,12 @@ class _AccountManagementState extends State children: kModules.keys.map((module) { return CheckboxListTile( controlAffinity: ListTileControlAffinity.leading, - title: Text(localization.lookup(kModules[module])), + title: Text(localization.lookup(kModules[module])!), value: company.enabledModules & module != 0, activeColor: Theme.of(context).colorScheme.secondary, onChanged: (value) { int enabledModules = company.enabledModules; - if (value) { + if (value!) { enabledModules = enabledModules | module; } else { enabledModules = enabledModules ^ module; @@ -289,8 +289,8 @@ class _AccountManagementState extends State class _AccountOverview extends StatelessWidget { const _AccountOverview({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final AccountManagementVM viewModel; @@ -298,9 +298,9 @@ class _AccountOverview extends StatelessWidget { @override Widget build(BuildContext context) { final store = StoreProvider.of(context); - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final state = viewModel.state; - final account = state.account; + final account = state.account!; final company = viewModel.company; final companies = state.companies; @@ -312,26 +312,26 @@ class _AccountOverview extends StatelessWidget { if (state.clientState.list.isNotEmpty) { final count = state.clientState.list.length; stats += '\n- $count ' + - (count == 1 ? localization.client : localization.clients); + (count == 1 ? localization!.client : localization!.clients); } if (state.productState.list.isNotEmpty) { final count = state.productState.list.length; stats += '\n- $count ' + - (count == 1 ? localization.product : localization.products); + (count == 1 ? localization!.product : localization!.products); } - if (state.invoiceState.list.isNotEmpty && !state.company.isLarge) { + if (state.invoiceState.list.isNotEmpty && !state.company!.isLarge) { final count = state.invoiceState.list.length; stats += '\n- $count ' + - (count == 1 ? localization.invoice : localization.invoices); + (count == 1 ? localization!.invoice : localization!.invoices); } return stats; } - String secondValue; - String secondLabel; + String? secondValue; + String? secondLabel; if (state.isHosted && (account.plan.isEmpty || account.isTrial)) { final clientLimit = account.hostedClientCount; @@ -355,12 +355,12 @@ class _AccountOverview extends StatelessWidget { secondLabel: secondLabel, secondValue: secondValue, ), - if (state.company.id != state.account.defaultCompanyId) + if (state.company!.id != state.account!.defaultCompanyId) Padding( padding: const EdgeInsets.only(left: 16, right: 16, bottom: 8), child: AppButton( iconData: Icons.business, - label: localization.setDefaultCompany.toUpperCase(), + label: localization.setDefaultCompany!.toUpperCase(), onPressed: () => viewModel.onSetPrimaryCompany(context), ), ), @@ -369,7 +369,7 @@ class _AccountOverview extends StatelessWidget { Padding( padding: const EdgeInsets.all(20), child: Text( - localization.useMobileToManagePlan, + localization.useMobileToManagePlan!, textAlign: TextAlign.center, ), ) @@ -384,7 +384,7 @@ class _AccountOverview extends StatelessWidget { text: (account.isEligibleForTrial && !supportsInAppPurchase() ? localization.startFreeTrial - : localization.changePlan) + : localization.changePlan)! .toUpperCase(), ), ), @@ -395,7 +395,7 @@ class _AccountOverview extends StatelessWidget { builder: (context) => UpgradeDialog(), ); } else { - launchUrl(Uri.parse(state.userCompany.ninjaPortalUrl)); + launchUrl(Uri.parse(state.userCompany!.ninjaPortalUrl)); } }), ), @@ -417,8 +417,8 @@ class _AccountOverview extends StatelessWidget { viewModel.onCompanyChanged( company.rebuild((b) => b..markdownEnabled = value)); }, - title: Text(localization.enablePdfMarkdown), - subtitle: Text(localization.enableMarkdownHelp), + title: Text(localization.enablePdfMarkdown!), + subtitle: Text(localization.enableMarkdownHelp!), activeColor: Theme.of(context).colorScheme.secondary, ), SwitchListTile( @@ -427,8 +427,8 @@ class _AccountOverview extends StatelessWidget { viewModel.onCompanyChanged( company.rebuild((b) => b..markdownEmailEnabled = value)); }, - title: Text(localization.enableEmailMarkdown), - subtitle: Text(localization.enableEmailMarkdownHelp), + title: Text(localization.enableEmailMarkdown!), + subtitle: Text(localization.enableEmailMarkdownHelp!), activeColor: Theme.of(context).colorScheme.secondary, ), ]), @@ -440,8 +440,8 @@ class _AccountOverview extends StatelessWidget { viewModel.onCompanyChanged( company.rebuild((b) => b..reportIncludeDrafts = value)); }, - title: Text(localization.includeDrafts), - subtitle: Text(localization.includeDraftsHelp), + title: Text(localization.includeDrafts!), + subtitle: Text(localization.includeDraftsHelp!), activeColor: Theme.of(context).colorScheme.secondary, ), SwitchListTile( @@ -450,8 +450,8 @@ class _AccountOverview extends StatelessWidget { viewModel.onCompanyChanged( company.rebuild((b) => b..reportIncludeDeleted = value)); }, - title: Text(localization.includeDeleted), - subtitle: Text(localization.includeDeletedHelp), + title: Text(localization.includeDeleted!), + subtitle: Text(localization.includeDeletedHelp!), activeColor: Theme.of(context).colorScheme.secondary, ), ], @@ -573,7 +573,7 @@ class _AccountOverview extends StatelessWidget { ), ), ])), - if (state.userCompany.isOwner && !state.isDemo) ...[ + if (state.userCompany!.isOwner && !state.isDemo) ...[ Padding( padding: const EdgeInsets.only(top: 16, right: 16, left: 16), child: ListDivider(), @@ -630,9 +630,9 @@ class _AccountOverview extends StatelessWidget { message: message, typeToConfirm: localization.delete.toLowerCase(), askForReason: true, - callback: (String reason) async { - if (state.user.isConnectedToApple && - !state.user.hasPassword) { + callback: (String? reason) async { + if (state.user!.isConnectedToApple && + !state.user!.hasPassword) { final credentials = await SignInWithApple.getAppleIDCredential( scopes: [ diff --git a/lib/ui/settings/account_management_vm.dart b/lib/ui/settings/account_management_vm.dart index f98cc2363..e7e76d228 100644 --- a/lib/ui/settings/account_management_vm.dart +++ b/lib/ui/settings/account_management_vm.dart @@ -26,7 +26,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/oauth.dart'; class AccountManagementScreen extends StatelessWidget { - const AccountManagementScreen({Key key}) : super(key: key); + const AccountManagementScreen({Key? key}) : super(key: key); static const String route = '/$kSettings/$kSettingsAccountManagement'; @override @@ -45,14 +45,14 @@ class AccountManagementScreen extends StatelessWidget { class AccountManagementVM { AccountManagementVM({ - @required this.state, - @required this.company, - @required this.onCompanyChanged, - @required this.onSetPrimaryCompany, - @required this.onSavePressed, - @required this.onCompanyDelete, - @required this.onPurgeData, - @required this.onAppliedLicense, + required this.state, + required this.company, + required this.onCompanyChanged, + required this.onSetPrimaryCompany, + required this.onSavePressed, + required this.onCompanyDelete, + required this.onPurgeData, + required this.onAppliedLicense, }); static AccountManagementVM fromStore(Store store) { @@ -78,7 +78,7 @@ class AccountManagementVM { final state = store.state; if (companyLength == 1) { store.dispatch(UserLogout()); - if (state.user.isConnectedToGoogle) { + if (state.user!.isConnectedToGoogle) { GoogleOAuth.disconnect(); } } else { @@ -89,22 +89,22 @@ class AccountManagementVM { ..future.then((value) { store.dispatch(SelectCompany(companyIndex: 0)); store.dispatch(ViewDashboard()); - AppBuilder.of(navigatorKey.currentContext).rebuild(); + AppBuilder.of(navigatorKey.currentContext!)!.rebuild(); - if (Navigator.of(context).canPop()) { + if (Navigator.of(context!).canPop()) { Navigator.of(context).pop(); } - }); + } as FutureOr<_> Function(Null)); store.dispatch( RefreshData(clearData: true, completer: refreshCompleter)); } - }).catchError((Object error) { - if (Navigator.of(navigatorKey.currentContext).canPop()) { - Navigator.of(navigatorKey.currentContext).pop(); + } as FutureOr<_> Function(Null)).catchError((Object error) { + if (Navigator.of(navigatorKey.currentContext!).canPop()) { + Navigator.of(navigatorKey.currentContext!).pop(); } showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { return ErrorDialog(error); }); @@ -120,14 +120,14 @@ class AccountManagementVM { Debouncer.runOnComplete(() { final settingsUIState = store.state.uiState.settingsUIState; final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch(SaveCompanyRequest( completer: completer, company: settingsUIState.company)); }); }, onPurgeData: (context, password, idToken) { final completer = snackBarCompleter( - context, AppLocalization.of(context).purgeSuccessful); + context, AppLocalization.of(context)!.purgeSuccessful); store.dispatch(PurgeDataRequest( completer: completer, password: password, @@ -139,7 +139,7 @@ class AccountManagementVM { }, onSetPrimaryCompany: (context) { final completer = snackBarCompleter( - context, AppLocalization.of(context).updatedCompany); + context, AppLocalization.of(context)!.updatedCompany); store.dispatch(SetDefaultCompanyRequest(completer: completer)); }); } @@ -149,7 +149,7 @@ class AccountManagementVM { final CompanyEntity company; final Function(BuildContext) onSetPrimaryCompany; final Function(CompanyEntity) onCompanyChanged; - final Function(BuildContext, String, String, String) onCompanyDelete; - final Function(BuildContext, String, String) onPurgeData; + final Function(BuildContext?, String?, String?, String?) onCompanyDelete; + final Function(BuildContext, String?, String?) onPurgeData; final Function onAppliedLicense; } diff --git a/lib/ui/settings/client_portal.dart b/lib/ui/settings/client_portal.dart index 4b57edbc6..c9b66f367 100644 --- a/lib/ui/settings/client_portal.dart +++ b/lib/ui/settings/client_portal.dart @@ -36,8 +36,8 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class ClientPortal extends StatefulWidget { const ClientPortal({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final ClientPortalVM viewModel; @@ -51,7 +51,7 @@ class _ClientPortalState extends State static final GlobalKey _formKey = GlobalKey(debugLabel: '_clientPortal'); final FocusScopeNode _focusNode = FocusScopeNode(); - TabController _controller; + TabController? _controller; final _webClient = WebClient(); bool _isSubdomainUnique = true; @@ -85,12 +85,12 @@ class _ClientPortalState extends State vsync: this, length: settingsUIState.isFiltered ? 4 : 5, initialIndex: settingsUIState.tabIndex); - _controller.addListener(_onTabChanged); + _controller!.addListener(_onTabChanged); } void _onTabChanged() { final store = StoreProvider.of(context); - store.dispatch(UpdateSettingsTab(tabIndex: _controller.index)); + store.dispatch(UpdateSettingsTab(tabIndex: _controller!.index)); } void _validateSubdomain() { @@ -107,7 +107,7 @@ class _ClientPortalState extends State return; } - if (subdomain == state.company.subdomain) { + if (subdomain == state.company!.subdomain) { setState(() => _isSubdomainUnique = true); return; } @@ -137,8 +137,8 @@ class _ClientPortalState extends State @override void dispose() { _focusNode.dispose(); - _controller.removeListener(_onTabChanged); - _controller.dispose(); + _controller!.removeListener(_onTabChanged); + _controller!.dispose(); _controllers.forEach((dynamic controller) { controller.removeListener(_onChanged); controller.dispose(); @@ -170,16 +170,16 @@ class _ClientPortalState extends State final settings = widget.viewModel.settings; _portalDomainController.text = company.portalDomain; _subdomainController.text = company.subdomain; - _customMessageDashboard.text = settings.customMessageDashboard; - _customMessagePaidInvoice.text = settings.customMessagePaidInvoice; - _customMessageUnpaidInvoice.text = settings.customMessageUnpaidInvoice; - _customMessageUnapprovedQuote.text = settings.customMessageUnapprovedQuote; - _privacyController.text = settings.clientPortalPrivacy; - _termsController.text = settings.clientPortalTerms; - _customHeaderController.text = settings.clientPortalCustomHeader; - _customFooterController.text = settings.clientPortalCustomFooter; - _customCssController.text = settings.clientPortalCustomCss; - _customJavaScriptController.text = settings.clientPortalCustomJs; + _customMessageDashboard.text = settings.customMessageDashboard!; + _customMessagePaidInvoice.text = settings.customMessagePaidInvoice!; + _customMessageUnpaidInvoice.text = settings.customMessageUnpaidInvoice!; + _customMessageUnapprovedQuote.text = settings.customMessageUnapprovedQuote!; + _privacyController.text = settings.clientPortalPrivacy!; + _termsController.text = settings.clientPortalTerms!; + _customHeaderController.text = settings.clientPortalCustomHeader!; + _customFooterController.text = settings.clientPortalCustomFooter!; + _customCssController.text = settings.clientPortalCustomCss!; + _customJavaScriptController.text = settings.clientPortalCustomJs!; _controllers .forEach((dynamic controller) => controller.addListener(_onChanged)); @@ -258,7 +258,7 @@ class _ClientPortalState extends State } void _onSavePressed(BuildContext context) { - final bool isValid = _formKey.currentState.validate(); + final bool isValid = _formKey.currentState!.validate(); if (!isValid || _isCheckingSubdomain) { return; @@ -269,7 +269,7 @@ class _ClientPortalState extends State @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; final state = viewModel.state; final company = viewModel.company; @@ -408,7 +408,7 @@ class _ClientPortalState extends State ], SizedBox(height: 16), ListTile( - title: Text(localization.loginUrl), + title: Text(localization.loginUrl!), subtitle: Text( loginUrl, maxLines: 1, @@ -478,7 +478,7 @@ class _ClientPortalState extends State company.rebuild((b) => b..enableShopApi = value)), ), if (!state.isDemo && - (state.company.enableShopApi ?? false)) ...[ + (state.company!.enableShopApi ?? false)) ...[ SizedBox(height: 16), ListDivider(), ListTile( @@ -532,7 +532,7 @@ class _ClientPortalState extends State onChanged: (value) => viewModel.onCompanyChanged( company.rebuild((b) => b..clientCanRegister = value)), ), - if (state.company.clientCanRegister ?? false) ...[ + if (state.company!.clientCanRegister ?? false) ...[ SizedBox(height: 16), ListTile( title: Text(localization.registrationUrl), @@ -558,7 +558,7 @@ class _ClientPortalState extends State return Row( children: [ Expanded( - child: Text(localization.lookup(field.key)), + child: Text(localization.lookup(field.key)!), ), Expanded( child: AppDropdownButton( @@ -583,7 +583,7 @@ class _ClientPortalState extends State items: [ DropdownMenuItem( value: RegistrationFieldEntity.SETTING_HIDDEN, - child: Text(localization.hidden), + child: Text(localization.hidden!), ), DropdownMenuItem( value: RegistrationFieldEntity.SETTING_OPTIONAL, @@ -591,7 +591,7 @@ class _ClientPortalState extends State ), DropdownMenuItem( value: RegistrationFieldEntity.SETTING_REQUIRED, - child: Text(localization.requiredWord), + child: Text(localization.requiredWord!), ), ], ), diff --git a/lib/ui/settings/client_portal_vm.dart b/lib/ui/settings/client_portal_vm.dart index 4951d87b7..702e68cb2 100644 --- a/lib/ui/settings/client_portal_vm.dart +++ b/lib/ui/settings/client_portal_vm.dart @@ -25,7 +25,7 @@ import 'package:invoiceninja_flutter/utils/dialogs.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class ClientPortalScreen extends StatelessWidget { - const ClientPortalScreen({Key key}) : super(key: key); + const ClientPortalScreen({Key? key}) : super(key: key); static const String route = '/$kSettings/$kSettingsClientPortal'; @override @@ -44,12 +44,12 @@ class ClientPortalScreen extends StatelessWidget { class ClientPortalVM { ClientPortalVM({ - @required this.state, - @required this.settings, - @required this.company, - @required this.onCompanyChanged, - @required this.onSettingsChanged, - @required this.onSavePressed, + required this.state, + required this.settings, + required this.company, + required this.onCompanyChanged, + required this.onSettingsChanged, + required this.onSavePressed, }); static ClientPortalVM fromStore(Store store) { @@ -75,15 +75,15 @@ class ClientPortalVM { switch (settingsUIState.entityType) { case EntityType.company: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); - final oldSubdomain = state.company.subdomain; + final oldSubdomain = state.company!.subdomain; final newSubdomain = settingsUIState.company.subdomain; if (oldSubdomain != newSubdomain) { completer.future.then((value) { showRefreshDataDialog( - context: navigatorKey.currentContext); - }); + context: navigatorKey.currentContext!); + } as FutureOr<_> Function(Null)); } store.dispatch(SaveCompanyRequest( @@ -91,13 +91,13 @@ class ClientPortalVM { break; case EntityType.group: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch(SaveGroupRequest( completer: completer, group: settingsUIState.group)); break; case EntityType.client: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch(SaveClientRequest( completer: completer, client: settingsUIState.client)); break; diff --git a/lib/ui/settings/company_details.dart b/lib/ui/settings/company_details.dart index e950aeeec..dbf2a67be 100644 --- a/lib/ui/settings/company_details.dart +++ b/lib/ui/settings/company_details.dart @@ -38,8 +38,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class CompanyDetails extends StatefulWidget { const CompanyDetails({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final CompanyDetailsVM viewModel; @@ -54,7 +54,7 @@ class _CompanyDetailsState extends State GlobalKey(debugLabel: '_companyDetails'); final FocusScopeNode _focusNode = FocusScopeNode(); - TabController _controller; + TabController? _controller; final _debouncer = Debouncer(); final _nameController = TextEditingController(); @@ -96,12 +96,12 @@ class _CompanyDetailsState extends State vsync: this, length: state.settingsUIState.isFiltered ? 4 : 5, initialIndex: settingsUIState.tabIndex); - _controller.addListener(_onTabChanged); + _controller!.addListener(_onTabChanged); } void _onTabChanged() { final store = StoreProvider.of(context); - store.dispatch(UpdateSettingsTab(tabIndex: _controller.index)); + store.dispatch(UpdateSettingsTab(tabIndex: _controller!.index)); } @override @@ -140,31 +140,31 @@ class _CompanyDetailsState extends State final viewModel = widget.viewModel; final settings = viewModel.settings; - _nameController.text = settings.name; - _idNumberController.text = settings.idNumber; - _vatNumberController.text = settings.vatNumber; - _emailController.text = settings.email; - _websiteController.text = settings.website; - _phoneController.text = settings.phone; - _address1Controller.text = settings.address1; - _address2Controller.text = settings.address2; - _cityController.text = settings.city; - _stateController.text = settings.state; - _postalCodeController.text = settings.postalCode; - _custom1Controller.text = settings.customValue1; - _custom2Controller.text = settings.customValue2; - _custom3Controller.text = settings.customValue3; - _custom4Controller.text = settings.customValue4; - _invoiceTermsController.text = settings.defaultInvoiceTerms; - _invoiceFooterController.text = settings.defaultInvoiceFooter; - _quoteTermsController.text = settings.defaultQuoteTerms; - _quoteFooterController.text = settings.defaultQuoteFooter; - _creditFooterController.text = settings.defaultCreditFooter; - _creditTermsController.text = settings.defaultCreditTerms; - _purchaseOrderFooterController.text = settings.defaultPurchaseOrderFooter; - _purchaseOrderTermsController.text = settings.defaultPurchaseOrderTerms; - _qrIbanController.text = settings.qrIban; - _besrIdController.text = settings.besrId; + _nameController.text = settings.name!; + _idNumberController.text = settings.idNumber!; + _vatNumberController.text = settings.vatNumber!; + _emailController.text = settings.email!; + _websiteController.text = settings.website!; + _phoneController.text = settings.phone!; + _address1Controller.text = settings.address1!; + _address2Controller.text = settings.address2!; + _cityController.text = settings.city!; + _stateController.text = settings.state!; + _postalCodeController.text = settings.postalCode!; + _custom1Controller.text = settings.customValue1!; + _custom2Controller.text = settings.customValue2!; + _custom3Controller.text = settings.customValue3!; + _custom4Controller.text = settings.customValue4!; + _invoiceTermsController.text = settings.defaultInvoiceTerms!; + _invoiceFooterController.text = settings.defaultInvoiceFooter!; + _quoteTermsController.text = settings.defaultQuoteTerms!; + _quoteFooterController.text = settings.defaultQuoteFooter!; + _creditFooterController.text = settings.defaultCreditFooter!; + _creditTermsController.text = settings.defaultCreditTerms!; + _purchaseOrderFooterController.text = settings.defaultPurchaseOrderFooter!; + _purchaseOrderTermsController.text = settings.defaultPurchaseOrderTerms!; + _qrIbanController.text = settings.qrIban!; + _besrIdController.text = settings.besrId!; _controllers.forEach( (dynamic controller) => controller.addListener(_onSettingsChanged)); @@ -175,8 +175,8 @@ class _CompanyDetailsState extends State @override void dispose() { _focusNode.dispose(); - _controller.removeListener(_onTabChanged); - _controller.dispose(); + _controller!.removeListener(_onTabChanged); + _controller!.dispose(); _controllers.forEach((dynamic controller) { controller.removeListener(_onSettingsChanged); controller.dispose(); @@ -269,12 +269,12 @@ class _CompanyDetailsState extends State final company = viewModel.company; final settings = viewModel.settings; - if (!state.userCompany.isAdmin) { + if (!state.userCompany!.isAdmin) { return BlankScreen(); } return EditScaffold( - title: localization.companyDetails, + title: localization!.companyDetails, onSavePressed: viewModel.onSavePressed, appBarBottom: TabBar( key: ValueKey(state.settingsUIState.updatedAt), @@ -295,9 +295,9 @@ class _CompanyDetailsState extends State ), if (!state.settingsUIState.isFiltered) Tab( - text: state.company.documents.isEmpty + text: state.company!.documents.isEmpty ? localization.documents - : '${localization.documents} (${state.company.documents.length})', + : '${localization.documents} (${state.company!.documents.length})', ), ], ), @@ -380,7 +380,7 @@ class _CompanyDetailsState extends State ), ], ), - if (state.company.calculateTaxes) + if (state.company!.calculateTaxes) AppDropdownButton( labelText: localization.classification, showBlank: true, @@ -391,7 +391,7 @@ class _CompanyDetailsState extends State }, items: kTaxClassifications .map((classification) => DropdownMenuItem( - child: Text(localization.lookup(classification)), + child: Text(localization.lookup(classification)!), value: classification, )) .toList(), @@ -423,7 +423,7 @@ class _CompanyDetailsState extends State items: memoizedSizeList(state.staticState.sizeMap) .map((sizeId) => DropdownMenuItem( child: Text( - state.staticState.sizeMap[sizeId].name), + state.staticState.sizeMap[sizeId]!.name), value: sizeId, )) .toList(), @@ -577,11 +577,11 @@ class _CompanyDetailsState extends State child: (state.isHosted && kIsWeb) ? CachedImage( width: double.infinity, - url: state.credentials.url + + url: state.credentials.url! + '/companies/' + company.id + '/logo', - apiToken: state.userCompany.token.token, + apiToken: state.userCompany!.token!.token, ) : CachedImage( width: double.infinity, @@ -605,10 +605,10 @@ class _CompanyDetailsState extends State state.paymentTermState.list) .map((paymentTermId) { final paymentTerm = - state.paymentTermState.map[paymentTermId]; + state.paymentTermState.map[paymentTermId]!; return DropdownMenuItem( child: Text(paymentTerm.numDays == 0 - ? localization.dueOnReceipt + ? localization.dueOnReceipt! : paymentTerm.name), value: paymentTerm.numDays.toString(), ); @@ -629,10 +629,10 @@ class _CompanyDetailsState extends State state.paymentTermState.list) .map((paymentTermId) { final paymentTerm = - state.paymentTermState.map[paymentTermId]; + state.paymentTermState.map[paymentTermId]!; return DropdownMenuItem( child: Text(paymentTerm.numDays == 0 - ? localization.dueOnReceipt + ? localization.dueOnReceipt! : paymentTerm.name), value: paymentTerm.numDays.toString(), ); @@ -770,7 +770,7 @@ class _CompanyDetailsState extends State ), if (!state.settingsUIState.isFiltered) DocumentGrid( - documents: state.company.documents.toList(), + documents: state.company!.documents.toList(), onUploadDocument: (path, isPrivate) => viewModel.onUploadDocuments(context, path, isPrivate), onRenamedDocument: () => store.dispatch(RefreshData()), diff --git a/lib/ui/settings/company_details_vm.dart b/lib/ui/settings/company_details_vm.dart index b9bd92dd2..fdf73aa9b 100644 --- a/lib/ui/settings/company_details_vm.dart +++ b/lib/ui/settings/company_details_vm.dart @@ -30,7 +30,7 @@ import 'package:invoiceninja_flutter/utils/dialogs.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class CompanyDetailsScreen extends StatelessWidget { - const CompanyDetailsScreen({Key key}) : super(key: key); + const CompanyDetailsScreen({Key? key}) : super(key: key); static const String route = '/$kSettings/$kSettingsCompanyDetails'; @override @@ -48,16 +48,16 @@ class CompanyDetailsScreen extends StatelessWidget { class CompanyDetailsVM { CompanyDetailsVM({ - @required this.state, - @required this.settings, - @required this.company, - @required this.onCompanyChanged, - @required this.onSettingsChanged, - @required this.onSavePressed, - @required this.onUploadLogo, - @required this.onDeleteLogo, - @required this.onConfigurePaymentTermsPressed, - @required this.onUploadDocuments, + required this.state, + required this.settings, + required this.company, + required this.onCompanyChanged, + required this.onSettingsChanged, + required this.onSavePressed, + required this.onUploadLogo, + required this.onDeleteLogo, + required this.onConfigurePaymentTermsPressed, + required this.onUploadDocuments, }); static CompanyDetailsVM fromStore(Store store) { @@ -76,7 +76,7 @@ class CompanyDetailsVM { switch (settingsUIState.entityType) { case EntityType.company: final completer = snackBarCompleter( - context, AppLocalization.of(context).deletedLogo); + context, AppLocalization.of(context)!.deletedLogo); store.dispatch(SaveCompanyRequest( completer: completer, company: settingsUIState.company @@ -85,7 +85,7 @@ class CompanyDetailsVM { break; case EntityType.group: final completer = snackBarCompleter( - context, AppLocalization.of(context).deletedLogo); + context, AppLocalization.of(context)!.deletedLogo); store.dispatch(SaveGroupRequest( completer: completer, group: settingsUIState.group @@ -94,7 +94,7 @@ class CompanyDetailsVM { break; case EntityType.client: final completer = snackBarCompleter( - context, AppLocalization.of(context).deletedLogo); + context, AppLocalization.of(context)!.deletedLogo); store.dispatch(SaveClientRequest( completer: completer, client: settingsUIState.client @@ -109,25 +109,25 @@ class CompanyDetailsVM { if (settingsUIState.entityType == EntityType.company && settingsUIState.company.settings.countryId == null) { showErrorDialog( - message: AppLocalization.of(context).pleaseSelectACountry); + message: AppLocalization.of(context)!.pleaseSelectACountry); return; } switch (settingsUIState.entityType) { case EntityType.company: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch(SaveCompanyRequest( completer: completer, company: settingsUIState.company)); break; case EntityType.group: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch(SaveGroupRequest( completer: completer, group: settingsUIState.group)); break; case EntityType.client: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch(SaveClientRequest( completer: completer, client: settingsUIState.client)); break; @@ -137,7 +137,7 @@ class CompanyDetailsVM { onUploadLogo: (context, multipartFile) { final type = state.uiState.settingsUIState.entityType; final completer = snackBarCompleter( - context, AppLocalization.of(context).uploadedLogo); + context, AppLocalization.of(context)!.uploadedLogo); store.dispatch(UploadLogoRequest( completer: completer, multipartFile: multipartFile, type: type)); }, @@ -156,7 +156,7 @@ class CompanyDetailsVM { multipartFiles: multipartFile, completer: completer)); completer.future.then((client) { - showToast(AppLocalization.of(context).uploadedDocument); + showToast(AppLocalization.of(context)!.uploadedDocument); }).catchError((Object error) { showDialog( context: context, @@ -174,7 +174,7 @@ class CompanyDetailsVM { final Function(SettingsEntity) onSettingsChanged; final Function(CompanyEntity) onCompanyChanged; final Function(BuildContext) onSavePressed; - final Function(BuildContext, MultipartFile) onUploadLogo; + final Function(BuildContext?, MultipartFile) onUploadLogo; final Function(BuildContext) onDeleteLogo; final Function(BuildContext) onConfigurePaymentTermsPressed; final Function(BuildContext, List, bool) onUploadDocuments; diff --git a/lib/ui/settings/credit_cards_and_banks.dart b/lib/ui/settings/credit_cards_and_banks.dart index ead8bc4c8..28309a8fb 100644 --- a/lib/ui/settings/credit_cards_and_banks.dart +++ b/lib/ui/settings/credit_cards_and_banks.dart @@ -8,8 +8,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class CreditCardsAndBanks extends StatefulWidget { const CreditCardsAndBanks({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final CreditCardsAndBanksVM viewModel; @@ -22,7 +22,7 @@ class _CreditCardsAndBanksState extends State with SingleTickerProviderStateMixin { //static final GlobalKey _formKey = GlobalKey(debugLabel: '_creditCardsAndBanks); - TabController _controller; + late TabController _controller; bool autoValidate = false; @@ -68,7 +68,7 @@ class _CreditCardsAndBanksState extends State @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; //final viewModel = widget.viewModel; return EditScaffold( diff --git a/lib/ui/settings/credit_cards_and_banks_vm.dart b/lib/ui/settings/credit_cards_and_banks_vm.dart index 9cecdc888..4ec187f4d 100644 --- a/lib/ui/settings/credit_cards_and_banks_vm.dart +++ b/lib/ui/settings/credit_cards_and_banks_vm.dart @@ -12,7 +12,7 @@ import 'package:invoiceninja_flutter/redux/app/app_state.dart'; import 'package:invoiceninja_flutter/ui/settings/credit_cards_and_banks.dart'; class CreditCardsAndBanksScreen extends StatelessWidget { - const CreditCardsAndBanksScreen({Key key}) : super(key: key); + const CreditCardsAndBanksScreen({Key? key}) : super(key: key); static const String route = '/$kSettings/$kSettingsCreditCardsAndBanks'; @override @@ -28,9 +28,9 @@ class CreditCardsAndBanksScreen extends StatelessWidget { class CreditCardsAndBanksVM { CreditCardsAndBanksVM({ - @required this.state, - @required this.onSavePressed, - @required this.onCancelPressed, + required this.state, + required this.onSavePressed, + required this.onCancelPressed, }); static CreditCardsAndBanksVM fromStore(Store store) { @@ -44,6 +44,6 @@ class CreditCardsAndBanksVM { } final AppState state; - final Function(BuildContext) onSavePressed; - final Function(BuildContext) onCancelPressed; + final Function(BuildContext)? onSavePressed; + final Function(BuildContext)? onCancelPressed; } diff --git a/lib/ui/settings/custom_fields.dart b/lib/ui/settings/custom_fields.dart index d47228659..f46cbf0ec 100644 --- a/lib/ui/settings/custom_fields.dart +++ b/lib/ui/settings/custom_fields.dart @@ -20,8 +20,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class CustomFields extends StatefulWidget { const CustomFields({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final CustomFieldsVM viewModel; @@ -35,8 +35,8 @@ class _CustomFieldsState extends State static final GlobalKey _formKey = GlobalKey(debugLabel: '_customFields'); - FocusScopeNode _focusNode; - TabController _controller; + FocusScopeNode? _focusNode; + TabController? _controller; @override void initState() { @@ -54,7 +54,7 @@ class _CustomFieldsState extends State EntityType.expense, EntityType.project, ].forEach((entityType) { - if (state.company.isModuleEnabled(entityType)) { + if (state.company!.isModuleEnabled(entityType)) { tabs++; } }); @@ -62,28 +62,28 @@ class _CustomFieldsState extends State final settingsUIState = state.settingsUIState; _controller = TabController( vsync: this, length: tabs, initialIndex: settingsUIState.tabIndex); - _controller.addListener(_onTabChanged); + _controller!.addListener(_onTabChanged); } void _onTabChanged() { final store = StoreProvider.of(context); - store.dispatch(UpdateSettingsTab(tabIndex: _controller.index)); + store.dispatch(UpdateSettingsTab(tabIndex: _controller!.index)); } @override void dispose() { - _focusNode.dispose(); - _controller.removeListener(_onTabChanged); - _controller.dispose(); + _focusNode!.dispose(); + _controller!.removeListener(_onTabChanged); + _controller!.dispose(); super.dispose(); } @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; final state = viewModel.state; - final company = state.company; + final company = state.company!; return EditScaffold( title: localization.customFields, @@ -227,8 +227,8 @@ class _CustomFieldsState extends State class CustomFieldsSettings extends StatelessWidget { const CustomFieldsSettings({ - @required this.fieldType, - @required this.viewModel, + required this.fieldType, + required this.viewModel, this.showChargeTaxes = false, }); @@ -238,7 +238,7 @@ class CustomFieldsSettings extends StatelessWidget { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final company = viewModel.company; var labelKey = '${fieldType}_field'; if (labelKey == 'vendor_contact_field') { @@ -294,20 +294,20 @@ class CustomFieldsSettings extends StatelessWidget { class CustomFormField extends StatefulWidget { const CustomFormField({ - @required this.label, - @required this.onChanged, - @required this.value, + required this.label, + required this.onChanged, + required this.value, this.showTaxes = false, this.taxesEnabled, this.onTaxesChanged, }); - final String label; - final String value; + final String? label; + final String? value; final bool showTaxes; - final bool taxesEnabled; + final bool? taxesEnabled; final Function(String) onChanged; - final Function(bool) onTaxesChanged; + final Function(bool)? onTaxesChanged; @override _CustomFormFieldState createState() => _CustomFormFieldState(); @@ -341,8 +341,8 @@ class _CustomFormFieldState extends State { .forEach((dynamic controller) => controller.removeListener(_onChanged)); if ('${widget.value ?? ''}'.isNotEmpty) { - if (widget.value.contains('|')) { - final parts = widget.value.split('|'); + if (widget.value!.contains('|')) { + final parts = widget.value!.split('|'); _customFieldController.text = parts[0]; switch (parts[1]) { case kFieldTypeSingleLineText: @@ -361,10 +361,10 @@ class _CustomFormFieldState extends State { } } else { _fieldType = kFieldTypeMultiLineText; - _customFieldController.text = widget.value; + _customFieldController.text = widget.value!; } } else { - _customFieldController.text = widget.value; + _customFieldController.text = widget.value!; } _controllers @@ -427,17 +427,17 @@ class _CustomFormFieldState extends State { onChanged: (value) => null, ), ), - Text(localization.chargeTaxes), + Text(localization!.chargeTaxes), SizedBox(width: 16), ], ), - onTap: () => widget.onTaxesChanged(!widget.taxesEnabled), + onTap: () => widget.onTaxesChanged!(!widget.taxesEnabled!), ) ] else ...[ SizedBox(width: 16), Flexible( child: AppDropdownButton( - labelText: localization.fieldType, + labelText: localization!.fieldType, value: _fieldType, onChanged: (dynamic value) { setState(() { diff --git a/lib/ui/settings/custom_fields_vm.dart b/lib/ui/settings/custom_fields_vm.dart index db96cc6b3..80b777a0b 100644 --- a/lib/ui/settings/custom_fields_vm.dart +++ b/lib/ui/settings/custom_fields_vm.dart @@ -21,7 +21,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class CustomFieldsScreen extends StatelessWidget { - const CustomFieldsScreen({Key key}) : super(key: key); + const CustomFieldsScreen({Key? key}) : super(key: key); static const String route = '/$kSettings/$kSettingsCustomFields'; @override @@ -40,10 +40,10 @@ class CustomFieldsScreen extends StatelessWidget { class CustomFieldsVM { CustomFieldsVM({ - @required this.state, - @required this.onSavePressed, - @required this.company, - @required this.onCompanyChanged, + required this.state, + required this.onSavePressed, + required this.company, + required this.onCompanyChanged, }); static CustomFieldsVM fromStore(Store store) { @@ -64,19 +64,19 @@ class CustomFieldsVM { switch (settingsUIState.entityType) { case EntityType.company: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch(SaveCompanyRequest( completer: completer, company: settingsUIState.company)); break; case EntityType.group: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch(SaveGroupRequest( completer: completer, group: settingsUIState.group)); break; case EntityType.client: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch(SaveClientRequest( completer: completer, client: settingsUIState.client)); break; diff --git a/lib/ui/settings/data_visualizations.dart b/lib/ui/settings/data_visualizations.dart index bc577532b..ede444d39 100644 --- a/lib/ui/settings/data_visualizations.dart +++ b/lib/ui/settings/data_visualizations.dart @@ -8,8 +8,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class DataVisualizations extends StatefulWidget { const DataVisualizations({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final DataVisualizationsVM viewModel; @@ -58,7 +58,7 @@ class _DataVisualizationsState extends State { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; //final viewModel = widget.viewModel; return EditScaffold( diff --git a/lib/ui/settings/data_visualizations_vm.dart b/lib/ui/settings/data_visualizations_vm.dart index c721ee5e7..b3e2905f5 100644 --- a/lib/ui/settings/data_visualizations_vm.dart +++ b/lib/ui/settings/data_visualizations_vm.dart @@ -12,7 +12,7 @@ import 'package:invoiceninja_flutter/redux/app/app_state.dart'; import 'package:invoiceninja_flutter/ui/settings/data_visualizations.dart'; class DataVisualizationsScreen extends StatelessWidget { - const DataVisualizationsScreen({Key key}) : super(key: key); + const DataVisualizationsScreen({Key? key}) : super(key: key); static const String route = '/$kSettings/$kSettingsDataVisualizations'; @override @@ -28,9 +28,9 @@ class DataVisualizationsScreen extends StatelessWidget { class DataVisualizationsVM { DataVisualizationsVM({ - @required this.state, - @required this.onSavePressed, - @required this.onCancelPressed, + required this.state, + required this.onSavePressed, + required this.onCancelPressed, }); static DataVisualizationsVM fromStore(Store store) { @@ -44,6 +44,6 @@ class DataVisualizationsVM { } final AppState state; - final Function(BuildContext) onSavePressed; - final Function(BuildContext) onCancelPressed; + final Function(BuildContext)? onSavePressed; + final Function(BuildContext)? onCancelPressed; } diff --git a/lib/ui/settings/device_settings.dart b/lib/ui/settings/device_settings.dart index 95fde4785..df008c299 100644 --- a/lib/ui/settings/device_settings.dart +++ b/lib/ui/settings/device_settings.dart @@ -33,8 +33,8 @@ import 'package:invoiceninja_flutter/utils/strings.dart'; class DeviceSettings extends StatefulWidget { const DeviceSettings({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final DeviceSettingsVM viewModel; @@ -48,8 +48,8 @@ class _DeviceSettingsState extends State final GlobalKey _formKey = GlobalKey(debugLabel: '_deviceSettings'); - TabController _controller; - FocusScopeNode _focusNode; + TabController? _controller; + FocusScopeNode? _focusNode; @override void initState() { @@ -58,25 +58,25 @@ class _DeviceSettingsState extends State _focusNode = FocusScopeNode(); _controller = TabController( vsync: this, length: 2, initialIndex: settingsUIState.tabIndex); - _controller.addListener(_onTabChanged); + _controller!.addListener(_onTabChanged); } void _onTabChanged() { final store = StoreProvider.of(context); - store.dispatch(UpdateSettingsTab(tabIndex: _controller.index)); + store.dispatch(UpdateSettingsTab(tabIndex: _controller!.index)); } @override void dispose() { - _controller.removeListener(_onTabChanged); - _controller.dispose(); - _focusNode.dispose(); + _controller!.removeListener(_onTabChanged); + _controller!.dispose(); + _focusNode!.dispose(); super.dispose(); } @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; final state = viewModel.state; final prefState = state.prefState; @@ -190,8 +190,8 @@ class _DeviceSettingsState extends State FormCard( children: [ SwitchListTile( - title: Text(localization.showPdfPreview), - subtitle: Text(localization.showPdfPreviewHelp), + title: Text(localization.showPdfPreview!), + subtitle: Text(localization.showPdfPreviewHelp!), value: prefState.showPdfPreview, onChanged: (value) => viewModel.onShowPdfChanged(context, value), @@ -200,8 +200,8 @@ class _DeviceSettingsState extends State ), if (kIsWeb || !kReleaseMode) SwitchListTile( - title: Text(localization.browserPdfViewer), - subtitle: Text(localization.browserPdfViewerHelp), + title: Text(localization.browserPdfViewer!), + subtitle: Text(localization.browserPdfViewerHelp!), value: prefState.enableNativeBrowser, onChanged: (value) => viewModel .onEnableNativeBrowserChanged(context, value), @@ -229,23 +229,23 @@ class _DeviceSettingsState extends State value: prefState.textScaleFactor, onChanged: (dynamic value) { viewModel.onTextScaleFactorChanged(context, value); - AppBuilder.of(context).rebuild(); + AppBuilder.of(context)!.rebuild(); }, items: [ DropdownMenuItem( - child: Text(localization.small), + child: Text(localization.small!), value: PrefState.TEXT_SCALING_SMALL, ), DropdownMenuItem( - child: Text(localization.normal), + child: Text(localization.normal!), value: PrefState.TEXT_SCALING_NORMAL, ), DropdownMenuItem( - child: Text(localization.large), + child: Text(localization.large!), value: PrefState.TEXT_SCALING_LARGE, ), DropdownMenuItem( - child: Text(localization.extraLarge), + child: Text(localization.extraLarge!), value: PrefState.TEXT_SCALING_EXTRA_LARGE, ), ]), @@ -270,8 +270,8 @@ class _DeviceSettingsState extends State }, ), SwitchListTile( - title: Text(localization.enableFlexibleSearch), - subtitle: Text(localization.enableFlexibleSearchHelp), + title: Text(localization.enableFlexibleSearch!), + subtitle: Text(localization.enableFlexibleSearchHelp!), value: prefState.enableFlexibleSearch, onChanged: (value) => viewModel.onEnableFlexibleSearchChanged(context, value), @@ -280,8 +280,8 @@ class _DeviceSettingsState extends State ), if (isDesktop(context)) ...[ SwitchListTile( - title: Text(localization.enableTouchEvents), - subtitle: Text(localization.enableTouchEventsHelp), + title: Text(localization.enableTouchEvents!), + subtitle: Text(localization.enableTouchEventsHelp!), value: prefState.enableTouchEvents, onChanged: (value) => viewModel.onEnableTouchEventsChanged(context, value), @@ -289,8 +289,8 @@ class _DeviceSettingsState extends State secondary: Icon(Icons.touch_app), ), SwitchListTile( - title: Text(localization.enableTooltips), - subtitle: Text(localization.enableTooltipsHelp), + title: Text(localization.enableTooltips!), + subtitle: Text(localization.enableTooltipsHelp!), value: prefState.enableTooltips, onChanged: (value) => viewModel.onEnableTooltipsChanged(context, value), @@ -299,8 +299,8 @@ class _DeviceSettingsState extends State ), ], SwitchListTile( - title: Text(localization.cacheData), - subtitle: Text(localization.persistDataHelp), + title: Text(localization.cacheData!), + subtitle: Text(localization.persistDataHelp!), value: prefState.persistData, onChanged: (value) => viewModel.onPersistDataChanged(context, value), @@ -321,7 +321,7 @@ class _DeviceSettingsState extends State return ''; } - return localization.lastUpdated + + return localization.lastUpdated! + ': ' + timeago.format( convertTimestampToDate( @@ -336,7 +336,7 @@ class _DeviceSettingsState extends State }), ListTile( leading: Icon(Icons.logout), - title: Text(localization.endAllSessions), + title: Text(localization.endAllSessions!), /* subtitle: Text(countSessions == 1 ? localization.countSession @@ -397,31 +397,31 @@ class _DeviceSettingsState extends State ), Expanded( child: Container( - color: colorThemesMap[key].colorInfo, + color: colorThemesMap[key]!.colorInfo, height: 50, ), ), Expanded( child: Container( - color: colorThemesMap[key].colorPrimary, + color: colorThemesMap[key]!.colorPrimary, height: 50, ), ), Expanded( child: Container( - color: colorThemesMap[key].colorSuccess, + color: colorThemesMap[key]!.colorSuccess, height: 50, ), ), Expanded( child: Container( - color: colorThemesMap[key].colorWarning, + color: colorThemesMap[key]!.colorWarning, height: 50, ), ), Expanded( child: Container( - color: colorThemesMap[key].colorDanger, + color: colorThemesMap[key]!.colorDanger, height: 50, ), ), @@ -479,11 +479,11 @@ class _DeviceSettingsState extends State }, items: [ DropdownMenuItem( - child: Text(localization.clearAll), + child: Text(localization.clearAll!), value: 'clear_all'), if (!state.prefState.enableDarkMode) DropdownMenuItem( - child: Text(localization.contrast), + child: Text(localization.contrast!), value: 'contrast'), ]), ...PrefState.THEME_COLORS @@ -516,7 +516,7 @@ class _DeviceSettingsState extends State showToast(localization.copiedToClipboard .replaceFirst(':value', colors.join(','))); }, - child: Text(localization.exportColors.toUpperCase()), + child: Text(localization.exportColors!.toUpperCase()), ), ), SizedBox(width: kTableColumnGap), @@ -539,7 +539,7 @@ class _DeviceSettingsState extends State title: localization.importColors, ); }, - child: Text(localization.importColors.toUpperCase()), + child: Text(localization.importColors!.toUpperCase()), ), ), ], diff --git a/lib/ui/settings/device_settings_vm.dart b/lib/ui/settings/device_settings_vm.dart index 8597dd680..fdaac039f 100644 --- a/lib/ui/settings/device_settings_vm.dart +++ b/lib/ui/settings/device_settings_vm.dart @@ -23,7 +23,7 @@ import 'package:invoiceninja_flutter/utils/dialogs.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class DeviceSettingsScreen extends StatelessWidget { - const DeviceSettingsScreen({Key key}) : super(key: key); + const DeviceSettingsScreen({Key? key}) : super(key: key); static const String route = '/$kSettings/$kSettingsDeviceSettings'; @override @@ -39,28 +39,28 @@ class DeviceSettingsScreen extends StatelessWidget { class DeviceSettingsVM { DeviceSettingsVM({ - @required this.state, - @required this.onRefreshTap, - @required this.onLogoutTap, - @required this.onDarkModeChanged, - @required this.onLayoutChanged, - @required this.onRequireAuthenticationChanged, - @required this.onLongPressSelectionIsDefault, - @required this.authenticationSupported, - @required this.onMenuModeChanged, - @required this.onHistoryModeChanged, - @required this.onColorThemeChanged, - @required this.onCustomColorsChanged, - @required this.onPersistDataChanged, - @required this.onShowPdfChanged, - @required this.onEnableNativeBrowserChanged, - @required this.onShowPdfSideBySideChanged, - @required this.onTapSelectedChanged, - @required this.onTextScaleFactorChanged, - @required this.onEditAfterSavingChanged, - @required this.onEnableTouchEventsChanged, - @required this.onEnableTooltipsChanged, - @required this.onEnableFlexibleSearchChanged, + required this.state, + required this.onRefreshTap, + required this.onLogoutTap, + required this.onDarkModeChanged, + required this.onLayoutChanged, + required this.onRequireAuthenticationChanged, + required this.onLongPressSelectionIsDefault, + required this.authenticationSupported, + required this.onMenuModeChanged, + required this.onHistoryModeChanged, + required this.onColorThemeChanged, + required this.onCustomColorsChanged, + required this.onPersistDataChanged, + required this.onShowPdfChanged, + required this.onEnableNativeBrowserChanged, + required this.onShowPdfSideBySideChanged, + required this.onTapSelectedChanged, + required this.onTextScaleFactorChanged, + required this.onEditAfterSavingChanged, + required this.onEnableTouchEventsChanged, + required this.onEnableTooltipsChanged, + required this.onEnableFlexibleSearchChanged, }); static DeviceSettingsVM fromStore(Store store) { @@ -70,12 +70,12 @@ class DeviceSettingsVM { showRefreshDataDialog(context: context, includeStatic: true), onLogoutTap: (BuildContext context) { final completer = snackBarCompleter( - context, AppLocalization.of(context).endedAllSessions); + context, AppLocalization.of(context)!.endedAllSessions); store.dispatch(UserLogoutAll(completer: completer)); }, onDarkModeChanged: (BuildContext context, String value) async { store.dispatch(UpdateUserPreferences(darkModeType: value)); - AppBuilder.of(context).rebuild(); + AppBuilder.of(context)!.rebuild(); }, onLongPressSelectionIsDefault: (BuildContext context, bool value) async { store.dispatch( @@ -101,7 +101,7 @@ class DeviceSettingsVM { onEnableTouchEventsChanged: (context, value) async { store.dispatch(UpdateUserPreferences(enableTouchEvents: value)); store.dispatch(UpdatedSetting()); - AppBuilder.of(context).rebuild(); + AppBuilder.of(context)!.rebuild(); }, onShowPdfChanged: (context, value) { store.dispatch(UpdateUserPreferences(showPdfPreview: value)); @@ -141,7 +141,7 @@ class DeviceSettingsVM { return; } store.dispatch(UpdateUserPreferences(appLayout: value)); - AppBuilder.of(context).rebuild(); + AppBuilder.of(context)!.rebuild(); WidgetsBinding.instance.addPostFrameCallback((duration) { if (value == AppLayout.mobile) { store.dispatch(ViewDashboard()); @@ -155,7 +155,7 @@ class DeviceSettingsVM { try { authenticated = await LocalAuthentication().authenticate( localizedReason: - AppLocalization.of(context).authenticateToChangeSetting, + AppLocalization.of(context)!.authenticateToChangeSetting, options: const AuthenticationOptions( biometricOnly: true, useErrorDialogs: true, diff --git a/lib/ui/settings/email_settings.dart b/lib/ui/settings/email_settings.dart index c06e780ff..1517f7639 100644 --- a/lib/ui/settings/email_settings.dart +++ b/lib/ui/settings/email_settings.dart @@ -26,8 +26,8 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class EmailSettings extends StatefulWidget { const EmailSettings({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final EmailSettingsVM viewModel; @@ -40,7 +40,7 @@ class _EmailSettingsState extends State { static final GlobalKey _formKey = GlobalKey(debugLabel: '_emailSettings'); - FocusScopeNode _focusNode; + FocusScopeNode? _focusNode; final _fromNameController = TextEditingController(); final _replyToEmailController = TextEditingController(); @@ -65,7 +65,7 @@ class _EmailSettingsState extends State { @override void dispose() { - _focusNode.dispose(); + _focusNode!.dispose(); _controllers.forEach((dynamic controller) { controller.removeListener(_onChanged); controller.dispose(); @@ -96,16 +96,16 @@ class _EmailSettingsState extends State { final company = viewModel.company; final settings = viewModel.settings; - _fromNameController.text = settings.emailFromName; - _replyToEmailController.text = settings.replyToEmail; - _replyToNameController.text = settings.replyToName; - _bccEmailController.text = settings.bccEmail; - _emailStyleCustomController.text = settings.emailStyleCustom; - _emailSignatureController.text = settings.emailSignature; - _postmarkSecretController.text = settings.postmarkSecret; - _customSendingEmailController.text = settings.customSendingEmail; - _mailgunSecretController.text = settings.mailgunSecret; - _mailgunDomainController.text = settings.mailgunDomain; + _fromNameController.text = settings.emailFromName!; + _replyToEmailController.text = settings.replyToEmail!; + _replyToNameController.text = settings.replyToName!; + _bccEmailController.text = settings.bccEmail!; + _emailStyleCustomController.text = settings.emailStyleCustom!; + _emailSignatureController.text = settings.emailSignature!; + _postmarkSecretController.text = settings.postmarkSecret!; + _customSendingEmailController.text = settings.customSendingEmail!; + _mailgunSecretController.text = settings.mailgunSecret!; + _mailgunDomainController.text = settings.mailgunDomain!; _eInvoiceCertificatePassphraseController.text = company.eInvoiceCertificatePassphrase; @@ -164,7 +164,7 @@ class _EmailSettingsState extends State { } void _onSavePressed(BuildContext context) { - final bool isValid = _formKey.currentState.validate(); + final bool isValid = _formKey.currentState!.validate(); if (!isValid) { return; @@ -175,7 +175,7 @@ class _EmailSettingsState extends State { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; final state = viewModel.state; final company = viewModel.state.company; @@ -212,7 +212,7 @@ class _EmailSettingsState extends State { }, items: [ DropdownMenuItem( - child: Text(localization.defaultWord), + child: Text(localization.defaultWord!), value: SettingsEntity.EMAIL_SENDING_METHOD_DEFAULT), if (viewModel.state.isHosted) ...[ DropdownMenuItem( @@ -236,7 +236,7 @@ class _EmailSettingsState extends State { SizedBox(height: 20), if (isApple() || isDesktopOS()) Text( - localization.useWebAppToConnectGmail, + localization.useWebAppToConnectGmail!, textAlign: TextAlign.center, ) else @@ -272,12 +272,12 @@ class _EmailSettingsState extends State { SizedBox(height: 20), if (isApple() || !kIsWeb) Text( - localization.useWebAppToConnectMicrosoft, + localization.useWebAppToConnectMicrosoft!, textAlign: TextAlign.center, ) else OutlinedButton( - child: Text(localization.connectMicrosoft.toUpperCase()), + child: Text(localization.connectMicrosoft!.toUpperCase()), onPressed: () { final store = StoreProvider.of(context); store.dispatch(ViewSettings( @@ -399,7 +399,7 @@ class _EmailSettingsState extends State { items: List.generate(24, (i) => i).map((value) { final hour = value + 1; String timeLabel; - if (viewModel.state.company.settings.enableMilitaryTime) { + if (viewModel.state.company!.settings.enableMilitaryTime!) { timeLabel = '$hour:00'; } else { if (hour > 12) { @@ -466,15 +466,15 @@ class _EmailSettingsState extends State { settings.rebuild((b) => b..emailAlignment = value)), items: [ DropdownMenuItem( - child: Text(localization.left), + child: Text(localization.left!), value: SettingsEntity.EMAIL_ALIGNMENT_LEFT, ), DropdownMenuItem( - child: Text(localization.center), + child: Text(localization.center!), value: SettingsEntity.EMAIL_ALIGNMENT_CENTER, ), DropdownMenuItem( - child: Text(localization.right), + child: Text(localization.right!), value: SettingsEntity.EMAIL_ALIGNMENT_RIGHT, ), ], @@ -594,7 +594,7 @@ class _EmailSettingsState extends State { child: Padding( padding: const EdgeInsets.all(8), child: Text( - localization.uploadCertificate.toUpperCase()), + localization.uploadCertificate!.toUpperCase()), ), ), ), @@ -603,7 +603,7 @@ class _EmailSettingsState extends State { child: Row( children: [ Icon( - company.hasEInvoiceCertificate + company!.hasEInvoiceCertificate ? Icons.check_circle_outline : Icons.circle_outlined, size: 16, @@ -615,8 +615,8 @@ class _EmailSettingsState extends State { Flexible( child: Text( company.hasEInvoiceCertificate - ? localization.certificateSet - : localization.certificateNotSet, + ? localization.certificateSet! + : localization.certificateNotSet!, maxLines: 2, ), ), @@ -652,8 +652,8 @@ class _EmailSettingsState extends State { Flexible( child: Text( company.hasEInvoiceCertificatePassphrase - ? localization.passphraseSet - : localization.passphraseNotSet, + ? localization.passphraseSet! + : localization.passphraseNotSet!, maxLines: 2, ), ), diff --git a/lib/ui/settings/email_settings_vm.dart b/lib/ui/settings/email_settings_vm.dart index b0568e19a..89b8067df 100644 --- a/lib/ui/settings/email_settings_vm.dart +++ b/lib/ui/settings/email_settings_vm.dart @@ -26,7 +26,7 @@ import 'package:invoiceninja_flutter/utils/dialogs.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class EmailSettingsScreen extends StatelessWidget { - const EmailSettingsScreen({Key key}) : super(key: key); + const EmailSettingsScreen({Key? key}) : super(key: key); static const String route = '/$kSettings/$kSettingsEmailSettings'; @override @@ -45,13 +45,13 @@ class EmailSettingsScreen extends StatelessWidget { class EmailSettingsVM { EmailSettingsVM({ - @required this.state, - @required this.company, - @required this.onCompanyChanged, - @required this.settings, - @required this.onSettingsChanged, - @required this.onSavePressed, - @required this.onEInvoiceCertificateSelected, + required this.state, + required this.company, + required this.onCompanyChanged, + required this.settings, + required this.onSettingsChanged, + required this.onSavePressed, + required this.onEInvoiceCertificateSelected, }); static EmailSettingsVM fromStore(Store store) { @@ -77,9 +77,9 @@ class EmailSettingsVM { final settingsUIState = store.state.uiState.settingsUIState; final settings = settingsUIState.settings; if (settings.emailStyle == kEmailDesignCustom && - !settings.emailStyleCustom.contains('\$body')) { + !settings.emailStyleCustom!.contains('\$body')) { showErrorDialog( - message: AppLocalization.of(context) + message: AppLocalization.of(context)! .bodyVariableMissing .replaceFirst(':body', '\$body')); return; @@ -88,7 +88,7 @@ class EmailSettingsVM { switch (settingsUIState.entityType) { case EntityType.company: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch(SaveCompanyRequest( completer: completer, company: settingsUIState.company, @@ -96,13 +96,13 @@ class EmailSettingsVM { break; case EntityType.group: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch(SaveGroupRequest( completer: completer, group: settingsUIState.group)); break; case EntityType.client: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch(SaveClientRequest( completer: completer, client: settingsUIState.client)); break; @@ -111,8 +111,8 @@ class EmailSettingsVM { }, onEInvoiceCertificateSelected: (eInvoiceCertificate) { final completer = snackBarCompleter( - navigatorKey.currentContext, - AppLocalization.of(navigatorKey.currentContext) + navigatorKey.currentContext!, + AppLocalization.of(navigatorKey.currentContext!)! .uploadedCertificate); store.dispatch( SaveEInvoiceCertificateRequest( diff --git a/lib/ui/settings/expense_settings.dart b/lib/ui/settings/expense_settings.dart index 9e9b23ee4..fafaa1bd8 100644 --- a/lib/ui/settings/expense_settings.dart +++ b/lib/ui/settings/expense_settings.dart @@ -15,8 +15,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class ExpenseSettings extends StatefulWidget { const ExpenseSettings({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final ExpenseSettingsVM viewModel; @@ -28,7 +28,7 @@ class ExpenseSettings extends StatefulWidget { class _ExpenseSettingsState extends State { static final GlobalKey _formKey = GlobalKey(debugLabel: '_expenseSettings'); - FocusScopeNode _focusNode; + FocusScopeNode? _focusNode; @override void initState() { @@ -38,13 +38,13 @@ class _ExpenseSettingsState extends State { @override void dispose() { - _focusNode.dispose(); + _focusNode!.dispose(); super.dispose(); } @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; final state = viewModel.state; final company = viewModel.company; @@ -93,7 +93,7 @@ class _ExpenseSettingsState extends State { activeColor: Theme.of(context).colorScheme.secondary, title: Text(localization.convertCurrency), value: company.convertExpenseCurrency ?? false, - subtitle: Text(localization.convertExpenseCurrencyHelp), + subtitle: Text(localization.convertExpenseCurrencyHelp!), onChanged: (value) => viewModel.onCompanyChanged( company.rebuild((b) => b..convertExpenseCurrency = value)), ), @@ -110,9 +110,9 @@ class _ExpenseSettingsState extends State { FormCard(children: [ SwitchListTile( activeColor: Theme.of(context).colorScheme.secondary, - title: Text(localization.notifyVendorWhenPaid), + title: Text(localization.notifyVendorWhenPaid!), value: company.notifyVendorWhenPaid ?? false, - subtitle: Text(localization.notifyVendorWhenPaidHelp), + subtitle: Text(localization.notifyVendorWhenPaidHelp!), onChanged: (value) => viewModel.onCompanyChanged( company.rebuild((b) => b..notifyVendorWhenPaid = value)), ), diff --git a/lib/ui/settings/expense_settings_vm.dart b/lib/ui/settings/expense_settings_vm.dart index 6cbfe7dac..6b97beb2a 100644 --- a/lib/ui/settings/expense_settings_vm.dart +++ b/lib/ui/settings/expense_settings_vm.dart @@ -23,7 +23,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class ExpenseSettingsScreen extends StatelessWidget { - const ExpenseSettingsScreen({Key key}) : super(key: key); + const ExpenseSettingsScreen({Key? key}) : super(key: key); static const String route = '/$kSettings/$kSettingsExpenses'; @override @@ -42,13 +42,13 @@ class ExpenseSettingsScreen extends StatelessWidget { class ExpenseSettingsVM { ExpenseSettingsVM({ - @required this.state, - @required this.company, - @required this.onCompanyChanged, - @required this.onSavePressed, - @required this.onConfigureCategoriesPressed, - @required this.onSettingsChanged, - @required this.settings, + required this.state, + required this.company, + required this.onCompanyChanged, + required this.onSavePressed, + required this.onConfigureCategoriesPressed, + required this.onSettingsChanged, + required this.settings, }); static ExpenseSettingsVM fromStore(Store store) { @@ -68,19 +68,19 @@ class ExpenseSettingsVM { switch (settingsUIState.entityType) { case EntityType.company: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch(SaveCompanyRequest( completer: completer, company: settingsUIState.company)); break; case EntityType.group: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch(SaveGroupRequest( completer: completer, group: settingsUIState.group)); break; case EntityType.client: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch(SaveClientRequest( completer: completer, client: settingsUIState.client)); break; diff --git a/lib/ui/settings/generated_numbers.dart b/lib/ui/settings/generated_numbers.dart index c9978ae97..290f5d261 100644 --- a/lib/ui/settings/generated_numbers.dart +++ b/lib/ui/settings/generated_numbers.dart @@ -26,8 +26,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class GeneratedNumbers extends StatefulWidget { const GeneratedNumbers({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final GeneratedNumbersVM viewModel; @@ -41,8 +41,8 @@ class _GeneratedNumbersState extends State static final GlobalKey _formKey = GlobalKey(debugLabel: '_generatedNumbers'); - FocusScopeNode _focusNode; - TabController _controller; + FocusScopeNode? _focusNode; + TabController? _controller; bool autoValidate = false; @@ -71,7 +71,7 @@ class _GeneratedNumbersState extends State EntityType.expense, EntityType.recurringExpense, ].forEach((entityType) { - if (company.isModuleEnabled(entityType)) { + if (company!.isModuleEnabled(entityType)) { tabs++; } }); @@ -81,19 +81,19 @@ class _GeneratedNumbersState extends State final settingsUIState = widget.viewModel.state.settingsUIState; _controller = TabController( vsync: this, length: tabs, initialIndex: settingsUIState.tabIndex); - _controller.addListener(_onTabChanged); + _controller!.addListener(_onTabChanged); } void _onTabChanged() { final store = StoreProvider.of(context); - store.dispatch(UpdateSettingsTab(tabIndex: _controller.index)); + store.dispatch(UpdateSettingsTab(tabIndex: _controller!.index)); } @override void dispose() { - _focusNode.dispose(); - _controller.removeListener(_onTabChanged); - _controller.dispose(); + _focusNode!.dispose(); + _controller!.removeListener(_onTabChanged); + _controller!.dispose(); _controllers.forEach((dynamic controller) { controller.removeListener(_onChanged); controller.dispose(); @@ -111,7 +111,7 @@ class _GeneratedNumbersState extends State .forEach((dynamic controller) => controller.removeListener(_onChanged)); final settings = widget.viewModel.settings; - _recurringPrefixController.text = settings.recurringNumberPrefix; + _recurringPrefixController.text = settings.recurringNumberPrefix!; _controllers .forEach((dynamic controller) => controller.addListener(_onChanged)); @@ -166,7 +166,7 @@ class _GeneratedNumbersState extends State showDialog( context: context, builder: (BuildContext context) { - return ErrorDialog(AppLocalization.of(context) + return ErrorDialog(AppLocalization.of(context)! .counterPatternError .replaceAll(':', '\$')); }); @@ -179,11 +179,11 @@ class _GeneratedNumbersState extends State @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; final settings = viewModel.settings; final state = viewModel.state; - final company = state.company; + final company = state.company!; return EditScaffold( title: localization.generatedNumbers, @@ -301,7 +301,7 @@ class _GeneratedNumbersState extends State MapEntry>( id, DropdownMenuItem( - child: Text(localization.lookup(frequency)), + child: Text(localization.lookup(frequency)!), value: id, ))) .values @@ -469,16 +469,16 @@ class _GeneratedNumbersState extends State class EntityNumberSettings extends StatefulWidget { const EntityNumberSettings({ - @required this.counterValue, - @required this.patternValue, - @required this.onChanged, + required this.counterValue, + required this.patternValue, + required this.onChanged, this.showVendorFields = false, this.showClientFields = true, }); - final int counterValue; - final String patternValue; - final Function(int, String) onChanged; + final int? counterValue; + final String? patternValue; + final Function(int?, String) onChanged; final bool showVendorFields; final bool showClientFields; @@ -513,7 +513,7 @@ class _EntityNumberSettingsState extends State { .forEach((dynamic controller) => controller.removeListener(_onChanged)); _counterController.text = '${widget.counterValue ?? ''}'; - _patternController.text = widget.patternValue; + _patternController.text = widget.patternValue!; _controllers .forEach((dynamic controller) => controller.addListener(_onChanged)); @@ -523,7 +523,7 @@ class _EntityNumberSettingsState extends State { void _onChanged() { _debouncer.run(() { - final int counter = + final int? counter = parseInt(_counterController.text.trim(), zeroIsNull: true); final String pattern = _patternController.text.trim(); @@ -535,7 +535,7 @@ class _EntityNumberSettingsState extends State { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; return ScrollableListView( children: [ @@ -597,7 +597,7 @@ class _EntityNumberSettingsState extends State { class HelpPanel extends StatelessWidget { const HelpPanel({ - @required this.onFieldPressed, + required this.onFieldPressed, this.showVendorFields = false, this.showClientFields = true, }); diff --git a/lib/ui/settings/generated_numbers_vm.dart b/lib/ui/settings/generated_numbers_vm.dart index 6594f5b55..1fc602463 100644 --- a/lib/ui/settings/generated_numbers_vm.dart +++ b/lib/ui/settings/generated_numbers_vm.dart @@ -23,7 +23,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class GeneratedNumbersScreen extends StatelessWidget { - const GeneratedNumbersScreen({Key key}) : super(key: key); + const GeneratedNumbersScreen({Key? key}) : super(key: key); static const String route = '/$kSettings/$kSettingsGeneratedNumbers'; @override @@ -42,12 +42,12 @@ class GeneratedNumbersScreen extends StatelessWidget { class GeneratedNumbersVM { GeneratedNumbersVM({ - @required this.state, - @required this.onSavePressed, - @required this.settings, - @required this.onSettingsChanged, - @required this.company, - @required this.onCompanyChanged, + required this.state, + required this.onSavePressed, + required this.settings, + required this.onSettingsChanged, + required this.company, + required this.onCompanyChanged, }); static GeneratedNumbersVM fromStore(Store store) { @@ -72,19 +72,19 @@ class GeneratedNumbersVM { switch (settingsUIState.entityType) { case EntityType.company: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch(SaveCompanyRequest( completer: completer, company: settingsUIState.company)); break; case EntityType.group: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch(SaveGroupRequest( completer: completer, group: settingsUIState.group)); break; case EntityType.client: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch(SaveClientRequest( completer: completer, client: settingsUIState.client)); break; diff --git a/lib/ui/settings/import_export.dart b/lib/ui/settings/import_export.dart index 29f13ba10..9266f1e18 100644 --- a/lib/ui/settings/import_export.dart +++ b/lib/ui/settings/import_export.dart @@ -39,8 +39,8 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class ImportExport extends StatefulWidget { const ImportExport({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final ImportExportVM viewModel; @@ -53,12 +53,12 @@ class _ImportExportState extends State { static final GlobalKey _formKey = GlobalKey(debugLabel: '_importExport'); - FocusScopeNode _focusNode; + FocusScopeNode? _focusNode; bool autoValidate = false; - PreImportResponse _response; + PreImportResponse? _response; var _importFormat = ImportType.csv; - var _exportFormat = ImportType.csv; + ImportType? _exportFormat = ImportType.csv; var _exportType = ExportType.clients; var _exportDate = ''; var _exportDateRange = ''; @@ -150,13 +150,13 @@ class _ImportExportState extends State { @override void dispose() { - _focusNode.dispose(); + _focusNode!.dispose(); super.dispose(); } @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; return Scaffold( appBar: AppBar( @@ -221,7 +221,7 @@ class _ImportExportState extends State { .map((importType) => DropdownMenuItem( value: importType, child: - Text(localization.lookup('$importType')))) + Text(localization.lookup('$importType')!))) .toList()), ), ), @@ -237,7 +237,7 @@ class _ImportExportState extends State { items: ExportType.values .map((importType) => DropdownMenuItem( value: importType, - child: Text(localization.lookup('$importType')))) + child: Text(localization.lookup('$importType')!))) .toList(), ), if (DATE_FIELDS.containsKey(_exportType)) ...[ @@ -250,10 +250,10 @@ class _ImportExportState extends State { _exportDate = value; }); }, - items: DATE_FIELDS[_exportType] + items: DATE_FIELDS[_exportType]! .map((dateField) => DropdownMenuItem( value: dateField, - child: Text(localization.lookup('$dateField')))) + child: Text(localization.lookup('$dateField')!))) .toList(), ), if (_exportDate.isNotEmpty) @@ -267,7 +267,7 @@ class _ImportExportState extends State { }, items: DATE_RANGES.map( (dateRange) { - var label = ''; + String? label = ''; if (dateRange == 'last7') { label = localization.last7Days; } else if (dateRange == 'last30') { @@ -277,7 +277,7 @@ class _ImportExportState extends State { } return DropdownMenuItem( value: dateRange, - child: Text(label), + child: Text(label!), ); }, ).toList(), @@ -311,7 +311,7 @@ class _ImportExportState extends State { final webClient = WebClient(); final state = StoreProvider.of(context).state; final credentials = state.credentials; - String url = credentials.url; + String? url = credentials.url; if (_exportFormat == ImportType.json) { url = '$url/export'; @@ -361,14 +361,14 @@ class _ImportExportState extends State { class _FileImport extends StatefulWidget { const _FileImport({ - @required this.importType, - @required this.onImportTypeChanged, - @required this.onUploaded, + required this.importType, + required this.onImportTypeChanged, + required this.onUploaded, }); final ImportType importType; - final Function(ImportType) onImportTypeChanged; - final Function(PreImportResponse) onUploaded; + final Function(ImportType?) onImportTypeChanged; + final Function(PreImportResponse?) onUploaded; @override _FileImportState createState() => _FileImportState(); @@ -384,10 +384,10 @@ class _FileImportState extends State<_FileImport> { final localization = AppLocalization.of(context); if (!_multipartFiles.containsKey(ImportType.json.toString())) { - showErrorDialog(message: localization.jsonFileMissing); + showErrorDialog(message: localization!.jsonFileMissing); return; } else if (!_importJsonData && !_importJsonSettings) { - showErrorDialog(message: localization.jsonOptionMissing); + showErrorDialog(message: localization!.jsonOptionMissing); return; } @@ -416,7 +416,7 @@ class _FileImportState extends State<_FileImport> { .then((dynamic result) { setState(() => {_isLoading = false, _multipartFiles.clear()}); - showToast(localization.startedImport); + showToast(localization!.startedImport); }).catchError((dynamic error) { setState(() => _isLoading = false); showErrorDialog(message: '$error'); @@ -430,7 +430,7 @@ class _FileImportState extends State<_FileImport> { for (MapEntry uploadPart in widget.importType.uploadParts.entries) { if (!_multipartFiles.containsKey(uploadPart.key)) { - showErrorDialog(message: localization.requiredFilesMissing); + showErrorDialog(message: localization!.requiredFilesMissing); return; } } @@ -456,7 +456,7 @@ class _FileImportState extends State<_FileImport> { setState(() => {_isLoading = false, _multipartFiles.clear()}); if (widget.importType != ImportType.csv) { - showToast(localization.startedImport); + showToast(localization!.startedImport); } else { final response = serializers.deserializeWith(PreImportResponse.serializer, result); @@ -470,7 +470,7 @@ class _FileImportState extends State<_FileImport> { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final List children = [ InputDecorator( @@ -493,7 +493,7 @@ class _FileImportState extends State<_FileImport> { ] .map((importType) => DropdownMenuItem( value: importType, - child: Text(localization.lookup('$importType')))) + child: Text(localization.lookup('$importType')!))) .toList()), ), ) @@ -509,11 +509,11 @@ class _FileImportState extends State<_FileImport> { enabled: false, keyboardType: TextInputType.text, key: ValueKey(uploadPart.key + - (multipartFile != null ? multipartFile.filename : '')), + (multipartFile != null ? multipartFile.filename! : '')), label: localization.lookup(uploadPart.value), initialValue: !_multipartFiles.containsKey(uploadPart.key) ? localization.noFileSelected - : '${_multipartFiles[uploadPart.key].filename} • ${formatSize(_multipartFiles[uploadPart.key].length)}'); + : '${_multipartFiles[uploadPart.key]!.filename} • ${formatSize(_multipartFiles[uploadPart.key]!.length)}'); children.add(Row(crossAxisAlignment: CrossAxisAlignment.end, children: [ Expanded(child: field), @@ -549,19 +549,19 @@ class _FileImportState extends State<_FileImport> { Padding( padding: const EdgeInsets.only(bottom: 8), child: Text( - localization.jsonHelp, + localization.jsonHelp!, style: TextStyle(color: Colors.grey), ), ), SwitchListTile( activeColor: Theme.of(context).colorScheme.secondary, - title: Text(localization.importSettings), + title: Text(localization.importSettings!), value: _importJsonSettings, onChanged: (value) => setState(() => _importJsonSettings = value), ), SwitchListTile( activeColor: Theme.of(context).colorScheme.secondary, - title: Text(localization.importData), + title: Text(localization.importData!), value: _importJsonData, onChanged: (value) => setState(() => _importJsonData = value), ), @@ -592,15 +592,15 @@ class _FileImportState extends State<_FileImport> { class _FileMapper extends StatefulWidget { const _FileMapper({ - Key key, - @required this.importType, - @required this.response, - @required this.onCancelPressed, - @required this.formKey, + Key? key, + required this.importType, + required this.response, + required this.onCancelPressed, + required this.formKey, }) : super(key: key); final ImportType importType; - final PreImportResponse response; + final PreImportResponse? response; final Function onCancelPressed; final GlobalKey formKey; @@ -612,14 +612,14 @@ class __FileMapperState extends State<_FileMapper> { bool _useFirstRowAsHeaders = true; final _mapping = >{}; bool _isLoading = false; - String _bankAccountId; + String? _bankAccountId; @override void didChangeDependencies() { super.didChangeDependencies(); final localization = AppLocalization.of(context); - final response = widget.response; + final response = widget.response!; for (MapEntry entry in response.mappings.entries) { @@ -633,11 +633,11 @@ class __FileMapperState extends State<_FileMapper> { for (var availableField in entry.value.available) { final possible = availableField.split('.').last; final spaceCase = possible.replaceAll('_', ' '); - final translated = localization.lookup(possible); + final translated = localization!.lookup(possible); if ([possible, spaceCase, translated].contains(field.toLowerCase()) && - _mapping[entry.key][i] == null) { - _mapping[entry.key][i] = availableField; + _mapping[entry.key]![i] == null) { + _mapping[entry.key]![i] = availableField; } } } @@ -649,12 +649,12 @@ class __FileMapperState extends State<_FileMapper> { final localization = AppLocalization.of(context); final store = StoreProvider.of(context); final state = store.state; - final response = widget.response; + final response = widget.response!; final List children = [ SwitchListTile( activeColor: Theme.of(context).colorScheme.secondary, - title: Text(AppLocalization.of(context).firstRowAsColumnNames), + title: Text(AppLocalization.of(context)!.firstRowAsColumnNames), value: _useFirstRowAsHeaders, onChanged: (value) => setState(() => _useFirstRowAsHeaders = value), ), @@ -665,7 +665,7 @@ class __FileMapperState extends State<_FileMapper> { children.addAll([ SizedBox(height: 25), Text( - localization.lookup(entry.key), + localization!.lookup(entry.key)!, style: Theme.of(context).textTheme.titleMedium, overflow: TextOverflow.clip, maxLines: 1, @@ -693,7 +693,7 @@ class __FileMapperState extends State<_FileMapper> { field2: entry.value.fields2.length > i ? entry.value.fields2[i] : null, available: entry.value.available, - mappedTo: _mapping[entry.key][i] ?? '', + mappedTo: _mapping[entry.key]![i] ?? '', mapping: _mapping[entry.key], onMappedToChanged: (String value) { setState(() { @@ -701,7 +701,7 @@ class __FileMapperState extends State<_FileMapper> { _mapping[entry.key] = {}; } - _mapping[entry.key][i] = value; + _mapping[entry.key]![i] = value; }); }, ), @@ -747,7 +747,7 @@ class __FileMapperState extends State<_FileMapper> { children: [ Expanded( child: OutlinedButton( - child: Text(localization.cancel), + child: Text(localization!.cancel), onPressed: () => widget.onCancelPressed(), ), ), @@ -756,7 +756,7 @@ class __FileMapperState extends State<_FileMapper> { child: OutlinedButton( child: Text(localization.import), onPressed: () { - final bool isValid = widget.formKey.currentState.validate(); + final bool isValid = widget.formKey.currentState!.validate(); if (!isValid) { return; @@ -819,20 +819,20 @@ class __FileMapperState extends State<_FileMapper> { class _FieldMapper extends StatelessWidget { const _FieldMapper({ - @required this.field1, - @required this.field2, - @required this.mappedTo, - @required this.available, - @required this.onMappedToChanged, - @required this.mapping, + required this.field1, + required this.field2, + required this.mappedTo, + required this.available, + required this.onMappedToChanged, + required this.mapping, }); final String field1; - final String field2; + final String? field2; final BuiltList available; final String mappedTo; final Function onMappedToChanged; - final Map mapping; + final Map? mapping; @override Widget build(BuildContext context) { @@ -843,14 +843,14 @@ class _FieldMapper extends StatelessWidget { final partsA = fieldA.split('.'); final partsB = fieldB.split('.'); if (partsA[0] == partsB[0]) { - return localization - .lookup(partsA[1]) - .compareTo(localization.lookup(partsB[1])); + return localization! + .lookup(partsA[1])! + .compareTo(localization.lookup(partsB[1])!); } - return localization - .lookup(partsA[0]) - .compareTo(localization.lookup(partsB[0])); + return localization! + .lookup(partsA[0])! + .compareTo(localization.lookup(partsB[0])!); }); return Row( @@ -862,10 +862,10 @@ class _FieldMapper extends StatelessWidget { isExpanded: true, value: available.contains(mappedTo) ? mappedTo : null, validator: (value) => (value ?? '').isNotEmpty && - mapping.values.where((element) => element == value).length > 1 - ? localization.duplicateColumnMapping + mapping!.values.where((element) => element == value).length > 1 + ? localization!.duplicateColumnMapping : null, - onChanged: onMappedToChanged, + onChanged: onMappedToChanged as void Function(String?)?, items: [ DropdownMenuItem( child: SizedBox(), @@ -873,7 +873,7 @@ class _FieldMapper extends StatelessWidget { ), ...sorted.map( (field) { - final fieldLabel = localization + final fieldLabel = localization! .lookup(field.split('.').last.replaceAll('_id', '')); final fieldType = localization.lookup(field.split('.').first); return DropdownMenuItem( diff --git a/lib/ui/settings/import_export_vm.dart b/lib/ui/settings/import_export_vm.dart index b72c8f9bf..00fb46614 100644 --- a/lib/ui/settings/import_export_vm.dart +++ b/lib/ui/settings/import_export_vm.dart @@ -12,7 +12,7 @@ import 'package:invoiceninja_flutter/redux/app/app_state.dart'; import 'package:invoiceninja_flutter/ui/settings/import_export.dart'; class ImportExportScreen extends StatelessWidget { - const ImportExportScreen({Key key}) : super(key: key); + const ImportExportScreen({Key? key}) : super(key: key); static const String route = '/$kSettings/$kSettingsImportExport'; @override @@ -28,7 +28,7 @@ class ImportExportScreen extends StatelessWidget { class ImportExportVM { ImportExportVM({ - @required this.state, + required this.state, }); static ImportExportVM fromStore(Store store) { diff --git a/lib/ui/settings/invoice_design.dart b/lib/ui/settings/invoice_design.dart index c390e917c..eee4b230d 100644 --- a/lib/ui/settings/invoice_design.dart +++ b/lib/ui/settings/invoice_design.dart @@ -42,8 +42,8 @@ import 'package:printing/printing.dart'; class InvoiceDesign extends StatefulWidget { const InvoiceDesign({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final InvoiceDesignVM viewModel; @@ -57,8 +57,8 @@ class _InvoiceDesignState extends State static final GlobalKey _formKey = GlobalKey(debugLabel: '_invoiceDesign'); - TabController _controller; - FocusScopeNode _focusNode; + TabController? _controller; + FocusScopeNode? _focusNode; final _logoSizeController = TextEditingController(); @@ -70,10 +70,10 @@ class _InvoiceDesignState extends State bool _wasCreditDesignChanged = false; bool _wasPurchaseOrderDesignChanged = false; - bool _updateAllInvoiceDesigns = false; - bool _updateAllQuoteDesigns = false; - bool _updateAllCreditDesigns = false; - bool _updateAllPurchaseOrderDesigns = false; + bool? _updateAllInvoiceDesigns = false; + bool? _updateAllQuoteDesigns = false; + bool? _updateAllCreditDesigns = false; + bool? _updateAllPurchaseOrderDesigns = false; @override void initState() { @@ -101,14 +101,14 @@ class _InvoiceDesignState extends State EntityType.vendor, EntityType.purchaseOrder, ].forEach((entityType) { - if (state.company.isModuleEnabled(entityType)) { + if (state.company!.isModuleEnabled(entityType)) { tabs++; } }); _controller = TabController( vsync: this, length: tabs, initialIndex: settingsUIState.tabIndex); - _controller.addListener(_onTabChanged); + _controller!.addListener(_onTabChanged); } @override @@ -123,7 +123,7 @@ class _InvoiceDesignState extends State final settings = widget.viewModel.settings; _logoSizeController.text = (settings.companyLogoSize ?? '').isEmpty ? '' - : parseInt(settings.companyLogoSize).toString(); + : parseInt(settings.companyLogoSize!).toString(); _controllers .forEach((dynamic controller) => controller.addListener(_onChanged)); @@ -133,7 +133,7 @@ class _InvoiceDesignState extends State void _onTabChanged() { final store = StoreProvider.of(context); - store.dispatch(UpdateSettingsTab(tabIndex: _controller.index)); + store.dispatch(UpdateSettingsTab(tabIndex: _controller!.index)); } void _onChanged() { @@ -144,7 +144,7 @@ class _InvoiceDesignState extends State ..companyLogoSize = logoSize.isEmpty ? '' : logoSize + - (viewModel.settings.companyLogoSize.contains('px') ? 'px' : '%')); + (viewModel.settings.companyLogoSize!.contains('px') ? 'px' : '%')); if (settings != viewModel.settings) { _debouncer.run(() { viewModel.onSettingsChanged(settings); @@ -158,16 +158,16 @@ class _InvoiceDesignState extends State controller.removeListener(_onChanged); controller.dispose(); }); - _controller.removeListener(_onTabChanged); - _controller.dispose(); - _focusNode.dispose(); + _controller!.removeListener(_onTabChanged); + _controller!.dispose(); + _focusNode!.dispose(); super.dispose(); } @override Widget build(BuildContext context) { final store = StoreProvider.of(context); - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; final state = viewModel.state; final settings = viewModel.settings; @@ -202,10 +202,10 @@ class _InvoiceDesignState extends State title: localization.invoiceDesign, onSavePressed: (context) { viewModel.onSavePressed(context, [ - if (_updateAllInvoiceDesigns) EntityType.invoice, - if (_updateAllQuoteDesigns) EntityType.quote, - if (_updateAllCreditDesigns) EntityType.credit, - if (_updateAllPurchaseOrderDesigns) EntityType.purchaseOrder, + if (_updateAllInvoiceDesigns!) EntityType.invoice, + if (_updateAllQuoteDesigns!) EntityType.quote, + if (_updateAllCreditDesigns!) EntityType.credit, + if (_updateAllPurchaseOrderDesigns!) EntityType.purchaseOrder, ]); }, appBarBottom: state.settingsUIState.isFiltered @@ -216,7 +216,7 @@ class _InvoiceDesignState extends State isScrollable: true, tabs: tabs .map((tab) => Tab( - child: Text(tab), + child: Text(tab!), )) .toList(), ), @@ -262,7 +262,7 @@ class _InvoiceDesignState extends State child: Padding( padding: const EdgeInsets.only(top: 18), child: SwitchListTile( - title: Text(localization.showPreview), + title: Text(localization.showPreview!), value: state.settingsUIState.showPdfPreview, onChanged: (value) { final store = @@ -296,13 +296,13 @@ class _InvoiceDesignState extends State ), if (!isFiltered && _wasInvoiceDesignChanged && - state.userCompany.isAdmin) + state.userCompany!.isAdmin) Padding( padding: const EdgeInsets.only(bottom: 8), child: CheckboxListTile( activeColor: Theme.of(context).colorScheme.secondary, - title: Text(localization.updateAllRecords), + title: Text(localization.updateAllRecords!), value: _updateAllInvoiceDesigns, onChanged: (value) => setState( () => _updateAllInvoiceDesigns = value, @@ -324,13 +324,13 @@ class _InvoiceDesignState extends State ), if (!isFiltered && _wasQuoteDesignChanged && - state.userCompany.isAdmin) + state.userCompany!.isAdmin) Padding( padding: const EdgeInsets.only(bottom: 8), child: CheckboxListTile( activeColor: Theme.of(context).colorScheme.secondary, - title: Text(localization.updateAllRecords), + title: Text(localization.updateAllRecords!), value: _updateAllQuoteDesigns, onChanged: (value) => setState( () => _updateAllQuoteDesigns = value, @@ -353,13 +353,13 @@ class _InvoiceDesignState extends State ), if (!isFiltered && _wasCreditDesignChanged && - state.userCompany.isAdmin) + state.userCompany!.isAdmin) Padding( padding: const EdgeInsets.only(bottom: 8), child: CheckboxListTile( activeColor: Theme.of(context).colorScheme.secondary, - title: Text(localization.updateAllRecords), + title: Text(localization.updateAllRecords!), value: _updateAllCreditDesigns, onChanged: (value) => setState( () => _updateAllCreditDesigns = value, @@ -385,13 +385,13 @@ class _InvoiceDesignState extends State ), if (!isFiltered && _wasPurchaseOrderDesignChanged && - state.userCompany.isAdmin) + state.userCompany!.isAdmin) Padding( padding: const EdgeInsets.only(bottom: 8), child: CheckboxListTile( activeColor: Theme.of(context).colorScheme.secondary, - title: Text(localization.updateAllRecords), + title: Text(localization.updateAllRecords!), value: _updateAllPurchaseOrderDesigns, onChanged: (value) => setState( () => @@ -403,7 +403,7 @@ class _InvoiceDesignState extends State ] else ...[ OutlinedButton( child: Text( - localization.setDefaultDesign.toUpperCase()), + localization.setDefaultDesign!.toUpperCase()), onPressed: () { store.dispatch(ViewSettings( company: state.company, @@ -424,7 +424,7 @@ class _InvoiceDesignState extends State .map((pageLayout) => DropdownMenuItem( value: pageLayout, child: - Text(localization.lookup(pageLayout)), + Text(localization.lookup(pageLayout)!), )) .toList(), ), @@ -437,7 +437,7 @@ class _InvoiceDesignState extends State items: kPageSizes .map((pageSize) => DropdownMenuItem( value: pageSize, - child: Text(localization.lookup(pageSize)), + child: Text(localization.lookup(pageSize)!), )) .toList(), ), @@ -493,7 +493,7 @@ class _InvoiceDesignState extends State value: localization.percent, ), DropdownMenuItem( - child: Text(localization.pixels), + child: Text(localization.pixels!), value: localization.pixels, ), ], @@ -595,15 +595,15 @@ class _InvoiceDesignState extends State (b) => b..pageNumberingAlignment = value)), items: [ DropdownMenuItem( - child: Text(localization.left), + child: Text(localization.left!), value: SettingsEntity.PAGE_NUMBER_ALIGN_LEFT, ), DropdownMenuItem( - child: Text(localization.center), + child: Text(localization.center!), value: SettingsEntity.PAGE_NUMBER_ALIGN_CENTER, ), DropdownMenuItem( - child: Text(localization.right), + child: Text(localization.right!), value: SettingsEntity.PAGE_NUMBER_ALIGN_RIGHT), ], /* @@ -1074,7 +1074,7 @@ class _InvoiceDesignState extends State FormCard( isLast: true, child: SwitchListTile( - title: Text(localization.shareInvoiceQuoteColumns), + title: Text(localization.shareInvoiceQuoteColumns!), value: settings.shareInvoiceQuoteColumns ?? true, activeColor: Theme.of(context).colorScheme.secondary, onChanged: (value) { @@ -1224,14 +1224,14 @@ class _InvoiceDesignState extends State child: _PdfPreview( state: state, settings: viewModel.settings, - entityType: tabs[_controller.index] == + entityType: tabs[_controller!.index] == localization.vendorDetails || - tabs[_controller.index] == + tabs[_controller!.index] == localization.purchaseOrderDetails ? EntityType.purchaseOrder - : tabs[_controller.index] == localization.quoteDetails + : tabs[_controller!.index] == localization.quoteDetails ? EntityType.quote - : tabs[_controller.index] == localization.creditDetails + : tabs[_controller!.index] == localization.creditDetails ? EntityType.credit : EntityType.invoice, ), @@ -1244,22 +1244,22 @@ class _InvoiceDesignState extends State class _PdfPreview extends StatefulWidget { const _PdfPreview({ - Key key, + Key? key, this.state, this.settings, this.entityType = EntityType.invoice, }) : super(key: key); - final SettingsEntity settings; + final SettingsEntity? settings; final EntityType entityType; - final AppState state; + final AppState? state; @override State<_PdfPreview> createState() => _PdfPreviewState(); } class _PdfPreviewState extends State<_PdfPreview> { - http.Response response; + http.Response? response; bool isLoading = false; @override @@ -1279,21 +1279,21 @@ class _PdfPreviewState extends State<_PdfPreview> { } void _loadPdf() async { - final state = widget.state; + final state = widget.state!; final settingsUIState = state.settingsUIState; - final url = state.credentials.url + '/live_design'; + final url = state.credentials.url! + '/live_design'; final request = PdfPreviewRequest( entityType: widget.entityType.apiValue, settingsType: settingsUIState.entityType.apiValue, - settings: widget.settings, + settings: widget.settings!, groupId: settingsUIState.group.id ?? '', clientId: settingsUIState.client.id ?? '', ); setState(() => isLoading = true); - response = await WebClient() + response = await (WebClient() .post( url, state.credentials.token, @@ -1307,7 +1307,7 @@ class _PdfPreviewState extends State<_PdfPreview> { ) .catchError((dynamic error) { print('## Error: $error'); - }); + }) as FutureOr); setState(() => isLoading = false); } @@ -1321,7 +1321,7 @@ class _PdfPreviewState extends State<_PdfPreview> { return Stack( children: [ PdfPreview( - build: (format) => response.bodyBytes, + build: (format) => response!.bodyBytes, canChangeOrientation: false, canChangePageFormat: false, canDebug: false, diff --git a/lib/ui/settings/invoice_design_vm.dart b/lib/ui/settings/invoice_design_vm.dart index d1214c68e..106b2f101 100644 --- a/lib/ui/settings/invoice_design_vm.dart +++ b/lib/ui/settings/invoice_design_vm.dart @@ -27,7 +27,7 @@ import 'package:invoiceninja_flutter/utils/dialogs.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class InvoiceDesignScreen extends StatelessWidget { - const InvoiceDesignScreen({Key key}) : super(key: key); + const InvoiceDesignScreen({Key? key}) : super(key: key); static const String route = '/$kSettings/$kSettingsInvoiceDesign'; @override @@ -46,11 +46,11 @@ class InvoiceDesignScreen extends StatelessWidget { class InvoiceDesignVM { InvoiceDesignVM({ - @required this.state, - @required this.company, - @required this.onSavePressed, - @required this.settings, - @required this.onSettingsChanged, + required this.state, + required this.company, + required this.onSavePressed, + required this.settings, + required this.onSettingsChanged, }); static InvoiceDesignVM fromStore(Store store) { @@ -81,12 +81,12 @@ class InvoiceDesignVM { switch (settingsUIState.entityType) { case EntityType.company: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings) + context, AppLocalization.of(context)!.savedSettings) ..future.then((value) { final webClient = WebClient(); final credentials = state.credentials; final url = '${credentials.url}/designs/set/default'; - final settings = store.state.company.settings; + final settings = store.state.company!.settings; entityTypes.forEach((entityType) { webClient .post( @@ -99,25 +99,25 @@ class InvoiceDesignVM { ) .then((dynamic response) { showToast( - AppLocalization.of(navigatorKey.currentContext) + AppLocalization.of(navigatorKey.currentContext!)! .savedSettings); }).catchError((dynamic error) { showErrorDialog(message: '$error'); }); }); - }); + } as FutureOr<_> Function(Null)); store.dispatch(SaveCompanyRequest( completer: completer, company: settingsUIState.company)); break; case EntityType.group: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch(SaveGroupRequest( completer: completer, group: settingsUIState.group)); break; case EntityType.client: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch(SaveClientRequest( completer: completer, client: settingsUIState.client)); break; diff --git a/lib/ui/settings/localization_settings.dart b/lib/ui/settings/localization_settings.dart index 1309a0c1e..cbe8054b2 100644 --- a/lib/ui/settings/localization_settings.dart +++ b/lib/ui/settings/localization_settings.dart @@ -29,8 +29,8 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class LocalizationSettings extends StatefulWidget { const LocalizationSettings({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final LocalizationSettingsVM viewModel; @@ -47,8 +47,8 @@ class _LocalizationSettingsState extends State bool autoValidate = false; final _firstNameController = TextEditingController(); - TabController _controller; - FocusScopeNode _focusNode; + TabController? _controller; + FocusScopeNode? _focusNode; List _controllers = []; @@ -62,19 +62,19 @@ class _LocalizationSettingsState extends State length: 2, initialIndex: settingsUIState.isFiltered ? 0 : settingsUIState.tabIndex); - _controller.addListener(_onTabChanged); + _controller!.addListener(_onTabChanged); } void _onTabChanged() { final store = StoreProvider.of(context); - store.dispatch(UpdateSettingsTab(tabIndex: _controller.index)); + store.dispatch(UpdateSettingsTab(tabIndex: _controller!.index)); } @override void dispose() { - _controller.removeListener(_onTabChanged); - _controller.dispose(); - _focusNode.dispose(); + _controller!.removeListener(_onTabChanged); + _controller!.dispose(); + _focusNode!.dispose(); _controllers.forEach((dynamic controller) { controller.removeListener(_onChanged); controller.dispose(); @@ -104,7 +104,7 @@ class _LocalizationSettingsState extends State @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; final state = viewModel.state; final settings = viewModel.settings; @@ -113,7 +113,7 @@ class _LocalizationSettingsState extends State final customLabels = kCustomLabels.where((key) => !translations.keys.contains(key)).toList(); customLabels.sort( - (a, b) => localization.lookup(a).compareTo(localization.lookup(b))); + (a, b) => localization.lookup(a)!.compareTo(localization.lookup(b)!)); return EditScaffold( title: localization.localization, @@ -159,11 +159,11 @@ class _LocalizationSettingsState extends State enabledLabel: '${localization.code}: ' + formatNumber(1000, context, showCurrencyCode: true, - currencyId: settings.currencyId), + currencyId: settings.currencyId)!, disabledLabel: '${localization.symbol}: ' + formatNumber(1000, context, showCurrencyCode: false, - currencyId: settings.currencyId), + currencyId: settings.currencyId)!, ), if (!state.isDemo) LearnMoreUrl( @@ -215,8 +215,8 @@ class _LocalizationSettingsState extends State viewModel.onCompanyChanged(company .rebuild((b) => b..useCommaAsDecimalPlace = value)); }, - title: Text(localization.decimalComma), - subtitle: Text(localization.useCommaAsDecimalPlace), + title: Text(localization.decimalComma!), + subtitle: Text(localization.useCommaAsDecimalPlace!), activeColor: Theme.of(context).colorScheme.secondary, secondary: isDesktop(context) ? Icon(MdiIcons.commaCircle) @@ -257,7 +257,7 @@ class _LocalizationSettingsState extends State MapEntry>( id, DropdownMenuItem( - child: Text(localization.lookup(month)), + child: Text(localization.lookup(month)!), value: id, ))) .values @@ -280,7 +280,7 @@ class _LocalizationSettingsState extends State child: DropdownButton( items: customLabels .map((key) => DropdownMenuItem( - child: Text(localization.lookup(key)), + child: Text(localization.lookup(key)!), value: key, )) .toList(), @@ -320,20 +320,20 @@ class _LocalizationSettingsState extends State ), TextButton( onPressed: () async { - final countryId = await showDialog( + final countryId = (await showDialog( context: context, builder: (BuildContext context) { return _AddCompanyDialog(); - }); + }))!; if (countryId.isNotEmpty) { final key = 'country_' + - state.staticState.countryMap[countryId] + state.staticState.countryMap[countryId]! .name; viewModel.onSettingsChanged(settings.rebuild( (b) => b..translations[key] = '')); } }, - child: Text(localization.addCountry), + child: Text(localization.addCountry!), ) ], ), @@ -346,9 +346,9 @@ class _LocalizationSettingsState extends State children: [ Expanded( child: Text( - key.startsWith('country_') + key!.startsWith('country_') ? key.split('_')[1] - : localization.lookup(key), + : localization.lookup(key)!, maxLines: 1, overflow: TextOverflow.ellipsis, )), @@ -382,23 +382,23 @@ class _LocalizationSettingsState extends State } class _AddCompanyDialog extends StatefulWidget { - const _AddCompanyDialog({Key key}) : super(key: key); + const _AddCompanyDialog({Key? key}) : super(key: key); @override State<_AddCompanyDialog> createState() => _AddCompanyDialogState(); } class _AddCompanyDialogState extends State<_AddCompanyDialog> { - String _countryId; + String? _countryId; @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final store = StoreProvider.of(context); final state = store.state; return AlertDialog( - title: Text(localization.addCountry), + title: Text(localization.addCountry!), actions: [ TextButton( onPressed: () { diff --git a/lib/ui/settings/localization_vm.dart b/lib/ui/settings/localization_vm.dart index bf281cd2b..5fdca2a92 100644 --- a/lib/ui/settings/localization_vm.dart +++ b/lib/ui/settings/localization_vm.dart @@ -28,7 +28,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class LocalizationScreen extends StatelessWidget { - const LocalizationScreen({Key key}) : super(key: key); + const LocalizationScreen({Key? key}) : super(key: key); static const String route = '/$kSettings/$kSettingsLocalization'; @override @@ -47,12 +47,12 @@ class LocalizationScreen extends StatelessWidget { class LocalizationSettingsVM { LocalizationSettingsVM({ - @required this.state, - @required this.company, - @required this.settings, - @required this.onSettingsChanged, - @required this.onCompanyChanged, - @required this.onSavePressed, + required this.state, + required this.company, + required this.settings, + required this.onSettingsChanged, + required this.onCompanyChanged, + required this.onSavePressed, }); static LocalizationSettingsVM fromStore(Store store) { @@ -74,27 +74,27 @@ class LocalizationSettingsVM { case EntityType.company: final appBuilder = AppBuilder.of(context); final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings) + context, AppLocalization.of(context)!.savedSettings) ..future.then((value) { - appBuilder.rebuild(); + appBuilder!.rebuild(); store.dispatch(RefreshData( includeStatic: true, completer: Completer() ..future .then((dynamic value) => appBuilder.rebuild()))); - }); + } as FutureOr Function(Null)); store.dispatch(SaveCompanyRequest( completer: completer, company: settingsUIState.company)); break; case EntityType.group: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch(SaveGroupRequest( completer: completer, group: settingsUIState.group)); break; case EntityType.client: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch(SaveClientRequest( completer: completer, client: settingsUIState.client)); break; diff --git a/lib/ui/settings/payment_settings.dart b/lib/ui/settings/payment_settings.dart index 8fb69dc21..4f0748d00 100644 --- a/lib/ui/settings/payment_settings.dart +++ b/lib/ui/settings/payment_settings.dart @@ -21,8 +21,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class PaymentSettings extends StatefulWidget { const PaymentSettings({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final PaymentSettingsVM viewModel; @@ -34,7 +34,7 @@ class PaymentSettings extends StatefulWidget { class _PaymentSettingsState extends State { static final GlobalKey _formKey = GlobalKey(debugLabel: '_paymentSettings'); - FocusScopeNode _focusNode; + FocusScopeNode? _focusNode; final _minimumUnderPaymentAmountController = TextEditingController(); final _minimumPaymentAmountController = TextEditingController(); List _controllers = []; @@ -57,11 +57,11 @@ class _PaymentSettingsState extends State { _minimumUnderPaymentAmountController.text = formatNumber( widget.viewModel.settings.clientPortalUnderPaymentMinimum, context, - formatNumberType: FormatNumberType.inputMoney); + formatNumberType: FormatNumberType.inputMoney)!; _minimumPaymentAmountController.text = formatNumber( widget.viewModel.settings.clientInitiatedPaymentsMinimum, context, - formatNumberType: FormatNumberType.inputMoney); + formatNumberType: FormatNumberType.inputMoney)!; _controllers .forEach((dynamic controller) => controller.addListener(_onChanged)); @@ -71,7 +71,7 @@ class _PaymentSettingsState extends State { @override void dispose() { - _focusNode.dispose(); + _focusNode!.dispose(); super.dispose(); } @@ -89,7 +89,7 @@ class _PaymentSettingsState extends State { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; final state = viewModel.state; final settings = viewModel.settings; @@ -133,7 +133,7 @@ class _PaymentSettingsState extends State { SettingsEntity.AUTO_BILL_OPT_IN, SettingsEntity.AUTO_BILL_OFF, ] - .map((type) => Text(localization.lookup(type))) + .map((type) => Text(localization.lookup(type)!)) .toList(), items: [ SettingsEntity.AUTO_BILL_ALWAYS, diff --git a/lib/ui/settings/payment_settings_vm.dart b/lib/ui/settings/payment_settings_vm.dart index db37c7142..1ea5f1451 100644 --- a/lib/ui/settings/payment_settings_vm.dart +++ b/lib/ui/settings/payment_settings_vm.dart @@ -23,7 +23,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class PaymentsSettingsScreen extends StatelessWidget { - const PaymentsSettingsScreen({Key key}) : super(key: key); + const PaymentsSettingsScreen({Key? key}) : super(key: key); static const String route = '/$kSettings/$kSettingsPaymentSettings'; @override @@ -42,13 +42,13 @@ class PaymentsSettingsScreen extends StatelessWidget { class PaymentSettingsVM { PaymentSettingsVM({ - @required this.state, - @required this.company, - @required this.onCompanyChanged, - @required this.onSavePressed, - @required this.onSettingsChanged, - @required this.settings, - @required this.onConfigureGatewaysPressed, + required this.state, + required this.company, + required this.onCompanyChanged, + required this.onSavePressed, + required this.onSettingsChanged, + required this.settings, + required this.onConfigureGatewaysPressed, }); static PaymentSettingsVM fromStore(Store store) { @@ -68,19 +68,19 @@ class PaymentSettingsVM { switch (settingsUIState.entityType) { case EntityType.company: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch(SaveCompanyRequest( completer: completer, company: settingsUIState.company)); break; case EntityType.group: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch(SaveGroupRequest( completer: completer, group: settingsUIState.group)); break; case EntityType.client: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch(SaveClientRequest( completer: completer, client: settingsUIState.client)); break; diff --git a/lib/ui/settings/product_settings.dart b/lib/ui/settings/product_settings.dart index a63fecf5c..43dfe4166 100644 --- a/lib/ui/settings/product_settings.dart +++ b/lib/ui/settings/product_settings.dart @@ -14,8 +14,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class ProductSettings extends StatefulWidget { const ProductSettings({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final ProductSettingsVM viewModel; @@ -27,7 +27,7 @@ class ProductSettings extends StatefulWidget { class _ProductSettingsState extends State { static final GlobalKey _formKey = GlobalKey(debugLabel: '_productSettings'); - FocusScopeNode _focusNode; + FocusScopeNode? _focusNode; final _debouncer = Debouncer(); final _stockThresholdController = TextEditingController(); List _controllers = []; @@ -46,7 +46,7 @@ class _ProductSettingsState extends State { .forEach((dynamic controller) => controller.removeListener(_onChanged)); final viewModel = widget.viewModel; - final company = viewModel.state.company; + final company = viewModel.state.company!; _stockThresholdController.text = company.stockNotificationThreshold == 0 ? '' @@ -54,7 +54,7 @@ class _ProductSettingsState extends State { company.stockNotificationThreshold.toDouble(), context, formatNumberType: FormatNumberType.int, - ); + )!; _controllers .forEach((dynamic controller) => controller.addListener(_onChanged)); @@ -64,7 +64,7 @@ class _ProductSettingsState extends State { @override void dispose() { - _focusNode.dispose(); + _focusNode!.dispose(); _controllers.forEach((dynamic controller) { controller.removeListener(_onChanged); controller.dispose(); @@ -85,7 +85,7 @@ class _ProductSettingsState extends State { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; final company = viewModel.company; @@ -100,17 +100,17 @@ class _ProductSettingsState extends State { children: [ SwitchListTile( activeColor: Theme.of(context).colorScheme.secondary, - title: Text(localization.trackInventory), + title: Text(localization.trackInventory!), value: company.trackInventory, - subtitle: Text(localization.trackInventoryHelp), + subtitle: Text(localization.trackInventoryHelp!), onChanged: (value) => viewModel.onCompanyChanged( company.rebuild((b) => b..trackInventory = value)), ), SwitchListTile( activeColor: Theme.of(context).colorScheme.secondary, - title: Text(localization.stockNotifications), + title: Text(localization.stockNotifications!), value: company.stockNotification, - subtitle: Text(localization.stockNotificationsHelp), + subtitle: Text(localization.stockNotificationsHelp!), onChanged: (value) => viewModel.onCompanyChanged( company.rebuild((b) => b..stockNotification = value)), ), @@ -163,9 +163,9 @@ class _ProductSettingsState extends State { children: [ SwitchListTile( activeColor: Theme.of(context).colorScheme.secondary, - title: Text(localization.showProductDescription), + title: Text(localization.showProductDescription!), value: company.showProductDetails, - subtitle: Text(localization.showProductDescriptionHelp), + subtitle: Text(localization.showProductDescriptionHelp!), onChanged: (value) => viewModel.onCompanyChanged( company.rebuild((b) => b..showProductDetails = value)), ), diff --git a/lib/ui/settings/product_settings_vm.dart b/lib/ui/settings/product_settings_vm.dart index 2ab718ea1..dc4831742 100644 --- a/lib/ui/settings/product_settings_vm.dart +++ b/lib/ui/settings/product_settings_vm.dart @@ -16,7 +16,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class ProductSettingsScreen extends StatelessWidget { - const ProductSettingsScreen({Key key}) : super(key: key); + const ProductSettingsScreen({Key? key}) : super(key: key); static const String route = '/$kSettings/$kSettingsProducts'; @override @@ -35,10 +35,10 @@ class ProductSettingsScreen extends StatelessWidget { class ProductSettingsVM { ProductSettingsVM({ - @required this.state, - @required this.company, - @required this.onCompanyChanged, - @required this.onSavePressed, + required this.state, + required this.company, + required this.onCompanyChanged, + required this.onSavePressed, }); static ProductSettingsVM fromStore(Store store) { @@ -53,7 +53,7 @@ class ProductSettingsVM { Debouncer.runOnComplete(() { final settingsUIState = store.state.uiState.settingsUIState; final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch(SaveCompanyRequest( completer: completer, company: settingsUIState.company)); }); diff --git a/lib/ui/settings/settings_list.dart b/lib/ui/settings/settings_list.dart index eecf7e856..e59e7e976 100644 --- a/lib/ui/settings/settings_list.dart +++ b/lib/ui/settings/settings_list.dart @@ -23,8 +23,8 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class SettingsList extends StatefulWidget { const SettingsList({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final SettingsListVM viewModel; @@ -34,7 +34,7 @@ class SettingsList extends StatefulWidget { } class _SettingsListState extends State { - ScrollController _scrollController; + ScrollController? _scrollController; @override void initState() { @@ -44,7 +44,7 @@ class _SettingsListState extends State { @override void dispose() { - _scrollController.dispose(); + _scrollController!.dispose(); super.dispose(); } @@ -55,11 +55,11 @@ class _SettingsListState extends State { final settingsUIState = state.uiState.settingsUIState; final showAll = settingsUIState.entityType == EntityType.company; - if (state.credentials.token.isEmpty) { + if (state.credentials.token!.isEmpty) { return SizedBox(); } - if (!state.userCompany.isAdmin) + if (!state.userCompany!.isAdmin) return Stack( children: [ ScrollableListView( @@ -107,7 +107,7 @@ class _SettingsListState extends State { color: Theme.of(context).colorScheme.background, padding: const EdgeInsets.only(left: 19, top: 16, bottom: 16), child: Text( - localization.basicSettings, + localization!.basicSettings, style: Theme.of(context).textTheme.bodyMedium, ), ), @@ -137,12 +137,12 @@ class _SettingsListState extends State { section: kSettingsProducts, viewModel: widget.viewModel, ), - if (state.company.isModuleEnabled(EntityType.task)) + if (state.company!.isModuleEnabled(EntityType.task)) SettingsListTile( section: kSettingsTasks, viewModel: widget.viewModel, ), - if (showAll && state.company.isModuleEnabled(EntityType.expense)) + if (showAll && state.company!.isModuleEnabled(EntityType.expense)) SettingsListTile( section: kSettingsExpenses, viewModel: widget.viewModel, @@ -169,7 +169,7 @@ class _SettingsListState extends State { section: kSettingsDeviceSettings, viewModel: widget.viewModel, ), - if (showAll && state.userCompany.isAdmin) + if (showAll && state.userCompany!.isAdmin) SettingsListTile( section: kSettingsAccountManagement, viewModel: widget.viewModel, @@ -260,8 +260,8 @@ class _SettingsListState extends State { class SettingsListTile extends StatefulWidget { const SettingsListTile({ - @required this.section, - @required this.viewModel, + required this.section, + required this.viewModel, }); final String section; @@ -276,11 +276,11 @@ class _SettingsListTileState extends State { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final store = StoreProvider.of(context); final state = store.state; - IconData icon; + IconData? icon; if (widget.section == kSettingsDeviceSettings) { icon = isMobile(context) ? Icons.phone_android : MdiIcons.desktopClassic; } else { @@ -310,9 +310,9 @@ class _SettingsListTileState extends State { child: Icon(icon ?? icon, size: 22), ), title: Text( - localization.lookup(widget.section), + localization.lookup(widget.section)!, style: - Theme.of(context).textTheme.bodyLarge.copyWith(fontSize: 14), + Theme.of(context).textTheme.bodyLarge!.copyWith(fontSize: 14), ), onTap: () => widget.viewModel.loadSection(context, widget.section, 0), @@ -326,14 +326,14 @@ class _SettingsListTileState extends State { class SettingsSearch extends StatelessWidget { const SettingsSearch({this.filter, this.viewModel}); - final SettingsListVM viewModel; - final String filter; + final SettingsListVM? viewModel; + final String? filter; @override Widget build(BuildContext context) { final localization = AppLocalization.of(context); final store = StoreProvider.of(context); - final company = store.state.company; + final company = store.state.company!; final map = { kSettingsCompanyDetails: [ @@ -669,8 +669,8 @@ class SettingsSearch extends StatelessWidget { if (store.state.settingsUIState.showNewSettings) { final sections = []; for (var section in map.keys) { - for (var tab = 0; tab < map[section].length; tab++) { - final fields = map[section][tab]; + for (var tab = 0; tab < map[section]!.length; tab++) { + final fields = map[section]![tab]; for (var field in fields) { final List parts = field.split('#'); final dateAdded = @@ -696,10 +696,10 @@ class SettingsSearch extends StatelessWidget { for (var parts in sections.map((section) => section.split('#').toList())) if ((filter ?? '').trim().isEmpty || - localization - .lookup(parts[1]) + localization! + .lookup(parts[1])! .toLowerCase() - .contains(filter.toLowerCase())) + .contains(filter!.toLowerCase())) ListTile( title: Row( crossAxisAlignment: CrossAxisAlignment.start, @@ -708,9 +708,9 @@ class SettingsSearch extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text(localization.lookup(parts[1])), + Text(localization!.lookup(parts[1])!), Text( - localization.lookup(parts[2]), + localization.lookup(parts[2])!, style: Theme.of(context).textTheme.bodySmall, ), ], @@ -730,27 +730,27 @@ class SettingsSearch extends StatelessWidget { child: Icon(getSettingIcon(parts[2]), size: 22), ), onTap: () => - viewModel.loadSection(context, parts[2], parseInt(parts[3])), + viewModel!.loadSection(context, parts[2], parseInt(parts[3])), ), ]); } else { return ScrollableListView( children: [ for (var section in map.keys) - for (int i = 0; i < map[section].length; i++) - for (var field in map[section][i]) - if (localization - .lookup(field.split('#')[0]) + for (int i = 0; i < map[section]!.length; i++) + for (var field in map[section]![i]) + if (localization! + .lookup(field.split('#')[0])! .toLowerCase() - .contains(filter.toLowerCase())) + .contains(filter!.toLowerCase())) ListTile( - title: Text(localization.lookup(field.split('#')[0])), + title: Text(localization.lookup(field.split('#')[0])!), leading: Padding( padding: const EdgeInsets.only(left: 6, top: 10), child: Icon(getSettingIcon(section), size: 22), ), - subtitle: Text(localization.lookup(section)), - onTap: () => viewModel.loadSection(context, section, i), + subtitle: Text(localization.lookup(section)!), + onTap: () => viewModel!.loadSection(context, section, i), ), ], ); diff --git a/lib/ui/settings/settings_list_vm.dart b/lib/ui/settings/settings_list_vm.dart index 5f72ba050..f295835fc 100644 --- a/lib/ui/settings/settings_list_vm.dart +++ b/lib/ui/settings/settings_list_vm.dart @@ -13,7 +13,7 @@ import 'package:invoiceninja_flutter/redux/settings/settings_actions.dart'; import 'package:invoiceninja_flutter/ui/settings/settings_list.dart'; class SettingsListBuilder extends StatelessWidget { - const SettingsListBuilder({Key key}) : super(key: key); + const SettingsListBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -28,11 +28,11 @@ class SettingsListBuilder extends StatelessWidget { class SettingsListVM { SettingsListVM({ - @required this.state, - @required this.loadSection, - @required this.onViewClientPressed, - @required this.onViewGroupPressed, - @required this.onClearSettingsFilterPressed, + required this.state, + required this.loadSection, + required this.onViewClientPressed, + required this.onViewGroupPressed, + required this.onClearSettingsFilterPressed, }); static SettingsListVM fromStore(Store store) { @@ -60,7 +60,7 @@ class SettingsListVM { } final AppState state; - final Function(BuildContext, String, int) loadSection; + final Function(BuildContext, String, int?) loadSection; final Function(BuildContext) onViewGroupPressed; final Function(BuildContext) onViewClientPressed; final Function() onClearSettingsFilterPressed; diff --git a/lib/ui/settings/settings_screen.dart b/lib/ui/settings/settings_screen.dart index 9ead1bb93..c17445fc1 100644 --- a/lib/ui/settings/settings_screen.dart +++ b/lib/ui/settings/settings_screen.dart @@ -15,8 +15,8 @@ import 'package:invoiceninja_flutter/ui/settings/settings_screen_vm.dart'; class SettingsScreen extends StatelessWidget { const SettingsScreen({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); static const String route = '/settings'; diff --git a/lib/ui/settings/settings_screen_vm.dart b/lib/ui/settings/settings_screen_vm.dart index c96588ae2..a50f9d87e 100644 --- a/lib/ui/settings/settings_screen_vm.dart +++ b/lib/ui/settings/settings_screen_vm.dart @@ -11,7 +11,7 @@ import 'package:invoiceninja_flutter/redux/app/app_state.dart'; import 'package:invoiceninja_flutter/ui/settings/settings_screen.dart'; class SettingsScreenBuilder extends StatelessWidget { - const SettingsScreenBuilder({Key key}) : super(key: key); + const SettingsScreenBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -27,7 +27,7 @@ class SettingsScreenBuilder extends StatelessWidget { } class SettingsScreenVM { - SettingsScreenVM({@required this.state}); + SettingsScreenVM({required this.state}); final AppState state; diff --git a/lib/ui/settings/settings_wizard.dart b/lib/ui/settings/settings_wizard.dart index 06f6ec97c..43ee0a6b8 100644 --- a/lib/ui/settings/settings_wizard.dart +++ b/lib/ui/settings/settings_wizard.dart @@ -33,12 +33,12 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class SettingsWizard extends StatefulWidget { const SettingsWizard({ - @required this.user, - @required this.company, + required this.user, + required this.company, }); - final UserEntity user; - final CompanyEntity company; + final UserEntity? user; + final CompanyEntity? company; @override _SettingsWizardState createState() => _SettingsWizardState(); @@ -76,9 +76,9 @@ class _SettingsWizardState extends State { _subdomainController, ]; - _firstNameController.text = widget.user.firstName; - _lastNameController.text = widget.user.lastName; - _subdomainController.text = widget.company.subdomain; + _firstNameController.text = widget.user!.firstName; + _lastNameController.text = widget.user!.lastName; + _subdomainController.text = widget.company!.subdomain; } @override @@ -132,7 +132,7 @@ class _SettingsWizardState extends State { } void _onSavePressed() { - final bool isValid = _formKey.currentState.validate(); + final bool isValid = _formKey.currentState!.validate(); if (!isValid || _isCheckingSubdomain) { return; @@ -148,13 +148,13 @@ class _SettingsWizardState extends State { final completer = Completer(); completer.future.then((value) { final toastCompleter = - snackBarCompleter(context, localization.savedSettings); + snackBarCompleter(context, localization!.savedSettings); toastCompleter.future.then((value) { setState(() { _isSaving = false; _showLogo = true; }); - }).catchError((Object error) { + } as FutureOr<_> Function(Null)).catchError((Object error) { setState(() { _isSaving = false; }); @@ -162,7 +162,7 @@ class _SettingsWizardState extends State { store.dispatch( SaveCompanyRequest( completer: toastCompleter, - company: state.company.rebuild( + company: state.company!.rebuild( (b) => b ..subdomain = _subdomainController.text.trim() ..settings.name = _nameController.text.trim() @@ -171,7 +171,7 @@ class _SettingsWizardState extends State { ), ), ); - }).catchError((Object error) { + } as FutureOr<_> Function(Null)).catchError((Object error) { setState(() => _isSaving = false); }); @@ -183,7 +183,7 @@ class _SettingsWizardState extends State { store.dispatch( SaveAuthUserRequest( completer: completer, - user: state.user.rebuild((b) => b + user: state.user!.rebuild((b) => b ..firstName = _firstNameController.text.trim() ..lastName = _lastNameController.text.trim()), password: password, @@ -196,7 +196,7 @@ class _SettingsWizardState extends State { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final store = StoreProvider.of(context); final state = store.state; @@ -246,7 +246,7 @@ class _SettingsWizardState extends State { onSelected: (SelectableEntity language) { setState(() => _languageId = language?.id); store.dispatch(UpdateCompanyLanguage(languageId: language?.id)); - AppBuilder.of(context).rebuild(); + AppBuilder.of(context)!.rebuild(); }, validator: (dynamic value) => value.isEmpty ? localization.pleaseEnterAValue : null, @@ -255,7 +255,7 @@ class _SettingsWizardState extends State { final darkMode = LayoutBuilder(builder: (context, constraints) { return ToggleButtons( children: [ - Text(localization.system), + Text(localization.system!), Text(localization.light), Text(localization.dark), ], @@ -276,7 +276,7 @@ class _SettingsWizardState extends State { : kBrightnessDark, ), ); - AppBuilder.of(context).rebuild(); + AppBuilder.of(context)!.rebuild(); }, ); }); @@ -312,7 +312,7 @@ class _SettingsWizardState extends State { if (state.companies.length > 1 && kReleaseMode) { showNameFields = false; } - if (state.user.isConnectedToApple && state.user.fullName.isEmpty) { + if (state.user!.isConnectedToApple && state.user!.fullName.isEmpty) { showNameFields = false; } @@ -332,7 +332,7 @@ class _SettingsWizardState extends State { child: Padding( padding: const EdgeInsets.only(top: 32), child: Text( - localization.setupWizardLogo, + localization.setupWizardLogo!, textAlign: TextAlign.center, style: Theme.of(context).textTheme.titleLarge, ), @@ -364,7 +364,7 @@ class _SettingsWizardState extends State { if (state.isHosted) Padding( padding: const EdgeInsets.only(top: 32), - child: Text(localization.subdomainGuide), + child: Text(localization.subdomainGuide!), ) ] : [ @@ -412,7 +412,7 @@ class _SettingsWizardState extends State { if (state.isHosted) Padding( padding: const EdgeInsets.only(top: 32), - child: Text(localization.subdomainGuide), + child: Text(localization.subdomainGuide!), ), ], ), @@ -434,7 +434,7 @@ class _SettingsWizardState extends State { )); Navigator.of(context).pop(); }, - child: Text(localization.upload.toUpperCase())) + child: Text(localization.upload!.toUpperCase())) else TextButton( onPressed: _onSavePressed, diff --git a/lib/ui/settings/task_settings.dart b/lib/ui/settings/task_settings.dart index 9a1719be5..cbaa8ea16 100644 --- a/lib/ui/settings/task_settings.dart +++ b/lib/ui/settings/task_settings.dart @@ -18,8 +18,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class TaskSettings extends StatefulWidget { const TaskSettings({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final TaskSettingsVM viewModel; @@ -31,9 +31,9 @@ class TaskSettings extends StatefulWidget { class _TaskSettingsState extends State { static final GlobalKey _formKey = GlobalKey(debugLabel: '_taskSettings'); - FocusScopeNode _focusNode; + FocusScopeNode? _focusNode; final _taskRateController = TextEditingController(); - List _controllers; + late List _controllers; @override void initState() { @@ -52,7 +52,7 @@ class _TaskSettingsState extends State { _taskRateController.text = formatNumber( widget.viewModel.settings.defaultTaskRate, context, - formatNumberType: FormatNumberType.inputMoney); + formatNumberType: FormatNumberType.inputMoney)!; _controllers .forEach((dynamic controller) => controller.addListener(_onChanged)); @@ -66,7 +66,7 @@ class _TaskSettingsState extends State { controller.removeListener(_onChanged); controller.dispose(); }); - _focusNode.dispose(); + _focusNode!.dispose(); super.dispose(); } @@ -84,7 +84,7 @@ class _TaskSettingsState extends State { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; final company = viewModel.company; final settings = viewModel.settings; @@ -117,25 +117,25 @@ class _TaskSettingsState extends State { ), SwitchListTile( activeColor: Theme.of(context).colorScheme.secondary, - title: Text(localization.showTaskEndDate), + title: Text(localization.showTaskEndDate!), value: company.showTaskEndDate, - subtitle: Text(localization.showTaskEndDateHelp), + subtitle: Text(localization.showTaskEndDateHelp!), onChanged: (value) => viewModel.onCompanyChanged( company.rebuild((b) => b..showTaskEndDate = value)), ), SwitchListTile( activeColor: Theme.of(context).colorScheme.secondary, - title: Text(localization.showTaskItemDescription), - value: settings.showTaskItemDescription, - subtitle: Text(localization.showTaskItemDescriptionHelp), + title: Text(localization.showTaskItemDescription!), + value: settings.showTaskItemDescription!, + subtitle: Text(localization.showTaskItemDescriptionHelp!), onChanged: (value) => viewModel.onSettingsChanged(settings .rebuild((b) => b..showTaskItemDescription = value)), ), SwitchListTile( activeColor: Theme.of(context).colorScheme.secondary, - title: Text(localization.showTaskBillable), - value: settings.allowBillableTaskItems, - subtitle: Text(localization.allowBillableTaskItemsHelp), + title: Text(localization.showTaskBillable!), + value: settings.allowBillableTaskItems!, + subtitle: Text(localization.allowBillableTaskItemsHelp!), onChanged: (value) => viewModel.onSettingsChanged( settings.rebuild((b) => b..allowBillableTaskItems = value)), ), @@ -172,26 +172,26 @@ class _TaskSettingsState extends State { ), SwitchListTile( activeColor: Theme.of(context).colorScheme.secondary, - title: Text(localization.invoiceTaskHours), + title: Text(localization.invoiceTaskHours!), value: company.invoiceTaskHours, - subtitle: Text(localization.invoiceTaskHoursHelp), + subtitle: Text(localization.invoiceTaskHoursHelp!), onChanged: (value) => viewModel.onCompanyChanged( company.rebuild((b) => b..invoiceTaskHours = value)), ), if (settings.showTaskItemDescription == true) SwitchListTile( activeColor: Theme.of(context).colorScheme.secondary, - title: Text(localization.invoiceTaskItemDescription), + title: Text(localization.invoiceTaskItemDescription!), value: company.invoiceTaskItemDescription, - subtitle: Text(localization.invoiceTaskItemDescriptionHelp), + subtitle: Text(localization.invoiceTaskItemDescriptionHelp!), onChanged: (value) => viewModel.onCompanyChanged(company .rebuild((b) => b..invoiceTaskItemDescription = value)), ), SwitchListTile( activeColor: Theme.of(context).colorScheme.secondary, - title: Text(localization.invoiceTaskProject), + title: Text(localization.invoiceTaskProject!), value: company.invoiceTaskProject, - subtitle: Text(localization.invoiceTaskProjectHelp), + subtitle: Text(localization.invoiceTaskProjectHelp!), onChanged: (value) => viewModel.onCompanyChanged( company.rebuild((b) => b..invoiceTaskProject = value)), ), @@ -231,9 +231,9 @@ class _TaskSettingsState extends State { ), SwitchListTile( activeColor: Theme.of(context).colorScheme.secondary, - title: Text(localization.lockInvoicedTasks), + title: Text(localization.lockInvoicedTasks!), value: company.invoiceTaskLock ?? false, - subtitle: Text(localization.lockInvoicedTasksHelp), + subtitle: Text(localization.lockInvoicedTasksHelp!), onChanged: (value) => viewModel.onCompanyChanged( company.rebuild((b) => b..invoiceTaskLock = value)), ), @@ -273,7 +273,7 @@ class _TaskSettingsState extends State { SettingsEntity.PORTAL_TASKS_ALL, ] .map((value) => DropdownMenuItem( - child: Text(localization.lookup(value)), + child: Text(localization.lookup(value)!), value: value, )) .toList(), diff --git a/lib/ui/settings/task_settings_vm.dart b/lib/ui/settings/task_settings_vm.dart index 2dc955346..110300633 100644 --- a/lib/ui/settings/task_settings_vm.dart +++ b/lib/ui/settings/task_settings_vm.dart @@ -23,7 +23,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class TaskSettingsScreen extends StatelessWidget { - const TaskSettingsScreen({Key key}) : super(key: key); + const TaskSettingsScreen({Key? key}) : super(key: key); static const String route = '/$kSettings/$kSettingsTasks'; @override @@ -42,13 +42,13 @@ class TaskSettingsScreen extends StatelessWidget { class TaskSettingsVM { TaskSettingsVM({ - @required this.state, - @required this.company, - @required this.settings, - @required this.onCompanyChanged, - @required this.onSettingsChanged, - @required this.onSavePressed, - @required this.onConfigureStatusesPressed, + required this.state, + required this.company, + required this.settings, + required this.onCompanyChanged, + required this.onSettingsChanged, + required this.onSavePressed, + required this.onConfigureStatusesPressed, }); static TaskSettingsVM fromStore(Store store) { @@ -69,19 +69,19 @@ class TaskSettingsVM { switch (settingsUIState.entityType) { case EntityType.company: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch(SaveCompanyRequest( completer: completer, company: settingsUIState.company)); break; case EntityType.group: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch(SaveGroupRequest( completer: completer, group: settingsUIState.group)); break; case EntityType.client: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch(SaveClientRequest( completer: completer, client: settingsUIState.client)); break; diff --git a/lib/ui/settings/tax_settings.dart b/lib/ui/settings/tax_settings.dart index 10fc31290..02c37bdc4 100644 --- a/lib/ui/settings/tax_settings.dart +++ b/lib/ui/settings/tax_settings.dart @@ -23,8 +23,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class TaxSettings extends StatefulWidget { const TaxSettings({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final TaxSettingsVM viewModel; @@ -36,7 +36,7 @@ class TaxSettings extends StatefulWidget { class _TaxSettingsState extends State { static final GlobalKey _formKey = GlobalKey(debugLabel: '_taxSettings'); - FocusScopeNode _focusNode; + FocusScopeNode? _focusNode; final Map _showDetails = { kTaxRegionUnitedStates: false, kTaxRegionEurope: false, @@ -51,13 +51,13 @@ class _TaxSettingsState extends State { @override void dispose() { - _focusNode.dispose(); + _focusNode!.dispose(); super.dispose(); } @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; final settings = viewModel.settings; final company = viewModel.company; @@ -74,7 +74,7 @@ class _TaxSettingsState extends State { } if (taxConfig.regions.containsKey(region)) { - subregions = taxConfig.regions[region].subregions.keys.toList(); + subregions = taxConfig.regions[region]!.subregions.keys.toList(); } return EditScaffold( @@ -174,12 +174,12 @@ class _TaxSettingsState extends State { helpLabel: localization.calculateTaxesHelp, ), if (state.isSelfHosted && - !state.account.taxApiEnabled && - state.company.settings.countryId == kCountryUnitedStates) + !state.account!.taxApiEnabled && + state.company!.settings.countryId == kCountryUnitedStates) Padding( padding: const EdgeInsets.symmetric(vertical: 16), child: LearnMoreUrl( - child: Text(localization.ziptaxHelp), + child: Text(localization.ziptaxHelp!), url: kZipTaxURL, ), ), @@ -209,7 +209,7 @@ class _TaxSettingsState extends State { .toList()), SizedBox(height: 12), ...taxConfig.regions.keys.map((region) { - final taxDataRegion = taxConfig.regions[region]; + final taxDataRegion = taxConfig.regions[region]!; return Column(children: [ Padding( padding: const EdgeInsets.symmetric(vertical: 4), @@ -232,16 +232,16 @@ class _TaxSettingsState extends State { DropdownMenuItem( child: ListTile( dense: true, - title: Text(localization.taxAll), + title: Text(localization.taxAll!), ), value: true, ), DropdownMenuItem( child: ListTile( dense: true, - title: Text(localization.taxSelected), + title: Text(localization.taxSelected!), subtitle: Text( - '${taxDataRegion.subregions.keys.where((element) => taxDataRegion.subregions[element].applyTax).length} ${localization.selected}'), + '${taxDataRegion.subregions.keys.where((element) => taxDataRegion.subregions[element]!.applyTax).length} ${localization.selected}'), ), value: false, ), @@ -251,20 +251,20 @@ class _TaxSettingsState extends State { onPressed: () { setState(() { _showDetails[region] = - !_showDetails[region]; + !_showDetails[region]!; }); }, - child: Text(_showDetails[region] + child: Text(_showDetails[region]! ? localization.hide : localization.show)) ], ), ), - if (_showDetails[region]) ...[ + if (_showDetails[region]!) ...[ SizedBox(height: 8), ...taxDataRegion.subregions.keys.map((subregion) { final taxDataSubregion = - taxDataRegion.subregions[subregion]; + taxDataRegion.subregions[subregion]!; return Row( children: [ Expanded( @@ -280,7 +280,7 @@ class _TaxSettingsState extends State { ), Expanded( child: Text( - '${taxDataSubregion.taxName}: ${formatNumber(taxDataSubregion.taxRate, context, formatNumberType: FormatNumberType.percent) + (taxDataSubregion.reducedTaxRate != 0 ? ' • ' + formatNumber(taxDataSubregion.reducedTaxRate, context, formatNumberType: FormatNumberType.percent) : '')}', + '${taxDataSubregion.taxName}: ${formatNumber(taxDataSubregion.taxRate, context, formatNumberType: FormatNumberType.percent)! + (taxDataSubregion.reducedTaxRate != 0 ? ' • ' + formatNumber(taxDataSubregion.reducedTaxRate, context, formatNumberType: FormatNumberType.percent)! : '')}', )) ], ), @@ -332,18 +332,18 @@ class _TaxSettingsState extends State { class NumberOfRatesSelector extends StatelessWidget { const NumberOfRatesSelector({ - @required this.label, - @required this.numberOfRates, - @required this.onChanged, + required this.label, + required this.numberOfRates, + required this.onChanged, }); - final String label; + final String? label; final int numberOfRates; - final Function(int) onChanged; + final Function(int?) onChanged; @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; return AppDropdownButton( labelText: label, @@ -374,11 +374,11 @@ class NumberOfRatesSelector extends StatelessWidget { class _EditSubregionDialog extends StatefulWidget { const _EditSubregionDialog({ - Key key, - @required this.viewModel, - @required this.subregionConfig, - @required this.region, - @required this.subregion, + Key? key, + required this.viewModel, + required this.subregionConfig, + required this.region, + required this.subregion, }) : super(key: key); final TaxConfigSubregionEntity subregionConfig; @@ -392,8 +392,8 @@ class _EditSubregionDialog extends StatefulWidget { class __EditSubregionDialogState extends State<_EditSubregionDialog> { String _taxName = ''; - double _taxRate = 0; - double _reducedTaxRate = 0; + double? _taxRate = 0; + double? _reducedTaxRate = 0; @override void initState() { @@ -410,13 +410,13 @@ class __EditSubregionDialogState extends State<_EditSubregionDialog> { final company = viewModel.company; final taxConfig = company.taxConfig; - final taxConfigRegion = taxConfig.regions[widget.region]; + final taxConfigRegion = taxConfig.regions[widget.region]!; final taxConfigSubregion = taxConfigRegion.subregions[widget.subregion]; viewModel.onCompanyChanged(company.rebuild((b) => b ..taxConfig.replace(taxConfig.rebuild((b) => b ..regions[widget.region] = taxConfigRegion.rebuild((b) => b - ..subregions[widget.subregion] = taxConfigSubregion.rebuild( + ..subregions[widget.subregion] = taxConfigSubregion!.rebuild( (b) => b ..taxName = _taxName ..taxRate = _taxRate @@ -428,7 +428,7 @@ class __EditSubregionDialogState extends State<_EditSubregionDialog> { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final subregionData = widget.subregionConfig; return AlertDialog( diff --git a/lib/ui/settings/tax_settings_vm.dart b/lib/ui/settings/tax_settings_vm.dart index 81ceb1f52..4c43fb8d6 100644 --- a/lib/ui/settings/tax_settings_vm.dart +++ b/lib/ui/settings/tax_settings_vm.dart @@ -23,7 +23,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class TaxSettingsScreen extends StatelessWidget { - const TaxSettingsScreen({Key key}) : super(key: key); + const TaxSettingsScreen({Key? key}) : super(key: key); static const String route = '/$kSettings/$kSettingsTaxSettings'; @override @@ -42,13 +42,13 @@ class TaxSettingsScreen extends StatelessWidget { class TaxSettingsVM { TaxSettingsVM({ - @required this.state, - @required this.company, - @required this.settings, - @required this.onSettingsChanged, - @required this.onCompanyChanged, - @required this.onSavePressed, - @required this.onConfigureRatesPressed, + required this.state, + required this.company, + required this.settings, + required this.onSettingsChanged, + required this.onCompanyChanged, + required this.onSavePressed, + required this.onConfigureRatesPressed, }); static TaxSettingsVM fromStore(Store store) { @@ -70,19 +70,19 @@ class TaxSettingsVM { switch (settingsUIState.entityType) { case EntityType.company: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch(SaveCompanyRequest( completer: completer, company: settingsUIState.company)); break; case EntityType.group: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch(SaveGroupRequest( completer: completer, group: settingsUIState.group)); break; case EntityType.client: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch(SaveClientRequest( completer: completer, client: settingsUIState.client)); break; diff --git a/lib/ui/settings/templates_and_reminders.dart b/lib/ui/settings/templates_and_reminders.dart index 360c540fb..36f31ad12 100644 --- a/lib/ui/settings/templates_and_reminders.dart +++ b/lib/ui/settings/templates_and_reminders.dart @@ -33,8 +33,8 @@ import 'package:url_launcher/url_launcher.dart'; class TemplatesAndReminders extends StatefulWidget { const TemplatesAndReminders({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final TemplatesAndRemindersVM viewModel; @@ -49,12 +49,12 @@ class _TemplatesAndRemindersState extends State GlobalKey(debugLabel: '_templatesAndReminders'); final _debouncer = Debouncer(); - EmailTemplate _selectedTemplate; + EmailTemplate? _selectedTemplate; int _selectedIndex = 0; String _bodyMarkdown = ''; - String _lastSubject; - String _lastBody; + String? _lastSubject; + String? _lastBody; String _subjectPreview = ''; String _bodyPreview = ''; String _emailPreview = ''; @@ -62,8 +62,8 @@ class _TemplatesAndRemindersState extends State String _defaultBody = ''; bool _isLoading = false; - FocusScopeNode _focusNode; - TabController _controller; + FocusScopeNode? _focusNode; + TabController? _controller; bool _updateReminders = false; final _subjectController = TextEditingController(); @@ -76,14 +76,14 @@ class _TemplatesAndRemindersState extends State super.initState(); final state = widget.viewModel.state; - final company = state.company; + final company = state.company!; final settingsUIState = state.settingsUIState; final length = company.markdownEmailEnabled ? 3 : 2; _focusNode = FocusScopeNode(); _controller = TabController( vsync: this, length: length, initialIndex: settingsUIState.tabIndex); - _controller.addListener(_onTabChanged); + _controller!.addListener(_onTabChanged); _controllers = [ _subjectController, @@ -109,9 +109,9 @@ class _TemplatesAndRemindersState extends State @override void dispose() { - _focusNode.dispose(); - _controller.removeListener(_onTabChanged); - _controller.dispose(); + _focusNode!.dispose(); + _controller!.removeListener(_onTabChanged); + _controller!.dispose(); _controllers.forEach((dynamic controller) { controller.removeListener(_onTextChanged); controller.dispose(); @@ -142,7 +142,7 @@ class _TemplatesAndRemindersState extends State _bodyController.text = template.body; } - if (viewModel.state.company.markdownEmailEnabled && + if (viewModel.state.company!.markdownEmailEnabled && _bodyController.text.trim().startsWith('<')) { _bodyController.text = html2md.convert(_bodyController.text); } @@ -158,7 +158,7 @@ class _TemplatesAndRemindersState extends State _bodyPreview = ''; _emailPreview = ''; - if (state.company.markdownEmailEnabled && + if (state.company!.markdownEmailEnabled && _defaultBody.trim().startsWith('<')) { _defaultBody = html2md.convert(_defaultBody); } @@ -174,7 +174,7 @@ class _TemplatesAndRemindersState extends State void _onChanged() { final viewModel = widget.viewModel; final templateMap = viewModel.state.staticState.templateMap; - final template = templateMap[_selectedTemplate.name] ?? TemplateEntity(); + final template = templateMap[_selectedTemplate!.name] ?? TemplateEntity(); SettingsEntity settings = widget.viewModel.settings; String body = _bodyController.text.trim(); @@ -255,16 +255,16 @@ class _TemplatesAndRemindersState extends State void _onTabChanged() { final store = StoreProvider.of(context); - store.dispatch(UpdateSettingsTab(tabIndex: _controller.index)); + store.dispatch(UpdateSettingsTab(tabIndex: _controller!.index)); setState(() { _bodyMarkdown = _bodyController.text; - _selectedIndex = _controller.index; + _selectedIndex = _controller!.index; }); - final previewIndex = store.state.company.markdownEmailEnabled ? 2 : 1; + final previewIndex = store.state.company!.markdownEmailEnabled ? 2 : 1; - if (_controller.index != previewIndex) { + if (_controller!.index != previewIndex) { return; } @@ -298,21 +298,21 @@ class _TemplatesAndRemindersState extends State setState(() { _isLoading = false; - _subjectPreview = subject.trim(); - _bodyPreview = body.trim(); - _emailPreview = email.trim(); + _subjectPreview = subject!.trim(); + _bodyPreview = body!.trim(); + _emailPreview = email!.trim(); }); }); } @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; final state = viewModel.state; final settings = viewModel.settings; final template = widget.viewModel.selectedTemplate; - final company = state.company; + final company = state.company!; final enableCustomEmail = state.isProPlan; return EditScaffold( @@ -397,7 +397,7 @@ class _TemplatesAndRemindersState extends State } return DropdownMenuItem( - child: Text(name), + child: Text(name!), value: item, ); }).toList(), @@ -509,7 +509,7 @@ class _TemplatesAndRemindersState extends State id, DropdownMenuItem( child: - Text(localization.lookup(frequency)), + Text(localization.lookup(frequency)!), value: id, ))) .values @@ -585,23 +585,23 @@ class _TemplatesAndRemindersState extends State class ReminderSettings extends StatefulWidget { const ReminderSettings({ - Key key, - @required this.viewModel, - @required this.enabled, - @required this.schedule, - @required this.onChanged, - @required this.numDays, - @required this.feeAmount, - @required this.feePercent, + Key? key, + required this.viewModel, + required this.enabled, + required this.schedule, + required this.onChanged, + required this.numDays, + required this.feeAmount, + required this.feePercent, }) : super(key: key); final TemplatesAndRemindersVM viewModel; - final bool enabled; - final int numDays; - final double feeAmount; - final double feePercent; - final String schedule; - final Function(bool, int, String, double, double) onChanged; + final bool? enabled; + final int? numDays; + final double? feeAmount; + final double? feePercent; + final String? schedule; + final Function(bool?, int?, String?, double?, double?) onChanged; @override _ReminderSettingsState createState() => _ReminderSettingsState(); @@ -612,8 +612,8 @@ class _ReminderSettingsState extends State { final _feeAmountController = TextEditingController(); final _feePercentController = TextEditingController(); - bool _enabled; - String _schedule; + bool? _enabled; + String? _schedule; List _controllers = []; final _debouncer = Debouncer(); @@ -643,9 +643,9 @@ class _ReminderSettingsState extends State { _daysController.text = '${widget.numDays ?? ''}'; _feeAmountController.text = formatNumber(widget.feeAmount, context, - formatNumberType: FormatNumberType.inputMoney); + formatNumberType: FormatNumberType.inputMoney)!; _feePercentController.text = formatNumber(widget.feePercent, context, - formatNumberType: FormatNumberType.inputMoney); + formatNumberType: FormatNumberType.inputMoney)!; _controllers.forEach( (dynamic controller) => controller.addListener(_onTextChanged)); @@ -660,7 +660,7 @@ class _ReminderSettingsState extends State { } void _onChanged() { - final int days = parseInt(_daysController.text.trim(), zeroIsNull: true); + final int? days = parseInt(_daysController.text.trim(), zeroIsNull: true); final feeAmount = parseDouble(_feeAmountController.text.trim(), zeroIsNull: true); final feePercent = @@ -672,7 +672,7 @@ class _ReminderSettingsState extends State { @override Widget build(BuildContext context) { final state = widget.viewModel.state; - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; return Column( children: [ @@ -743,9 +743,9 @@ class _ReminderSettingsState extends State { class EmailPreview extends StatelessWidget { const EmailPreview({ - @required this.subject, - @required this.body, - @required this.isLoading, + required this.subject, + required this.body, + required this.isLoading, }); final String subject; @@ -771,7 +771,7 @@ class EmailPreview extends StatelessWidget { subject, style: Theme.of(context) .textTheme - .bodyLarge + .bodyLarge! .copyWith(color: Colors.black), ), ), diff --git a/lib/ui/settings/templates_and_reminders_vm.dart b/lib/ui/settings/templates_and_reminders_vm.dart index 7620fcae9..d3335efb8 100644 --- a/lib/ui/settings/templates_and_reminders_vm.dart +++ b/lib/ui/settings/templates_and_reminders_vm.dart @@ -26,7 +26,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class TemplatesAndRemindersScreen extends StatelessWidget { - const TemplatesAndRemindersScreen({Key key}) : super(key: key); + const TemplatesAndRemindersScreen({Key? key}) : super(key: key); static const String route = '/$kSettings/$kSettingsTemplatesAndReminders'; @override @@ -45,12 +45,12 @@ class TemplatesAndRemindersScreen extends StatelessWidget { class TemplatesAndRemindersVM { TemplatesAndRemindersVM({ - @required this.state, - @required this.settings, - @required this.selectedTemplate, - @required this.onTemplateChanged, - @required this.onSettingsChanged, - @required this.onSavePressed, + required this.state, + required this.settings, + required this.selectedTemplate, + required this.onTemplateChanged, + required this.onSettingsChanged, + required this.onSavePressed, }); static TemplatesAndRemindersVM fromStore(Store store) { @@ -95,21 +95,21 @@ class TemplatesAndRemindersVM { switch (settingsUIState.entityType) { case EntityType.company: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); - completer.future.then((value) => callback()); + context, AppLocalization.of(context)!.savedSettings); + completer.future.then(((value) => callback()) as FutureOr<_> Function(Null)); store.dispatch(SaveCompanyRequest( completer: completer, company: settingsUIState.company)); break; case EntityType.group: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); completer.future.then((value) => callback()); store.dispatch(SaveGroupRequest( completer: completer, group: settingsUIState.group)); break; case EntityType.client: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); completer.future.then((value) => callback()); store.dispatch(SaveClientRequest( completer: completer, client: settingsUIState.client)); diff --git a/lib/ui/settings/user_details.dart b/lib/ui/settings/user_details.dart index a389e1122..2ef842a21 100644 --- a/lib/ui/settings/user_details.dart +++ b/lib/ui/settings/user_details.dart @@ -41,8 +41,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class UserDetails extends StatefulWidget { const UserDetails({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final UserDetailsVM viewModel; @@ -56,7 +56,7 @@ class _UserDetailsState extends State static final GlobalKey _formKey = GlobalKey(debugLabel: '_userDetails'); final FocusScopeNode _focusNode = FocusScopeNode(); - TabController _controller; + TabController? _controller; final _firstNameController = TextEditingController(); final _lastNameController = TextEditingController(); @@ -74,19 +74,19 @@ class _UserDetailsState extends State final settingsUIState = widget.viewModel.state.settingsUIState; _controller = TabController( vsync: this, length: 2, initialIndex: settingsUIState.tabIndex); - _controller.addListener(_onTabChanged); + _controller!.addListener(_onTabChanged); } void _onTabChanged() { final store = StoreProvider.of(context); - store.dispatch(UpdateSettingsTab(tabIndex: _controller.index)); + store.dispatch(UpdateSettingsTab(tabIndex: _controller!.index)); } @override void dispose() { _focusNode.dispose(); - _controller.removeListener(_onTabChanged); - _controller.dispose(); + _controller!.removeListener(_onTabChanged); + _controller!.dispose(); _controllers.forEach((dynamic controller) { controller.removeListener(_onChanged); controller.dispose(); @@ -107,7 +107,7 @@ class _UserDetailsState extends State _controllers .forEach((dynamic controller) => controller.removeListener(_onChanged)); - final user = widget.viewModel.state.user; + final user = widget.viewModel.state.user!; _firstNameController.text = user.firstName; _lastNameController.text = user.lastName; _emailController.text = user.email; @@ -135,7 +135,7 @@ class _UserDetailsState extends State } void _onSavePressed(BuildContext context) { - final bool isValid = _formKey.currentState.validate(); + final bool isValid = _formKey.currentState!.validate(); if (!isValid) { return; @@ -146,7 +146,7 @@ class _UserDetailsState extends State @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; final state = viewModel.state; final user = viewModel.user; @@ -154,15 +154,15 @@ class _UserDetailsState extends State final googleButton = Expanded( child: OutlinedButton( child: Text( - (state.user.isConnectedToGoogle + (state.user!.isConnectedToGoogle ? localization.disconnectGoogle : localization.connectGoogle) .toUpperCase(), textAlign: TextAlign.center, ), - onPressed: state.user.isConnectedToEmail || - state.user.isConnectedToApple || - state.user.isConnectedToMicrosoft + onPressed: state.user!.isConnectedToEmail || + state.user!.isConnectedToApple || + state.user!.isConnectedToMicrosoft ? null : () { if (state.settingsUIState.isChanged) { @@ -172,7 +172,7 @@ class _UserDetailsState extends State return; } - if (state.user.isConnectedToGoogle) { + if (state.user!.isConnectedToGoogle) { viewModel.onDisconnectGooglePressed(context); } else { viewModel.onConnectGooglePressed(context); @@ -184,13 +184,13 @@ class _UserDetailsState extends State final gmailButton = Expanded( child: OutlinedButton( child: Text( - (state.user.isConnectedToEmail + (state.user!.isConnectedToEmail ? localization.disconnectGmail : localization.connectGmail) .toUpperCase(), textAlign: TextAlign.center, ), - onPressed: !state.user.isConnectedToGoogle + onPressed: !state.user!.isConnectedToGoogle ? null : () async { if (state.settingsUIState.isChanged) { @@ -200,7 +200,7 @@ class _UserDetailsState extends State return; } - if (state.user.isConnectedToEmail) { + if (state.user!.isConnectedToEmail) { viewModel.onDisconnectGmailPressed(context); } else { launchUrl(Uri.parse('$kAppProductionUrl/auth/google')); @@ -212,15 +212,15 @@ class _UserDetailsState extends State final microsoftButton = Expanded( child: OutlinedButton( child: Text( - (state.user.isConnectedToMicrosoft + (state.user!.isConnectedToMicrosoft ? localization.disconnectMicrosoft - : localization.connectMicrosoft) + : localization.connectMicrosoft)! .toUpperCase(), textAlign: TextAlign.center, ), - onPressed: state.user.isConnectedToEmail || - state.user.isConnectedToGoogle || - state.user.isConnectedToApple + onPressed: state.user!.isConnectedToEmail || + state.user!.isConnectedToGoogle || + state.user!.isConnectedToApple ? null : () { if (state.settingsUIState.isChanged) { @@ -230,7 +230,7 @@ class _UserDetailsState extends State return; } - if (state.user.isConnectedToMicrosoft) { + if (state.user!.isConnectedToMicrosoft) { viewModel.onDisconnectMicrosoftPressed(context); } else { viewModel.onConnectMicrosoftPressed(context); @@ -242,13 +242,13 @@ class _UserDetailsState extends State final office365Button = Expanded( child: OutlinedButton( child: Text( - (state.user.isConnectedToEmail + (state.user!.isConnectedToEmail ? localization.disconnectEmail - : localization.connectEmail) + : localization.connectEmail)! .toUpperCase(), textAlign: TextAlign.center, ), - onPressed: !state.user.isConnectedToMicrosoft + onPressed: !state.user!.isConnectedToMicrosoft ? null : () async { if (state.settingsUIState.isChanged) { @@ -258,11 +258,11 @@ class _UserDetailsState extends State return; } - if (state.user.isConnectedToEmail) { + if (state.user!.isConnectedToEmail) { viewModel.onDisconnectMicrosoftEmailPressed(context); } else { launchUrl( - Uri.parse('${state.account.defaultUrl}/auth/microsoft')); + Uri.parse('${state.account!.defaultUrl}/auth/microsoft')); } }, ), @@ -271,14 +271,14 @@ class _UserDetailsState extends State final appleButton = Expanded( child: OutlinedButton( child: Text( - (state.user.isConnectedToApple + (state.user!.isConnectedToApple ? localization.disconnectApple - : localization.connectApple) + : localization.connectApple)! .toUpperCase(), textAlign: TextAlign.center, ), onPressed: - state.user.isConnectedToGoogle || state.user.isConnectedToMicrosoft + state.user!.isConnectedToGoogle || state.user!.isConnectedToMicrosoft ? null : () { if (state.settingsUIState.isChanged) { @@ -288,7 +288,7 @@ class _UserDetailsState extends State return; } - if (state.user.isConnectedToApple) { + if (state.user!.isConnectedToApple) { viewModel.onDisconnectApplePressed(context); } else { // do nothing @@ -388,7 +388,7 @@ class _UserDetailsState extends State Expanded( child: OutlinedButton( child: Text( - (state.user.isTwoFactorEnabled + (state.user!.isTwoFactorEnabled ? localization.disableTwoFactor : localization.enableTwoFactor) .toUpperCase(), @@ -402,10 +402,10 @@ class _UserDetailsState extends State return; } - if (state.user.isTwoFactorEnabled) { + if (state.user!.isTwoFactorEnabled) { viewModel.onDisableTwoFactorPressed(context); } else { - if (state.user.phone.isEmpty || + if (state.user!.phone.isEmpty || user.phone.isEmpty) { showMessageDialog( context: context, @@ -414,8 +414,8 @@ class _UserDetailsState extends State return; } - if (state.isHosted && !state.user.phoneVerified) { - final bool phoneVerified = await showDialog( + if (state.isHosted && !state.user!.phoneVerified) { + final bool? phoneVerified = await showDialog( context: context, builder: (BuildContext context) => UserSmsVerification(), @@ -423,7 +423,7 @@ class _UserDetailsState extends State if (phoneVerified == true) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) => _EnableTwoFactor(state: viewModel.state), ); @@ -447,18 +447,18 @@ class _UserDetailsState extends State children: [ FormColorPicker( labelText: localization.accentColor, - initialValue: user.userCompany.settings.accentColor, + initialValue: user.userCompany!.settings!.accentColor, onSelected: (value) { widget.viewModel.onChanged(user.rebuild((b) => b ..userCompany.settings.accentColor = value ?? '#ffffff')); }, ), - if (state.company.isLarge || !kReleaseMode) ...[ + if (state.company!.isLarge || !kReleaseMode) ...[ AppDropdownButton( blankValue: null, labelText: localization.yearsDataShown, - value: user.userCompany.settings.numberYearsActive, + value: user.userCompany!.settings!.numberYearsActive, onChanged: (dynamic value) { widget.viewModel.onChanged(user.rebuild((b) => b..userCompany.settings.numberYearsActive = value)); @@ -480,7 +480,7 @@ class _UserDetailsState extends State BoolDropdownButton( label: localization.includeDeletedClients, helpLabel: localization.includeDeletedClientsHelp, - value: user.userCompany.settings.includeDeletedClients, + value: user.userCompany!.settings!.includeDeletedClients, onChanged: (value) { widget.viewModel.onChanged(user.rebuild((b) => b ..userCompany.settings.includeDeletedClients = @@ -511,7 +511,7 @@ class _UserDetailsState extends State } class _EnableTwoFactor extends StatefulWidget { - const _EnableTwoFactor({@required this.state}); + const _EnableTwoFactor({required this.state}); final AppState state; @@ -520,9 +520,9 @@ class _EnableTwoFactor extends StatefulWidget { } class _EnableTwoFactorState extends State<_EnableTwoFactor> { - String _secret; - String _qrCode; - String _oneTimePassword; + String? _secret; + late String _qrCode; + String? _oneTimePassword; //String _smsCode; bool autoValidate = false; bool _isLoading = true; @@ -544,7 +544,7 @@ class _EnableTwoFactorState extends State<_EnableTwoFactor> { serializers.deserializeWith(UserTwoFactorResponse.serializer, data); setState(() { _isLoading = false; - _qrCode = response.data.qrCode; + _qrCode = response!.data.qrCode; _secret = response.data.secret; }); }).catchError((dynamic error) { @@ -560,7 +560,7 @@ class _EnableTwoFactorState extends State<_EnableTwoFactor> { } void _onSavePressed() { - final bool isValid = _formKey.currentState.validate(); + final bool isValid = _formKey.currentState!.validate(); setState(() { autoValidate = !isValid ?? false; @@ -583,7 +583,7 @@ class _EnableTwoFactorState extends State<_EnableTwoFactor> { })) .then((dynamic data) { setState(() => _isLoading = false); - showToast(AppLocalization.of(context).enabledTwoFactor); + showToast(AppLocalization.of(context)!.enabledTwoFactor); final store = StoreProvider.of(context); store.dispatch(RefreshData()); Navigator.of(context).pop(); @@ -595,7 +595,7 @@ class _EnableTwoFactorState extends State<_EnableTwoFactor> { @override Widget build(BuildContext context) { - final localzation = AppLocalization.of(context); + final localzation = AppLocalization.of(context)!; return AlertDialog( title: Text(localzation.enableTwoFactor), @@ -621,7 +621,7 @@ class _EnableTwoFactorState extends State<_EnableTwoFactor> { ), Padding( padding: const EdgeInsets.symmetric(vertical: 16), - child: SelectableText(_secret), + child: SelectableText(_secret!), ), ], Row( @@ -634,7 +634,7 @@ class _EnableTwoFactorState extends State<_EnableTwoFactor> { _oneTimePassword = value; }, validator: (value) => value.isEmpty - ? AppLocalization.of(context).pleaseEnterAValue + ? AppLocalization.of(context)!.pleaseEnterAValue : null, keyboardType: TextInputType.number, onSavePressed: (context) => _onSavePressed(), diff --git a/lib/ui/settings/user_details_vm.dart b/lib/ui/settings/user_details_vm.dart index 4a44ea4b8..d061a87c0 100644 --- a/lib/ui/settings/user_details_vm.dart +++ b/lib/ui/settings/user_details_vm.dart @@ -27,7 +27,7 @@ import 'package:invoiceninja_flutter/utils/web_stub.dart' if (dart.library.html) 'package:invoiceninja_flutter/utils/web.dart'; class UserDetailsScreen extends StatelessWidget { - const UserDetailsScreen({Key key}) : super(key: key); + const UserDetailsScreen({Key? key}) : super(key: key); static const String route = '/$kSettings/$kSettingsUserDetails'; @override @@ -38,7 +38,7 @@ class UserDetailsScreen extends StatelessWidget { final state = viewModel.state; return UserDetails( key: ValueKey( - state.settingsUIState.updatedAt + state.user.updatedAt), + state.settingsUIState.updatedAt + state.user!.updatedAt), viewModel: viewModel); }, ); @@ -47,19 +47,19 @@ class UserDetailsScreen extends StatelessWidget { class UserDetailsVM { UserDetailsVM({ - @required this.user, - @required this.state, - @required this.onChanged, - @required this.onSavePressed, - @required this.onConnectGooglePressed, - @required this.onDisconnectGooglePressed, - @required this.onConnectGmailPressed, - @required this.onDisconnectGmailPressed, - @required this.onDisableTwoFactorPressed, - @required this.onConnectMicrosoftPressed, - @required this.onDisconnectMicrosoftPressed, - @required this.onDisconnectMicrosoftEmailPressed, - @required this.onDisconnectApplePressed, + required this.user, + required this.state, + required this.onChanged, + required this.onSavePressed, + required this.onConnectGooglePressed, + required this.onDisconnectGooglePressed, + required this.onConnectGmailPressed, + required this.onDisconnectGmailPressed, + required this.onDisableTwoFactorPressed, + required this.onConnectMicrosoftPressed, + required this.onDisconnectMicrosoftPressed, + required this.onDisconnectMicrosoftEmailPressed, + required this.onDisconnectApplePressed, }); static UserDetailsVM fromStore(Store store) { @@ -110,7 +110,7 @@ class UserDetailsVM { context: context, callback: (password, idToken) { final completer = snackBarCompleter( - context, AppLocalization.of(context).disconnectedEmail); + context, AppLocalization.of(context)!.disconnectedEmail); store.dispatch( DisconnectOAuthMailerRequest( user: state.user, @@ -129,7 +129,7 @@ class UserDetailsVM { context: context, callback: (password, idToken) { final completer = snackBarCompleter( - context, AppLocalization.of(context).disconnectedGmail); + context, AppLocalization.of(context)!.disconnectedGmail); store.dispatch( DisconnectOAuthMailerRequest( user: state.user, @@ -142,7 +142,7 @@ class UserDetailsVM { }, onDisableTwoFactorPressed: (context) { final completer = snackBarCompleter( - context, AppLocalization.of(context).disabledTwoFactor); + context, AppLocalization.of(context)!.disabledTwoFactor); confirmCallback( context: context, @@ -161,9 +161,9 @@ class UserDetailsVM { }); }, onDisconnectGooglePressed: (context) { - if (!state.user.hasPassword) { + if (!state.user!.hasPassword) { showErrorDialog( - message: AppLocalization.of(context).pleaseFirstSetAPassword); + message: AppLocalization.of(context)!.pleaseFirstSetAPassword); return; } @@ -175,10 +175,10 @@ class UserDetailsVM { skipOAuth: true, callback: (password, idToken) { final completer = snackBarCompleter(context, - AppLocalization.of(context).disconnectedGoogle); + AppLocalization.of(context)!.disconnectedGoogle); completer.future.then((value) { GoogleOAuth.disconnect(); - }); + } as FutureOr<_> Function(Null)); store.dispatch( DisconnecOAuthUserRequest( user: state.user, @@ -192,7 +192,7 @@ class UserDetailsVM { }, onConnectGooglePressed: (context) { final completer = snackBarCompleter( - context, AppLocalization.of(context).connectedGoogle); + context, AppLocalization.of(context)!.connectedGoogle); passwordCallback( context: context, @@ -203,7 +203,7 @@ class UserDetailsVM { if (idToken.isEmpty || accessToken.isEmpty) { GoogleOAuth.signOut(); showErrorDialog( - message: AppLocalization.of(context) + message: AppLocalization.of(context)! .anErrorOccurredTryAgain); } else { store.dispatch( @@ -219,7 +219,7 @@ class UserDetailsVM { }); if (!signedIn) { showErrorDialog( - message: AppLocalization.of(navigatorKey.currentContext) + message: AppLocalization.of(navigatorKey.currentContext!)! .anErrorOccurredTryAgain); } } catch (error) { @@ -228,9 +228,9 @@ class UserDetailsVM { }); }, onDisconnectMicrosoftPressed: (context) { - if (!state.user.hasPassword) { + if (!state.user!.hasPassword) { showErrorDialog( - message: AppLocalization.of(context).pleaseFirstSetAPassword); + message: AppLocalization.of(context)!.pleaseFirstSetAPassword); return; } @@ -242,7 +242,7 @@ class UserDetailsVM { context: context, callback: (password, idToken) { final completer = snackBarCompleter(context, - AppLocalization.of(context).disconnectedMicrosoft); + AppLocalization.of(context)!.disconnectedMicrosoft); store.dispatch( DisconnecOAuthUserRequest( user: state.user, @@ -255,9 +255,9 @@ class UserDetailsVM { }); }, onDisconnectApplePressed: (context) { - if (!state.user.hasPassword) { + if (!state.user!.hasPassword) { showErrorDialog( - message: AppLocalization.of(context).pleaseFirstSetAPassword); + message: AppLocalization.of(context)!.pleaseFirstSetAPassword); return; } @@ -269,7 +269,7 @@ class UserDetailsVM { skipOAuth: true, callback: (password, idToken) { final completer = snackBarCompleter( - context, AppLocalization.of(context).disconnectedApple); + context, AppLocalization.of(context)!.disconnectedApple); store.dispatch( DisconnecOAuthUserRequest( user: state.user, @@ -283,7 +283,7 @@ class UserDetailsVM { }, onConnectMicrosoftPressed: (context) { final completer = snackBarCompleter( - context, AppLocalization.of(context).connectedMicrosoft); + context, AppLocalization.of(context)!.connectedMicrosoft); passwordCallback( context: context, @@ -309,43 +309,43 @@ class UserDetailsVM { }, onSavePressed: (context) { Debouncer.runOnComplete(() { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final completer = snackBarCompleter(context, localization.updatedUser); final appBuilder = AppBuilder.of(context); - final origUserSettings = state.userCompany.settings; + final origUserSettings = state.userCompany!.settings; completer.future.then((_) async { - final newUserSettings = store.state.userCompany.settings; - if (origUserSettings.includeDeletedClients != + final newUserSettings = store.state.userCompany!.settings!; + if (origUserSettings!.includeDeletedClients != newUserSettings.includeDeletedClients || origUserSettings.numberYearsActive != newUserSettings.numberYearsActive) { store.dispatch(RefreshData( completer: snackBarCompleter( - navigatorKey.currentContext, localization.refreshComplete, + navigatorKey.currentContext!, localization.refreshComplete, shouldPop: true), clearData: true, includeStatic: true, )); await showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, barrierDismissible: false, builder: (BuildContext context) => SimpleDialog( children: [LoadingDialog()], )); } - appBuilder.rebuild(); - }); + appBuilder!.rebuild(); + } as FutureOr<_> Function(Null)); confirmCallback( context: context, message: localization.changingPhoneDisablesTwoFactor, - skip: state.user.phone == + skip: state.user!.phone == state.uiState.settingsUIState.user.phone || - !state.user.isTwoFactorEnabled, + !state.user!.isTwoFactorEnabled, callback: (_) { passwordCallback( context: context, diff --git a/lib/ui/settings/workflow_settings.dart b/lib/ui/settings/workflow_settings.dart index 37139e1b7..783209139 100644 --- a/lib/ui/settings/workflow_settings.dart +++ b/lib/ui/settings/workflow_settings.dart @@ -21,8 +21,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class WorkflowSettings extends StatefulWidget { const WorkflowSettings({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final WorkflowSettingsVM viewModel; @@ -36,8 +36,8 @@ class _WorkflowSettingsState extends State static final GlobalKey _formKey = GlobalKey(debugLabel: '_workflowSettings'); - FocusScopeNode _focusNode; - TabController _controller; + FocusScopeNode? _focusNode; + TabController? _controller; @override void initState() { @@ -47,25 +47,25 @@ class _WorkflowSettingsState extends State final settingsUIState = widget.viewModel.state.settingsUIState; _controller = TabController( vsync: this, length: 2, initialIndex: settingsUIState.tabIndex); - _controller.addListener(_onTabChanged); + _controller!.addListener(_onTabChanged); } void _onTabChanged() { final store = StoreProvider.of(context); - store.dispatch(UpdateSettingsTab(tabIndex: _controller.index)); + store.dispatch(UpdateSettingsTab(tabIndex: _controller!.index)); } @override void dispose() { - _focusNode.dispose(); - _controller.removeListener(_onTabChanged); - _controller.dispose(); + _focusNode!.dispose(); + _controller!.removeListener(_onTabChanged); + _controller!.dispose(); super.dispose(); } @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; final state = viewModel.state; final settings = viewModel.settings; @@ -146,7 +146,7 @@ class _WorkflowSettingsState extends State SettingsEntity.LOCK_INVOICES_PAID, ] .map((option) => DropdownMenuItem( - child: Text(localization.lookup(option)), + child: Text(localization.lookup(option)!), value: option, )) .toList(), diff --git a/lib/ui/settings/workflow_vm.dart b/lib/ui/settings/workflow_vm.dart index 53940bda1..9dc0849c1 100644 --- a/lib/ui/settings/workflow_vm.dart +++ b/lib/ui/settings/workflow_vm.dart @@ -20,7 +20,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class WorkflowSettingsScreen extends StatelessWidget { - const WorkflowSettingsScreen({Key key}) : super(key: key); + const WorkflowSettingsScreen({Key? key}) : super(key: key); static const String route = '/$kSettings/$kSettingsWorkflowSettings'; @override @@ -39,12 +39,12 @@ class WorkflowSettingsScreen extends StatelessWidget { class WorkflowSettingsVM { WorkflowSettingsVM({ - @required this.state, - @required this.company, - @required this.settings, - @required this.onSettingsChanged, - @required this.onCompanyChanged, - @required this.onSavePressed, + required this.state, + required this.company, + required this.settings, + required this.onSettingsChanged, + required this.onCompanyChanged, + required this.onSavePressed, }); static WorkflowSettingsVM fromStore(Store store) { @@ -65,19 +65,19 @@ class WorkflowSettingsVM { switch (settingsUIState.entityType) { case EntityType.company: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch(SaveCompanyRequest( completer: completer, company: settingsUIState.company)); break; case EntityType.group: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch(SaveGroupRequest( completer: completer, group: settingsUIState.group)); break; case EntityType.client: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context)!.savedSettings); store.dispatch(SaveClientRequest( completer: completer, client: settingsUIState.client)); break; diff --git a/lib/ui/subscription/edit/subscription_edit.dart b/lib/ui/subscription/edit/subscription_edit.dart index 302951a2e..72a1199bb 100644 --- a/lib/ui/subscription/edit/subscription_edit.dart +++ b/lib/ui/subscription/edit/subscription_edit.dart @@ -33,8 +33,8 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class SubscriptionEdit extends StatefulWidget { const SubscriptionEdit({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final SubscriptionEditVM viewModel; @@ -48,8 +48,8 @@ class _SubscriptionEditState extends State static final GlobalKey _formKey = GlobalKey(debugLabel: '_subscriptionEdit'); final _debouncer = Debouncer(); - FocusScopeNode _focusNode; - TabController _controller; + FocusScopeNode? _focusNode; + TabController? _controller; final _nameController = TextEditingController(); final _promoCodeController = TextEditingController(); @@ -70,12 +70,12 @@ class _SubscriptionEditState extends State final settingsUIState = widget.viewModel.state.settingsUIState; _controller = TabController( vsync: this, length: 3, initialIndex: settingsUIState.tabIndex); - _controller.addListener(_onTabChanged); + _controller!.addListener(_onTabChanged); } void _onTabChanged() { final store = StoreProvider.of(context); - store.dispatch(UpdateSettingsTab(tabIndex: _controller.index)); + store.dispatch(UpdateSettingsTab(tabIndex: _controller!.index)); } @override @@ -99,10 +99,10 @@ class _SubscriptionEditState extends State _promoCodeController.text = subscription.promoCode; _promoDiscountController.text = formatNumber( subscription.promoDiscount, context, - formatNumberType: FormatNumberType.inputMoney); + formatNumberType: FormatNumberType.inputMoney)!; _maxSeatsLimitController.text = formatNumber( subscription.maxSeatsLimit.toDouble(), context, - formatNumberType: FormatNumberType.inputAmount); + formatNumberType: FormatNumberType.inputAmount)!; _returnUrlController.text = webhookConfiguration.returnUrl; _postPurchaseUrlController.text = webhookConfiguration.postPurchaseUrl; @@ -113,9 +113,9 @@ class _SubscriptionEditState extends State @override void dispose() { - _focusNode.dispose(); - _controller.removeListener(_onTabChanged); - _controller.dispose(); + _focusNode!.dispose(); + _controller!.removeListener(_onTabChanged); + _controller!.dispose(); _controllers.forEach((controller) { controller.removeListener(_onChanged); controller.dispose(); @@ -140,7 +140,7 @@ class _SubscriptionEditState extends State } void _onSavePressed(BuildContext context) { - final bool isValid = _formKey.currentState.validate(); + final bool isValid = _formKey.currentState!.validate(); if (!isValid) { return; @@ -153,7 +153,7 @@ class _SubscriptionEditState extends State Widget build(BuildContext context) { final viewModel = widget.viewModel; final state = viewModel.state; - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final subscription = viewModel.subscription; final webhookConfiguration = subscription.webhookConfiguration; @@ -271,7 +271,7 @@ class _SubscriptionEditState extends State .where((element) => element.isNotEmpty) .map((productId) => ListTile( title: Text( - state.productState.get(productId).productKey), + state.productState.get(productId)!.productKey), trailing: IconButton( icon: Icon(Icons.clear), onPressed: () { @@ -313,7 +313,7 @@ class _SubscriptionEditState extends State .where((element) => element.isNotEmpty) .map((productId) => ListTile( title: Text( - state.productState.get(productId).productKey), + state.productState.get(productId)!.productKey), trailing: IconButton( icon: Icon(Icons.clear), onPressed: () { @@ -357,7 +357,7 @@ class _SubscriptionEditState extends State .where((element) => element.isNotEmpty) .map((productId) => ListTile( title: Text( - state.productState.get(productId).productKey), + state.productState.get(productId)!.productKey), trailing: IconButton( icon: Icon(Icons.clear), onPressed: () { @@ -401,7 +401,7 @@ class _SubscriptionEditState extends State .where((element) => element.isNotEmpty) .map((productId) => ListTile( title: Text( - state.productState.get(productId).productKey), + state.productState.get(productId)!.productKey), trailing: IconButton( icon: Icon(Icons.clear), onPressed: () { @@ -436,7 +436,7 @@ class _SubscriptionEditState extends State items: kFrequencies.entries .map((entry) => DropdownMenuItem( value: entry.key, - child: Text(localization.lookup(entry.value)), + child: Text(localization.lookup(entry.value)!), )) .toList()), AppDropdownButton( @@ -451,7 +451,7 @@ class _SubscriptionEditState extends State SettingsEntity.AUTO_BILL_OPT_OUT, SettingsEntity.AUTO_BILL_OPT_IN, SettingsEntity.AUTO_BILL_OFF, - ].map((type) => Text(localization.lookup(type))).toList(), + ].map((type) => Text(localization.lookup(type)!)).toList(), items: [ SettingsEntity.AUTO_BILL_ALWAYS, SettingsEntity.AUTO_BILL_OPT_OUT, @@ -661,7 +661,7 @@ class _SubscriptionEditState extends State SizedBox(width: kTableColumnGap), Expanded( child: Text( - webhookConfiguration.postPurchaseHeaders[key]), + webhookConfiguration.postPurchaseHeaders[key]!), ) ], ), diff --git a/lib/ui/subscription/edit/subscription_edit_vm.dart b/lib/ui/subscription/edit/subscription_edit_vm.dart index 261bce905..f4e245d72 100644 --- a/lib/ui/subscription/edit/subscription_edit_vm.dart +++ b/lib/ui/subscription/edit/subscription_edit_vm.dart @@ -23,7 +23,7 @@ import 'package:invoiceninja_flutter/ui/subscription/view/subscription_view_vm.d import 'package:invoiceninja_flutter/utils/completers.dart'; class SubscriptionEditScreen extends StatelessWidget { - const SubscriptionEditScreen({Key key}) : super(key: key); + const SubscriptionEditScreen({Key? key}) : super(key: key); static const String route = '/$kSettings/$kSettingsPaymentLinksEdit'; @override @@ -44,20 +44,20 @@ class SubscriptionEditScreen extends StatelessWidget { class SubscriptionEditVM { SubscriptionEditVM({ - @required this.state, - @required this.subscription, - @required this.company, - @required this.onChanged, - @required this.isSaving, - @required this.origSubscription, - @required this.onSavePressed, - @required this.onCancelPressed, - @required this.isLoading, + required this.state, + required this.subscription, + required this.company, + required this.onChanged, + required this.isSaving, + required this.origSubscription, + required this.onSavePressed, + required this.onCancelPressed, + required this.isLoading, }); factory SubscriptionEditVM.fromStore(Store store) { final state = store.state; - final subscription = state.subscriptionUIState.editing; + final subscription = state.subscriptionUIState.editing!; return SubscriptionEditVM( state: state, @@ -73,7 +73,7 @@ class SubscriptionEditVM { createEntity( context: context, entity: SubscriptionEntity(), force: true); if (state.subscriptionUIState.cancelCompleter != null) { - state.subscriptionUIState.cancelCompleter.complete(); + state.subscriptionUIState.cancelCompleter!.complete(); } else { store.dispatch(UpdateCurrentRoute(state.uiState.previousRoute)); } @@ -84,14 +84,14 @@ class SubscriptionEditVM { } Debouncer.runOnComplete(() { - final subscription = store.state.subscriptionUIState.editing; + final subscription = store.state.subscriptionUIState.editing!; final localization = navigatorKey.localization; final navigator = navigatorKey.currentState; if (subscription.name.isEmpty) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { - return ErrorDialog(localization.pleaseEnterAName); + return ErrorDialog(localization!.pleaseEnterAName); }); return null; } @@ -101,21 +101,21 @@ class SubscriptionEditVM { completer: completer, subscription: subscription)); return completer.future.then((savedSubscription) { showToast(subscription.isNew - ? localization.createdPaymentLink - : localization.updatedPaymentLink); + ? localization!.createdPaymentLink + : localization!.updatedPaymentLink); if (state.prefState.isMobile) { store.dispatch(UpdateCurrentRoute(SubscriptionViewScreen.route)); if (subscription.isNew) { - navigator.pushReplacementNamed(SubscriptionViewScreen.route); + navigator!.pushReplacementNamed(SubscriptionViewScreen.route); } else { - navigator.pop(savedSubscription); + navigator!.pop(savedSubscription); } } else { viewEntity(entity: savedSubscription, force: true); } }).catchError((Object error) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { return ErrorDialog(error); }); @@ -126,12 +126,12 @@ class SubscriptionEditVM { } final SubscriptionEntity subscription; - final CompanyEntity company; + final CompanyEntity? company; final Function(SubscriptionEntity) onChanged; final Function(BuildContext) onSavePressed; final Function(BuildContext) onCancelPressed; final bool isLoading; final bool isSaving; - final SubscriptionEntity origSubscription; + final SubscriptionEntity? origSubscription; final AppState state; } diff --git a/lib/ui/subscription/subscription_list_item.dart b/lib/ui/subscription/subscription_list_item.dart index 534884210..0deecbb72 100644 --- a/lib/ui/subscription/subscription_list_item.dart +++ b/lib/ui/subscription/subscription_list_item.dart @@ -14,21 +14,21 @@ import 'package:invoiceninja_flutter/utils/formatting.dart'; class SubscriptionListItem extends StatelessWidget { const SubscriptionListItem({ - @required this.user, - @required this.subscription, - @required this.filter, + required this.user, + required this.subscription, + required this.filter, this.onTap, this.onLongPress, this.onCheckboxChanged, this.isChecked = false, }); - final UserEntity user; - final GestureTapCallback onTap; - final GestureTapCallback onLongPress; - final SubscriptionEntity subscription; - final String filter; - final Function(bool) onCheckboxChanged; + final UserEntity? user; + final GestureTapCallback? onTap; + final GestureTapCallback? onLongPress; + final SubscriptionEntity? subscription; + final String? filter; + final Function(bool?)? onCheckboxChanged; final bool isChecked; @override @@ -41,31 +41,31 @@ class SubscriptionListItem extends StatelessWidget { final isInMultiselect = listUIState.isInMultiselect(); final showCheckbox = onCheckboxChanged != null || isInMultiselect; - final filterMatch = filter != null && filter.isNotEmpty - ? subscription.matchesFilterValue(filter) + final filterMatch = filter != null && filter!.isNotEmpty + ? subscription!.matchesFilterValue(filter) : null; final subtitle = filterMatch; return DismissibleEntity( userCompany: state.userCompany, entity: subscription, - isSelected: subscription.id == + isSelected: subscription!.id == (uiState.isEditing - ? subscriptionUIState.editing.id + ? subscriptionUIState.editing!.id : subscriptionUIState.selectedId), child: ListTile( onTap: () => - onTap != null ? onTap() : selectEntity(entity: subscription), + onTap != null ? onTap!() : selectEntity(entity: subscription!), onLongPress: () => onLongPress != null - ? onLongPress() - : selectEntity(entity: subscription, longPress: true), + ? onLongPress!() + : selectEntity(entity: subscription!, longPress: true), leading: showCheckbox ? IgnorePointer( ignoring: listUIState.isInMultiselect(), child: Checkbox( value: isChecked, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, - onChanged: (value) => onCheckboxChanged(value), + onChanged: (value) => onCheckboxChanged!(value), activeColor: Theme.of(context).colorScheme.secondary, ), ) @@ -76,11 +76,11 @@ class SubscriptionListItem extends StatelessWidget { children: [ Expanded( child: Text( - subscription.name, + subscription!.name, style: Theme.of(context).textTheme.titleMedium, ), ), - Text(formatNumber(subscription.price, context), + Text(formatNumber(subscription!.price, context)!, style: Theme.of(context).textTheme.titleMedium), ], ), diff --git a/lib/ui/subscription/subscription_list_vm.dart b/lib/ui/subscription/subscription_list_vm.dart index 857b39228..424a9a365 100644 --- a/lib/ui/subscription/subscription_list_vm.dart +++ b/lib/ui/subscription/subscription_list_vm.dart @@ -24,7 +24,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class SubscriptionListBuilder extends StatelessWidget { - const SubscriptionListBuilder({Key key}) : super(key: key); + const SubscriptionListBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -52,7 +52,7 @@ class SubscriptionListBuilder extends StatelessWidget { filter: viewModel.filter, subscription: subscription, isChecked: - isInMultiselect && listState.isSelected(subscription.id), + isInMultiselect && listState.isSelected(subscription!.id), ); }); }, @@ -62,18 +62,18 @@ class SubscriptionListBuilder extends StatelessWidget { class SubscriptionListVM { SubscriptionListVM({ - @required this.state, - @required this.userCompany, - @required this.subscriptionList, - @required this.subscriptionMap, - @required this.filter, - @required this.isLoading, - @required this.listState, - @required this.onRefreshed, - @required this.onEntityAction, - @required this.tableColumns, - @required this.onSortColumn, - @required this.onClearMultielsect, + required this.state, + required this.userCompany, + required this.subscriptionList, + required this.subscriptionMap, + required this.filter, + required this.isLoading, + required this.listState, + required this.onRefreshed, + required this.onEntityAction, + required this.tableColumns, + required this.onSortColumn, + required this.onClearMultielsect, }); static SubscriptionListVM fromStore(Store store) { @@ -82,7 +82,7 @@ class SubscriptionListVM { return Future(null); } final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(RefreshData(completer: completer)); return completer.future; } @@ -106,7 +106,7 @@ class SubscriptionListVM { EntityAction action) => handleSubscriptionAction(context, subscriptions, action), onRefreshed: (context) => _handleRefresh(context), - tableColumns: state.userCompany.settings + tableColumns: state.userCompany!.settings ?.getTableColumns(EntityType.subscription) ?? SubscriptionPresenter.getDefaultTableFields(state.userCompany), onSortColumn: (field) => store.dispatch(SortSubscriptions(field)), @@ -115,11 +115,11 @@ class SubscriptionListVM { } final AppState state; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List subscriptionList; - final BuiltMap subscriptionMap; + final BuiltMap subscriptionMap; final ListUIState listState; - final String filter; + final String? filter; final bool isLoading; final Function(BuildContext) onRefreshed; final Function(BuildContext, List, EntityAction) onEntityAction; diff --git a/lib/ui/subscription/subscription_presenter.dart b/lib/ui/subscription/subscription_presenter.dart index 2ab6a32ac..7c0a9e9de 100644 --- a/lib/ui/subscription/subscription_presenter.dart +++ b/lib/ui/subscription/subscription_presenter.dart @@ -6,11 +6,11 @@ import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/ui/app/presenters/entity_presenter.dart'; class SubscriptionPresenter extends EntityPresenter { - static List getDefaultTableFields(UserCompanyEntity userCompany) { + static List getDefaultTableFields(UserCompanyEntity? userCompany) { return []; } - static List getAllTableFields(UserCompanyEntity userCompany) { + static List getAllTableFields(UserCompanyEntity? userCompany) { return [ ...getDefaultTableFields(userCompany), ...EntityPresenter.getBaseFields(), @@ -18,7 +18,7 @@ class SubscriptionPresenter extends EntityPresenter { } @override - Widget getField({String field, BuildContext context}) { + Widget getField({String? field, required BuildContext context}) { //final state = StoreProvider.of(context).state; //final subscription = entity as InvoiceEntity; diff --git a/lib/ui/subscription/subscription_screen.dart b/lib/ui/subscription/subscription_screen.dart index 7532c56ce..cc76b4e86 100644 --- a/lib/ui/subscription/subscription_screen.dart +++ b/lib/ui/subscription/subscription_screen.dart @@ -20,8 +20,8 @@ import 'subscription_screen_vm.dart'; class SubscriptionScreen extends StatelessWidget { const SubscriptionScreen({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); static const String route = '/$kSettings/$kSettingsPaymentLinks'; @@ -92,7 +92,7 @@ class SubscriptionScreen extends StatelessWidget { store.dispatch(FilterSubscriptionsByCustom4(value)), ), floatingActionButton: state.prefState.isMenuFloated && - userCompany.canCreate(EntityType.subscription) + userCompany!.canCreate(EntityType.subscription) ? FloatingActionButton( heroTag: 'subscription_fab', backgroundColor: Theme.of(context).primaryColorDark, @@ -104,7 +104,7 @@ class SubscriptionScreen extends StatelessWidget { Icons.add, color: Colors.white, ), - tooltip: localization.newPaymentLink, + tooltip: localization!.newPaymentLink, ) : null, ); diff --git a/lib/ui/subscription/subscription_screen_vm.dart b/lib/ui/subscription/subscription_screen_vm.dart index 26c7515ad..853b5cbda 100644 --- a/lib/ui/subscription/subscription_screen_vm.dart +++ b/lib/ui/subscription/subscription_screen_vm.dart @@ -15,7 +15,7 @@ import 'package:invoiceninja_flutter/redux/subscription/subscription_selectors.d import 'subscription_screen.dart'; class SubscriptionScreenBuilder extends StatelessWidget { - const SubscriptionScreenBuilder({Key key}) : super(key: key); + const SubscriptionScreenBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -32,18 +32,18 @@ class SubscriptionScreenBuilder extends StatelessWidget { class SubscriptionScreenVM { SubscriptionScreenVM({ - @required this.isInMultiselect, - @required this.subscriptionList, - @required this.userCompany, - @required this.onEntityAction, - @required this.subscriptionMap, + required this.isInMultiselect, + required this.subscriptionList, + required this.userCompany, + required this.onEntityAction, + required this.subscriptionMap, }); final bool isInMultiselect; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List subscriptionList; final Function(BuildContext, List, EntityAction) onEntityAction; - final BuiltMap subscriptionMap; + final BuiltMap subscriptionMap; static SubscriptionScreenVM fromStore(Store store) { final state = store.state; diff --git a/lib/ui/subscription/view/subscription_view.dart b/lib/ui/subscription/view/subscription_view.dart index 57a3b7b63..db62f49f8 100644 --- a/lib/ui/subscription/view/subscription_view.dart +++ b/lib/ui/subscription/view/subscription_view.dart @@ -21,9 +21,9 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class SubscriptionView extends StatefulWidget { const SubscriptionView({ - Key key, - @required this.viewModel, - @required this.isFilter, + Key? key, + required this.viewModel, + required this.isFilter, }) : super(key: key); final SubscriptionViewVM viewModel; @@ -38,9 +38,9 @@ class _SubscriptionViewState extends State { Widget build(BuildContext context) { final viewModel = widget.viewModel; final subscription = viewModel.subscription; - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final state = viewModel.state; - final company = state.company; + final company = state.company!; return ViewScaffold( isFilter: widget.isFilter, @@ -54,7 +54,7 @@ class _SubscriptionViewState extends State { value: formatNumber(subscription.price, context)), ListDivider(), ListTile( - title: Text(localization.paymentLink), + title: Text(localization.paymentLink!), subtitle: Text( subscription.purchasePage, maxLines: 1, diff --git a/lib/ui/subscription/view/subscription_view_vm.dart b/lib/ui/subscription/view/subscription_view_vm.dart index 1728b6f0c..bdb7fddbe 100644 --- a/lib/ui/subscription/view/subscription_view_vm.dart +++ b/lib/ui/subscription/view/subscription_view_vm.dart @@ -22,7 +22,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class SubscriptionViewScreen extends StatelessWidget { const SubscriptionViewScreen({ - Key key, + Key? key, this.isFilter = false, }) : super(key: key); static const String route = '/$kSettings/$kSettingsPaymentLinksView'; @@ -46,15 +46,15 @@ class SubscriptionViewScreen extends StatelessWidget { class SubscriptionViewVM { SubscriptionViewVM({ - @required this.state, - @required this.subscription, - @required this.company, - @required this.onEntityAction, - @required this.onRefreshed, - @required this.isSaving, - @required this.onBackPressed, - @required this.isLoading, - @required this.isDirty, + required this.state, + required this.subscription, + required this.company, + required this.onEntityAction, + required this.onRefreshed, + required this.isSaving, + required this.onBackPressed, + required this.isLoading, + required this.isDirty, }); factory SubscriptionViewVM.fromStore(Store store) { @@ -65,7 +65,7 @@ class SubscriptionViewVM { Future _handleRefresh(BuildContext context) { final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(LoadSubscription( completer: completer, subscriptionId: subscription.id)); return completer.future; @@ -89,7 +89,7 @@ class SubscriptionViewVM { final AppState state; final SubscriptionEntity subscription; - final CompanyEntity company; + final CompanyEntity? company; final Function(BuildContext, EntityAction) onEntityAction; final Function(BuildContext) onRefreshed; final Function onBackPressed; diff --git a/lib/ui/system/update_dialog.dart b/lib/ui/system/update_dialog.dart index 1559c3816..73d48d651 100644 --- a/lib/ui/system/update_dialog.dart +++ b/lib/ui/system/update_dialog.dart @@ -36,33 +36,33 @@ enum UpdateState { class _UpdateDialogState extends State { UpdateState updateState = UpdateState.initial; - String updateResponse; + String? updateResponse; @override Widget build(BuildContext context) { final localization = AppLocalization.of(context); final store = StoreProvider.of(context); final state = store.state; - final account = state.userCompany.account; + final account = state.userCompany!.account!; const dockerCommand = 'docker-compose down\ndocker-compose pull\ndocker-compose up'; - var message = ''; + String? message = ''; if (updateState == UpdateState.done) { message = updateResponse; - if (message.isEmpty) { - message = localization.appUpdated; + if (message!.isEmpty) { + message = localization!.appUpdated; } else if (message.contains('failed')) { - message += '\n\n${localization.updateFailHelp}\n\ngit checkout .'; + message += '\n\n${localization!.updateFailHelp}\n\ngit checkout .'; } } return AlertDialog( title: Text(account.isUpdateAvailable - ? localization.updateAvailable - : localization.forceUpdate), + ? localization!.updateAvailable + : localization!.forceUpdate), content: updateState == UpdateState.done - ? SelectableText(message) + ? SelectableText(message!) : updateState == UpdateState.loading ? Padding( padding: const EdgeInsets.only(top: 10), @@ -115,7 +115,7 @@ class _UpdateDialogState extends State { ), if (account.isUpdateAvailable) TextButton( - child: Text(localization.releaseNotes.toUpperCase()), + child: Text(localization.releaseNotes!.toUpperCase()), onPressed: () => launchUrl(Uri.parse(kReleaseNotesUrl)), ) else @@ -168,7 +168,7 @@ class _UpdateDialogState extends State { updateResponse = jsonDecode(response.body)['message']; }); - if (updateResponse.contains('failed')) { + if (updateResponse!.contains('failed')) { // do nothing } else { if (kIsWeb) { diff --git a/lib/ui/task/edit/task_edit.dart b/lib/ui/task/edit/task_edit.dart index c40105385..3f23a7abf 100644 --- a/lib/ui/task/edit/task_edit.dart +++ b/lib/ui/task/edit/task_edit.dart @@ -22,8 +22,8 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class TaskEdit extends StatefulWidget { const TaskEdit({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final TaskEditVM viewModel; @@ -34,7 +34,7 @@ class TaskEdit extends StatefulWidget { class _TaskEditState extends State with SingleTickerProviderStateMixin { - TabController _controller; + TabController? _controller; int _updatedAt = 0; static final GlobalKey _formKey = @@ -58,18 +58,18 @@ class _TaskEditState extends State super.didUpdateWidget(oldWidget); if (widget.viewModel.taskTimeIndex != null) { - _controller.animateTo(kTimesScreen); + _controller!.animateTo(kTimesScreen); } } @override void dispose() { - _controller.dispose(); + _controller!.dispose(); super.dispose(); } - void _onSavePressed(BuildContext context, [EntityAction action]) { - final bool isValid = _formKey.currentState.validate(); + void _onSavePressed(BuildContext context, [EntityAction? action]) { + final bool isValid = _formKey.currentState!.validate(); /* setState(() { @@ -87,7 +87,7 @@ class _TaskEditState extends State @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; final task = viewModel.task; final state = viewModel.state; @@ -99,7 +99,7 @@ class _TaskEditState extends State entity: task, title: task.isNew ? localization.newTask : localization.editTask, onCancelPressed: (context) => viewModel.onCancelPressed(context), - onSavePressed: (context, [EntityAction action]) => + onSavePressed: (context, [EntityAction? action]) => _onSavePressed(context, action), actions: task.getActions( userCompany: state.userCompany, @@ -135,7 +135,7 @@ class _TaskEditState extends State bottomNavigationBar: _BottomBar( task: task, ), - floatingActionButton: task.isInvoiced || task.isDeleted + floatingActionButton: task.isInvoiced || task.isDeleted! ? SizedBox() : FloatingActionButton( heroTag: 'task_edit_fab', @@ -158,8 +158,8 @@ class _TaskEditState extends State class _BottomBar extends StatelessWidget { const _BottomBar({ - Key key, - @required this.task, + Key? key, + required this.task, }) : super(key: key); final TaskEntity task; @@ -186,8 +186,8 @@ class _BottomBar extends StatelessWidget { if (isDesktop(context)) Tooltip( message: useSidebarEditor - ? localization.fullscreenEditor - : localization.sidebarEditor, + ? localization!.fullscreenEditor + : localization!.sidebarEditor, child: InkWell( onTap: () => store.dispatch(ToggleEditorLayout(EntityType.task)), @@ -207,12 +207,12 @@ class _BottomBar extends StatelessWidget { alignment: Alignment.centerLeft, child: LiveText(() { var title = (isDesktop(context) && !useSidebarEditor - ? (localization.duration + ' ') + ? (localization!.duration + ' ') : '') + formatNumber( task.calculateDuration().inSeconds.toDouble(), context, - formatNumberType: FormatNumberType.duration); + formatNumberType: FormatNumberType.duration)!; final duration = task.calculateDuration(); if (duration.inSeconds > 0) { @@ -226,11 +226,11 @@ class _BottomBar extends StatelessWidget { client: state.clientState.get(task.clientId), task: task, group: null, - ), + )!, ), context, - clientId: state.clientState.get(task.clientId).id, - ); + clientId: state.clientState.get(task.clientId)!.id, + )!; } if (task.number.isNotEmpty) { diff --git a/lib/ui/task/edit/task_edit_desktop.dart b/lib/ui/task/edit/task_edit_desktop.dart index 4b7aca5f7..59da85844 100644 --- a/lib/ui/task/edit/task_edit_desktop.dart +++ b/lib/ui/task/edit/task_edit_desktop.dart @@ -30,8 +30,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class TaskEditDesktop extends StatefulWidget { const TaskEditDesktop({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final TaskEditDetailsVM viewModel; @@ -76,7 +76,7 @@ class _TaskEditDesktopState extends State { final task = widget.viewModel.task; _numberController.text = task.number; _rateController.text = formatNumber(task.rate, context, - formatNumberType: FormatNumberType.inputMoney); + formatNumberType: FormatNumberType.inputMoney)!; _descriptionController.text = task.description; _custom1Controller.text = task.customValue1; _custom2Controller.text = task.customValue2; @@ -117,19 +117,19 @@ class _TaskEditDesktopState extends State { @override Widget build(BuildContext context) { - final store = StoreProvider.of(navigatorKey.currentContext); + final store = StoreProvider.of(navigatorKey.currentContext!); final viewModel = widget.viewModel; - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final task = viewModel.task; final state = viewModel.state; - final company = state.company; + final company = state.company!; final settings = company.settings; - final client = state.clientState.get(task.clientId); + final client = state.clientState.get(task.clientId)!; final showEndDate = company.showTaskEndDate; final taskTimes = task.getTaskTimes(sort: false); - if (!taskTimes.any((taskTime) => taskTime.isEmpty)) { + if (!taskTimes.any((taskTime) => taskTime!.isEmpty)) { taskTimes.add(TaskTime().rebuild((b) => b..startDate = null)); } @@ -147,7 +147,7 @@ class _TaskEditDesktopState extends State { context, currencyId: (client.currencyId ?? '').isNotEmpty ? client.currencyId - : company.currencyId); + : company.currencyId)!; return ScrollableListView( primary: true, @@ -195,7 +195,7 @@ class _TaskEditDesktopState extends State { viewModel.onChanged(task.rebuild((b) => b ..projectId = project?.id ..clientId = (project?.clientId ?? '').isNotEmpty - ? project.clientId + ? project!.clientId : task.clientId)); }, onAddPressed: (completer) { @@ -299,7 +299,7 @@ class _TaskEditDesktopState extends State { key: ValueKey('__table_${_updatedAt}__'), padding: const EdgeInsets.symmetric(horizontal: kMobileDialogPadding), children: [ - if (!settings.showTaskItemDescription) + if (!settings.showTaskItemDescription!) Row( children: [ Expanded(child: Text(localization.startDate)), @@ -307,7 +307,7 @@ class _TaskEditDesktopState extends State { if (showEndDate) Expanded(child: Text(localization.endDate)), Expanded(child: Text(localization.endTime)), Expanded(child: Text(localization.duration)), - if (settings.allowBillableTaskItems) SizedBox(width: 50), + if (settings.allowBillableTaskItems!) SizedBox(width: 50), SizedBox(width: 38), ], ), @@ -329,16 +329,16 @@ class _TaskEditDesktopState extends State { child: DatePicker( key: ValueKey( '__${_startTimeUpdatedAt}_${_durationUpdateAt}_${index}__'), - labelText: settings.showTaskItemDescription + labelText: settings.showTaskItemDescription! ? localization.startDate : null, - selectedDate: taskTimes[index].startDate == + selectedDate: taskTimes[index]!.startDate == null ? null : convertDateTimeToSqlDate( - taskTimes[index].startDate.toLocal()), + taskTimes[index]!.startDate!.toLocal()), onSelected: (date, _) { - final taskTime = taskTimes[index] + final taskTime = taskTimes[index]! .copyWithStartDate(date, syncDates: !showEndDate); viewModel.onUpdatedTaskTime( @@ -358,12 +358,12 @@ class _TaskEditDesktopState extends State { child: TimePicker( key: ValueKey( '__${_durationUpdateAt}_${index}__'), - labelText: settings.showTaskItemDescription + labelText: settings.showTaskItemDescription! ? localization.startTime : null, - selectedDateTime: taskTimes[index].startDate, + selectedDateTime: taskTimes[index]!.startDate, onSelected: (timeOfDay) { - final taskTime = taskTimes[index] + final taskTime = taskTimes[index]! .copyWithStartTime(timeOfDay); viewModel.onUpdatedTaskTime( taskTime, index); @@ -383,16 +383,16 @@ class _TaskEditDesktopState extends State { child: DatePicker( key: ValueKey( '__${_startDateUpdatedAt}_${_durationUpdateAt}_${_endTimeUpdatedAt}_${index}__'), - labelText: settings.showTaskItemDescription + labelText: settings.showTaskItemDescription! ? localization.endDate : null, - selectedDate: taskTimes[index].endDate == + selectedDate: taskTimes[index]!.endDate == null ? null : convertDateTimeToSqlDate( - taskTimes[index].endDate.toLocal()), + taskTimes[index]!.endDate!.toLocal()), onSelected: (date, _) { - final taskTime = taskTimes[index] + final taskTime = taskTimes[index]! .copyWithEndDate(date); viewModel.onUpdatedTaskTime( taskTime, index); @@ -411,13 +411,13 @@ class _TaskEditDesktopState extends State { child: TimePicker( key: ValueKey( '__${_endDateUpdatedAt}_${_durationUpdateAt}_${index}__'), - labelText: settings.showTaskItemDescription + labelText: settings.showTaskItemDescription! ? localization.endTime : null, - selectedDateTime: taskTimes[index].endDate, + selectedDateTime: taskTimes[index]!.endDate, isEndTime: true, onSelected: (timeOfDay) { - final taskTime = taskTimes[index] + final taskTime = taskTimes[index]! .copyWithEndTime(timeOfDay); viewModel.onUpdatedTaskTime( taskTime, index); @@ -436,11 +436,11 @@ class _TaskEditDesktopState extends State { child: DurationPicker( key: ValueKey( '__${_startTimeUpdatedAt}_${_endTimeUpdatedAt}_${_startDateUpdatedAt}_${_endDateUpdatedAt}_${index}__'), - labelText: settings.showTaskItemDescription + labelText: settings.showTaskItemDescription! ? localization.duration : null, onSelected: (Duration duration) { - final taskTime = taskTimes[index] + final taskTime = taskTimes[index]! .copyWithDuration(duration); viewModel.onUpdatedTaskTime( taskTime, index); @@ -450,22 +450,22 @@ class _TaskEditDesktopState extends State { }); }, selectedDuration: - (taskTimes[index].startDate == null || - taskTimes[index].endDate == null) + (taskTimes[index]!.startDate == null || + taskTimes[index]!.endDate == null) ? null - : taskTimes[index].duration, + : taskTimes[index]!.duration, ), ), ), ], ), - if (settings.showTaskItemDescription) + if (settings.showTaskItemDescription!) Padding( padding: const EdgeInsets.only(bottom: 16, right: 16), child: GrowableFormField( label: localization.description, - initialValue: taskTime.description, + initialValue: taskTime!.description, onChanged: (value) { viewModel.onUpdatedTaskTime( taskTime @@ -477,11 +477,11 @@ class _TaskEditDesktopState extends State { ], ), ), - if (settings.allowBillableTaskItems) + if (settings.allowBillableTaskItems!) Padding( padding: const EdgeInsets.only(right: 8, left: 4), child: IconButton( - tooltip: taskTime.isBillable + tooltip: taskTime!.isBillable ? localization.billable : localization.notBillable, onPressed: taskTime.isEmpty @@ -502,7 +502,7 @@ class _TaskEditDesktopState extends State { tooltip: overlapping.contains(index) ? localization.invalidTime : localization.remove, - onPressed: taskTimes[index].isEmpty + onPressed: taskTimes[index]!.isEmpty ? null : () { confirmCallback( diff --git a/lib/ui/task/edit/task_edit_details.dart b/lib/ui/task/edit/task_edit_details.dart index 17c1ec5cd..c4d329fa9 100644 --- a/lib/ui/task/edit/task_edit_details.dart +++ b/lib/ui/task/edit/task_edit_details.dart @@ -24,8 +24,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class TaskEditDetails extends StatefulWidget { const TaskEditDetails({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final TaskEditDetailsVM viewModel; @@ -63,7 +63,7 @@ class _TaskEditDetailsState extends State { final task = widget.viewModel.task; _numberController.text = task.number; _rateController.text = formatNumber(task.rate, context, - formatNumberType: FormatNumberType.inputMoney); + formatNumberType: FormatNumberType.inputMoney)!; _descriptionController.text = task.description; _custom1Controller.text = task.customValue1; _custom2Controller.text = task.customValue2; @@ -103,14 +103,14 @@ class _TaskEditDetailsState extends State { @override Widget build(BuildContext context) { - final store = StoreProvider.of(navigatorKey.currentContext); + final store = StoreProvider.of(navigatorKey.currentContext!); final viewModel = widget.viewModel; - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final task = viewModel.task; final state = viewModel.state; final company = state.company; - final client = state.clientState.get(task.clientId); + final client = state.clientState.get(task.clientId)!; final rateLabel = localization.rate + ' • ' + formatNumber( @@ -124,7 +124,7 @@ class _TaskEditDetailsState extends State { context, currencyId: (client.currencyId ?? '').isNotEmpty ? client.currencyId - : company.currencyId); + : company!.currencyId)!; return ScrollableListView( children: [ @@ -159,7 +159,7 @@ class _TaskEditDetailsState extends State { viewModel.onChanged(task.rebuild((b) => b ..projectId = project?.id ..clientId = (project?.clientId ?? '').isNotEmpty - ? project.clientId + ? project!.clientId : task.clientId)); }, onAddPressed: (completer) { diff --git a/lib/ui/task/edit/task_edit_details_vm.dart b/lib/ui/task/edit/task_edit_details_vm.dart index 1a1271d4c..20d006db5 100644 --- a/lib/ui/task/edit/task_edit_details_vm.dart +++ b/lib/ui/task/edit/task_edit_details_vm.dart @@ -18,7 +18,7 @@ import 'package:invoiceninja_flutter/ui/task/edit/task_edit_desktop.dart'; import 'package:invoiceninja_flutter/ui/task/edit/task_edit_details.dart'; class TaskEditDetailsScreen extends StatelessWidget { - const TaskEditDetailsScreen({Key key}) : super(key: key); + const TaskEditDetailsScreen({Key? key}) : super(key: key); static const String route = '/task/edit'; @override @@ -46,22 +46,22 @@ class TaskEditDetailsScreen extends StatelessWidget { class TaskEditDetailsVM { TaskEditDetailsVM({ - @required this.state, - @required this.task, - @required this.taskTimeIndex, - @required this.company, - @required this.onChanged, - @required this.onAddClientPressed, - @required this.onAddProjectPressed, - @required this.onUpdatedTaskTime, - @required this.onRemoveTaskTime, - @required this.isSaving, - @required this.origTask, - @required this.isLoading, + required this.state, + required this.task, + required this.taskTimeIndex, + required this.company, + required this.onChanged, + required this.onAddClientPressed, + required this.onAddProjectPressed, + required this.onUpdatedTaskTime, + required this.onRemoveTaskTime, + required this.isSaving, + required this.origTask, + required this.isLoading, }); factory TaskEditDetailsVM.fromStore(Store store) { - final task = store.state.taskUIState.editing; + final task = store.state.taskUIState.editing!; final state = store.state; return TaskEditDetailsVM( @@ -84,7 +84,7 @@ class TaskEditDetailsVM { cancelCompleter: Completer() ..future.then((_) { store.dispatch(UpdateCurrentRoute(TaskEditDetailsScreen.route)); - })); + } as FutureOr<_> Function(Null))); completer.future.then((SelectableEntity client) { store.dispatch(UpdateCurrentRoute(TaskEditDetailsScreen.route)); }); @@ -109,7 +109,7 @@ class TaskEditDetailsVM { cancelCompleter: Completer() ..future.then((_) { store.dispatch(UpdateCurrentRoute(TaskEditDetailsScreen.route)); - })); + } as FutureOr<_> Function(Null))); completer.future.then((SelectableEntity client) { store.dispatch(UpdateCurrentRoute(TaskEditDetailsScreen.route)); }); @@ -118,12 +118,12 @@ class TaskEditDetailsVM { } final TaskEntity task; - final int taskTimeIndex; - final CompanyEntity company; + final int? taskTimeIndex; + final CompanyEntity? company; final Function(TaskEntity) onChanged; final bool isLoading; final bool isSaving; - final TaskEntity origTask; + final TaskEntity? origTask; final AppState state; final Function(BuildContext context, Completer completer) onAddClientPressed; diff --git a/lib/ui/task/edit/task_edit_times.dart b/lib/ui/task/edit/task_edit_times.dart index 4a0da8b9d..a4e1e0144 100644 --- a/lib/ui/task/edit/task_edit_times.dart +++ b/lib/ui/task/edit/task_edit_times.dart @@ -17,8 +17,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class TaskEditTimes extends StatefulWidget { const TaskEditTimes({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final TaskEditTimesVM viewModel; @@ -28,21 +28,21 @@ class TaskEditTimes extends StatefulWidget { } class _TaskEditTimesState extends State { - TaskTime selectedTaskTime; + TaskTime? selectedTaskTime; - void _showTaskTimeEditor(TaskTime taskTime, BuildContext context) { + void _showTaskTimeEditor(TaskTime? taskTime, BuildContext context) { showDialog( barrierDismissible: false, context: context, builder: (BuildContext context) { final viewModel = widget.viewModel; - final task = viewModel.task; + final task = viewModel.task!; final taskTimes = task.getTaskTimes(); return TimeEditDetails( viewModel: viewModel, taskTime: taskTime, index: taskTimes.indexOf( - taskTimes.firstWhere((time) => time.equalTo(taskTime))), + taskTimes.firstWhere((time) => time!.equalTo(taskTime!))), ); }); } @@ -51,12 +51,12 @@ class _TaskEditTimesState extends State { Widget build(BuildContext context) { final localization = AppLocalization.of(context); final viewModel = widget.viewModel; - final task = viewModel.task; + final task = viewModel.task!; final taskTimes = task.getTaskTimes(); final invalidTimes = task.getInvalidTimeIndices; final taskTime = viewModel.taskTimeIndex != null && - taskTimes.length > viewModel.taskTimeIndex - ? taskTimes[viewModel.taskTimeIndex] + taskTimes.length > viewModel.taskTimeIndex! + ? taskTimes[viewModel.taskTimeIndex!] : null; if (taskTime != null && taskTime != selectedTaskTime) { @@ -67,7 +67,7 @@ class _TaskEditTimesState extends State { } if (task.getTaskTimes().isEmpty) { - return HelpText(localization.clickPlusToAddTime); + return HelpText(localization!.clickPlusToAddTime); } final sortedTaskTimes = task.getTaskTimes().toList().reversed.toList(); @@ -91,14 +91,14 @@ class _TaskEditTimesState extends State { class TimeEditDetails extends StatefulWidget { const TimeEditDetails({ - Key key, - @required this.index, - @required this.taskTime, - @required this.viewModel, + Key? key, + required this.index, + required this.taskTime, + required this.viewModel, }) : super(key: key); final int index; - final TaskTime taskTime; + final TaskTime? taskTime; final TaskEditTimesVM viewModel; @override @@ -106,7 +106,7 @@ class TimeEditDetails extends StatefulWidget { } class TimeEditDetailsState extends State { - TaskTime _taskTime = TaskTime(); + TaskTime? _taskTime = TaskTime(); int _startDateUpdatedAt = 0; int _startTimeUpdatedAt = 0; int _endDateUpdatedAt = 0; @@ -122,13 +122,13 @@ class TimeEditDetailsState extends State { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; - final company = viewModel.company; + final company = viewModel.company!; final showEndDate = company.showTaskEndDate; // Handle the end time being before the start time - final times = _taskTime.asList; + final times = _taskTime!.asList; final duration = Duration(seconds: times[1] - times[0]); return AlertDialog( @@ -140,12 +140,12 @@ class TimeEditDetailsState extends State { key: ValueKey('__date_${_startTimeUpdatedAt}__'), labelText: showEndDate ? localization.startDate : localization.date, - selectedDate: _taskTime.startDate == null + selectedDate: _taskTime!.startDate == null ? null - : convertDateTimeToSqlDate(_taskTime.startDate.toLocal()), + : convertDateTimeToSqlDate(_taskTime!.startDate!.toLocal()), onSelected: (date, _) { setState(() { - _taskTime = _taskTime.copyWithStartDate(date, + _taskTime = _taskTime!.copyWithStartDate(date, syncDates: !showEndDate); viewModel.onUpdatedTaskTime(_taskTime, widget.index); _startDateUpdatedAt = DateTime.now().millisecondsSinceEpoch; @@ -155,10 +155,10 @@ class TimeEditDetailsState extends State { TimePicker( key: ValueKey('__start_time_${_durationUpdateAt}__'), labelText: localization.startTime, - selectedDateTime: _taskTime.startDate, + selectedDateTime: _taskTime!.startDate, onSelected: (timeOfDay) { setState(() { - _taskTime = _taskTime.copyWithStartTime(timeOfDay); + _taskTime = _taskTime!.copyWithStartTime(timeOfDay); viewModel.onUpdatedTaskTime(_taskTime, widget.index); _startTimeUpdatedAt = DateTime.now().millisecondsSinceEpoch; }); @@ -169,12 +169,12 @@ class TimeEditDetailsState extends State { labelText: localization.endDate, key: ValueKey( '__${_startDateUpdatedAt}_${_durationUpdateAt}_${_endTimeUpdatedAt}__'), - selectedDate: _taskTime.endDate == null + selectedDate: _taskTime!.endDate == null ? null - : convertDateTimeToSqlDate(_taskTime.endDate.toLocal()), + : convertDateTimeToSqlDate(_taskTime!.endDate!.toLocal()), onSelected: (date, _) { setState(() { - _taskTime = _taskTime.copyWithEndDate(date); + _taskTime = _taskTime!.copyWithEndDate(date); viewModel.onUpdatedTaskTime(_taskTime, widget.index); _endDateUpdatedAt = DateTime.now().millisecondsSinceEpoch; }); @@ -184,11 +184,11 @@ class TimeEditDetailsState extends State { key: ValueKey( '__end_time_${_endDateUpdatedAt}_${_durationUpdateAt}__'), labelText: localization.endTime, - selectedDateTime: _taskTime.endDate, + selectedDateTime: _taskTime!.endDate, isEndTime: true, onSelected: (timeOfDay) { setState(() { - _taskTime = _taskTime.copyWithEndTime(timeOfDay); + _taskTime = _taskTime!.copyWithEndTime(timeOfDay); viewModel.onUpdatedTaskTime(_taskTime, widget.index); _endTimeUpdatedAt = DateTime.now().millisecondsSinceEpoch; }); @@ -200,34 +200,34 @@ class TimeEditDetailsState extends State { labelText: localization.duration, onSelected: (Duration duration) { setState(() { - _taskTime = _taskTime.copyWithDuration(duration); + _taskTime = _taskTime!.copyWithDuration(duration); viewModel.onUpdatedTaskTime(_taskTime, widget.index); _durationUpdateAt = DateTime.now().millisecondsSinceEpoch; }); }, selectedDuration: - (_taskTime.startDate == null || _taskTime.endDate == null) + (_taskTime!.startDate == null || _taskTime!.endDate == null) ? null : duration, ), - if (company.settings.showTaskItemDescription) + if (company.settings.showTaskItemDescription!) GrowableFormField( label: localization.description, - initialValue: _taskTime.description, + initialValue: _taskTime!.description, onChanged: (value) { - _taskTime = _taskTime.rebuild((b) => b..description = value); + _taskTime = _taskTime!.rebuild((b) => b..description = value); viewModel.onUpdatedTaskTime(_taskTime, widget.index); }, ), - if (company.settings.allowBillableTaskItems) + if (company.settings.allowBillableTaskItems!) Padding( padding: const EdgeInsets.only(top: 10), child: SwitchListTile( - title: Text(localization.billable), - value: _taskTime.isBillable, + title: Text(localization.billable!), + value: _taskTime!.isBillable, onChanged: (value) { _taskTime = - _taskTime.rebuild((b) => b..isBillable = value); + _taskTime!.rebuild((b) => b..isBillable = value); viewModel.onUpdatedTaskTime(_taskTime, widget.index); setState(() {}); }), diff --git a/lib/ui/task/edit/task_edit_times_vm.dart b/lib/ui/task/edit/task_edit_times_vm.dart index 597460ef6..f0cd0796a 100644 --- a/lib/ui/task/edit/task_edit_times_vm.dart +++ b/lib/ui/task/edit/task_edit_times_vm.dart @@ -12,7 +12,7 @@ import 'package:invoiceninja_flutter/redux/task/task_actions.dart'; import 'package:invoiceninja_flutter/ui/task/edit/task_edit_times.dart'; class TaskEditTimesScreen extends StatelessWidget { - const TaskEditTimesScreen({Key key}) : super(key: key); + const TaskEditTimesScreen({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -31,13 +31,13 @@ class TaskEditTimesScreen extends StatelessWidget { class TaskEditTimesVM { TaskEditTimesVM({ - @required this.company, - @required this.task, - @required this.taskTimeIndex, - @required this.onRemoveTaskTimePressed, - @required this.onDoneTaskTimePressed, - @required this.onUpdatedTaskTime, - @required this.clearSelectedTaskTime, + required this.company, + required this.task, + required this.taskTimeIndex, + required this.onRemoveTaskTimePressed, + required this.onDoneTaskTimePressed, + required this.onUpdatedTaskTime, + required this.clearSelectedTaskTime, }); factory TaskEditTimesVM.fromStore(Store store) { @@ -59,11 +59,11 @@ class TaskEditTimesVM { ); } - final CompanyEntity company; - final TaskEntity task; - final int taskTimeIndex; + final CompanyEntity? company; + final TaskEntity? task; + final int? taskTimeIndex; final Function(int) onRemoveTaskTimePressed; final Function onDoneTaskTimePressed; - final Function(TaskTime, int) onUpdatedTaskTime; + final Function(TaskTime?, int) onUpdatedTaskTime; final Function clearSelectedTaskTime; } diff --git a/lib/ui/task/edit/task_edit_vm.dart b/lib/ui/task/edit/task_edit_vm.dart index e059767dc..242b91bac 100644 --- a/lib/ui/task/edit/task_edit_vm.dart +++ b/lib/ui/task/edit/task_edit_vm.dart @@ -22,7 +22,7 @@ import 'package:invoiceninja_flutter/ui/task/view/task_view_vm.dart'; import 'package:invoiceninja_flutter/utils/completers.dart'; class TaskEditScreen extends StatelessWidget { - const TaskEditScreen({Key key}) : super(key: key); + const TaskEditScreen({Key? key}) : super(key: key); static const String route = '/task/edit'; @override @@ -43,20 +43,20 @@ class TaskEditScreen extends StatelessWidget { class TaskEditVM { TaskEditVM({ - @required this.state, - @required this.task, - @required this.onFabPressed, - @required this.taskTimeIndex, - @required this.company, - @required this.isSaving, - @required this.origTask, - @required this.onSavePressed, - @required this.onCancelPressed, - @required this.isLoading, + required this.state, + required this.task, + required this.onFabPressed, + required this.taskTimeIndex, + required this.company, + required this.isSaving, + required this.origTask, + required this.onSavePressed, + required this.onCancelPressed, + required this.isLoading, }); factory TaskEditVM.fromStore(Store store) { - final task = store.state.taskUIState.editing; + final task = store.state.taskUIState.editing!; final state = store.state; return TaskEditVM( @@ -76,22 +76,22 @@ class TaskEditVM { final taskTimes = task.getTaskTimes(); store.dispatch(UpdateTaskTime( index: taskTimes.length - 1, - taskTime: taskTimes.firstWhere((time) => time.isRunning).stop)); + taskTime: taskTimes.firstWhere((time) => time!.isRunning)!.stop)); } else { store.dispatch(AddTaskTime(TaskTime())); } }, - onSavePressed: (BuildContext context, [EntityAction action]) { + onSavePressed: (BuildContext context, [EntityAction? action]) { Debouncer.runOnComplete(() { - final task = store.state.taskUIState.editing; + final task = store.state.taskUIState.editing!; final origTask = state.taskState.get(task.id); final localization = navigatorKey.localization; final navigator = navigatorKey.currentState; if (!task.areTimesValid) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { - return ErrorDialog(localization.taskErrors); + return ErrorDialog(localization!.taskErrors); }); return null; } @@ -110,19 +110,19 @@ class TaskEditVM { )); return completer.future.then((savedTask) { showToast(task.isNew - ? localization.createdTask - : localization.updatedTask); + ? localization!.createdTask + : localization!.updatedTask); - if (origTask.statusId != savedTask.statusId) { + if (origTask!.statusId != savedTask.statusId) { store.dispatch(UpdateKanban()); } if (state.prefState.isMobile) { store.dispatch(UpdateCurrentRoute(TaskViewScreen.route)); if (task.isNew) { - navigator.pushReplacementNamed(TaskViewScreen.route); + navigator!.pushReplacementNamed(TaskViewScreen.route); } else { - navigator.pop(savedTask); + navigator!.pop(savedTask); } } else { if (!state.prefState.isPreviewVisible) { @@ -145,7 +145,7 @@ class TaskEditVM { } }).catchError((Object error) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { return ErrorDialog(error); }); @@ -157,13 +157,13 @@ class TaskEditVM { } final TaskEntity task; - final int taskTimeIndex; - final CompanyEntity company; - final Function(BuildContext, [EntityAction]) onSavePressed; - final Function(BuildContext) onCancelPressed; + final int? taskTimeIndex; + final CompanyEntity? company; + final Function(BuildContext, [EntityAction?]) onSavePressed; + final Function(BuildContext?) onCancelPressed; final Function onFabPressed; final bool isLoading; final bool isSaving; - final TaskEntity origTask; + final TaskEntity? origTask; final AppState state; } diff --git a/lib/ui/task/kanban/kanban_card.dart b/lib/ui/task/kanban/kanban_card.dart index 8d2dc639f..39d3e2cf2 100644 --- a/lib/ui/task/kanban/kanban_card.dart +++ b/lib/ui/task/kanban/kanban_card.dart @@ -24,16 +24,16 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class KanbanTaskCard extends StatefulWidget { const KanbanTaskCard({ - @required this.task, - @required this.onSavePressed, - @required this.onCancelPressed, - @required this.isDragging, - @required this.isSaving, + required this.task, + required this.onSavePressed, + required this.onCancelPressed, + required this.isDragging, + required this.isSaving, this.isCorrectOrder = true, this.isSelected = false, }); - final TaskEntity task; + final TaskEntity? task; final Function(Completer, String) onSavePressed; final Function() onCancelPressed; final bool isCorrectOrder; @@ -54,7 +54,7 @@ class _KanbanTaskCardState extends State { void initState() { super.initState(); - final task = widget.task; + final task = widget.task!; _description = task.description; _isEditing = task.isNew; } @@ -64,19 +64,19 @@ class _KanbanTaskCardState extends State { final localization = AppLocalization.of(context); final store = StoreProvider.of(context); final state = store.state; - final task = widget.task; + final task = widget.task!; final project = state.projectState.get(task.projectId); final client = state.clientState.get(task.clientId); - final textColor = Theme.of(context).textTheme.bodyLarge.color; + final textColor = Theme.of(context).textTheme.bodyLarge!.color; var color = Colors.grey; if (task.projectId.isNotEmpty) { final projectIndex = state.projectState.list.indexOf(task.projectId); - color = getColorByIndex(projectIndex); + color = getColorByIndex(projectIndex) as MaterialColor; } final isDragging = - context.findAncestorStateOfType().isDragging; + context.findAncestorStateOfType()!.isDragging; if (_isEditing && !isDragging) { return Card( @@ -105,7 +105,7 @@ class _KanbanTaskCardState extends State { } }); }, - label: localization.cancel, + label: localization!.cancel, ), Padding( padding: const EdgeInsets.only(left: 8), @@ -135,10 +135,10 @@ class _KanbanTaskCardState extends State { } final startLabel = task.isRunning - ? localization.stop + ? localization!.stop : task.getTaskTimes().isEmpty - ? localization.start - : localization.resume; + ? localization!.start + : localization!.resume; return MouseRegion( onHover: (event) { @@ -155,7 +155,7 @@ class _KanbanTaskCardState extends State { shape: RoundedRectangleBorder( side: BorderSide( color: widget.isSelected && state.prefState.isDesktop - ? state.accentColor + ? state.accentColor! : Colors.transparent, width: 1), borderRadius: BorderRadius.circular(kBorderRadius), @@ -269,14 +269,14 @@ class _KanbanTaskCardState extends State { child: LiveText( () { return formatDuration(task.calculateDuration()) + - (client.isOld + (client!.isOld ? ' • ' + client.displayName : '') + - (project.isOld ? ' • ' + project.name : ''); + (project!.isOld ? ' • ' + project.name : ''); }, style: TextStyle( fontSize: 12, - color: textColor.withOpacity(kLighterOpacity), + color: textColor!.withOpacity(kLighterOpacity), ), ), ), @@ -297,7 +297,7 @@ class _KanbanTaskCardState extends State { startLabel, ] .map((value) => PopupMenuItem( - child: Text(localization.lookup(value)), + child: Text(localization.lookup(value)!), value: value, )) .toList(); diff --git a/lib/ui/task/kanban/kanban_status.dart b/lib/ui/task/kanban/kanban_status.dart index 76258f074..e595b679d 100644 --- a/lib/ui/task/kanban/kanban_status.dart +++ b/lib/ui/task/kanban/kanban_status.dart @@ -13,10 +13,10 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class KanbanStatusCard extends StatefulWidget { const KanbanStatusCard({ - @required this.status, - @required this.onSavePressed, - @required this.isCorrectOrder, - @required this.isSaving, + required this.status, + required this.onSavePressed, + required this.isCorrectOrder, + required this.isSaving, }); final TaskStatusEntity status; @@ -41,7 +41,7 @@ class _KanbanStatusCardState extends State { } void _onSavePressed() { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final completer = snackBarCompleter( context, localization.updatedTaskStatus); completer.future.then((value) { @@ -82,7 +82,7 @@ class _KanbanStatusCardState extends State { _isEditing = false; }); }, - label: localization.cancel, + label: localization!.cancel, ), Padding( padding: const EdgeInsets.only(left: 8), @@ -104,7 +104,7 @@ class _KanbanStatusCardState extends State { child: Opacity( opacity: widget.isCorrectOrder ? 1 : .7, child: Text( - status.isNew ? localization.unassigned : status.name, + status.isNew ? localization!.unassigned! : status.name, style: TextStyle(fontWeight: FontWeight.w600), ), ), diff --git a/lib/ui/task/kanban/kanban_view.dart b/lib/ui/task/kanban/kanban_view.dart index cd344103b..87c45a1a9 100644 --- a/lib/ui/task/kanban/kanban_view.dart +++ b/lib/ui/task/kanban/kanban_view.dart @@ -19,8 +19,8 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class KanbanView extends StatefulWidget { const KanbanView({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final KanbanVM viewModel; @@ -32,9 +32,9 @@ class KanbanView extends StatefulWidget { class KanbanViewState extends State { final _boardViewController = new BoardViewController(); - List _statuses; - TaskEntity _newTask; - Map> _tasks; + List? _statuses; + TaskEntity? _newTask; + Map>? _tasks; bool isDragging = false; @override @@ -60,19 +60,19 @@ class KanbanViewState extends State { _tasks = {}; viewModel.taskList.forEach((taskId) { - final task = state.taskState.map[taskId]; - final status = state.taskStatusState.get(task.statusId); + final task = state.taskState.map[taskId]!; + final status = state.taskStatusState.get(task.statusId)!; final statusId = status.isNew ? '' : status.id; - if (!_tasks.containsKey(statusId)) { - _tasks[statusId] = []; + if (!_tasks!.containsKey(statusId)) { + _tasks![statusId] = []; } - _tasks[statusId].add(task.id); + _tasks![statusId]!.add(task.id); }); - _tasks.forEach((key, value) { - _tasks[key].sort((taskIdA, taskIdB) { - final taskA = state.taskState.get(taskIdA); - final taskB = state.taskState.get(taskIdB); + _tasks!.forEach((key, value) { + _tasks![key]!.sort((taskIdA, taskIdB) { + final taskA = state.taskState.get(taskIdA)!; + final taskB = state.taskState.get(taskIdB)!; if (taskA.statusOrder == taskB.statusOrder) { return taskB.updatedAt.compareTo(taskA.updatedAt); } else { @@ -118,7 +118,7 @@ class KanbanViewState extends State { */ void _onBoardChanged() { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final completer = snackBarCompleter(context, localization.updatedTaskStatus); completer.future.catchError((Object error) { @@ -135,12 +135,12 @@ class KanbanViewState extends State { ? Theme.of(context).cardColor : Colors.grey.shade300; - final filteredStatusIds = _statuses.where((statusId) { - return statusId.isNotEmpty || _tasks.containsKey(statusId); + final filteredStatusIds = _statuses!.where((statusId) { + return statusId.isNotEmpty || _tasks!.containsKey(statusId); }).toList(); final boardList = filteredStatusIds.map((statusId) { - final status = state.taskStatusState.get(statusId); + final status = state.taskStatusState.get(statusId)!; final hasCorectOrder = statusId.isEmpty || status.statusOrder == filteredStatusIds.indexOf(status.id); @@ -154,12 +154,12 @@ class KanbanViewState extends State { } setState(() { - final status = _statuses[startIndex]; - _statuses.removeAt(startIndex); + final status = _statuses![startIndex!]; + _statuses!.removeAt(startIndex); _statuses = [ - ..._statuses.sublist(0, endIndex), + ..._statuses!.sublist(0, endIndex), status, - ..._statuses.sublist(endIndex), + ..._statuses!.sublist(endIndex!), ]; }); @@ -172,7 +172,7 @@ class KanbanViewState extends State { isSaving: state.isSaving, isCorrectOrder: hasCorectOrder, onSavePressed: (completer, name) { - final statusOrder = _statuses.indexOf(statusId); + final statusOrder = _statuses!.indexOf(statusId); widget.viewModel.onSaveStatusPressed( completer, statusId, name, statusOrder); }, @@ -187,10 +187,10 @@ class KanbanViewState extends State { isSaving: state.isSaving, isDragging: isDragging, onSavePressed: (completer, description) { - final statusOrder = _tasks[status.id]?.length ?? 0; + final statusOrder = _tasks![status.id]?.length ?? 0; widget.viewModel.onSaveTaskPressed( completer, - _newTask.id, + _newTask!.id, status.id, description, statusOrder, @@ -205,7 +205,7 @@ class KanbanViewState extends State { : Padding( padding: const EdgeInsets.only(left: 8, top: 2, bottom: 4), child: TextButton( - child: Text(AppLocalization.of(context).newTask), + child: Text(AppLocalization.of(context)!.newTask), onPressed: () { setState(() { _newTask = TaskEntity(state: widget.viewModel.state) @@ -215,12 +215,12 @@ class KanbanViewState extends State { ), ), ), - items: (_tasks[status.id] ?? []) + items: (_tasks![status.id] ?? []) .map((taskId) => widget.viewModel.state.taskState.get(taskId)) .map( (task) { final isVisible = - widget.viewModel.filteredTaskList.contains(task.id) || + widget.viewModel.filteredTaskList.contains(task!.id) || task.isNew; return BoardItem( draggable: task.isOld, @@ -235,10 +235,10 @@ class KanbanViewState extends State { : state.taskUIState.selectedId) == task.id, isCorrectOrder: (task.statusOrder == - _tasks[status.id].indexOf(task.id)) && + _tasks![status.id]!.indexOf(task.id)) && task.statusId == statusId, onSavePressed: (completer, description) { - final statusOrder = _tasks[status.id].indexOf(task.id); + final statusOrder = _tasks![status.id]!.indexOf(task.id); widget.viewModel.onSaveTaskPressed( completer, task.id, @@ -265,10 +265,10 @@ class KanbanViewState extends State { }, */ onDropItem: ( - int listIndex, - int itemIndex, - int oldListIndex, - int oldItemIndex, + int? listIndex, + int? itemIndex, + int? oldListIndex, + int? oldItemIndex, BoardItemState state, ) { setState(() => isDragging = false); @@ -277,24 +277,24 @@ class KanbanViewState extends State { return; } - final oldStatusId = _statuses[oldListIndex]; - final newStatusId = _statuses[listIndex]; - final taskId = _tasks[status.id][oldItemIndex]; + final oldStatusId = _statuses![oldListIndex!]; + final newStatusId = _statuses![listIndex!]; + final taskId = _tasks![status.id]![oldItemIndex!]; setState(() { - if (_tasks.containsKey(oldStatusId) && - _tasks[oldStatusId].contains(taskId)) { - _tasks[oldStatusId].remove(taskId); + if (_tasks!.containsKey(oldStatusId) && + _tasks![oldStatusId]!.contains(taskId)) { + _tasks![oldStatusId]!.remove(taskId); } - if (!_tasks.containsKey(newStatusId)) { - _tasks[newStatusId] = []; + if (!_tasks!.containsKey(newStatusId)) { + _tasks![newStatusId] = []; } - _tasks[newStatusId] = [ - ..._tasks[newStatusId].sublist(0, itemIndex), + _tasks![newStatusId] = [ + ..._tasks![newStatusId]!.sublist(0, itemIndex), taskId, - ..._tasks[newStatusId].sublist(itemIndex), + ..._tasks![newStatusId]!.sublist(itemIndex!), ]; }); diff --git a/lib/ui/task/kanban/kanban_view_vm.dart b/lib/ui/task/kanban/kanban_view_vm.dart index d144e4ce2..524a7325a 100644 --- a/lib/ui/task/kanban/kanban_view_vm.dart +++ b/lib/ui/task/kanban/kanban_view_vm.dart @@ -17,7 +17,7 @@ import 'package:invoiceninja_flutter/redux/task_status/task_status_actions.dart' import 'package:invoiceninja_flutter/ui/task/kanban/kanban_view.dart'; class KanbanViewBuilder extends StatefulWidget { - const KanbanViewBuilder({Key key}) : super(key: key); + const KanbanViewBuilder({Key? key}) : super(key: key); @override _KanbanViewBuilderState createState() => _KanbanViewBuilderState(); @@ -30,7 +30,7 @@ class _KanbanViewBuilderState extends State { converter: KanbanVM.fromStore, builder: (context, viewModel) { final state = viewModel.state; - final company = state.company; + final company = state.company!; return KanbanView( viewModel: viewModel, key: ValueKey( @@ -43,12 +43,12 @@ class _KanbanViewBuilderState extends State { class KanbanVM { KanbanVM({ - @required this.state, - @required this.taskList, - @required this.filteredTaskList, - @required this.onSaveTaskPressed, - @required this.onSaveStatusPressed, - @required this.onBoardChanged, + required this.state, + required this.taskList, + required this.filteredTaskList, + required this.onSaveTaskPressed, + required this.onSaveStatusPressed, + required this.onBoardChanged, }); static KanbanVM fromStore(Store store) { @@ -84,7 +84,7 @@ class KanbanVM { )); }, onSaveStatusPressed: (completer, statusId, name, statusOrder) { - TaskStatusEntity status = state.taskStatusState.get(statusId); + TaskStatusEntity status = state.taskStatusState.get(statusId)!; status = status.rebuild((b) => b ..name = name ..statusOrder = status.isNew ? statusOrder : status.statusOrder); @@ -96,7 +96,7 @@ class KanbanVM { }, onSaveTaskPressed: (completer, taskId, statusId, description, statusOrder) { - TaskEntity task = state.taskState.get(taskId); + TaskEntity task = state.taskState.get(taskId)!; task = task.rebuild((b) => b ..description = description ..statusOrder = task.isNew ? statusOrder : task.statusOrder @@ -106,10 +106,10 @@ class KanbanVM { if (uiState.filterEntityType == EntityType.client) { task = task.rebuild((b) => b..clientId = uiState.filterEntityId); } else if (uiState.filterEntityType == EntityType.project) { - final project = state.projectState.get(uiState.filterEntityId); + final project = state.projectState.get(uiState.filterEntityId!); task = task.rebuild((b) => b ..projectId = uiState.filterEntityId - ..clientId = project.clientId); + ..clientId = project!.clientId); } else if (uiState.filterEntityType == EntityType.user) { task = task.rebuild((b) => b..assignedUserId = uiState.filterEntityId); @@ -128,7 +128,7 @@ class KanbanVM { final AppState state; final List taskList; final List filteredTaskList; - final Function(Completer, List, Map>) + final Function(Completer, List?, Map>?) onBoardChanged; final Function(Completer, String, String, String, int) onSaveTaskPressed; diff --git a/lib/ui/task/task_list_item.dart b/lib/ui/task/task_list_item.dart index 3eafb727c..af94f89f0 100644 --- a/lib/ui/task/task_list_item.dart +++ b/lib/ui/task/task_list_item.dart @@ -23,7 +23,7 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class TaskListItem extends StatelessWidget { const TaskListItem({ - @required this.task, + required this.task, this.filter, this.onTap, this.onCheckboxChanged, @@ -32,10 +32,10 @@ class TaskListItem extends StatelessWidget { this.isChecked = false, }); - final Function(bool) onCheckboxChanged; - final GestureTapCallback onTap; - final TaskEntity task; - final String filter; + final Function(bool?)? onCheckboxChanged; + final GestureTapCallback? onTap; + final TaskEntity? task; + final String? filter; final bool showCheckbox; final bool isDismissible; final bool isChecked; @@ -46,62 +46,62 @@ class TaskListItem extends StatelessWidget { final state = store.state; final uiState = state.uiState; final taskUIState = uiState.taskUIState; - final client = state.clientState.get(task.clientId); - final filterMatch = filter != null && filter.isNotEmpty - ? (task.matchesFilterValue(filter) ?? client.matchesFilterValue(filter)) + final client = state.clientState.get(task!.clientId)!; + final filterMatch = filter != null && filter!.isNotEmpty + ? (task!.matchesFilterValue(filter) ?? client.matchesFilterValue(filter)) : null; final listUIState = taskUIState.listUIState; final isInMultiselect = listUIState.isInMultiselect(); final showCheckbox = onCheckboxChanged != null || isInMultiselect; final isChecked = isDismissible - ? (isInMultiselect && listUIState.isSelected(task.id)) + ? (isInMultiselect && listUIState.isSelected(task!.id)) : this.isChecked; final textStyle = TextStyle(fontSize: 16); - final textColor = Theme.of(context).textTheme.bodyLarge.color; + final textColor = Theme.of(context).textTheme.bodyLarge!.color; final localization = AppLocalization.of(context); - final status = state.taskStatusState.get(task.statusId); - final statusLabel = task.isInvoiced - ? localization.invoiced - : task.isRunning - ? localization.running - : status.name.isNotEmpty + final status = state.taskStatusState.get(task!.statusId); + final statusLabel = task!.isInvoiced + ? localization!.invoiced + : task!.isRunning + ? localization!.running + : status!.name.isNotEmpty ? status.name - : localization.logged; - final statusColor = task.isInvoiced - ? state.prefState.colorThemeModel.colorSuccess - : task.isRunning - ? state.prefState.colorThemeModel.colorInfo - : status.color.isNotEmpty && status.color != '#fff' + : localization!.logged; + final statusColor = task!.isInvoiced + ? state.prefState.colorThemeModel!.colorSuccess + : task!.isRunning + ? state.prefState.colorThemeModel!.colorInfo + : status!.color.isNotEmpty && status.color != '#fff' ? convertHexStringToColor(status.color) : TaskStatusColors(state.prefState.colorThemeModel) - .colors[task.calculateStatusId]; + .colors[task!.calculateStatusId]; String subtitle = client.displayName; - if (task.projectId.isNotEmpty) { + if (task!.projectId.isNotEmpty) { subtitle += - ' • ' + state.projectState.get(task.projectId).listDisplayName; + ' • ' + state.projectState.get(task!.projectId)!.listDisplayName; } final duration = LiveText(() { - return formatNumber(task.listDisplayAmount, context, + return formatNumber(task!.listDisplayAmount, context, formatNumberType: FormatNumberType.duration); }, style: textStyle); final startStopButton = !isDismissible ? SizedBox() : IconButton( - icon: task.isInvoiced + icon: task!.isInvoiced ? SizedBox() : Icon( - getEntityActionIcon(task.isRunning + getEntityActionIcon(task!.isRunning ? EntityAction.stop : EntityAction.start), ), - onPressed: task.isInvoiced + onPressed: task!.isInvoiced ? null : () => handleEntityAction(task, - task.isRunning ? EntityAction.stop : EntityAction.start), + task!.isRunning ? EntityAction.stop : EntityAction.start), visualDensity: VisualDensity.compact, ); @@ -109,9 +109,9 @@ class TaskListItem extends StatelessWidget { showMultiselect: this.showCheckbox, isDismissible: isDismissible, isSelected: isDesktop(context) && - task.id == + task!.id == (uiState.isEditing - ? taskUIState.editing.id + ? taskUIState.editing!.id : taskUIState.selectedId), userCompany: store.state.userCompany, entity: task, @@ -120,9 +120,9 @@ class TaskListItem extends StatelessWidget { return constraints.maxWidth > kTableListWidthCutoff ? InkWell( onTap: () => - onTap != null ? onTap() : selectEntity(entity: task), + onTap != null ? onTap!() : selectEntity(entity: task!), onLongPress: () => selectEntity( - entity: task, + entity: task!, longPress: true, ), child: Padding( @@ -146,14 +146,14 @@ class TaskListItem extends StatelessWidget { materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, onChanged: (value) => - onCheckboxChanged(value), + onCheckboxChanged!(value), activeColor: Theme.of(context).colorScheme.secondary, ), ), ) : ActionMenuButton( - entityActions: task.getActions( + entityActions: task!.getActions( userCompany: state.userCompany, includeEdit: true, ), @@ -169,11 +169,11 @@ class TaskListItem extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - task.number, + task!.number, style: textStyle, overflow: TextOverflow.ellipsis, ), - if (!task.isActive) EntityStateLabel(task) + if (!task!.isActive) EntityStateLabel(task) ], ), ), @@ -183,21 +183,21 @@ class TaskListItem extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - task.description + - (task.documents.isNotEmpty ? ' 📎' : ''), + task!.description + + (task!.documents.isNotEmpty ? ' 📎' : ''), maxLines: 1, overflow: TextOverflow.ellipsis, style: textStyle), Text( - subtitle ?? filterMatch, + subtitle ?? filterMatch!, maxLines: 3, overflow: TextOverflow.ellipsis, style: Theme.of(context) .textTheme - .titleSmall + .titleSmall! .copyWith( color: - textColor.withOpacity(kLighterOpacity), + textColor!.withOpacity(kLighterOpacity), ), ), ], @@ -215,8 +215,8 @@ class TaskListItem extends StatelessWidget { ) : ListTile( onTap: () => - onTap != null ? onTap() : selectEntity(entity: task), - onLongPress: () => selectEntity(entity: task, longPress: true), + onTap != null ? onTap!() : selectEntity(entity: task!), + onLongPress: () => selectEntity(entity: task!, longPress: true), leading: showCheckbox ? IgnorePointer( ignoring: listUIState.isInMultiselect(), @@ -224,7 +224,7 @@ class TaskListItem extends StatelessWidget { value: isChecked, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, - onChanged: (value) => onCheckboxChanged(value), + onChanged: (value) => onCheckboxChanged!(value), activeColor: Theme.of(context).colorScheme.secondary, ), ) @@ -236,10 +236,10 @@ class TaskListItem extends StatelessWidget { children: [ Expanded( child: Text( - (task.description.isEmpty - ? task.number - : task.description) + - (task.documents.isNotEmpty ? ' 📎' : ''), + (task!.description.isEmpty + ? task!.number + : task!.description) + + (task!.documents.isNotEmpty ? ' 📎' : ''), maxLines: 1, overflow: TextOverflow.ellipsis, style: Theme.of(context).textTheme.titleMedium, diff --git a/lib/ui/task/task_list_vm.dart b/lib/ui/task/task_list_vm.dart index 6b397b235..ff6be864e 100644 --- a/lib/ui/task/task_list_vm.dart +++ b/lib/ui/task/task_list_vm.dart @@ -24,7 +24,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class TaskListBuilder extends StatelessWidget { - const TaskListBuilder({Key key}) : super(key: key); + const TaskListBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -56,18 +56,18 @@ class TaskListBuilder extends StatelessWidget { class TaskListVM { TaskListVM({ - @required this.state, - @required this.user, - @required this.taskList, - @required this.taskMap, - @required this.clientMap, - @required this.filter, - @required this.isLoading, - @required this.listState, - @required this.onRefreshed, - @required this.tableColumns, - @required this.onSortColumn, - @required this.onClearMultielsect, + required this.state, + required this.user, + required this.taskList, + required this.taskMap, + required this.clientMap, + required this.filter, + required this.isLoading, + required this.listState, + required this.onRefreshed, + required this.tableColumns, + required this.onSortColumn, + required this.onClearMultielsect, }); static TaskListVM fromStore(Store store) { @@ -76,7 +76,7 @@ class TaskListVM { return Future(null); } final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(RefreshData(completer: completer)); return completer.future; } @@ -104,19 +104,19 @@ class TaskListVM { onSortColumn: (field) => store.dispatch(SortTasks(field)), onRefreshed: (context) => _handleRefresh(context), tableColumns: - state.userCompany.settings?.getTableColumns(EntityType.task) ?? + state.userCompany!.settings?.getTableColumns(EntityType.task) ?? TaskPresenter.getDefaultTableFields(state.userCompany), onClearMultielsect: () => store.dispatch(ClearTaskMultiselect()), ); } final AppState state; - final UserEntity user; + final UserEntity? user; final List taskList; - final BuiltMap taskMap; - final BuiltMap clientMap; + final BuiltMap taskMap; + final BuiltMap clientMap; final ListUIState listState; - final String filter; + final String? filter; final bool isLoading; final Function(BuildContext) onRefreshed; final List tableColumns; diff --git a/lib/ui/task/task_presenter.dart b/lib/ui/task/task_presenter.dart index 8d1a5695a..78b7479ba 100644 --- a/lib/ui/task/task_presenter.dart +++ b/lib/ui/task/task_presenter.dart @@ -15,7 +15,7 @@ import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class TaskPresenter extends EntityPresenter { - static List getDefaultTableFields(UserCompanyEntity userCompany) { + static List getDefaultTableFields(UserCompanyEntity? userCompany) { return [ TaskFields.status, TaskFields.number, @@ -27,7 +27,7 @@ class TaskPresenter extends EntityPresenter { ]; } - static List getAllTableFields(UserCompanyEntity userCompany) { + static List getAllTableFields(UserCompanyEntity? userCompany) { return [ ...getDefaultTableFields(userCompany), ...EntityPresenter.getBaseFields(), @@ -51,7 +51,7 @@ class TaskPresenter extends EntityPresenter { } @override - Widget getField({String field, BuildContext context}) { + Widget getField({String? field, required BuildContext context}) { final localization = AppLocalization.of(context); final task = entity as TaskEntity; final store = StoreProvider.of(context); @@ -64,16 +64,16 @@ class TaskPresenter extends EntityPresenter { case TaskFields.client: return LinkTextRelatedEntity(entity: client, relation: task); case TaskFields.rate: - return Text(formatNumber(task.rate, context, clientId: task.clientId)); + return Text(formatNumber(task.rate, context, clientId: task.clientId)!); case TaskFields.calculatedRate: final rate = taskRateSelector( task: task, client: client, company: state.company, project: state.projectState.get(task.projectId), - group: state.groupState.get(client.groupId), + group: state.groupState.get(client!.groupId), ); - return Text(formatNumber(rate, context, clientId: task.clientId)); + return Text(formatNumber(rate, context, clientId: task.clientId)!); case TaskFields.project: final project = state.projectState.get(task.projectId); return LinkTextRelatedEntity(entity: project, relation: task); @@ -91,32 +91,32 @@ class TaskPresenter extends EntityPresenter { final taskTime = taskTimes.isEmpty ? null : taskTimes.first; return Text(taskTime == null ? '' - : formatDate(taskTime.startDate.toIso8601String(), context)); + : formatDate(taskTime.startDate!.toIso8601String(), context)); case TaskFields.timeLog: final notes = []; task .getTaskTimes() - .where((time) => time.startDate != null && time.endDate != null) + .where((time) => time!.startDate != null && time.endDate != null) .forEach((time) { - final start = formatDate(time.startDate.toIso8601String(), context, + final start = formatDate(time!.startDate!.toIso8601String(), context, showTime: true, showDate: true); - final end = formatDate(time.endDate.toIso8601String(), context, + final end = formatDate(time.endDate!.toIso8601String(), context, showTime: true, showDate: false); notes.add('$start - $end'); }); return Text(notes.join('\n')); case TaskFields.isRunning: - return Text(task.isRunning ? localization.yes : localization.no); + return Text(task.isRunning ? localization!.yes : localization!.no); case TaskFields.isInvoiced: - return Text(task.isInvoiced ? localization.yes : localization.no); + return Text(task.isInvoiced ? localization!.yes : localization!.no); case TaskFields.customValue1: - return Text(presentCustomField(context, task.customValue1)); + return Text(presentCustomField(context, task.customValue1)!); case TaskFields.customValue2: - return Text(presentCustomField(context, task.customValue2)); + return Text(presentCustomField(context, task.customValue2)!); case TaskFields.customValue3: - return Text(presentCustomField(context, task.customValue3)); + return Text(presentCustomField(context, task.customValue3)!); case TaskFields.customValue4: - return Text(presentCustomField(context, task.customValue4)); + return Text(presentCustomField(context, task.customValue4)!); case TaskFields.documents: return Text('${task.documents.length}'); case TaskFields.amount: @@ -128,11 +128,11 @@ class TaskPresenter extends EntityPresenter { client: state.clientState.map[task.clientId], task: task, group: state.groupState.map[client?.groupId], - ), + )!, ), context, clientId: client?.id, - )); + )!); } return super.getField(field: field, context: context); diff --git a/lib/ui/task/task_screen.dart b/lib/ui/task/task_screen.dart index 06feb6e7f..15569c31a 100644 --- a/lib/ui/task/task_screen.dart +++ b/lib/ui/task/task_screen.dart @@ -26,8 +26,8 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class TaskScreen extends StatelessWidget { const TaskScreen({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); static const String route = '/task'; @@ -38,25 +38,25 @@ class TaskScreen extends StatelessWidget { Widget build(BuildContext context) { final store = StoreProvider.of(context); final state = store.state; - final company = store.state.company; + final company = store.state.company!; final userCompany = store.state.userCompany; final localization = AppLocalization.of(context); final statuses = [ TaskStatusEntity().rebuild((b) => b ..id = kTaskStatusLogged - ..name = localization.logged), + ..name = localization!.logged), TaskStatusEntity().rebuild((b) => b ..id = kTaskStatusRunning - ..name = localization.running), + ..name = localization!.running), if (!state.prefState.showKanban) TaskStatusEntity().rebuild((b) => b ..id = kTaskStatusInvoiced - ..name = localization.invoiced), + ..name = localization!.invoiced), for (var statusId in memoizedSortedActiveTaskStatusIds( state.taskStatusState.list, state.taskStatusState.map)) TaskStatusEntity().rebuild((b) => b ..id = statusId - ..name = state.taskStatusState.map[statusId].name), + ..name = state.taskStatusState.map[statusId]!.name), ]; return ListScaffold( @@ -154,7 +154,7 @@ class TaskScreen extends StatelessWidget { }, ), floatingActionButton: state.prefState.isMenuFloated && - userCompany.canCreate(EntityType.task) + userCompany!.canCreate(EntityType.task) ? FloatingActionButton( heroTag: 'task_fab', backgroundColor: Theme.of(context).primaryColorDark, @@ -166,7 +166,7 @@ class TaskScreen extends StatelessWidget { Icons.add, color: Colors.white, ), - tooltip: localization.newTask, + tooltip: localization!.newTask, ) : null, ); diff --git a/lib/ui/task/task_screen_vm.dart b/lib/ui/task/task_screen_vm.dart index d68ad42c8..a80ec5658 100644 --- a/lib/ui/task/task_screen_vm.dart +++ b/lib/ui/task/task_screen_vm.dart @@ -14,7 +14,7 @@ import 'package:invoiceninja_flutter/redux/task/task_selectors.dart'; import 'task_screen.dart'; class TaskScreenBuilder extends StatelessWidget { - const TaskScreenBuilder({Key key}) : super(key: key); + const TaskScreenBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -31,16 +31,16 @@ class TaskScreenBuilder extends StatelessWidget { class TaskScreenVM { TaskScreenVM({ - @required this.isInMultiselect, - @required this.taskList, - @required this.userCompany, - @required this.taskMap, + required this.isInMultiselect, + required this.taskList, + required this.userCompany, + required this.taskMap, }); final bool isInMultiselect; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List taskList; - final BuiltMap taskMap; + final BuiltMap taskMap; static TaskScreenVM fromStore(Store store) { final state = store.state; diff --git a/lib/ui/task/task_time_view.dart b/lib/ui/task/task_time_view.dart index c58720d72..1157196b3 100644 --- a/lib/ui/task/task_time_view.dart +++ b/lib/ui/task/task_time_view.dart @@ -15,34 +15,34 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class TaskTimeListTile extends StatelessWidget { const TaskTimeListTile({ - @required this.task, - @required this.taskTime, - @required this.onTap, - @required this.isValid, + required this.task, + required this.taskTime, + required this.onTap, + required this.isValid, }); final Function(BuildContext context) onTap; final TaskEntity task; - final TaskTime taskTime; + final TaskTime? taskTime; final bool isValid; @override Widget build(BuildContext context) { final startDateString = formatDate( - taskTime.startDate.toIso8601String(), context, + taskTime!.startDate!.toIso8601String(), context, showTime: true, showDate: false); - final endDateString = taskTime.endDate != null - ? formatDate(taskTime.endDate.toIso8601String(), context, + final endDateString = taskTime!.endDate != null + ? formatDate(taskTime!.endDate!.toIso8601String(), context, showTime: true, showDate: false) - : AppLocalization.of(context).now; + : AppLocalization.of(context)!.now; final state = StoreProvider.of(context).state; final title = DateFormat('EEE MMM d, yyy', localeSelector(state)) - .format(taskTime.startDate.toLocal()); + .format(taskTime!.startDate!.toLocal()); var subtitle = '$startDateString - $endDateString'; - if (taskTime.description.isNotEmpty) { - subtitle += '\n' + taskTime.description; + if (taskTime!.description.isNotEmpty) { + subtitle += '\n' + taskTime!.description; } return Column( @@ -52,7 +52,7 @@ class TaskTimeListTile extends StatelessWidget { title: Row( children: [ Expanded(child: Text(title)), - LiveText(() => formatDuration(taskTime.duration)), + LiveText(() => formatDuration(taskTime!.duration)), ], ), subtitle: Text(subtitle), diff --git a/lib/ui/task/view/task_view.dart b/lib/ui/task/view/task_view.dart index 51b715cdf..366a086d3 100644 --- a/lib/ui/task/view/task_view.dart +++ b/lib/ui/task/view/task_view.dart @@ -17,10 +17,10 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class TaskView extends StatefulWidget { const TaskView({ - Key key, - @required this.viewModel, - @required this.isFilter, - @required this.tabIndex, + Key? key, + required this.viewModel, + required this.isFilter, + required this.tabIndex, }) : super(key: key); final TaskViewVM viewModel; @@ -33,7 +33,7 @@ class TaskView extends StatefulWidget { class _TaskViewState extends State with SingleTickerProviderStateMixin { - TabController _controller; + TabController? _controller; @override void initState() { @@ -44,7 +44,7 @@ class _TaskViewState extends State vsync: this, length: 2, initialIndex: widget.isFilter ? 0 : state.taskUIState.tabIndex); - _controller.addListener(_onTabChanged); + _controller!.addListener(_onTabChanged); } void _onTabChanged() { @@ -53,7 +53,7 @@ class _TaskViewState extends State } final store = StoreProvider.of(context); - store.dispatch(UpdateTaskTab(tabIndex: _controller.index)); + store.dispatch(UpdateTaskTab(tabIndex: _controller!.index)); } @override @@ -61,14 +61,14 @@ class _TaskViewState extends State super.didUpdateWidget(oldWidget); if (oldWidget.tabIndex != widget.tabIndex) { - _controller.index = widget.tabIndex; + _controller!.index = widget.tabIndex; } } @override void dispose() { - _controller.removeListener(_onTabChanged); - _controller.dispose(); + _controller!.removeListener(_onTabChanged); + _controller!.dispose(); super.dispose(); } @@ -79,19 +79,19 @@ class _TaskViewState extends State final localization = AppLocalization.of(context); final documents = task.documents; final state = viewModel.state; - final company = state.company; + final company = state.company!; return ViewScaffold( isFilter: widget.isFilter, entity: task, - isEditable: !state.company.invoiceTaskLock || !task.isInvoiced, + isEditable: !state.company!.invoiceTaskLock || !task.isInvoiced, appBarBottom: company.isModuleEnabled(EntityType.document) ? TabBar( controller: _controller, isScrollable: false, tabs: [ Tab( - text: localization.overview, + text: localization!.overview, ), Tab( text: documents.isEmpty diff --git a/lib/ui/task/view/task_view_documents.dart b/lib/ui/task/view/task_view_documents.dart index 13534e157..0e99977e7 100644 --- a/lib/ui/task/view/task_view_documents.dart +++ b/lib/ui/task/view/task_view_documents.dart @@ -9,7 +9,7 @@ import 'package:invoiceninja_flutter/ui/app/document_grid.dart'; import 'package:invoiceninja_flutter/ui/task/view/task_view_vm.dart'; class TaskViewDocuments extends StatelessWidget { - const TaskViewDocuments({Key key, @required this.viewModel}) + const TaskViewDocuments({Key? key, required this.viewModel}) : super(key: key); final TaskViewVM viewModel; diff --git a/lib/ui/task/view/task_view_overview.dart b/lib/ui/task/view/task_view_overview.dart index 47a7e9904..7dba9eba3 100644 --- a/lib/ui/task/view/task_view_overview.dart +++ b/lib/ui/task/view/task_view_overview.dart @@ -20,9 +20,9 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class TaskOverview extends StatefulWidget { const TaskOverview({ - Key key, - @required this.viewModel, - @required this.isFilter, + Key? key, + required this.viewModel, + required this.isFilter, }) : super(key: key); final TaskViewVM viewModel; @@ -33,7 +33,7 @@ class TaskOverview extends StatefulWidget { } class _TaskOverviewState extends State { - Timer _timer; + Timer? _timer; @override void initState() { @@ -44,7 +44,7 @@ class _TaskOverviewState extends State { @override void dispose() { - _timer.cancel(); + _timer!.cancel(); _timer = null; super.dispose(); } @@ -58,19 +58,19 @@ class _TaskOverviewState extends State { final project = viewModel.project; final client = viewModel.client; - final company = viewModel.company; + final company = viewModel.company!; final invoice = viewModel.state.invoiceState.map[task.invoiceId]; final user = viewModel.state.userState.map[task.assignedUserId]; final group = state.groupState.get(client?.groupId); final status = state.taskStatusState.get(task.statusId); - final Map fields = { + final Map fields = { TaskFields.rate: formatNumber(task.rate, context, zeroIsNull: true, clientId: client?.id), }; if ((task.statusId ?? '').isNotEmpty) { - fields[localization.status] = + fields[localization!.status] = company.taskStatusMap[task.statusId]?.name ?? ''; } @@ -114,13 +114,13 @@ class _TaskOverviewState extends State { final widgets = [ EntityHeader( entity: task, - statusLabel: state.taskStatusState.get(task.statusId).name, + statusLabel: state.taskStatusState.get(task.statusId)!.name, statusColor: task.isInvoiced ? Colors.green : task.isRunning ? Colors.blue : null, - label: localization.duration, + label: localization!.duration, value: formatDuration(task.calculateDuration()), secondLabel: localization.amount, secondValue: formatNumber( @@ -131,7 +131,7 @@ class _TaskOverviewState extends State { client: client, task: task, group: group, - ), + )!, ), context, clientId: client?.id, @@ -207,7 +207,7 @@ class _TaskOverviewState extends State { taskTime: taskTime, isValid: true, onTap: (BuildContext context) => - viewModel.state.userCompany.canEditEntity(task) + viewModel.state.userCompany!.canEditEntity(task) ? viewModel.onEditPressed(context, taskTime) : null, ) diff --git a/lib/ui/task/view/task_view_vm.dart b/lib/ui/task/view/task_view_vm.dart index 6dbdd3f54..930d4cdeb 100644 --- a/lib/ui/task/view/task_view_vm.dart +++ b/lib/ui/task/view/task_view_vm.dart @@ -22,7 +22,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class TaskViewScreen extends StatelessWidget { const TaskViewScreen({ - Key key, + Key? key, this.isFilter = false, }) : super(key: key); final bool isFilter; @@ -47,30 +47,30 @@ class TaskViewScreen extends StatelessWidget { class TaskViewVM { TaskViewVM({ - @required this.onFabPressed, - @required this.task, - @required this.client, - @required this.project, - @required this.company, - @required this.state, - @required this.onEntityAction, - @required this.onEditPressed, - @required this.onRefreshed, - @required this.isSaving, - @required this.isLoading, - @required this.isDirty, - @required this.onUploadDocuments, + required this.onFabPressed, + required this.task, + required this.client, + required this.project, + required this.company, + required this.state, + required this.onEntityAction, + required this.onEditPressed, + required this.onRefreshed, + required this.isSaving, + required this.isLoading, + required this.isDirty, + required this.onUploadDocuments, }); factory TaskViewVM.fromStore(Store store) { final state = store.state; - final task = state.taskState.get(state.taskUIState.selectedId); + final task = state.taskState.get(state.taskUIState.selectedId!)!; final client = state.clientState.map[task.clientId]; final project = state.projectState.map[task.projectId]; Future _handleRefresh(BuildContext context) { final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(LoadTask(completer: completer, taskId: task.id)); return completer.future; } @@ -83,9 +83,9 @@ class TaskViewVM { completer.future.then((savedTask) { showToast(savedTask.isRunning ? (savedTask.calculateDuration().inSeconds > 0 - ? localization.resumedTask - : localization.startedTask) - : localization.stoppedTask); + ? localization!.resumedTask + : localization!.startedTask) + : localization!.stoppedTask); }).catchError((Object error) { showDialog( context: context, @@ -105,12 +105,12 @@ class TaskViewVM { client: client, project: project, onFabPressed: (BuildContext context) => _toggleTask(context), - onEditPressed: (BuildContext context, [TaskTime taskTime]) { + onEditPressed: (BuildContext context, [TaskTime? taskTime]) { editEntity( entity: task, subIndex: task.getTaskTimes().indexOf(taskTime), completer: snackBarCompleter( - context, AppLocalization.of(context).updatedTask)); + context, AppLocalization.of(context)!.updatedTask)); }, onRefreshed: (context) => _handleRefresh(context), onEntityAction: (BuildContext context, EntityAction action) => @@ -124,7 +124,7 @@ class TaskViewVM { task: task, completer: completer)); completer.future.then((client) { - showToast(AppLocalization.of(context).uploadedDocument); + showToast(AppLocalization.of(context)!.uploadedDocument); }).catchError((Object error) { showDialog( context: context, @@ -138,15 +138,15 @@ class TaskViewVM { final AppState state; final TaskEntity task; - final ClientEntity client; - final ProjectEntity project; - final CompanyEntity company; + final ClientEntity? client; + final ProjectEntity? project; + final CompanyEntity? company; final Function(BuildContext, EntityAction) onEntityAction; - final Function(BuildContext, [TaskTime]) onEditPressed; + final Function(BuildContext, [TaskTime?]) onEditPressed; final Function(BuildContext) onFabPressed; final Function(BuildContext) onRefreshed; final bool isSaving; final bool isLoading; final bool isDirty; - final Function(BuildContext, List, bool) onUploadDocuments; + final Function(BuildContext, List, bool?) onUploadDocuments; } diff --git a/lib/ui/task_status/edit/task_status_edit.dart b/lib/ui/task_status/edit/task_status_edit.dart index 6604bedc1..fb8a3ed84 100644 --- a/lib/ui/task_status/edit/task_status_edit.dart +++ b/lib/ui/task_status/edit/task_status_edit.dart @@ -13,8 +13,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class TaskStatusEdit extends StatefulWidget { const TaskStatusEdit({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final TaskStatusEditVM viewModel; @@ -69,7 +69,7 @@ class _TaskStatusEditState extends State { } void _onSavePressed(BuildContext context) { - final bool isValid = _formKey.currentState.validate(); + final bool isValid = _formKey.currentState!.validate(); if (!isValid) { return; @@ -87,8 +87,8 @@ class _TaskStatusEditState extends State { return EditScaffold( entity: taskStatus, title: taskStatus.isNew - ? localization.newTaskStatus - : localization.editTaskStatus, + ? localization!.newTaskStatus + : localization!.editTaskStatus, onCancelPressed: (context) => viewModel.onCancelPressed(context), onSavePressed: _onSavePressed, body: Form( diff --git a/lib/ui/task_status/edit/task_status_edit_vm.dart b/lib/ui/task_status/edit/task_status_edit_vm.dart index bd978bee8..92918f9d7 100644 --- a/lib/ui/task_status/edit/task_status_edit_vm.dart +++ b/lib/ui/task_status/edit/task_status_edit_vm.dart @@ -23,7 +23,7 @@ import 'package:invoiceninja_flutter/ui/task_status/view/task_status_view_vm.dar import 'package:invoiceninja_flutter/utils/completers.dart'; class TaskStatusEditScreen extends StatelessWidget { - const TaskStatusEditScreen({Key key}) : super(key: key); + const TaskStatusEditScreen({Key? key}) : super(key: key); static const String route = '/$kSettings/$kSettingsTaskStatusEdit'; @override @@ -44,20 +44,20 @@ class TaskStatusEditScreen extends StatelessWidget { class TaskStatusEditVM { TaskStatusEditVM({ - @required this.state, - @required this.taskStatus, - @required this.company, - @required this.onChanged, - @required this.isSaving, - @required this.origTaskStatus, - @required this.onSavePressed, - @required this.onCancelPressed, - @required this.isLoading, + required this.state, + required this.taskStatus, + required this.company, + required this.onChanged, + required this.isSaving, + required this.origTaskStatus, + required this.onSavePressed, + required this.onCancelPressed, + required this.isLoading, }); factory TaskStatusEditVM.fromStore(Store store) { final state = store.state; - final taskStatus = state.taskStatusUIState.editing; + final taskStatus = state.taskStatusUIState.editing!; return TaskStatusEditVM( state: state, @@ -83,23 +83,23 @@ class TaskStatusEditVM { store.dispatch(SaveTaskStatusRequest( completer: completer, taskStatus: taskStatus)); return completer.future.then((savedTaskStatus) { - showToast(taskStatus.isNew - ? localization.createdTaskStatus - : localization.updatedTaskStatus); + showToast(taskStatus!.isNew + ? localization!.createdTaskStatus + : localization!.updatedTaskStatus); if (state.prefState.isMobile) { store.dispatch(UpdateCurrentRoute(TaskStatusViewScreen.route)); if (taskStatus.isNew) { - navigator.pushReplacementNamed(TaskStatusViewScreen.route); + navigator!.pushReplacementNamed(TaskStatusViewScreen.route); } else { - navigator.pop(savedTaskStatus); + navigator!.pop(savedTaskStatus); } } else { viewEntity(entity: savedTaskStatus, force: true); } }).catchError((Object error) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { return ErrorDialog(error); }); @@ -110,12 +110,12 @@ class TaskStatusEditVM { } final TaskStatusEntity taskStatus; - final CompanyEntity company; + final CompanyEntity? company; final Function(TaskStatusEntity) onChanged; final Function(BuildContext) onSavePressed; final Function(BuildContext) onCancelPressed; final bool isLoading; final bool isSaving; - final TaskStatusEntity origTaskStatus; + final TaskStatusEntity? origTaskStatus; final AppState state; } diff --git a/lib/ui/task_status/task_status_list.dart b/lib/ui/task_status/task_status_list.dart index b6ea5aefe..9ee9c6110 100644 --- a/lib/ui/task_status/task_status_list.dart +++ b/lib/ui/task_status/task_status_list.dart @@ -14,8 +14,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class TaskStatusList extends StatefulWidget { const TaskStatusList({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final TaskStatusListVM viewModel; @@ -26,7 +26,7 @@ class TaskStatusList extends StatefulWidget { class _TaskStatusListState extends State { // TODO remove this https://github.com/flutter/flutter/issues/71946 - ScrollController _controller; + ScrollController? _controller; @override void initState() { @@ -36,7 +36,7 @@ class _TaskStatusListState extends State { @override void dispose() { - _controller.dispose(); + _controller!.dispose(); super.dispose(); } @@ -54,7 +54,7 @@ class _TaskStatusListState extends State { if (viewModel.taskStatusList.isEmpty) { return Center( - child: HelpText(AppLocalization.of(context).noRecordsFound)); + child: HelpText(AppLocalization.of(context)!.noRecordsFound)); } return Stack( @@ -84,7 +84,7 @@ class _TaskStatusListState extends State { final taskStatus = viewModel.taskStatusMap[taskStatusId]; return TaskStatusListItem( key: ValueKey('__task_status_$taskStatusId'), - user: state.userCompany.user, + user: state.userCompany!.user, filter: viewModel.filter, taskStatus: taskStatus, /* @@ -93,7 +93,7 @@ class _TaskStatusListState extends State { : null, */ isChecked: isInMultiselect && - listUIState.isSelected(taskStatus.id)); + listUIState.isSelected(taskStatus!.id)); }).toList(), ), ), diff --git a/lib/ui/task_status/task_status_list_item.dart b/lib/ui/task_status/task_status_list_item.dart index 0ab7af72a..0a0c2b554 100644 --- a/lib/ui/task_status/task_status_list_item.dart +++ b/lib/ui/task_status/task_status_list_item.dart @@ -13,22 +13,22 @@ import 'package:invoiceninja_flutter/utils/formatting.dart'; class TaskStatusListItem extends StatelessWidget { const TaskStatusListItem({ - Key key, - @required this.user, - @required this.taskStatus, - @required this.filter, + Key? key, + required this.user, + required this.taskStatus, + required this.filter, this.onTap, this.onLongPress, this.onCheckboxChanged, this.isChecked = false, }) : super(key: key); - final UserEntity user; - final GestureTapCallback onTap; - final GestureTapCallback onLongPress; - final TaskStatusEntity taskStatus; - final String filter; - final Function(bool) onCheckboxChanged; + final UserEntity? user; + final GestureTapCallback? onTap; + final GestureTapCallback? onLongPress; + final TaskStatusEntity? taskStatus; + final String? filter; + final Function(bool?)? onCheckboxChanged; final bool isChecked; @override @@ -41,23 +41,23 @@ class TaskStatusListItem extends StatelessWidget { final isInMultiselect = listUIState.isInMultiselect(); final showCheckbox = onCheckboxChanged != null || isInMultiselect; - final filterMatch = filter != null && filter.isNotEmpty - ? taskStatus.matchesFilterValue(filter) + final filterMatch = filter != null && filter!.isNotEmpty + ? taskStatus!.matchesFilterValue(filter) : null; final subtitle = filterMatch; final child = ListTile( - onTap: () => onTap != null ? onTap() : selectEntity(entity: taskStatus), + onTap: () => onTap != null ? onTap!() : selectEntity(entity: taskStatus!), onLongPress: () => onLongPress != null - ? onLongPress() - : selectEntity(entity: taskStatus, longPress: true), + ? onLongPress!() + : selectEntity(entity: taskStatus!, longPress: true), leading: showCheckbox ? IgnorePointer( ignoring: listUIState.isInMultiselect(), child: Checkbox( value: isChecked, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, - onChanged: (value) => onCheckboxChanged(value), + onChanged: (value) => onCheckboxChanged!(value), activeColor: Theme.of(context).colorScheme.secondary, ), ) @@ -68,11 +68,11 @@ class TaskStatusListItem extends StatelessWidget { children: [ Expanded( child: Text( - taskStatus.name, + taskStatus!.name, style: Theme.of(context).textTheme.titleMedium, ), ), - Text(formatNumber(taskStatus.listDisplayAmount, context), + Text(formatNumber(taskStatus!.listDisplayAmount, context)!, style: Theme.of(context).textTheme.titleMedium), ], ), diff --git a/lib/ui/task_status/task_status_list_vm.dart b/lib/ui/task_status/task_status_list_vm.dart index 2a5c20143..3d7353558 100644 --- a/lib/ui/task_status/task_status_list_vm.dart +++ b/lib/ui/task_status/task_status_list_vm.dart @@ -23,7 +23,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class TaskStatusListBuilder extends StatelessWidget { - const TaskStatusListBuilder({Key key}) : super(key: key); + const TaskStatusListBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -38,13 +38,13 @@ class TaskStatusListBuilder extends StatelessWidget { class TaskStatusListVM { TaskStatusListVM({ - @required this.state, - @required this.taskStatusList, - @required this.taskStatusMap, - @required this.filter, - @required this.listState, - @required this.onRefreshed, - @required this.onSortChanged, + required this.state, + required this.taskStatusList, + required this.taskStatusMap, + required this.filter, + required this.listState, + required this.onRefreshed, + required this.onSortChanged, }); static TaskStatusListVM fromStore(Store store) { @@ -53,7 +53,7 @@ class TaskStatusListVM { return Future(null); } final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(RefreshData(completer: completer)); return completer.future; } @@ -74,12 +74,12 @@ class TaskStatusListVM { onRefreshed: (context) => _handleRefresh(context), onSortChanged: (int oldIndex, int newIndex) { final taskStatusId = taskStatusIds[oldIndex]; - final taskStatus = state.taskStatusState.get(taskStatusId); + final taskStatus = state.taskStatusState.get(taskStatusId)!; store.dispatch(SaveTaskStatusRequest( completer: snackBarCompleter( - navigatorKey.currentContext, - AppLocalization.of(navigatorKey.currentContext) + navigatorKey.currentContext!, + AppLocalization.of(navigatorKey.currentContext!)! .updatedTaskStatus), taskStatus: taskStatus.rebuild((b) => b..statusOrder = newIndex + 1))); @@ -89,9 +89,9 @@ class TaskStatusListVM { final AppState state; final List taskStatusList; - final BuiltMap taskStatusMap; + final BuiltMap taskStatusMap; final ListUIState listState; - final String filter; + final String? filter; final Function(BuildContext) onRefreshed; final Function(int, int) onSortChanged; } diff --git a/lib/ui/task_status/task_status_presenter.dart b/lib/ui/task_status/task_status_presenter.dart index f8786c274..0a11bd1c9 100644 --- a/lib/ui/task_status/task_status_presenter.dart +++ b/lib/ui/task_status/task_status_presenter.dart @@ -6,11 +6,11 @@ import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/ui/app/presenters/entity_presenter.dart'; class TaskStatusPresenter extends EntityPresenter { - static List getDefaultTableFields(UserCompanyEntity userCompany) { + static List getDefaultTableFields(UserCompanyEntity? userCompany) { return []; } - static List getAllTableFields(UserCompanyEntity userCompany) { + static List getAllTableFields(UserCompanyEntity? userCompany) { return [ ...getDefaultTableFields(userCompany), ...EntityPresenter.getBaseFields(), @@ -18,7 +18,7 @@ class TaskStatusPresenter extends EntityPresenter { } @override - Widget getField({String field, BuildContext context}) { + Widget getField({String? field, required BuildContext context}) { //final state = StoreProvider.of(context).state; //final taskStatus = entity as InvoiceEntity; diff --git a/lib/ui/task_status/task_status_screen.dart b/lib/ui/task_status/task_status_screen.dart index 204eb6f0f..205a333c5 100644 --- a/lib/ui/task_status/task_status_screen.dart +++ b/lib/ui/task_status/task_status_screen.dart @@ -24,8 +24,8 @@ import 'task_status_screen_vm.dart'; class TaskStatusScreen extends StatelessWidget { const TaskStatusScreen({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); static const String route = '/$kSettings/$kSettingsTaskStatuses'; @@ -69,8 +69,8 @@ class TaskStatusScreen extends StatelessWidget { AppTextButton( isInHeader: true, onPressed: () async { - final taskStatusIds = listUIState.selectedIds - .map( + final taskStatusIds = listUIState.selectedIds! + .map( (taskStatusId) => viewModel.taskStatusMap[taskStatusId]) .toList(); @@ -79,10 +79,10 @@ class TaskStatusScreen extends StatelessWidget { multiselect: true, completer: Completer() ..future.then( - (_) => store.dispatch(ClearTaskStatusMultiselect())), + ((_) => store.dispatch(ClearTaskStatusMultiselect())) as FutureOr Function(Null)), ); }, - label: localization.actions, + label: localization!.actions, ), ], body: TaskStatusListBuilder(), @@ -115,7 +115,7 @@ class TaskStatusScreen extends StatelessWidget { store.dispatch(FilterTaskStatusesByCustom4(value)), ), floatingActionButton: state.prefState.isMenuFloated && - userCompany.canCreate(EntityType.taskStatus) + userCompany!.canCreate(EntityType.taskStatus) ? FloatingActionButton( heroTag: 'task_status_fab', backgroundColor: Theme.of(context).primaryColorDark, @@ -127,7 +127,7 @@ class TaskStatusScreen extends StatelessWidget { Icons.add, color: Colors.white, ), - tooltip: localization.newTaskStatus, + tooltip: localization!.newTaskStatus, ) : null, ); diff --git a/lib/ui/task_status/task_status_screen_vm.dart b/lib/ui/task_status/task_status_screen_vm.dart index 853d66dab..b12168790 100644 --- a/lib/ui/task_status/task_status_screen_vm.dart +++ b/lib/ui/task_status/task_status_screen_vm.dart @@ -15,7 +15,7 @@ import 'package:invoiceninja_flutter/redux/task_status/task_status_selectors.dar import 'task_status_screen.dart'; class TaskStatusScreenBuilder extends StatelessWidget { - const TaskStatusScreenBuilder({Key key}) : super(key: key); + const TaskStatusScreenBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -32,18 +32,18 @@ class TaskStatusScreenBuilder extends StatelessWidget { class TaskStatusScreenVM { TaskStatusScreenVM({ - @required this.isInMultiselect, - @required this.taskStatusList, - @required this.userCompany, - @required this.onEntityAction, - @required this.taskStatusMap, + required this.isInMultiselect, + required this.taskStatusList, + required this.userCompany, + required this.onEntityAction, + required this.taskStatusMap, }); final bool isInMultiselect; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List taskStatusList; final Function(BuildContext, List, EntityAction) onEntityAction; - final BuiltMap taskStatusMap; + final BuiltMap taskStatusMap; static TaskStatusScreenVM fromStore(Store store) { final state = store.state; diff --git a/lib/ui/task_status/view/task_status_view.dart b/lib/ui/task_status/view/task_status_view.dart index 293b5c553..92cf26806 100644 --- a/lib/ui/task_status/view/task_status_view.dart +++ b/lib/ui/task_status/view/task_status_view.dart @@ -15,9 +15,9 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class TaskStatusView extends StatefulWidget { const TaskStatusView({ - Key key, - @required this.viewModel, - @required this.isFilter, + Key? key, + required this.viewModel, + required this.isFilter, }) : super(key: key); final TaskStatusViewVM viewModel; @@ -33,7 +33,7 @@ class _TaskStatusViewState extends State { final viewModel = widget.viewModel; final state = viewModel.state; final taskStatus = viewModel.taskStatus; - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final amount = memoizedCalculateTaskStatusAmount( taskStatus.id, viewModel.state.taskState.map); diff --git a/lib/ui/task_status/view/task_status_view_vm.dart b/lib/ui/task_status/view/task_status_view_vm.dart index 5ace76fd2..0f7f0b984 100644 --- a/lib/ui/task_status/view/task_status_view_vm.dart +++ b/lib/ui/task_status/view/task_status_view_vm.dart @@ -22,7 +22,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class TaskStatusViewScreen extends StatelessWidget { const TaskStatusViewScreen({ - Key key, + Key? key, this.isFilter = false, }) : super(key: key); static const String route = '/$kSettings/$kSettingsTaskStatusView'; @@ -46,15 +46,15 @@ class TaskStatusViewScreen extends StatelessWidget { class TaskStatusViewVM { TaskStatusViewVM({ - @required this.state, - @required this.taskStatus, - @required this.company, - @required this.onEntityAction, - @required this.onRefreshed, - @required this.isSaving, - @required this.isLoading, - @required this.isDirty, - @required this.onBackPressed, + required this.state, + required this.taskStatus, + required this.company, + required this.onEntityAction, + required this.onRefreshed, + required this.isSaving, + required this.isLoading, + required this.isDirty, + required this.onBackPressed, }); factory TaskStatusViewVM.fromStore(Store store) { @@ -65,7 +65,7 @@ class TaskStatusViewVM { Future _handleRefresh(BuildContext context) { final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch( LoadTaskStatus(completer: completer, taskStatusId: taskStatus.id)); return completer.future; @@ -88,7 +88,7 @@ class TaskStatusViewVM { final AppState state; final TaskStatusEntity taskStatus; - final CompanyEntity company; + final CompanyEntity? company; final Function(BuildContext, EntityAction) onEntityAction; final Function(BuildContext) onRefreshed; final Function onBackPressed; diff --git a/lib/ui/tax_rate/edit/tax_rate_edit.dart b/lib/ui/tax_rate/edit/tax_rate_edit.dart index 54c459b66..a220dc087 100644 --- a/lib/ui/tax_rate/edit/tax_rate_edit.dart +++ b/lib/ui/tax_rate/edit/tax_rate_edit.dart @@ -13,8 +13,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class TaxRateEdit extends StatefulWidget { const TaxRateEdit({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final TaxRateEditVM viewModel; @@ -27,7 +27,7 @@ class _TaxRateEditState extends State { static final GlobalKey _formKey = GlobalKey(debugLabel: '_taxRateEdit'); - FocusScopeNode _focusNode; + FocusScopeNode? _focusNode; final _nameController = TextEditingController(); final _rateController = TextEditingController(); @@ -47,7 +47,7 @@ class _TaxRateEditState extends State { final taxRate = widget.viewModel.taxRate; _nameController.text = taxRate.name; _rateController.text = formatNumber(taxRate.rate, context, - formatNumberType: FormatNumberType.inputMoney); + formatNumberType: FormatNumberType.inputMoney)!; _controllers.forEach((controller) => controller.addListener(_onChanged)); @@ -76,7 +76,7 @@ class _TaxRateEditState extends State { } void _onSavePressed(BuildContext context) { - final bool isValid = _formKey.currentState.validate(); + final bool isValid = _formKey.currentState!.validate(); if (!isValid) { return; @@ -88,7 +88,7 @@ class _TaxRateEditState extends State { @override Widget build(BuildContext context) { final viewModel = widget.viewModel; - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; return EditScaffold( entity: viewModel.taxRate, diff --git a/lib/ui/tax_rate/edit/tax_rate_edit_vm.dart b/lib/ui/tax_rate/edit/tax_rate_edit_vm.dart index f381811a1..67e005af9 100644 --- a/lib/ui/tax_rate/edit/tax_rate_edit_vm.dart +++ b/lib/ui/tax_rate/edit/tax_rate_edit_vm.dart @@ -23,7 +23,7 @@ import 'package:invoiceninja_flutter/ui/tax_rate/view/tax_rate_view_vm.dart'; import 'package:invoiceninja_flutter/utils/completers.dart'; class TaxRateEditScreen extends StatelessWidget { - const TaxRateEditScreen({Key key}) : super(key: key); + const TaxRateEditScreen({Key? key}) : super(key: key); static const String route = '/$kSettings/$kSettingsTaxRatesEdit'; @override @@ -44,19 +44,19 @@ class TaxRateEditScreen extends StatelessWidget { class TaxRateEditVM { TaxRateEditVM({ - @required this.state, - @required this.taxRate, - @required this.company, - @required this.onChanged, - @required this.isSaving, - @required this.origTaxRate, - @required this.onSavePressed, - @required this.onCancelPressed, - @required this.isLoading, + required this.state, + required this.taxRate, + required this.company, + required this.onChanged, + required this.isSaving, + required this.origTaxRate, + required this.onSavePressed, + required this.onCancelPressed, + required this.isLoading, }); factory TaxRateEditVM.fromStore(Store store) { - final taxRate = store.state.taxRateUIState.editing; + final taxRate = store.state.taxRateUIState.editing!; final state = store.state; return TaxRateEditVM( @@ -83,23 +83,23 @@ class TaxRateEditVM { store.dispatch( SaveTaxRateRequest(completer: completer, taxRate: taxRate)); return completer.future.then((savedTaxRate) { - showToast(taxRate.isNew - ? localization.createdTaxRate - : localization.updatedTaxRate); + showToast(taxRate!.isNew + ? localization!.createdTaxRate + : localization!.updatedTaxRate); if (state.prefState.isMobile) { store.dispatch(UpdateCurrentRoute(TaxRateViewScreen.route)); if (taxRate.isNew) { - navigator.pushReplacementNamed(TaxRateViewScreen.route); + navigator!.pushReplacementNamed(TaxRateViewScreen.route); } else { - navigator.pop(savedTaxRate); + navigator!.pop(savedTaxRate); } } else { viewEntity(entity: savedTaxRate, force: true); } }).catchError((Object error) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { return ErrorDialog(error); }); @@ -110,12 +110,12 @@ class TaxRateEditVM { } final TaxRateEntity taxRate; - final CompanyEntity company; + final CompanyEntity? company; final Function(TaxRateEntity) onChanged; final Function(BuildContext) onSavePressed; final Function(BuildContext) onCancelPressed; final bool isLoading; final bool isSaving; - final TaxRateEntity origTaxRate; + final TaxRateEntity? origTaxRate; final AppState state; } diff --git a/lib/ui/tax_rate/tax_rate_list_item.dart b/lib/ui/tax_rate/tax_rate_list_item.dart index cd1cb83b3..de9879bf2 100644 --- a/lib/ui/tax_rate/tax_rate_list_item.dart +++ b/lib/ui/tax_rate/tax_rate_list_item.dart @@ -14,21 +14,21 @@ import 'package:invoiceninja_flutter/utils/formatting.dart'; class TaxRateListItem extends StatelessWidget { const TaxRateListItem({ - @required this.user, - @required this.taxRate, - @required this.filter, + required this.user, + required this.taxRate, + required this.filter, this.onTap, this.onLongPress, this.onCheckboxChanged, this.isChecked = false, }); - final UserEntity user; - final GestureTapCallback onTap; - final GestureTapCallback onLongPress; - final TaxRateEntity taxRate; - final String filter; - final Function(bool) onCheckboxChanged; + final UserEntity? user; + final GestureTapCallback? onTap; + final GestureTapCallback? onLongPress; + final TaxRateEntity? taxRate; + final String? filter; + final Function(bool?)? onCheckboxChanged; final bool isChecked; @override @@ -41,8 +41,8 @@ class TaxRateListItem extends StatelessWidget { final isInMultiselect = listUIState.isInMultiselect(); final showCheckbox = onCheckboxChanged != null || isInMultiselect; - final filterMatch = filter != null && filter.isNotEmpty - ? taxRate.matchesFilterValue(filter) + final filterMatch = filter != null && filter!.isNotEmpty + ? taxRate!.matchesFilterValue(filter) : null; final subtitle = filterMatch; @@ -51,17 +51,17 @@ class TaxRateListItem extends StatelessWidget { entity: taxRate, isSelected: false, child: ListTile( - onTap: () => onTap != null ? onTap() : selectEntity(entity: taxRate), + onTap: () => onTap != null ? onTap!() : selectEntity(entity: taxRate!), onLongPress: () => onLongPress != null - ? onLongPress() - : selectEntity(entity: taxRate, longPress: true), + ? onLongPress!() + : selectEntity(entity: taxRate!, longPress: true), leading: showCheckbox ? IgnorePointer( ignoring: listUIState.isInMultiselect(), child: Checkbox( value: isChecked, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, - onChanged: (value) => onCheckboxChanged(value), + onChanged: (value) => onCheckboxChanged!(value), activeColor: Theme.of(context).colorScheme.secondary, ), ) @@ -72,11 +72,11 @@ class TaxRateListItem extends StatelessWidget { children: [ Expanded( child: Text( - '${taxRate.name} • ${formatNumber(taxRate.rate, context, formatNumberType: FormatNumberType.percent)}', + '${taxRate!.name} • ${formatNumber(taxRate!.rate, context, formatNumberType: FormatNumberType.percent)}', style: Theme.of(context).textTheme.titleMedium, ), ), - Text(formatNumber(taxRate.listDisplayAmount, context), + Text(formatNumber(taxRate!.listDisplayAmount, context)!, style: Theme.of(context).textTheme.titleMedium), ], ), diff --git a/lib/ui/tax_rate/tax_rate_list_vm.dart b/lib/ui/tax_rate/tax_rate_list_vm.dart index 937a069c5..069cc1041 100644 --- a/lib/ui/tax_rate/tax_rate_list_vm.dart +++ b/lib/ui/tax_rate/tax_rate_list_vm.dart @@ -23,7 +23,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class TaxRateListBuilder extends StatelessWidget { - const TaxRateListBuilder({Key key}) : super(key: key); + const TaxRateListBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -47,10 +47,10 @@ class TaxRateListBuilder extends StatelessWidget { final isInMultiselect = listState.isInMultiselect(); return TaxRateListItem( - user: viewModel.userCompany.user, + user: viewModel.userCompany!.user, filter: viewModel.filter, taxRate: taxRate, - isChecked: isInMultiselect && listState.isSelected(taxRate.id), + isChecked: isInMultiselect && listState.isSelected(taxRate!.id), ); }); }, @@ -60,16 +60,16 @@ class TaxRateListBuilder extends StatelessWidget { class TaxRateListVM { TaxRateListVM({ - @required this.state, - @required this.userCompany, - @required this.taxRateList, - @required this.taxRateMap, - @required this.filter, - @required this.isLoading, - @required this.listState, - @required this.onRefreshed, - @required this.onSortColumn, - @required this.onClearMultielsect, + required this.state, + required this.userCompany, + required this.taxRateList, + required this.taxRateMap, + required this.filter, + required this.isLoading, + required this.listState, + required this.onRefreshed, + required this.onSortColumn, + required this.onClearMultielsect, }); static TaxRateListVM fromStore(Store store) { @@ -78,7 +78,7 @@ class TaxRateListVM { return Future(null); } final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(RefreshData(completer: completer)); return completer.future; } @@ -104,11 +104,11 @@ class TaxRateListVM { } final AppState state; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List taxRateList; - final BuiltMap taxRateMap; + final BuiltMap taxRateMap; final ListUIState listState; - final String filter; + final String? filter; final bool isLoading; final Function(BuildContext) onRefreshed; final Function(String) onSortColumn; diff --git a/lib/ui/tax_rate/tax_rate_screen.dart b/lib/ui/tax_rate/tax_rate_screen.dart index 4fe1a0801..a73b75915 100644 --- a/lib/ui/tax_rate/tax_rate_screen.dart +++ b/lib/ui/tax_rate/tax_rate_screen.dart @@ -19,8 +19,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class TaxRateSettingsScreen extends StatelessWidget { const TaxRateSettingsScreen({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); static const String route = '/$kSettings/$kSettingsTaxRates'; @@ -75,7 +75,7 @@ class TaxRateSettingsScreen extends StatelessWidget { }, ), floatingActionButton: state.prefState.isMobile && - state.userCompany.canCreate(EntityType.taxRate) + state.userCompany!.canCreate(EntityType.taxRate) ? FloatingActionButton( heroTag: 'tax_rate_fab', backgroundColor: Theme.of(context).primaryColorDark, @@ -87,7 +87,7 @@ class TaxRateSettingsScreen extends StatelessWidget { Icons.add, color: Colors.white, ), - tooltip: localization.newTaxRate, + tooltip: localization!.newTaxRate, ) : null, ); diff --git a/lib/ui/tax_rate/tax_rate_screen_vm.dart b/lib/ui/tax_rate/tax_rate_screen_vm.dart index 6063f1994..c345b2503 100644 --- a/lib/ui/tax_rate/tax_rate_screen_vm.dart +++ b/lib/ui/tax_rate/tax_rate_screen_vm.dart @@ -17,7 +17,7 @@ import 'package:invoiceninja_flutter/ui/tax_rate/tax_rate_screen.dart'; import 'package:invoiceninja_flutter/utils/platforms.dart'; class TaxRateScreenBuilder extends StatelessWidget { - const TaxRateScreenBuilder({Key key}) : super(key: key); + const TaxRateScreenBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -34,18 +34,18 @@ class TaxRateScreenBuilder extends StatelessWidget { class TaxRateScreenVM { TaxRateScreenVM({ - @required this.isInMultiselect, - @required this.taxRateList, - @required this.userCompany, - @required this.onBackPressed, - @required this.taxRateMap, + required this.isInMultiselect, + required this.taxRateList, + required this.userCompany, + required this.onBackPressed, + required this.taxRateMap, }); final bool isInMultiselect; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List taxRateList; final Function(BuildContext) onBackPressed; - final BuiltMap taxRateMap; + final BuiltMap taxRateMap; static TaxRateScreenVM fromStore(Store store) { final state = store.state; diff --git a/lib/ui/tax_rate/view/tax_rate_view.dart b/lib/ui/tax_rate/view/tax_rate_view.dart index c4fea8b40..d4623ed35 100644 --- a/lib/ui/tax_rate/view/tax_rate_view.dart +++ b/lib/ui/tax_rate/view/tax_rate_view.dart @@ -11,9 +11,9 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class TaxRateView extends StatefulWidget { const TaxRateView({ - Key key, - @required this.viewModel, - @required this.isFilter, + Key? key, + required this.viewModel, + required this.isFilter, }) : super(key: key); final TaxRateViewVM viewModel; @@ -28,7 +28,7 @@ class _TaxRateViewState extends State { Widget build(BuildContext context) { final viewModel = widget.viewModel; final taxRate = viewModel.taxRate; - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; return ViewScaffold( isFilter: widget.isFilter, diff --git a/lib/ui/tax_rate/view/tax_rate_view_vm.dart b/lib/ui/tax_rate/view/tax_rate_view_vm.dart index 0b8a4c82a..0c6708765 100644 --- a/lib/ui/tax_rate/view/tax_rate_view_vm.dart +++ b/lib/ui/tax_rate/view/tax_rate_view_vm.dart @@ -22,7 +22,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class TaxRateViewScreen extends StatelessWidget { const TaxRateViewScreen({ - Key key, + Key? key, this.isFilter = false, }) : super(key: key); @@ -47,15 +47,15 @@ class TaxRateViewScreen extends StatelessWidget { class TaxRateViewVM { TaxRateViewVM({ - @required this.state, - @required this.taxRate, - @required this.company, - @required this.onEntityAction, - @required this.onBackPressed, - @required this.onRefreshed, - @required this.isSaving, - @required this.isLoading, - @required this.isDirty, + required this.state, + required this.taxRate, + required this.company, + required this.onEntityAction, + required this.onBackPressed, + required this.onRefreshed, + required this.isSaving, + required this.isLoading, + required this.isDirty, }); factory TaxRateViewVM.fromStore(Store store) { @@ -65,7 +65,7 @@ class TaxRateViewVM { Future _handleRefresh(BuildContext context) { final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(LoadTaxRate(completer: completer, taxRateId: taxRate.id)); return completer.future; } @@ -88,7 +88,7 @@ class TaxRateViewVM { final AppState state; final TaxRateEntity taxRate; - final CompanyEntity company; + final CompanyEntity? company; final Function(BuildContext, EntityAction) onEntityAction; final Function onBackPressed; final Function(BuildContext) onRefreshed; diff --git a/lib/ui/token/edit/token_edit.dart b/lib/ui/token/edit/token_edit.dart index f7cb9d9d7..053ff6483 100644 --- a/lib/ui/token/edit/token_edit.dart +++ b/lib/ui/token/edit/token_edit.dart @@ -12,8 +12,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class TokenEdit extends StatefulWidget { const TokenEdit({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final TokenEditVM viewModel; @@ -68,7 +68,7 @@ class _TokenEditState extends State { } void _onSavePressed(BuildContext context) { - final bool isValid = _formKey.currentState.validate(); + final bool isValid = _formKey.currentState!.validate(); if (!isValid) { return; @@ -85,7 +85,7 @@ class _TokenEditState extends State { return EditScaffold( entity: token, - title: token.isNew ? localization.newToken : localization.editToken, + title: token.isNew ? localization!.newToken : localization!.editToken, onCancelPressed: (context) => viewModel.onCancelPressed(context), onSavePressed: _onSavePressed, body: Form( diff --git a/lib/ui/token/edit/token_edit_vm.dart b/lib/ui/token/edit/token_edit_vm.dart index 7d30b4257..6e6ab028d 100644 --- a/lib/ui/token/edit/token_edit_vm.dart +++ b/lib/ui/token/edit/token_edit_vm.dart @@ -24,7 +24,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/dialogs.dart'; class TokenEditScreen extends StatelessWidget { - const TokenEditScreen({Key key}) : super(key: key); + const TokenEditScreen({Key? key}) : super(key: key); static const String route = '/$kSettings/$kSettingsTokenEdit'; @override @@ -45,20 +45,20 @@ class TokenEditScreen extends StatelessWidget { class TokenEditVM { TokenEditVM({ - @required this.state, - @required this.token, - @required this.company, - @required this.onChanged, - @required this.isSaving, - @required this.origToken, - @required this.onSavePressed, - @required this.onCancelPressed, - @required this.isLoading, + required this.state, + required this.token, + required this.company, + required this.onChanged, + required this.isSaving, + required this.origToken, + required this.onSavePressed, + required this.onCancelPressed, + required this.isLoading, }); factory TokenEditVM.fromStore(Store store) { final state = store.state; - final token = state.tokenUIState.editing; + final token = state.tokenUIState.editing!; return TokenEditVM( state: state, @@ -73,7 +73,7 @@ class TokenEditVM { onCancelPressed: (BuildContext context) { createEntity(context: context, entity: TokenEntity(), force: true); if (state.tokenUIState.cancelCompleter != null) { - state.tokenUIState.cancelCompleter.complete(); + state.tokenUIState.cancelCompleter!.complete(); } else { store.dispatch(UpdateCurrentRoute(state.uiState.previousRoute)); } @@ -95,23 +95,23 @@ class TokenEditVM { idToken: idToken, )); return completer.future.then((savedToken) { - showToast(token.isNew - ? localization.createdToken - : localization.updatedToken); + showToast(token!.isNew + ? localization!.createdToken + : localization!.updatedToken); if (state.prefState.isMobile) { store.dispatch(UpdateCurrentRoute(TokenViewScreen.route)); if (token.isNew) { - navigator.pushReplacementNamed(TokenViewScreen.route); + navigator!.pushReplacementNamed(TokenViewScreen.route); } else { - navigator.pop(savedToken); + navigator!.pop(savedToken); } } else { viewEntity(entity: savedToken, force: true); } }).catchError((Object error) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { return ErrorDialog(error); }); @@ -123,12 +123,12 @@ class TokenEditVM { } final TokenEntity token; - final CompanyEntity company; + final CompanyEntity? company; final Function(TokenEntity) onChanged; final Function(BuildContext) onSavePressed; final Function(BuildContext) onCancelPressed; final bool isLoading; final bool isSaving; - final TokenEntity origToken; + final TokenEntity? origToken; final AppState state; } diff --git a/lib/ui/token/token_list_item.dart b/lib/ui/token/token_list_item.dart index 992922180..11396e8e5 100644 --- a/lib/ui/token/token_list_item.dart +++ b/lib/ui/token/token_list_item.dart @@ -13,21 +13,21 @@ import 'package:invoiceninja_flutter/ui/app/entity_state_label.dart'; class TokenListItem extends StatelessWidget { const TokenListItem({ - @required this.user, - @required this.token, - @required this.filter, + required this.user, + required this.token, + required this.filter, this.onTap, this.onLongPress, this.onCheckboxChanged, this.isChecked = false, }); - final UserEntity user; - final GestureTapCallback onTap; - final GestureTapCallback onLongPress; - final TokenEntity token; - final String filter; - final Function(bool) onCheckboxChanged; + final UserEntity? user; + final GestureTapCallback? onTap; + final GestureTapCallback? onLongPress; + final TokenEntity? token; + final String? filter; + final Function(bool?)? onCheckboxChanged; final bool isChecked; @override @@ -39,38 +39,38 @@ class TokenListItem extends StatelessWidget { final listUIState = tokenUIState.listUIState; final isInMultiselect = listUIState.isInMultiselect(); final showCheckbox = onCheckboxChanged != null || isInMultiselect; - final user = state.userState.get(token.createdUserId); + final user = state.userState.get(token!.createdUserId!)!; - final filterMatch = filter != null && filter.isNotEmpty - ? token.matchesFilterValue(filter) + final filterMatch = filter != null && filter!.isNotEmpty + ? token!.matchesFilterValue(filter) : null; final subtitle = filterMatch; return DismissibleEntity( userCompany: state.userCompany, entity: token, - isSelected: token.id == + isSelected: token!.id == (uiState.isEditing - ? tokenUIState.editing.id + ? tokenUIState.editing!.id : tokenUIState.selectedId), child: ListTile( - onTap: () => onTap != null ? onTap() : selectEntity(entity: token), + onTap: () => onTap != null ? onTap!() : selectEntity(entity: token!), onLongPress: () => onLongPress != null - ? onLongPress() - : selectEntity(entity: token, longPress: true), + ? onLongPress!() + : selectEntity(entity: token!, longPress: true), leading: showCheckbox ? IgnorePointer( ignoring: listUIState.isInMultiselect(), child: Checkbox( value: isChecked, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, - onChanged: (value) => onCheckboxChanged(value), + onChanged: (value) => onCheckboxChanged!(value), activeColor: Theme.of(context).colorScheme.secondary, ), ) : null, title: Text( - token.name, + token!.name, style: Theme.of(context).textTheme.titleMedium, ), subtitle: Column( diff --git a/lib/ui/token/token_list_vm.dart b/lib/ui/token/token_list_vm.dart index 0d8bf60d6..f9563c9bb 100644 --- a/lib/ui/token/token_list_vm.dart +++ b/lib/ui/token/token_list_vm.dart @@ -24,7 +24,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class TokenListBuilder extends StatelessWidget { - const TokenListBuilder({Key key}) : super(key: key); + const TokenListBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -51,7 +51,7 @@ class TokenListBuilder extends StatelessWidget { user: viewModel.state.user, filter: viewModel.filter, token: token, - isChecked: isInMultiselect && listState.isSelected(token.id), + isChecked: isInMultiselect && listState.isSelected(token!.id), ); }); }, @@ -61,18 +61,18 @@ class TokenListBuilder extends StatelessWidget { class TokenListVM { TokenListVM({ - @required this.state, - @required this.userCompany, - @required this.tokenList, - @required this.tokenMap, - @required this.filter, - @required this.isLoading, - @required this.listState, - @required this.onRefreshed, - @required this.onEntityAction, - @required this.tableColumns, - @required this.onSortColumn, - @required this.onClearMultielsect, + required this.state, + required this.userCompany, + required this.tokenList, + required this.tokenMap, + required this.filter, + required this.isLoading, + required this.listState, + required this.onRefreshed, + required this.onEntityAction, + required this.tableColumns, + required this.onSortColumn, + required this.onClearMultielsect, }); static TokenListVM fromStore(Store store) { @@ -81,7 +81,7 @@ class TokenListVM { return Future(null); } final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(RefreshData(completer: completer)); return completer.future; } @@ -105,7 +105,7 @@ class TokenListVM { handleTokenAction(context, tokens, action), onRefreshed: (context) => _handleRefresh(context), tableColumns: - state.userCompany.settings?.getTableColumns(EntityType.token) ?? + state.userCompany!.settings?.getTableColumns(EntityType.token) ?? TokenPresenter.getDefaultTableFields(state.userCompany), onSortColumn: (field) => store.dispatch(SortTokens(field)), onClearMultielsect: () => store.dispatch(ClearTokenMultiselect()), @@ -113,11 +113,11 @@ class TokenListVM { } final AppState state; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List tokenList; - final BuiltMap tokenMap; + final BuiltMap tokenMap; final ListUIState listState; - final String filter; + final String? filter; final bool isLoading; final Function(BuildContext) onRefreshed; final Function(BuildContext, List, EntityAction) onEntityAction; diff --git a/lib/ui/token/token_presenter.dart b/lib/ui/token/token_presenter.dart index 5584d5869..0dd3cff85 100644 --- a/lib/ui/token/token_presenter.dart +++ b/lib/ui/token/token_presenter.dart @@ -6,11 +6,11 @@ import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/ui/app/presenters/entity_presenter.dart'; class TokenPresenter extends EntityPresenter { - static List getDefaultTableFields(UserCompanyEntity userCompany) { + static List getDefaultTableFields(UserCompanyEntity? userCompany) { return []; } - static List getAllTableFields(UserCompanyEntity userCompany) { + static List getAllTableFields(UserCompanyEntity? userCompany) { return [ ...getDefaultTableFields(userCompany), ...EntityPresenter.getBaseFields(), @@ -18,7 +18,7 @@ class TokenPresenter extends EntityPresenter { } @override - Widget getField({String field, BuildContext context}) { + Widget getField({String? field, required BuildContext context}) { //final state = StoreProvider.of(context).state; //final token = entity as InvoiceEntity; diff --git a/lib/ui/token/token_screen.dart b/lib/ui/token/token_screen.dart index 25bea8585..2328f6fae 100644 --- a/lib/ui/token/token_screen.dart +++ b/lib/ui/token/token_screen.dart @@ -20,8 +20,8 @@ import 'token_screen_vm.dart'; class TokenScreen extends StatelessWidget { const TokenScreen({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); static const String route = '/$kSettings/$kSettingsTokens'; @@ -90,7 +90,7 @@ class TokenScreen extends StatelessWidget { store.dispatch(FilterTokensByCustom4(value)), ), floatingActionButton: state.prefState.isMenuFloated && - userCompany.canCreate(EntityType.token) + userCompany!.canCreate(EntityType.token) ? FloatingActionButton( heroTag: 'token_fab', backgroundColor: Theme.of(context).primaryColorDark, @@ -102,7 +102,7 @@ class TokenScreen extends StatelessWidget { Icons.add, color: Colors.white, ), - tooltip: localization.newToken, + tooltip: localization!.newToken, ) : null, ); diff --git a/lib/ui/token/token_screen_vm.dart b/lib/ui/token/token_screen_vm.dart index 59acbbac3..7a335fd87 100644 --- a/lib/ui/token/token_screen_vm.dart +++ b/lib/ui/token/token_screen_vm.dart @@ -15,7 +15,7 @@ import 'package:invoiceninja_flutter/redux/token/token_selectors.dart'; import 'token_screen.dart'; class TokenScreenBuilder extends StatelessWidget { - const TokenScreenBuilder({Key key}) : super(key: key); + const TokenScreenBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -32,18 +32,18 @@ class TokenScreenBuilder extends StatelessWidget { class TokenScreenVM { TokenScreenVM({ - @required this.isInMultiselect, - @required this.tokenList, - @required this.userCompany, - @required this.onEntityAction, - @required this.tokenMap, + required this.isInMultiselect, + required this.tokenList, + required this.userCompany, + required this.onEntityAction, + required this.tokenMap, }); final bool isInMultiselect; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List tokenList; final Function(BuildContext, List, EntityAction) onEntityAction; - final BuiltMap tokenMap; + final BuiltMap tokenMap; static TokenScreenVM fromStore(Store store) { final state = store.state; diff --git a/lib/ui/token/view/token_view.dart b/lib/ui/token/view/token_view.dart index ed8aebd74..fb99995d5 100644 --- a/lib/ui/token/view/token_view.dart +++ b/lib/ui/token/view/token_view.dart @@ -14,9 +14,9 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class TokenView extends StatefulWidget { const TokenView({ - Key key, - @required this.viewModel, - @required this.isFilter, + Key? key, + required this.viewModel, + required this.isFilter, }) : super(key: key); final TokenViewVM viewModel; @@ -29,10 +29,10 @@ class TokenView extends StatefulWidget { class _TokenViewState extends State { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; final token = viewModel.token; - final user = viewModel.state.userState.get(token.createdUserId); + final user = viewModel.state.userState.get(token.createdUserId!)!; return ViewScaffold( isFilter: widget.isFilter, diff --git a/lib/ui/token/view/token_view_vm.dart b/lib/ui/token/view/token_view_vm.dart index e333af2af..52eb0ef59 100644 --- a/lib/ui/token/view/token_view_vm.dart +++ b/lib/ui/token/view/token_view_vm.dart @@ -22,7 +22,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class TokenViewScreen extends StatelessWidget { const TokenViewScreen({ - Key key, + Key? key, this.isFilter = false, }) : super(key: key); static const String route = '/$kSettings/$kSettingsTokenView'; @@ -46,15 +46,15 @@ class TokenViewScreen extends StatelessWidget { class TokenViewVM { TokenViewVM({ - @required this.state, - @required this.token, - @required this.company, - @required this.onEntityAction, - @required this.onBackPressed, - @required this.onRefreshed, - @required this.isSaving, - @required this.isLoading, - @required this.isDirty, + required this.state, + required this.token, + required this.company, + required this.onEntityAction, + required this.onBackPressed, + required this.onRefreshed, + required this.isSaving, + required this.isLoading, + required this.isDirty, }); factory TokenViewVM.fromStore(Store store) { @@ -64,7 +64,7 @@ class TokenViewVM { Future _handleRefresh(BuildContext context) { final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(LoadToken(completer: completer, tokenId: token.id)); return completer.future; } @@ -87,7 +87,7 @@ class TokenViewVM { final AppState state; final TokenEntity token; - final CompanyEntity company; + final CompanyEntity? company; final Function(BuildContext, EntityAction) onEntityAction; final Function(BuildContext) onRefreshed; final Function onBackPressed; diff --git a/lib/ui/transaction/edit/transaction_edit.dart b/lib/ui/transaction/edit/transaction_edit.dart index 80c0ba977..9c3093112 100644 --- a/lib/ui/transaction/edit/transaction_edit.dart +++ b/lib/ui/transaction/edit/transaction_edit.dart @@ -19,8 +19,8 @@ import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart'; class TransactionEdit extends StatefulWidget { const TransactionEdit({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final TransactionEditVM viewModel; @@ -50,7 +50,7 @@ class _TransactionEditState extends State { final transaction = widget.viewModel.transaction; _amountController.text = formatNumber(transaction.amount, context, - formatNumberType: FormatNumberType.inputMoney); + formatNumberType: FormatNumberType.inputMoney)!; _descriptionController.text = transaction.description; _controllers.forEach((controller) => controller.addListener(_onChanged)); @@ -80,7 +80,7 @@ class _TransactionEditState extends State { } void _onSavePressed() { - final bool isValid = _formKey.currentState.validate(); + final bool isValid = _formKey.currentState!.validate(); if (!isValid) { return; @@ -99,8 +99,8 @@ class _TransactionEditState extends State { return EditScaffold( title: transaction.isNew - ? localization.newTransaction - : localization.editTransaction, + ? localization!.newTransaction + : localization!.editTransaction, onCancelPressed: (context) => viewModel.onCancelPressed(context), onSavePressed: (context) => _onSavePressed(), body: Form( @@ -119,11 +119,11 @@ class _TransactionEditState extends State { }, items: [ DropdownMenuItem( - child: Text(localization.withdrawal), + child: Text(localization.withdrawal!), value: TransactionEntity.TYPE_WITHDRAWL, ), DropdownMenuItem( - child: Text(localization.deposit), + child: Text(localization.deposit!), value: TransactionEntity.TYPE_DEPOSIT, ), ]), diff --git a/lib/ui/transaction/edit/transaction_edit_vm.dart b/lib/ui/transaction/edit/transaction_edit_vm.dart index 53d39c714..5e38332b7 100644 --- a/lib/ui/transaction/edit/transaction_edit_vm.dart +++ b/lib/ui/transaction/edit/transaction_edit_vm.dart @@ -15,7 +15,7 @@ import 'package:flutter_styled_toast/flutter_styled_toast.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class TransactionEditScreen extends StatelessWidget { - const TransactionEditScreen({Key key}) : super(key: key); + const TransactionEditScreen({Key? key}) : super(key: key); static const String route = '/transaction/edit'; @override @@ -36,21 +36,21 @@ class TransactionEditScreen extends StatelessWidget { class TransactionEditVM { TransactionEditVM({ - @required this.state, - @required this.transaction, - @required this.company, - @required this.onChanged, - @required this.isSaving, - @required this.origTransaction, - @required this.onSavePressed, - @required this.onCancelPressed, - @required this.isLoading, - @required this.onAddBankAccountPressed, + required this.state, + required this.transaction, + required this.company, + required this.onChanged, + required this.isSaving, + required this.origTransaction, + required this.onSavePressed, + required this.onCancelPressed, + required this.isLoading, + required this.onAddBankAccountPressed, }); factory TransactionEditVM.fromStore(Store store) { final state = store.state; - final transaction = state.transactionUIState.editing; + final transaction = state.transactionUIState.editing!; return TransactionEditVM( state: state, @@ -66,7 +66,7 @@ class TransactionEditVM { createEntity( context: context, entity: TransactionEntity(), force: true); if (state.transactionUIState.cancelCompleter != null) { - state.transactionUIState.cancelCompleter.complete(); + state.transactionUIState.cancelCompleter!.complete(); } else { store.dispatch(UpdateCurrentRoute(state.uiState.previousRoute)); } @@ -80,9 +80,9 @@ class TransactionEditVM { store.dispatch(SaveTransactionRequest( completer: completer, transaction: transaction)); return completer.future.then((savedTransaction) { - showToast(transaction.isNew - ? localization.createdTransaction - : localization.updatedTransaction); + showToast(transaction!.isNew + ? localization!.createdTransaction + : localization!.updatedTransaction); if (state.prefState.isMobile) { store.dispatch(UpdateCurrentRoute(TransactionViewScreen.route)); if (transaction.isNew) { @@ -112,7 +112,7 @@ class TransactionEditVM { cancelCompleter: Completer() ..future.then((_) { store.dispatch(UpdateCurrentRoute(TransactionEditScreen.route)); - })); + } as FutureOr<_> Function(Null))); completer.future.then((SelectableEntity client) { store.dispatch(UpdateCurrentRoute(TransactionEditScreen.route)); }); @@ -121,13 +121,13 @@ class TransactionEditVM { } final TransactionEntity transaction; - final CompanyEntity company; + final CompanyEntity? company; final Function(TransactionEntity) onChanged; final Function(BuildContext) onSavePressed; final Function(BuildContext) onCancelPressed; final bool isLoading; final bool isSaving; - final TransactionEntity origTransaction; + final TransactionEntity? origTransaction; final AppState state; final Function(BuildContext context, Completer completer) onAddBankAccountPressed; diff --git a/lib/ui/transaction/transaction_list_item.dart b/lib/ui/transaction/transaction_list_item.dart index 485b6f7eb..670ae7106 100644 --- a/lib/ui/transaction/transaction_list_item.dart +++ b/lib/ui/transaction/transaction_list_item.dart @@ -20,21 +20,21 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class TransactionListItem extends StatelessWidget { const TransactionListItem({ - @required this.user, - @required this.transaction, - @required this.filter, + required this.user, + required this.transaction, + required this.filter, this.onTap, this.onLongPress, this.onCheckboxChanged, this.isChecked = false, }); - final UserEntity user; - final GestureTapCallback onTap; - final GestureTapCallback onLongPress; - final TransactionEntity transaction; - final String filter; - final Function(bool) onCheckboxChanged; + final UserEntity? user; + final GestureTapCallback? onTap; + final GestureTapCallback? onLongPress; + final TransactionEntity? transaction; + final String? filter; + final Function(bool?)? onCheckboxChanged; final bool isChecked; @override @@ -43,21 +43,21 @@ class TransactionListItem extends StatelessWidget { final state = store.state; final uiState = state.uiState; final transactionUIState = uiState.transactionUIState; - final filterMatch = filter != null && filter.isNotEmpty - ? transaction.matchesFilterValue(filter) + final filterMatch = filter != null && filter!.isNotEmpty + ? transaction!.matchesFilterValue(filter) : null; final localization = AppLocalization.of(context); final listUIState = transactionUIState.listUIState; final isInMultiselect = listUIState.isInMultiselect(); final showCheckbox = onCheckboxChanged != null || isInMultiselect; final textStyle = TextStyle(fontSize: 16); - final textColor = Theme.of(context).textTheme.bodyLarge.color; + final textColor = Theme.of(context).textTheme.bodyLarge!.color; return DismissibleEntity( isSelected: isDesktop(context) && - transaction.id == + transaction!.id == (uiState.isEditing - ? transactionUIState.editing.id + ? transactionUIState.editing!.id : transactionUIState.selectedId), userCompany: store.state.userCompany, entity: transaction, @@ -66,10 +66,10 @@ class TransactionListItem extends StatelessWidget { return constraints.maxWidth > kTableListWidthCutoff ? InkWell( onTap: () => - onTap != null ? onTap() : selectEntity(entity: transaction), + onTap != null ? onTap!() : selectEntity(entity: transaction!), onLongPress: () => onLongPress != null - ? onLongPress() - : selectEntity(entity: transaction, longPress: true), + ? onLongPress!() + : selectEntity(entity: transaction!, longPress: true), child: Padding( padding: const EdgeInsets.only( left: 10, @@ -91,14 +91,14 @@ class TransactionListItem extends StatelessWidget { materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, onChanged: (value) => - onCheckboxChanged(value), + onCheckboxChanged!(value), activeColor: Theme.of(context).colorScheme.secondary, ), ), ) : ActionMenuButton( - entityActions: transaction.getActions( + entityActions: transaction!.getActions( userCompany: state.userCompany, includeEdit: true, ), @@ -115,18 +115,18 @@ class TransactionListItem extends StatelessWidget { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text(transaction.description, style: textStyle), + Text(transaction!.description, style: textStyle), Text( state.bankAccountState - .get(transaction.bankAccountId) + .get(transaction!.bankAccountId)! .name, maxLines: 3, overflow: TextOverflow.ellipsis, style: Theme.of(context) .textTheme - .titleSmall + .titleSmall! .copyWith( - color: textColor + color: textColor! .withOpacity(kLighterOpacity), ), ), @@ -146,17 +146,17 @@ class TransactionListItem extends StatelessWidget { SizedBox( width: 100, child: Text( - transaction.isWithdrawal - ? localization.withdrawal - : localization.deposit, + transaction!.isWithdrawal + ? localization!.withdrawal! + : localization!.deposit!, ), ), SizedBox(width: 30), ConstrainedBox( constraints: BoxConstraints(minWidth: 100), child: Text( - formatNumber(transaction.amount, context, - currencyId: transaction.currencyId), + formatNumber(transaction!.amount, context, + currencyId: transaction!.currencyId)!, style: textStyle, textAlign: TextAlign.end, ), @@ -169,10 +169,10 @@ class TransactionListItem extends StatelessWidget { ) : ListTile( onTap: () => - onTap != null ? onTap() : selectEntity(entity: transaction), + onTap != null ? onTap!() : selectEntity(entity: transaction!), onLongPress: () => onLongPress != null - ? onLongPress() - : selectEntity(entity: transaction, longPress: true), + ? onLongPress!() + : selectEntity(entity: transaction!, longPress: true), leading: showCheckbox ? IgnorePointer( ignoring: listUIState.isInMultiselect(), @@ -180,7 +180,7 @@ class TransactionListItem extends StatelessWidget { value: isChecked, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, - onChanged: (value) => onCheckboxChanged(value), + onChanged: (value) => onCheckboxChanged!(value), activeColor: Theme.of(context).colorScheme.secondary, ), ) @@ -191,13 +191,13 @@ class TransactionListItem extends StatelessWidget { children: [ Expanded( child: Text( - transaction.description, + transaction!.description, style: Theme.of(context).textTheme.titleMedium, ), ), Text( - formatNumber(transaction.amount, context, - currencyId: transaction.currencyId), + formatNumber(transaction!.amount, context, + currencyId: transaction!.currencyId)!, style: Theme.of(context).textTheme.titleMedium), ], ), @@ -210,12 +210,12 @@ class TransactionListItem extends StatelessWidget { Expanded( child: filterMatch == null ? Text(state.bankAccountState - .get(transaction.bankAccountId) + .get(transaction!.bankAccountId)! .name + ' • ' + - (transaction.isDeposit - ? localization.deposit - : localization.withdrawal)) + (transaction!.isDeposit + ? localization!.deposit! + : localization!.withdrawal!)) : Text( filterMatch, maxLines: 3, @@ -223,12 +223,12 @@ class TransactionListItem extends StatelessWidget { ), ), Text( - localization.lookup( - kPurchaseOrderStatuses[transaction.statusId]), + localization!.lookup( + kPurchaseOrderStatuses[transaction!.statusId])!, style: TextStyle( color: TransactionStatusColors( state.prefState.colorThemeModel) - .colors[transaction.statusId])), + .colors[transaction!.statusId])), ], ), EntityStateLabel(transaction), diff --git a/lib/ui/transaction/transaction_list_vm.dart b/lib/ui/transaction/transaction_list_vm.dart index fe94bdbf1..1fe6ef169 100644 --- a/lib/ui/transaction/transaction_list_vm.dart +++ b/lib/ui/transaction/transaction_list_vm.dart @@ -17,7 +17,7 @@ import 'package:invoiceninja_flutter/redux/app/app_state.dart'; import 'package:invoiceninja_flutter/redux/transaction/transaction_actions.dart'; class TransactionListBuilder extends StatelessWidget { - const TransactionListBuilder({Key key}) : super(key: key); + const TransactionListBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -45,7 +45,7 @@ class TransactionListBuilder extends StatelessWidget { filter: viewModel.filter, transaction: transaction, isChecked: - isInMultiselect && listState.isSelected(transaction.id), + isInMultiselect && listState.isSelected(transaction!.id), ); }); }, @@ -55,18 +55,18 @@ class TransactionListBuilder extends StatelessWidget { class TransactionListVM { TransactionListVM({ - @required this.state, - @required this.userCompany, - @required this.transactionList, - @required this.transactionMap, - @required this.filter, - @required this.isLoading, - @required this.listState, - @required this.onRefreshed, - @required this.onEntityAction, - @required this.tableColumns, - @required this.onSortColumn, - @required this.onClearMultielsect, + required this.state, + required this.userCompany, + required this.transactionList, + required this.transactionMap, + required this.filter, + required this.isLoading, + required this.listState, + required this.onRefreshed, + required this.onEntityAction, + required this.tableColumns, + required this.onSortColumn, + required this.onClearMultielsect, }); static TransactionListVM fromStore(Store store) { @@ -75,7 +75,7 @@ class TransactionListVM { return Future(null); } final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(RefreshData(completer: completer)); return completer.future; } @@ -104,7 +104,7 @@ class TransactionListVM { handleTransactionAction(context, transactions, action), onRefreshed: (context) => _handleRefresh(context), tableColumns: - state.userCompany.settings?.getTableColumns(EntityType.transaction) ?? + state.userCompany!.settings?.getTableColumns(EntityType.transaction) ?? TransactionPresenter.getDefaultTableFields(state.userCompany), onSortColumn: (field) => store.dispatch(SortTransactions(field)), onClearMultielsect: () => store.dispatch(ClearTransactionMultiselect()), @@ -112,11 +112,11 @@ class TransactionListVM { } final AppState state; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List transactionList; - final BuiltMap transactionMap; + final BuiltMap transactionMap; final ListUIState listState; - final String filter; + final String? filter; final bool isLoading; final Function(BuildContext) onRefreshed; final Function(BuildContext, List, EntityAction) onEntityAction; diff --git a/lib/ui/transaction/transaction_presenter.dart b/lib/ui/transaction/transaction_presenter.dart index 7e078407f..a45d5580b 100644 --- a/lib/ui/transaction/transaction_presenter.dart +++ b/lib/ui/transaction/transaction_presenter.dart @@ -1,3 +1,4 @@ +import 'package:collection/collection.dart' show IterableNullableExtension; import 'package:flutter/material.dart'; import 'package:flutter_redux/flutter_redux.dart'; import 'package:invoiceninja_flutter/constants.dart'; @@ -10,7 +11,7 @@ import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/utils/strings.dart'; class TransactionPresenter extends EntityPresenter { - static List getDefaultTableFields(UserCompanyEntity userCompany) { + static List getDefaultTableFields(UserCompanyEntity? userCompany) { return [ TransactionFields.status, TransactionFields.deposit, @@ -22,7 +23,7 @@ class TransactionPresenter extends EntityPresenter { ]; } - static List getAllTableFields(UserCompanyEntity userCompany) { + static List getAllTableFields(UserCompanyEntity? userCompany) { return [ ...getDefaultTableFields(userCompany), ...EntityPresenter.getBaseFields(), @@ -38,64 +39,64 @@ class TransactionPresenter extends EntityPresenter { } @override - Widget getField({String field, BuildContext context}) { + Widget getField({String? field, required BuildContext context}) { final state = StoreProvider.of(context).state; - final transaction = entity as TransactionEntity; + final transaction = entity as TransactionEntity?; switch (field) { case TransactionFields.status: return EntityStatusChip(entity: transaction, showState: true); case TransactionFields.date: - return Text(formatDate(transaction.date, context)); + return Text(formatDate(transaction!.date, context)); case TransactionFields.defaultCategory: - return Text(transaction.category); + return Text(transaction!.category); case TransactionFields.amount: return Align( alignment: Alignment.centerRight, - child: Text(formatNumber(transaction.amount, context, - currencyId: transaction.currencyId)), + child: Text(formatNumber(transaction!.amount, context, + currencyId: transaction.currencyId)!), ); case TransactionFields.deposit: - if (!transaction.isDeposit) { + if (!transaction!.isDeposit) { return SizedBox(); } return Align( alignment: Alignment.centerRight, child: Text(formatNumber(transaction.amount, context, - currencyId: transaction.currencyId)), + currencyId: transaction.currencyId)!), ); case TransactionFields.withdrawal: - if (!transaction.isWithdrawal) { + if (!transaction!.isWithdrawal) { return SizedBox(); } return Align( alignment: Alignment.centerRight, child: Text(formatNumber(transaction.amount, context, - currencyId: transaction.currencyId)), + currencyId: transaction.currencyId)!), ); case TransactionFields.description: - return Text(transaction.description); + return Text(transaction!.description); case TransactionFields.accountType: final bankAccount = - state.bankAccountState.get(transaction.bankAccountId); + state.bankAccountState.get(transaction!.bankAccountId)!; return Text(toTitleCase(bankAccount.type)); case TransactionFields.bankAccount: final bankAccount = - state.bankAccountState.get(transaction.bankAccountId); + state.bankAccountState.get(transaction!.bankAccountId); return LinkTextRelatedEntity( entity: bankAccount, relation: transaction); case TransactionFields.payment: - final payment = state.paymentState.get(transaction.paymentId); + final payment = state.paymentState.get(transaction!.paymentId); return LinkTextRelatedEntity(entity: payment, relation: transaction); case TransactionFields.invoices: return ConstrainedBox( constraints: BoxConstraints(maxWidth: kTableColumnWidthMax), child: Wrap( clipBehavior: Clip.antiAlias, - children: transaction.invoiceIds + children: transaction!.invoiceIds .split(',') .map((invoiceId) => state.invoiceState.map[invoiceId]) - .where((invoice) => invoice != null) + .whereNotNull() .map((invoice) => Padding( padding: const EdgeInsets.only(right: 8), child: LinkTextRelatedEntity( @@ -109,10 +110,10 @@ class TransactionPresenter extends EntityPresenter { constraints: BoxConstraints(maxWidth: kTableColumnWidthMax), child: Wrap( clipBehavior: Clip.antiAlias, - children: transaction.expenseId + children: transaction!.expenseId .split(',') .map((expenseId) => state.expenseState.map[expenseId]) - .where((expense) => expense != null) + .whereNotNull() .map((expense) => Padding( padding: const EdgeInsets.only(right: 8), child: LinkTextRelatedEntity( @@ -122,10 +123,10 @@ class TransactionPresenter extends EntityPresenter { ), ); case TransactionFields.vendor: - final vendor = state.vendorState.get(transaction.vendorId); + final vendor = state.vendorState.get(transaction!.vendorId); return LinkTextRelatedEntity(entity: vendor, relation: transaction); case TransactionFields.category: - final category = state.expenseCategoryState.get(transaction.categoryId); + final category = state.expenseCategoryState.get(transaction!.categoryId); return LinkTextRelatedEntity(entity: category, relation: transaction); } diff --git a/lib/ui/transaction/transaction_screen.dart b/lib/ui/transaction/transaction_screen.dart index 5d89c46c3..93e1fc606 100644 --- a/lib/ui/transaction/transaction_screen.dart +++ b/lib/ui/transaction/transaction_screen.dart @@ -18,8 +18,8 @@ import 'transaction_screen_vm.dart'; class TransactionScreen extends StatelessWidget { const TransactionScreen({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); static const String route = '/transaction'; @@ -37,27 +37,27 @@ class TransactionScreen extends StatelessWidget { TransactionStatusEntity().rebuild( (b) => b ..id = kTransactionStatusDeposit - ..name = localization.deposits, + ..name = localization!.deposits, ), TransactionStatusEntity().rebuild( (b) => b ..id = kTransactionStatusWithdrawal - ..name = localization.withdrawals, + ..name = localization!.withdrawals, ), TransactionStatusEntity().rebuild( (b) => b ..id = kTransactionStatusUnmatched - ..name = localization.unmatched, + ..name = localization!.unmatched, ), TransactionStatusEntity().rebuild( (b) => b ..id = kTransactionStatusMatched - ..name = localization.matched, + ..name = localization!.matched, ), TransactionStatusEntity().rebuild( (b) => b ..id = kTransactionStatusConverted - ..name = localization.converted, + ..name = localization!.converted, ), ]; @@ -77,7 +77,7 @@ class TransactionScreen extends StatelessWidget { store.dispatch(FilterTransactionsByState(state)); }, onSelectedStatus: (EntityStatus status, value) { - store.dispatch(FilterTransactionsByStatus(status)); + store.dispatch(FilterTransactionsByStatus(status as TransactionStatusEntity)); }, statuses: statuses, ), @@ -133,7 +133,7 @@ class TransactionScreen extends StatelessWidget { statuses: statuses, ), floatingActionButton: state.prefState.isMenuFloated && - userCompany.canCreate(EntityType.transaction) + userCompany!.canCreate(EntityType.transaction) ? FloatingActionButton( heroTag: 'transaction_fab', backgroundColor: Theme.of(context).primaryColorDark, @@ -145,7 +145,7 @@ class TransactionScreen extends StatelessWidget { Icons.add, color: Colors.white, ), - tooltip: localization.newTransaction, + tooltip: localization!.newTransaction, ) : null, ); diff --git a/lib/ui/transaction/transaction_screen_vm.dart b/lib/ui/transaction/transaction_screen_vm.dart index b0e740ebd..446333d8f 100644 --- a/lib/ui/transaction/transaction_screen_vm.dart +++ b/lib/ui/transaction/transaction_screen_vm.dart @@ -11,7 +11,7 @@ import 'package:redux/redux.dart'; import 'transaction_screen.dart'; class TransactionScreenBuilder extends StatelessWidget { - const TransactionScreenBuilder({Key key}) : super(key: key); + const TransactionScreenBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -28,18 +28,18 @@ class TransactionScreenBuilder extends StatelessWidget { class TransactionScreenVM { TransactionScreenVM({ - @required this.isInMultiselect, - @required this.transactionList, - @required this.userCompany, - @required this.onEntityAction, - @required this.transactionMap, + required this.isInMultiselect, + required this.transactionList, + required this.userCompany, + required this.onEntityAction, + required this.transactionMap, }); final bool isInMultiselect; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List transactionList; final Function(BuildContext, List, EntityAction) onEntityAction; - final BuiltMap transactionMap; + final BuiltMap transactionMap; static TransactionScreenVM fromStore(Store store) { final state = store.state; diff --git a/lib/ui/transaction/view/transaction_view.dart b/lib/ui/transaction/view/transaction_view.dart index 8996b58be..b3f675a77 100644 --- a/lib/ui/transaction/view/transaction_view.dart +++ b/lib/ui/transaction/view/transaction_view.dart @@ -1,5 +1,6 @@ import 'dart:async'; +import 'package:collection/collection.dart' show IterableNullableExtension; import 'package:flutter/material.dart'; import 'package:flutter_redux/flutter_redux.dart'; import 'package:invoiceninja_flutter/constants.dart'; @@ -31,9 +32,9 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class TransactionView extends StatefulWidget { const TransactionView({ - Key key, - @required this.viewModel, - @required this.isFilter, + Key? key, + required this.viewModel, + required this.isFilter, }) : super(key: key); final TransactionViewVM viewModel; @@ -62,7 +63,7 @@ class _TransactionViewState extends State { isFilter: widget.isFilter, entity: transaction, title: transactions.length > 1 - ? '${transactions.length} ${localization.selected}' + ? '${transactions.length} ${localization!.selected}' : null, body: Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -73,8 +74,8 @@ class _TransactionViewState extends State { EntityHeader( entity: transaction, label: transaction.isDeposit - ? localization.deposit - : localization.withdrawal, + ? localization!.deposit + : localization!.withdrawal, value: formatNumber(transaction.amount, context, currencyId: transaction.currencyId), secondLabel: localization.date, @@ -145,9 +146,9 @@ class _TransactionViewState extends State { class _MatchDeposits extends StatefulWidget { const _MatchDeposits({ - Key key, + Key? key, // ignore: unused_element - @required this.viewModel, + required this.viewModel, }) : super(key: key); final TransactionViewVM viewModel; @@ -159,13 +160,13 @@ class _MatchDeposits extends StatefulWidget { class _MatchDepositsState extends State<_MatchDeposits> { final _invoiceScrollController = ScrollController(); final _paymentScrollController = ScrollController(); - TextEditingController _invoiceFilterController; - TextEditingController _paymentFilterController; - FocusNode _focusNode; - List _invoices; - List _selectedInvoices; - List _payments; - PaymentEntity _selectedPayment; + TextEditingController? _invoiceFilterController; + TextEditingController? _paymentFilterController; + FocusNode? _focusNode; + late List _invoices; + late List _selectedInvoices; + late List _payments; + PaymentEntity? _selectedPayment; bool _matchExisting = false; bool _showFilter = false; @@ -188,7 +189,7 @@ class _MatchDepositsState extends State<_MatchDeposits> { _selectedInvoices = transactions.first.invoiceIds .split(',') .map((invoiceId) => state.invoiceState.map[invoiceId]) - .where((invoice) => invoice != null) + .whereNotNull() .toList(); } @@ -203,40 +204,40 @@ class _MatchDepositsState extends State<_MatchDeposits> { _invoices = invoiceState.map.values.where((invoice) { if (_selectedInvoices.isNotEmpty) { - if (invoice.clientId != _selectedInvoices.first.clientId) { + if (invoice!.clientId != _selectedInvoices.first!.clientId) { return false; } } if (transactions.isNotEmpty && - state.clientState.get(invoice.clientId).currencyId != + state.clientState.get(invoice!.clientId)!.currencyId != transactions.first.currencyId) { return false; } - if (invoice.isPaid || invoice.isDeleted) { + if (invoice!.isPaid || invoice.isDeleted!) { return false; } - final filter = _invoiceFilterController.text; + final filter = _invoiceFilterController!.text; if (filter.isNotEmpty) { final client = state.clientState.get(invoice.clientId); if (!invoice.matchesFilter(filter) && - !client.matchesNameOrEmail(filter)) { + !client!.matchesNameOrEmail(filter)) { return false; } } if (_showFilter) { if (_minAmount.isNotEmpty) { - if (invoice.balanceOrAmount < parseDouble(_minAmount)) { + if (invoice.balanceOrAmount < parseDouble(_minAmount)!) { return false; } } if (_maxAmount.isNotEmpty) { - if (invoice.balanceOrAmount > parseDouble(_maxAmount)) { + if (invoice.balanceOrAmount > parseDouble(_maxAmount)!) { return false; } } @@ -257,7 +258,7 @@ class _MatchDepositsState extends State<_MatchDeposits> { return true; }).toList(); _invoices.sort((invoiceA, invoiceB) { - return invoiceB.date.compareTo(invoiceA.date); + return invoiceB!.date.compareTo(invoiceA!.date); }); } @@ -268,40 +269,40 @@ class _MatchDepositsState extends State<_MatchDeposits> { _payments = paymentState.map.values.where((payment) { if (_selectedPayment != null) { - if (payment.id != _selectedPayment.id) { + if (payment!.id != _selectedPayment!.id) { return false; } } - if (payment.transactionId.isNotEmpty || payment.isDeleted) { + if (payment!.transactionId.isNotEmpty || payment.isDeleted!) { return false; } if (transactions.isNotEmpty && - state.clientState.get(payment.clientId).currencyId != + state.clientState.get(payment.clientId)!.currencyId != transactions.first.currencyId) { return false; } - final filter = _paymentFilterController.text; + final filter = _paymentFilterController!.text; if (filter.isNotEmpty) { final client = state.clientState.get(payment.clientId); if (!payment.matchesFilter(filter) && - !client.matchesNameOrEmail(filter)) { + !client!.matchesNameOrEmail(filter)) { return false; } } if (_showFilter) { if (_minAmount.isNotEmpty) { - if (payment.amount < parseDouble(_minAmount)) { + if (payment.amount < parseDouble(_minAmount)!) { return false; } } if (_maxAmount.isNotEmpty) { - if (payment.amount > parseDouble(_maxAmount)) { + if (payment.amount > parseDouble(_maxAmount)!) { return false; } } @@ -322,7 +323,7 @@ class _MatchDepositsState extends State<_MatchDeposits> { return true; }).toList(); _payments.sort((paymentA, paymentB) { - return paymentB.date.compareTo(paymentA.date); + return paymentB!.date.compareTo(paymentA!.date); }); } @@ -342,27 +343,27 @@ class _MatchDepositsState extends State<_MatchDeposits> { void dispose() { _invoiceScrollController.dispose(); _paymentScrollController.dispose(); - _invoiceFilterController.dispose(); - _paymentFilterController.dispose(); - _focusNode.dispose(); + _invoiceFilterController!.dispose(); + _paymentFilterController!.dispose(); + _focusNode!.dispose(); super.dispose(); } @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; final state = viewModel.state; - String currencyId; + String? currencyId; if (_selectedInvoices.isNotEmpty) { currencyId = - state.clientState.get(_selectedInvoices.first.clientId).currencyId; + state.clientState.get(_selectedInvoices.first!.clientId)!.currencyId; } double totalSelected = 0; _selectedInvoices.forEach((invoice) { - totalSelected += invoice.balanceOrAmount; + totalSelected += invoice!.balanceOrAmount; }); return Column( @@ -404,7 +405,7 @@ class _MatchDepositsState extends State<_MatchDeposits> { }, onCleared: () { setState(() { - _paymentFilterController.text = ''; + _paymentFilterController!.text = ''; updatePaymentList(); }); }, @@ -442,7 +443,7 @@ class _MatchDepositsState extends State<_MatchDeposits> { }, onCleared: () { setState(() { - _invoiceFilterController.text = ''; + _invoiceFilterController!.text = ''; updateInvoiceList(); }); }, @@ -551,7 +552,7 @@ class _MatchDepositsState extends State<_MatchDeposits> { separatorBuilder: (context, index) => ListDivider(), itemCount: _payments.length, itemBuilder: (BuildContext context, int index) { - final payment = _payments[index]; + final payment = _payments[index]!; return PaymentListItem( payment: payment, showCheckbox: true, @@ -626,7 +627,7 @@ class _MatchDepositsState extends State<_MatchDeposits> { final viewModel = widget.viewModel; viewModel.onLinkToPayment( context, - _selectedPayment.id, + _selectedPayment!.id, ); }, iconData: Icons.link, @@ -641,7 +642,7 @@ class _MatchDepositsState extends State<_MatchDeposits> { viewModel.onConvertToPayment( context, _selectedInvoices - .map((invoice) => invoice.id) + .map((invoice) => invoice!.id) .toList(), ); }, @@ -655,8 +656,8 @@ class _MatchDepositsState extends State<_MatchDeposits> { class _MatchWithdrawals extends StatefulWidget { const _MatchWithdrawals({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final TransactionViewVM viewModel; @@ -677,18 +678,18 @@ class _MatchWithdrawalsState extends State<_MatchWithdrawals> { String _startDate = ''; String _endDate = ''; - TextEditingController _vendorFilterController; - TextEditingController _categoryFilterController; - TextEditingController _expenseFilterController; - FocusNode _vendorFocusNode; - FocusNode _categoryFocusNode; - FocusNode _expenseFocusNode; - List _vendors; - List _categories; - List _expenses; - VendorEntity _selectedVendor; - ExpenseCategoryEntity _selectedCategory; - List _selectedExpenses; + TextEditingController? _vendorFilterController; + TextEditingController? _categoryFilterController; + TextEditingController? _expenseFilterController; + FocusNode? _vendorFocusNode; + FocusNode? _categoryFocusNode; + FocusNode? _expenseFocusNode; + late List _vendors; + late List _categories; + late List _expenses; + VendorEntity? _selectedVendor; + ExpenseCategoryEntity? _selectedCategory; + late List _selectedExpenses; @override void initState() { @@ -709,14 +710,14 @@ class _MatchWithdrawalsState extends State<_MatchWithdrawals> { final transaction = transactions.first; if ((transaction.pendingCategoryId ?? '').isNotEmpty) { _selectedCategory = - state.expenseCategoryState.get(transaction.pendingCategoryId); + state.expenseCategoryState.get(transaction.pendingCategoryId!); } else if ((transaction.categoryId ?? '').isNotEmpty) { _selectedCategory = state.expenseCategoryState.get(transaction.categoryId); } if ((transaction.pendingVendorId ?? '').isNotEmpty) { - _selectedVendor = state.vendorState.get(transaction.pendingVendorId); + _selectedVendor = state.vendorState.get(transaction.pendingVendorId!); } else if ((transaction.vendorId ?? '').isNotEmpty) { _selectedVendor = state.vendorState.get(transaction.vendorId); } @@ -733,16 +734,16 @@ class _MatchWithdrawalsState extends State<_MatchWithdrawals> { _categories = categoryState.map.values.where((category) { if (_selectedCategory != null) { - if (category.id != _selectedCategory?.id) { + if (category!.id != _selectedCategory?.id) { return false; } } - if (category.isDeleted) { + if (category!.isDeleted!) { return false; } - final filter = _categoryFilterController.text; + final filter = _categoryFilterController!.text; if (filter.isNotEmpty) { if (!category.matchesFilter(filter)) { @@ -753,9 +754,9 @@ class _MatchWithdrawalsState extends State<_MatchWithdrawals> { return true; }).toList(); _categories.sort((categoryA, categoryB) { - return categoryA.name + return categoryA!.name .toLowerCase() - .compareTo(categoryB.name.toLowerCase()); + .compareTo(categoryB!.name.toLowerCase()); }); } @@ -765,16 +766,16 @@ class _MatchWithdrawalsState extends State<_MatchWithdrawals> { _vendors = vendorState.map.values.where((vendor) { if (_selectedVendor != null) { - if (vendor.id != _selectedVendor?.id) { + if (vendor!.id != _selectedVendor?.id) { return false; } } - if (vendor.isDeleted) { + if (vendor!.isDeleted!) { return false; } - final filter = _vendorFilterController.text; + final filter = _vendorFilterController!.text; if (filter.isNotEmpty) { if (!vendor.matchesFilter(filter)) { @@ -785,7 +786,7 @@ class _MatchWithdrawalsState extends State<_MatchWithdrawals> { return true; }).toList(); _vendors.sort((vendorA, vendorB) { - return vendorA.name.toLowerCase().compareTo(vendorB.name.toLowerCase()); + return vendorA!.name.toLowerCase().compareTo(vendorB!.name.toLowerCase()); }); } @@ -795,7 +796,7 @@ class _MatchWithdrawalsState extends State<_MatchWithdrawals> { final transactions = widget.viewModel.transactions; _expenses = expenseState.map.values.where((expense) { - if (expense.transactionId.isNotEmpty || expense.isDeleted) { + if (expense!.transactionId.isNotEmpty || expense.isDeleted!) { return false; } @@ -804,39 +805,39 @@ class _MatchWithdrawalsState extends State<_MatchWithdrawals> { return false; } - final filter = _expenseFilterController.text; + final filter = _expenseFilterController!.text; if (filter.isNotEmpty) { - final client = state.clientState.get(expense.clientId); - final vendor = state.vendorState.get(expense.vendorId); + final client = state.clientState.get(expense.clientId!); + final vendor = state.vendorState.get(expense.vendorId!); if (!expense.matchesFilter(filter) && - !client.matchesNameOrEmail(filter) && - !vendor.matchesNameOrEmail(filter)) { + !client!.matchesNameOrEmail(filter) && + !vendor!.matchesNameOrEmail(filter)) { return false; } } if (_showFilter) { if (_minAmount.isNotEmpty) { - if (expense.amount < parseDouble(_minAmount)) { + if (expense.amount < parseDouble(_minAmount)!) { return false; } } if (_maxAmount.isNotEmpty) { - if (expense.amount > parseDouble(_maxAmount)) { + if (expense.amount > parseDouble(_maxAmount)!) { return false; } } if (_startDate.isNotEmpty) { - if (expense.date.compareTo(_startDate) == -1) { + if (expense.date!.compareTo(_startDate) == -1) { return false; } } if (_endDate.isNotEmpty) { - if (expense.date.compareTo(_endDate) == 1) { + if (expense.date!.compareTo(_endDate) == 1) { return false; } } @@ -845,7 +846,7 @@ class _MatchWithdrawalsState extends State<_MatchWithdrawals> { return true; }).toList(); _expenses.sort((expenseA, expenseB) { - return expenseB.date.compareTo(expenseA.date); + return expenseB!.date!.compareTo(expenseA!.date!); }); } @@ -863,13 +864,13 @@ class _MatchWithdrawalsState extends State<_MatchWithdrawals> { @override void dispose() { - _vendorFilterController.dispose(); - _categoryFilterController.dispose(); - _expenseFilterController.dispose(); + _vendorFilterController!.dispose(); + _categoryFilterController!.dispose(); + _expenseFilterController!.dispose(); - _vendorFocusNode.dispose(); - _categoryFocusNode.dispose(); - _expenseFocusNode.dispose(); + _vendorFocusNode!.dispose(); + _categoryFocusNode!.dispose(); + _expenseFocusNode!.dispose(); _vendorScrollController.dispose(); _categoryScrollController.dispose(); @@ -888,15 +889,15 @@ class _MatchWithdrawalsState extends State<_MatchWithdrawals> { final transaction = transactions.isNotEmpty ? transactions.first : TransactionEntity(); - String currencyId; + String? currencyId; if (_selectedExpenses.isNotEmpty) { currencyId = - state.clientState.get(_selectedExpenses.first.clientId).currencyId; + state.clientState.get(_selectedExpenses.first!.clientId!)!.currencyId; } double totalSelected = 0; _selectedExpenses.forEach((expense) { - totalSelected += expense.grossAmount; + totalSelected += expense!.grossAmount; }); return Column( @@ -913,7 +914,7 @@ class _MatchWithdrawalsState extends State<_MatchWithdrawals> { setState(() => _matchExisting = value == 1), selectedIndex: _matchExisting ? 1 : 0, tabLabels: [ - localization.createExpense, + localization!.createExpense, localization.linkExpense, ], ), @@ -938,12 +939,12 @@ class _MatchWithdrawalsState extends State<_MatchWithdrawals> { }, onCleared: () { setState(() { - _expenseFilterController.text = ''; + _expenseFilterController!.text = ''; updateExpenseList(); }); }, placeholder: - localization.searchExpenses.replaceFirst(':count ', ''), + localization!.searchExpenses.replaceFirst(':count ', ''), ), ), ), @@ -1062,7 +1063,7 @@ class _MatchWithdrawalsState extends State<_MatchWithdrawals> { store.dispatch(SaveTransactionSuccess(transaction.rebuild( (b) => b ..pendingExpenseId = _selectedExpenses - .map((expense) => expense.id) + .map((expense) => expense!.id) .join(',')))); }), ); @@ -1090,11 +1091,11 @@ class _MatchWithdrawalsState extends State<_MatchWithdrawals> { }, onCleared: () { setState(() { - _vendorFilterController.text = ''; + _vendorFilterController!.text = ''; updateVendorList(); }); }, - placeholder: localization.searchVendors + placeholder: localization!.searchVendors .replaceFirst(':count ', '')), ), ), @@ -1111,7 +1112,7 @@ class _MatchWithdrawalsState extends State<_MatchWithdrawals> { ..future.then((_) { store.dispatch(UpdateCurrentRoute( TransactionScreen.route)); - })); + } as FutureOr<_> Function(Null))); completer.future.then((SelectableEntity vendor) { store.dispatch(SaveTransactionSuccess(transaction .rebuild((b) => b..pendingVendorId = vendor.id))); @@ -1134,7 +1135,7 @@ class _MatchWithdrawalsState extends State<_MatchWithdrawals> { separatorBuilder: (context, index) => ListDivider(), itemCount: _vendors.length, itemBuilder: (BuildContext context, int index) { - final vendor = _vendors[index]; + final vendor = _vendors[index]!; return VendorListItem( vendor: vendor, showCheck: true, @@ -1172,11 +1173,11 @@ class _MatchWithdrawalsState extends State<_MatchWithdrawals> { }, onCleared: () { setState(() { - _categoryFilterController.text = ''; + _categoryFilterController!.text = ''; updateCategoryList(); }); }, - placeholder: localization.searchCategories + placeholder: localization.searchCategories! .replaceFirst(':count ', '')), ), ), @@ -1195,7 +1196,7 @@ class _MatchWithdrawalsState extends State<_MatchWithdrawals> { ..future.then((_) { store.dispatch(UpdateCurrentRoute( TransactionScreen.route)); - })); + } as FutureOr<_> Function(Null))); completer.future.then((SelectableEntity category) { store.dispatch(SaveTransactionSuccess( transaction.rebuild( @@ -1219,7 +1220,7 @@ class _MatchWithdrawalsState extends State<_MatchWithdrawals> { separatorBuilder: (context, index) => ListDivider(), itemCount: _categories.length, itemBuilder: (BuildContext context, int index) { - final category = _categories[index]; + final category = _categories[index]!; return ExpenseCategoryListItem( expenseCategory: category, showCheck: true, @@ -1284,7 +1285,7 @@ class _MatchWithdrawalsState extends State<_MatchWithdrawals> { viewModel.onLinkToExpense( context, _selectedExpenses - .map((expense) => expense.id) + .map((expense) => expense!.id) .join(','), ); }, diff --git a/lib/ui/transaction/view/transaction_view_vm.dart b/lib/ui/transaction/view/transaction_view_vm.dart index 1204655db..c844cee98 100644 --- a/lib/ui/transaction/view/transaction_view_vm.dart +++ b/lib/ui/transaction/view/transaction_view_vm.dart @@ -12,7 +12,7 @@ import 'package:invoiceninja_flutter/redux/app/app_state.dart'; class TransactionViewScreen extends StatelessWidget { const TransactionViewScreen({ - Key key, + Key? key, this.isFilter = false, }) : super(key: key); static const String route = '/transaction/view'; @@ -38,25 +38,25 @@ class TransactionViewScreen extends StatelessWidget { class TransactionViewVM { TransactionViewVM({ - @required this.state, - @required this.transactions, - @required this.company, - @required this.onEntityAction, - @required this.onRefreshed, - @required this.isSaving, - @required this.isLoading, - @required this.onConvertToPayment, - @required this.onConvertToExpense, - @required this.onLinkToPayment, - @required this.onLinkToExpense, + required this.state, + required this.transactions, + required this.company, + required this.onEntityAction, + required this.onRefreshed, + required this.isSaving, + required this.isLoading, + required this.onConvertToPayment, + required this.onConvertToExpense, + required this.onLinkToPayment, + required this.onLinkToExpense, }); factory TransactionViewVM.fromStore(Store store) { final state = store.state; final List transactions = []; - List transactionIds = []; + List transactionIds = []; if (state.transactionListState.isInMultiselect()) { - transactionIds = state.transactionListState.selectedIds.toList(); + transactionIds = state.transactionListState.selectedIds!.toList(); } else { transactionIds = [state.transactionUIState.selectedId]; } @@ -64,14 +64,14 @@ class TransactionViewVM { transactionIds.forEach((transactionId) { transactions.add(state.transactionState.map[transactionId] ?? TransactionEntity(id: transactionId)); - }); + } as void Function(String?)); - Future _handleRefresh(BuildContext context) { + Future? _handleRefresh(BuildContext context) { if (transactions.isEmpty) { return null; } final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(LoadTransaction( completer: completer, transactionId: transactions.first.id)); return completer.future; @@ -90,7 +90,7 @@ class TransactionViewVM { store.dispatch( LinkTransactionToPaymentRequest( snackBarCompleter( - context, AppLocalization.of(context).convertedTransaction), + context, AppLocalization.of(context)!.convertedTransaction), transactionIds.first, paymentId), ); @@ -99,7 +99,7 @@ class TransactionViewVM { store.dispatch( LinkTransactionToExpenseRequest( snackBarCompleter( - context, AppLocalization.of(context).convertedTransaction), + context, AppLocalization.of(context)!.convertedTransaction), transactionIds.first, expenseId), ); @@ -108,7 +108,7 @@ class TransactionViewVM { store.dispatch( ConvertTransactionToPaymentRequest( snackBarCompleter( - context, AppLocalization.of(context).convertedTransaction), + context, AppLocalization.of(context)!.convertedTransaction), transactionIds.first, invoiceIds), ); @@ -117,7 +117,7 @@ class TransactionViewVM { store.dispatch( ConvertTransactionsToExpensesRequest( snackBarCompleter( - context, AppLocalization.of(context).convertedTransaction) + context, AppLocalization.of(context)!.convertedTransaction) ..future.then((value) { if (state.transactionListState.isInMultiselect()) { store.dispatch(ClearTransactionMultiselect()); @@ -125,7 +125,7 @@ class TransactionViewVM { store.dispatch(TogglePreviewSidebar()); } } - }), + } as FutureOr<_> Function(Null)), transactionIds, vendorId, categoryId, @@ -137,7 +137,7 @@ class TransactionViewVM { final AppState state; final List transactions; - final CompanyEntity company; + final CompanyEntity? company; final Function(BuildContext, EntityAction) onEntityAction; final Function(BuildContext) onRefreshed; final Function(BuildContext, List) onConvertToPayment; diff --git a/lib/ui/transaction_rule/edit/transaction_rule_edit.dart b/lib/ui/transaction_rule/edit/transaction_rule_edit.dart index 654ad7dde..63f0e3753 100644 --- a/lib/ui/transaction_rule/edit/transaction_rule_edit.dart +++ b/lib/ui/transaction_rule/edit/transaction_rule_edit.dart @@ -23,8 +23,8 @@ import 'package:material_design_icons_flutter/material_design_icons_flutter.dart class TransactionRuleEdit extends StatefulWidget { const TransactionRuleEdit({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final TransactionRuleEditVM viewModel; @@ -79,7 +79,7 @@ class _TransactionRuleEditState extends State { } void _onSubmitted() { - final bool isValid = _formKey.currentState.validate(); + final bool isValid = _formKey.currentState!.validate(); if (!isValid) { return; @@ -96,13 +96,13 @@ class _TransactionRuleEditState extends State { final transactionRule = viewModel.transactionRule; final state = viewModel.state; - final textColor = Theme.of(context).textTheme.bodyLarge.color; + final textColor = Theme.of(context).textTheme.bodyLarge!.color!; final textStyle = TextStyle(color: textColor.withOpacity(.65)); return EditScaffold( title: transactionRule.isNew - ? localization.newTransactionRule - : localization.editTransactionRule, + ? localization!.newTransactionRule + : localization!.editTransactionRule, onCancelPressed: (context) => viewModel.onCancelPressed(context), onSavePressed: (context) => _onSubmitted(), body: Form( @@ -125,8 +125,8 @@ class _TransactionRuleEditState extends State { ), SizedBox(height: 16), SwitchListTile( - title: Text(localization.matchAllRules), - subtitle: Text(localization.matchAllRulesHelp), + title: Text(localization.matchAllRules!), + subtitle: Text(localization.matchAllRulesHelp!), activeColor: Theme.of(context).colorScheme.secondary, value: transactionRule.matchesOnAll, onChanged: (value) { @@ -136,7 +136,7 @@ class _TransactionRuleEditState extends State { ), SwitchListTile( title: Text(localization.autoConvert), - subtitle: Text(localization.autoConvertHelp), + subtitle: Text(localization.autoConvertHelp!), activeColor: Theme.of(context).colorScheme.secondary, value: transactionRule.autoConvert, onChanged: (value) { @@ -154,18 +154,18 @@ class _TransactionRuleEditState extends State { children: [ Expanded( child: Text( - localization.field, + localization.field!, style: textStyle, )), Expanded( child: Text( - localization.operator, + localization.operator!, style: textStyle, ), ), Expanded( child: Text( - localization.value, + localization.value!, style: textStyle, ), ), @@ -180,10 +180,10 @@ class _TransactionRuleEditState extends State { children: [ Expanded( child: - Text(localization.lookup(rule.searchKey)), + Text(localization.lookup(rule!.searchKey)!), ), Expanded( - child: Text(localization.lookup(rule.operator)), + child: Text(localization.lookup(rule.operator)!), ), Expanded( child: Text(rule.value), @@ -303,18 +303,18 @@ class _TransactionRuleEditState extends State { class _RuleCriteria extends StatefulWidget { const _RuleCriteria({ - Key key, + Key? key, this.criteria, }) : super(key: key); - final TransactionRuleCriteriaEntity criteria; + final TransactionRuleCriteriaEntity? criteria; @override State<_RuleCriteria> createState() => __RuleCriteriaState(); } class __RuleCriteriaState extends State<_RuleCriteria> { - TransactionRuleCriteriaEntity _criteria; + TransactionRuleCriteriaEntity? _criteria; static final GlobalKey _formKey = GlobalKey(debugLabel: '_ruleCriteria'); @@ -326,16 +326,16 @@ class __RuleCriteriaState extends State<_RuleCriteria> { } void onDonePressed() { - final bool isValid = _formKey.currentState.validate(); + final bool isValid = _formKey.currentState!.validate(); if (!isValid) { return; } - if (_criteria.searchKey.isEmpty || - _criteria.operator.isEmpty || - (_criteria.value.isEmpty && - _criteria.operator != + if (_criteria!.searchKey.isEmpty || + _criteria!.operator.isEmpty || + (_criteria!.value.isEmpty && + _criteria!.operator != TransactionRuleCriteriaEntity.STRING_OPERATOR_IS_EMPTY)) { return; } @@ -345,7 +345,7 @@ class __RuleCriteriaState extends State<_RuleCriteria> { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; return AlertDialog( content: Form( @@ -355,10 +355,10 @@ class __RuleCriteriaState extends State<_RuleCriteria> { children: [ AppDropdownButton( labelText: localization.field, - value: _criteria.searchKey, + value: _criteria!.searchKey, onChanged: (dynamic value) { setState(() { - _criteria = _criteria.rebuild((b) => b + _criteria = _criteria!.rebuild((b) => b ..searchKey = value ..operator = value == TransactionRuleCriteriaEntity.SEARCH_KEY_DESCRIPTION @@ -379,31 +379,31 @@ class __RuleCriteriaState extends State<_RuleCriteria> { ), AppDropdownButton( labelText: localization.operator, - value: _criteria.operator, + value: _criteria!.operator, onChanged: (dynamic value) { setState(() { - _criteria = _criteria.rebuild((b) => b..operator = value); + _criteria = _criteria!.rebuild((b) => b..operator = value); }); }, - items: _criteria.searchKey == + items: _criteria!.searchKey == TransactionRuleCriteriaEntity.SEARCH_KEY_DESCRIPTION ? [ DropdownMenuItem( - child: Text(localization.contains), + child: Text(localization.contains!), value: TransactionRuleCriteriaEntity .STRING_OPERATOR_CONTAINS, ), DropdownMenuItem( - child: Text(localization.startsWith), + child: Text(localization.startsWith!), value: TransactionRuleCriteriaEntity .STRING_OPERATOR_STARTS_WITH, ), DropdownMenuItem( - child: Text(localization.isWord), + child: Text(localization.isWord!), value: TransactionRuleCriteriaEntity.STRING_OPERATOR_IS, ), DropdownMenuItem( - child: Text(localization.isEmpty), + child: Text(localization.isEmpty!), value: TransactionRuleCriteriaEntity .STRING_OPERATOR_IS_EMPTY, ), @@ -441,16 +441,16 @@ class __RuleCriteriaState extends State<_RuleCriteria> { ), ], ), - if (_criteria.operator != + if (_criteria!.operator != TransactionRuleCriteriaEntity.STRING_OPERATOR_IS_EMPTY) DecoratedFormField( autofocus: true, label: localization.value, - initialValue: _criteria.value, + initialValue: _criteria!.value, keyboardType: TextInputType.text, onChanged: (value) { setState(() { - _criteria = _criteria.rebuild((b) => b..value = value); + _criteria = _criteria!.rebuild((b) => b..value = value); }); }, onSavePressed: (context) => onDonePressed(), diff --git a/lib/ui/transaction_rule/edit/transaction_rule_edit_vm.dart b/lib/ui/transaction_rule/edit/transaction_rule_edit_vm.dart index e5ecdd403..2dac91f0c 100644 --- a/lib/ui/transaction_rule/edit/transaction_rule_edit_vm.dart +++ b/lib/ui/transaction_rule/edit/transaction_rule_edit_vm.dart @@ -16,7 +16,7 @@ import 'package:flutter_styled_toast/flutter_styled_toast.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class TransactionRuleEditScreen extends StatelessWidget { - const TransactionRuleEditScreen({Key key}) : super(key: key); + const TransactionRuleEditScreen({Key? key}) : super(key: key); static const String route = '/$kSettings/$kSettingsTransactionRulesEdit'; @@ -38,20 +38,20 @@ class TransactionRuleEditScreen extends StatelessWidget { class TransactionRuleEditVM { TransactionRuleEditVM({ - @required this.state, - @required this.transactionRule, - @required this.company, - @required this.onChanged, - @required this.isSaving, - @required this.origTransactionRule, - @required this.onSavePressed, - @required this.onCancelPressed, - @required this.isLoading, + required this.state, + required this.transactionRule, + required this.company, + required this.onChanged, + required this.isSaving, + required this.origTransactionRule, + required this.onSavePressed, + required this.onCancelPressed, + required this.isLoading, }); factory TransactionRuleEditVM.fromStore(Store store) { final state = store.state; - final transactionRule = state.transactionRuleUIState.editing; + final transactionRule = state.transactionRuleUIState.editing!; return TransactionRuleEditVM( state: state, @@ -67,7 +67,7 @@ class TransactionRuleEditVM { createEntity( context: context, entity: TransactionRuleEntity(), force: true); if (state.transactionRuleUIState.cancelCompleter != null) { - state.transactionRuleUIState.cancelCompleter.complete(); + state.transactionRuleUIState.cancelCompleter!.complete(); } else { store.dispatch(UpdateCurrentRoute(state.uiState.previousRoute)); } @@ -81,9 +81,9 @@ class TransactionRuleEditVM { store.dispatch(SaveTransactionRuleRequest( completer: completer, transactionRule: transactionRule)); return completer.future.then((savedTransactionRule) { - showToast(transactionRule.isNew - ? localization.createdTransactionRule - : localization.updatedTransactionRule); + showToast(transactionRule!.isNew + ? localization!.createdTransactionRule + : localization!.updatedTransactionRule); if (state.prefState.isMobile) { store.dispatch( UpdateCurrentRoute(TransactionRuleViewScreen.route)); @@ -109,12 +109,12 @@ class TransactionRuleEditVM { } final TransactionRuleEntity transactionRule; - final CompanyEntity company; + final CompanyEntity? company; final Function(TransactionRuleEntity) onChanged; final Function(BuildContext) onSavePressed; final Function(BuildContext) onCancelPressed; final bool isLoading; final bool isSaving; - final TransactionRuleEntity origTransactionRule; + final TransactionRuleEntity? origTransactionRule; final AppState state; } diff --git a/lib/ui/transaction_rule/transaction_rule_list_item.dart b/lib/ui/transaction_rule/transaction_rule_list_item.dart index e26dfc24e..c02ac9a19 100644 --- a/lib/ui/transaction_rule/transaction_rule_list_item.dart +++ b/lib/ui/transaction_rule/transaction_rule_list_item.dart @@ -9,21 +9,21 @@ import 'package:invoiceninja_flutter/ui/app/dismissible_entity.dart'; class TransactionRuleListItem extends StatelessWidget { const TransactionRuleListItem({ - @required this.user, - @required this.transactionRule, - @required this.filter, + required this.user, + required this.transactionRule, + required this.filter, this.onTap, this.onLongPress, this.onCheckboxChanged, this.isChecked = false, }); - final UserEntity user; - final GestureTapCallback onTap; - final GestureTapCallback onLongPress; - final TransactionRuleEntity transactionRule; - final String filter; - final Function(bool) onCheckboxChanged; + final UserEntity? user; + final GestureTapCallback? onTap; + final GestureTapCallback? onLongPress; + final TransactionRuleEntity? transactionRule; + final String? filter; + final Function(bool?)? onCheckboxChanged; final bool isChecked; @override @@ -36,8 +36,8 @@ class TransactionRuleListItem extends StatelessWidget { final isInMultiselect = listUIState.isInMultiselect(); final showCheckbox = onCheckboxChanged != null || isInMultiselect; - final filterMatch = filter != null && filter.isNotEmpty - ? transactionRule.matchesFilterValue(filter) + final filterMatch = filter != null && filter!.isNotEmpty + ? transactionRule!.matchesFilterValue(filter) : null; var subtitle = ''; @@ -45,9 +45,9 @@ class TransactionRuleListItem extends StatelessWidget { if (filterMatch != null) { subtitle = filterMatch; } else { - final vendor = state.vendorState.map[transactionRule.vendorId]; + final vendor = state.vendorState.map[transactionRule!.vendorId]; final category = - state.expenseCategoryState.map[transactionRule.categoryId]; + state.expenseCategoryState.map[transactionRule!.categoryId]; if (vendor != null) { subtitle += vendor.name; @@ -65,23 +65,23 @@ class TransactionRuleListItem extends StatelessWidget { return DismissibleEntity( userCompany: state.userCompany, entity: transactionRule, - isSelected: transactionRule.id == + isSelected: transactionRule!.id == (uiState.isEditing - ? transactionRuleUIState.editing.id + ? transactionRuleUIState.editing!.id : transactionRuleUIState.selectedId), child: ListTile( onTap: () => - onTap != null ? onTap() : selectEntity(entity: transactionRule), + onTap != null ? onTap!() : selectEntity(entity: transactionRule!), onLongPress: () => onLongPress != null - ? onLongPress() - : selectEntity(entity: transactionRule, longPress: true), + ? onLongPress!() + : selectEntity(entity: transactionRule!, longPress: true), leading: showCheckbox ? IgnorePointer( ignoring: listUIState.isInMultiselect(), child: Checkbox( value: isChecked, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, - onChanged: (value) => onCheckboxChanged(value), + onChanged: (value) => onCheckboxChanged!(value), activeColor: Theme.of(context).colorScheme.secondary, ), ) @@ -92,11 +92,11 @@ class TransactionRuleListItem extends StatelessWidget { children: [ Expanded( child: Text( - transactionRule.name, + transactionRule!.name, style: Theme.of(context).textTheme.titleMedium, ), ), - Text(formatNumber(transactionRule.listDisplayAmount, context), + Text(formatNumber(transactionRule!.listDisplayAmount, context)!, style: Theme.of(context).textTheme.titleMedium), ], ), diff --git a/lib/ui/transaction_rule/transaction_rule_list_vm.dart b/lib/ui/transaction_rule/transaction_rule_list_vm.dart index be538fe9f..19c75497b 100644 --- a/lib/ui/transaction_rule/transaction_rule_list_vm.dart +++ b/lib/ui/transaction_rule/transaction_rule_list_vm.dart @@ -17,7 +17,7 @@ import 'package:invoiceninja_flutter/redux/app/app_state.dart'; import 'package:invoiceninja_flutter/redux/transaction_rule/transaction_rule_actions.dart'; class TransactionRuleListBuilder extends StatelessWidget { - const TransactionRuleListBuilder({Key key}) : super(key: key); + const TransactionRuleListBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -46,7 +46,7 @@ class TransactionRuleListBuilder extends StatelessWidget { filter: viewModel.filter, transactionRule: transactionRule, isChecked: - isInMultiselect && listState.isSelected(transactionRule.id), + isInMultiselect && listState.isSelected(transactionRule!.id), ); }); }, @@ -56,18 +56,18 @@ class TransactionRuleListBuilder extends StatelessWidget { class TransactionRuleListVM { TransactionRuleListVM({ - @required this.state, - @required this.userCompany, - @required this.transactionRuleList, - @required this.transactionRuleMap, - @required this.filter, - @required this.isLoading, - @required this.listState, - @required this.onRefreshed, - @required this.onEntityAction, - @required this.tableColumns, - @required this.onSortColumn, - @required this.onClearMultielsect, + required this.state, + required this.userCompany, + required this.transactionRuleList, + required this.transactionRuleMap, + required this.filter, + required this.isLoading, + required this.listState, + required this.onRefreshed, + required this.onEntityAction, + required this.tableColumns, + required this.onSortColumn, + required this.onClearMultielsect, }); static TransactionRuleListVM fromStore(Store store) { @@ -76,7 +76,7 @@ class TransactionRuleListVM { return Future(null); } final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(RefreshData(completer: completer)); return completer.future; } @@ -99,7 +99,7 @@ class TransactionRuleListVM { EntityAction action) => handleTransactionRuleAction(context, transactionRules, action), onRefreshed: (context) => _handleRefresh(context), - tableColumns: state.userCompany.settings + tableColumns: state.userCompany!.settings ?.getTableColumns(EntityType.transactionRule) ?? TransactionRulePresenter.getDefaultTableFields(state.userCompany), onSortColumn: (field) => store.dispatch(SortTransactionRules(field)), @@ -109,11 +109,11 @@ class TransactionRuleListVM { } final AppState state; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List transactionRuleList; - final BuiltMap transactionRuleMap; + final BuiltMap transactionRuleMap; final ListUIState listState; - final String filter; + final String? filter; final bool isLoading; final Function(BuildContext) onRefreshed; final Function(BuildContext, List, EntityAction) onEntityAction; diff --git a/lib/ui/transaction_rule/transaction_rule_presenter.dart b/lib/ui/transaction_rule/transaction_rule_presenter.dart index de503f1a2..87a4b48bf 100644 --- a/lib/ui/transaction_rule/transaction_rule_presenter.dart +++ b/lib/ui/transaction_rule/transaction_rule_presenter.dart @@ -3,11 +3,11 @@ import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/ui/app/presenters/entity_presenter.dart'; class TransactionRulePresenter extends EntityPresenter { - static List getDefaultTableFields(UserCompanyEntity userCompany) { + static List getDefaultTableFields(UserCompanyEntity? userCompany) { return []; } - static List getAllTableFields(UserCompanyEntity userCompany) { + static List getAllTableFields(UserCompanyEntity? userCompany) { return [ ...getDefaultTableFields(userCompany), ...EntityPresenter.getBaseFields(), @@ -15,7 +15,7 @@ class TransactionRulePresenter extends EntityPresenter { } @override - Widget getField({String field, BuildContext context}) { + Widget getField({String? field, required BuildContext context}) { //final state = StoreProvider.of(context).state; //final transactionRule = entity as TransactionRuleEntity; diff --git a/lib/ui/transaction_rule/transaction_rule_screen.dart b/lib/ui/transaction_rule/transaction_rule_screen.dart index ec814418c..e7f97045a 100644 --- a/lib/ui/transaction_rule/transaction_rule_screen.dart +++ b/lib/ui/transaction_rule/transaction_rule_screen.dart @@ -16,8 +16,8 @@ import 'transaction_rule_screen_vm.dart'; class TransactionRuleScreen extends StatelessWidget { const TransactionRuleScreen({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); static const String route = '/$kSettings/$kSettingsTransactionRules'; @@ -88,7 +88,7 @@ class TransactionRuleScreen extends StatelessWidget { store.dispatch(FilterTransactionRulesByCustom4(value)), ), floatingActionButton: state.prefState.isMenuFloated && - userCompany.canCreate(EntityType.transactionRule) + userCompany!.canCreate(EntityType.transactionRule) ? FloatingActionButton( heroTag: 'transaction_rule_fab', backgroundColor: Theme.of(context).primaryColorDark, @@ -100,7 +100,7 @@ class TransactionRuleScreen extends StatelessWidget { Icons.add, color: Colors.white, ), - tooltip: localization.newTransactionRule, + tooltip: localization!.newTransactionRule, ) : null, ); diff --git a/lib/ui/transaction_rule/transaction_rule_screen_vm.dart b/lib/ui/transaction_rule/transaction_rule_screen_vm.dart index 7fe040917..abd0d1558 100644 --- a/lib/ui/transaction_rule/transaction_rule_screen_vm.dart +++ b/lib/ui/transaction_rule/transaction_rule_screen_vm.dart @@ -11,7 +11,7 @@ import 'package:redux/redux.dart'; import 'transaction_rule_screen.dart'; class TransactionRuleScreenBuilder extends StatelessWidget { - const TransactionRuleScreenBuilder({Key key}) : super(key: key); + const TransactionRuleScreenBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -28,18 +28,18 @@ class TransactionRuleScreenBuilder extends StatelessWidget { class TransactionRuleScreenVM { TransactionRuleScreenVM({ - @required this.isInMultiselect, - @required this.transactionRuleList, - @required this.userCompany, - @required this.onEntityAction, - @required this.transactionRuleMap, + required this.isInMultiselect, + required this.transactionRuleList, + required this.userCompany, + required this.onEntityAction, + required this.transactionRuleMap, }); final bool isInMultiselect; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List transactionRuleList; final Function(BuildContext, List, EntityAction) onEntityAction; - final BuiltMap transactionRuleMap; + final BuiltMap transactionRuleMap; static TransactionRuleScreenVM fromStore(Store store) { final state = store.state; diff --git a/lib/ui/transaction_rule/view/transaction_rule_view.dart b/lib/ui/transaction_rule/view/transaction_rule_view.dart index 50cd5172b..2e452a55e 100644 --- a/lib/ui/transaction_rule/view/transaction_rule_view.dart +++ b/lib/ui/transaction_rule/view/transaction_rule_view.dart @@ -13,9 +13,9 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class TransactionRuleView extends StatefulWidget { const TransactionRuleView({ - Key key, - @required this.viewModel, - @required this.isFilter, + Key? key, + required this.viewModel, + required this.isFilter, }) : super(key: key); final TransactionRuleViewVM viewModel; @@ -30,10 +30,10 @@ class _TransactionRuleViewState extends State { Widget build(BuildContext context) { final viewModel = widget.viewModel; final transactionRule = viewModel.transactionRule; - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final state = viewModel.state; - final textColor = Theme.of(context).textTheme.bodyLarge.color; + final textColor = Theme.of(context).textTheme.bodyLarge!.color!; final textStyle = TextStyle(color: textColor.withOpacity(.65)); final transactionStats = memoizedTransactionStatsForTransactionRule( @@ -53,7 +53,7 @@ class _TransactionRuleViewState extends State { currencyId: transactionStats.currencyId), secondLabel: localization.count, secondValue: - '${transactionStats.countActive + transactionStats.countArchived}', + '${transactionStats.countActive! + transactionStats.countArchived!}', ), ListDivider(), FieldGrid({ @@ -64,9 +64,9 @@ class _TransactionRuleViewState extends State { ? localization.enabled : localization.disabled, localization.vendor: - state.vendorState.get(transactionRule.vendorId).name, + state.vendorState.get(transactionRule.vendorId)!.name, localization.category: - state.expenseCategoryState.get(transactionRule.categoryId).name, + state.expenseCategoryState.get(transactionRule.categoryId)!.name, }), if (transactionRule.rules.isNotEmpty) ...[ Padding( @@ -76,18 +76,18 @@ class _TransactionRuleViewState extends State { children: [ Expanded( child: Text( - localization.field, + localization.field!, style: textStyle, )), Expanded( child: Text( - localization.operator, + localization.operator!, style: textStyle, ), ), Expanded( child: Text( - localization.value, + localization.value!, style: textStyle, ), ), @@ -102,10 +102,10 @@ class _TransactionRuleViewState extends State { child: Row( children: [ Expanded( - child: Text(localization.lookup(rule.searchKey)), + child: Text(localization.lookup(rule!.searchKey)!), ), Expanded( - child: Text(localization.lookup(rule.operator)), + child: Text(localization.lookup(rule.operator)!), ), Expanded( child: Text(rule.value), diff --git a/lib/ui/transaction_rule/view/transaction_rule_view_vm.dart b/lib/ui/transaction_rule/view/transaction_rule_view_vm.dart index 728c5b0a3..88175d80d 100644 --- a/lib/ui/transaction_rule/view/transaction_rule_view_vm.dart +++ b/lib/ui/transaction_rule/view/transaction_rule_view_vm.dart @@ -15,7 +15,7 @@ import 'package:invoiceninja_flutter/redux/app/app_state.dart'; class TransactionRuleViewScreen extends StatelessWidget { const TransactionRuleViewScreen({ - Key key, + Key? key, this.isFilter = false, }) : super(key: key); @@ -41,15 +41,15 @@ class TransactionRuleViewScreen extends StatelessWidget { class TransactionRuleViewVM { TransactionRuleViewVM({ - @required this.state, - @required this.transactionRule, - @required this.company, - @required this.onEntityAction, - @required this.onRefreshed, - @required this.isSaving, - @required this.isLoading, - @required this.isDirty, - @required this.onBackPressed, + required this.state, + required this.transactionRule, + required this.company, + required this.onEntityAction, + required this.onRefreshed, + required this.isSaving, + required this.isLoading, + required this.isDirty, + required this.onBackPressed, }); factory TransactionRuleViewVM.fromStore(Store store) { @@ -60,7 +60,7 @@ class TransactionRuleViewVM { Future _handleRefresh(BuildContext context) { final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(LoadTransactionRule( completer: completer, transactionRuleId: transactionRule.id)); return completer.future; @@ -84,7 +84,7 @@ class TransactionRuleViewVM { final AppState state; final TransactionRuleEntity transactionRule; - final CompanyEntity company; + final CompanyEntity? company; final Function(BuildContext, EntityAction) onEntityAction; final Function onBackPressed; final Function(BuildContext) onRefreshed; diff --git a/lib/ui/user/edit/user_edit.dart b/lib/ui/user/edit/user_edit.dart index 7a68b4b4c..9d778a0b7 100644 --- a/lib/ui/user/edit/user_edit.dart +++ b/lib/ui/user/edit/user_edit.dart @@ -22,8 +22,8 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class UserEdit extends StatefulWidget { const UserEdit({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final UserEditVM viewModel; @@ -38,7 +38,7 @@ class _UserEditState extends State GlobalKey(debugLabel: '_userEdit'); final _debouncer = Debouncer(); final FocusScopeNode _focusNode = FocusScopeNode(); - TabController _controller; + TabController? _controller; final _firstNameController = TextEditingController(); final _lastNameController = TextEditingController(); @@ -94,7 +94,7 @@ class _UserEditState extends State @override void dispose() { _focusNode.dispose(); - _controller.dispose(); + _controller!.dispose(); _controllers.forEach((controller) { controller.removeListener(_onChanged); controller.dispose(); @@ -123,7 +123,7 @@ class _UserEditState extends State void _togglePermission(String permission) { final user = widget.viewModel.user; - final userCompany = user.userCompany; + final userCompany = user.userCompany!; final permissions = (userCompany.permissions ?? '').split(','); if (permissions.contains(permission)) { @@ -139,7 +139,7 @@ class _UserEditState extends State } void _onSavePressed(BuildContext context) { - final bool isValid = _formKey.currentState.validate(); + final bool isValid = _formKey.currentState!.validate(); if (!isValid) { return; @@ -152,9 +152,9 @@ class _UserEditState extends State Widget build(BuildContext context) { final viewModel = widget.viewModel; final state = viewModel.state; - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final user = viewModel.user; - final userCompany = user.userCompany; + final userCompany = user.userCompany!; return EditScaffold( entity: user, @@ -280,7 +280,7 @@ class _UserEditState extends State ), SwitchListTile( title: Text(localization.dashboard), - subtitle: Text(localization.viewDashboardPermission), + subtitle: Text(localization.viewDashboardPermission!), value: userCompany.isAdmin ? true : userCompany.permissions @@ -314,7 +314,7 @@ class _UserEditState extends State ), SwitchListTile( title: Text(localization.reports), - subtitle: Text(localization.viewReportPermission), + subtitle: Text(localization.viewReportPermission!), value: userCompany.isAdmin ? true : userCompany.permissions @@ -361,10 +361,10 @@ class _UserEditState extends State label: Text(localization.create), ), DataColumn( - label: Text(localization.viewAll), + label: Text(localization.viewAll!), ), DataColumn( - label: Text(localization.editAll), + label: Text(localization.editAll!), ), ], rows: [ @@ -425,13 +425,13 @@ class _UserEditState extends State EntityType.transaction, ] .where((entityType) => - state.company.isModuleEnabled(entityType)) + state.company!.isModuleEnabled(entityType)) .map((EntityType type) { final createPermission = 'create_' + type.apiValue; final editPermission = 'edit_' + type.apiValue; final viewPermission = 'view_' + type.apiValue; return DataRow(cells: [ - DataCell(Text(localization.lookup('$type')), + DataCell(Text(localization.lookup('$type')!), onTap: () { _togglePermission(createPermission); WidgetsBinding.instance @@ -499,15 +499,15 @@ class _UserEditState extends State class _PermissionCheckbox extends StatelessWidget { const _PermissionCheckbox({ - @required this.userCompany, - @required this.permission, - @required this.onChanged, + required this.userCompany, + required this.permission, + required this.onChanged, this.checkAll = false, }); final UserCompanyEntity userCompany; final String permission; - final Function(bool) onChanged; + final Function(bool?) onChanged; final bool checkAll; @override diff --git a/lib/ui/user/edit/user_edit_vm.dart b/lib/ui/user/edit/user_edit_vm.dart index c8c07856e..3b545cbe3 100644 --- a/lib/ui/user/edit/user_edit_vm.dart +++ b/lib/ui/user/edit/user_edit_vm.dart @@ -24,7 +24,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/dialogs.dart'; class UserEditScreen extends StatelessWidget { - const UserEditScreen({Key key}) : super(key: key); + const UserEditScreen({Key? key}) : super(key: key); static const String route = '/$kSettings/$kSettingsUserManagementEdit'; @override @@ -45,21 +45,21 @@ class UserEditScreen extends StatelessWidget { class UserEditVM { UserEditVM({ - @required this.state, - @required this.user, - @required this.userCompany, - @required this.company, - @required this.onUserChanged, - @required this.isSaving, - @required this.origUser, - @required this.onSavePressed, - @required this.onCancelPressed, - @required this.isLoading, + required this.state, + required this.user, + required this.userCompany, + required this.company, + required this.onUserChanged, + required this.isSaving, + required this.origUser, + required this.onSavePressed, + required this.onCancelPressed, + required this.isLoading, }); factory UserEditVM.fromStore(Store store) { final state = store.state; - final user = state.userUIState.editing; + final user = state.userUIState.editing!; return UserEditVM( state: state, @@ -93,23 +93,23 @@ class UserEditVM { )); }); return completer.future.then((savedUser) { - showToast(user.isNew - ? localization.createdUser - : localization.updatedUser); + showToast(user!.isNew + ? localization!.createdUser + : localization!.updatedUser); if (state.prefState.isMobile) { store.dispatch(UpdateCurrentRoute(UserViewScreen.route)); if (user.isNew) { - navigator.pushReplacementNamed(UserViewScreen.route); + navigator!.pushReplacementNamed(UserViewScreen.route); } else { - navigator.pop(savedUser); + navigator!.pop(savedUser); } } else { viewEntity(entity: savedUser, force: true); } }).catchError((Object error) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { return ErrorDialog(error); }); @@ -120,13 +120,13 @@ class UserEditVM { } final UserEntity user; - final UserCompanyEntity userCompany; - final CompanyEntity company; + final UserCompanyEntity? userCompany; + final CompanyEntity? company; final Function(UserEntity) onUserChanged; final Function(BuildContext) onSavePressed; final Function(BuildContext) onCancelPressed; final bool isLoading; final bool isSaving; - final UserEntity origUser; + final UserEntity? origUser; final AppState state; } diff --git a/lib/ui/user/user_list_item.dart b/lib/ui/user/user_list_item.dart index b491ab471..19f2d06bc 100644 --- a/lib/ui/user/user_list_item.dart +++ b/lib/ui/user/user_list_item.dart @@ -15,19 +15,19 @@ import 'package:invoiceninja_flutter/utils/formatting.dart'; class UserListItem extends StatelessWidget { const UserListItem({ - @required this.user, - @required this.filter, + required this.user, + required this.filter, this.onTap, this.onLongPress, this.onCheckboxChanged, this.isChecked = false, }); - final UserEntity user; - final GestureTapCallback onTap; - final GestureTapCallback onLongPress; - final String filter; - final Function(bool) onCheckboxChanged; + final UserEntity? user; + final GestureTapCallback? onTap; + final GestureTapCallback? onLongPress; + final String? filter; + final Function(bool?)? onCheckboxChanged; final bool isChecked; @override @@ -40,9 +40,9 @@ class UserListItem extends StatelessWidget { final isInMultiselect = listUIState.isInMultiselect(); final showCheckbox = onCheckboxChanged != null || isInMultiselect; - final filterMatch = filter != null && filter.isNotEmpty - ? user.matchesFilterValue(filter) - : user.email; + final filterMatch = filter != null && filter!.isNotEmpty + ? user!.matchesFilterValue(filter) + : user!.email; final subtitle = filterMatch; return DismissibleEntity( @@ -50,17 +50,17 @@ class UserListItem extends StatelessWidget { entity: user, isSelected: false, child: ListTile( - onTap: () => onTap != null ? onTap() : selectEntity(entity: user), + onTap: () => onTap != null ? onTap!() : selectEntity(entity: user!), onLongPress: () => onLongPress != null - ? onLongPress() - : selectEntity(entity: user, longPress: true), + ? onLongPress!() + : selectEntity(entity: user!, longPress: true), leading: showCheckbox ? IgnorePointer( ignoring: listUIState.isInMultiselect(), child: Checkbox( value: isChecked, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, - onChanged: (value) => onCheckboxChanged(value), + onChanged: (value) => onCheckboxChanged!(value), activeColor: Theme.of(context).colorScheme.secondary, ), ) @@ -71,11 +71,11 @@ class UserListItem extends StatelessWidget { children: [ Expanded( child: Text( - user.listDisplayName, + user!.listDisplayName, style: Theme.of(context).textTheme.titleMedium, ), ), - Text(formatNumber(user.listDisplayAmount, context), + Text(formatNumber(user!.listDisplayAmount, context)!, style: Theme.of(context).textTheme.titleMedium), ], ), diff --git a/lib/ui/user/user_list_vm.dart b/lib/ui/user/user_list_vm.dart index b697ce636..8b1fa4ce2 100644 --- a/lib/ui/user/user_list_vm.dart +++ b/lib/ui/user/user_list_vm.dart @@ -24,7 +24,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class UserListBuilder extends StatelessWidget { - const UserListBuilder({Key key}) : super(key: key); + const UserListBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -61,16 +61,16 @@ class UserListBuilder extends StatelessWidget { class UserListVM { UserListVM({ - @required this.state, - @required this.userCompany, - @required this.userList, - @required this.userMap, - @required this.filter, - @required this.isLoading, - @required this.listState, - @required this.onRefreshed, - @required this.onSortColumn, - @required this.onClearMultielsect, + required this.state, + required this.userCompany, + required this.userList, + required this.userMap, + required this.filter, + required this.isLoading, + required this.listState, + required this.onRefreshed, + required this.onSortColumn, + required this.onClearMultielsect, }); static UserListVM fromStore(Store store) { @@ -79,7 +79,7 @@ class UserListVM { return Future(null); } final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(RefreshData(completer: completer)); return completer.future; } @@ -95,7 +95,7 @@ class UserListVM { state.userState.map, state.userState.list, state.userListState, - state.user.id), + state.user!.id), userMap: state.userState.map, isLoading: state.isLoading, filter: state.userUIState.listUIState.filter, @@ -106,11 +106,11 @@ class UserListVM { } final AppState state; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List userList; - final BuiltMap userMap; + final BuiltMap userMap; final ListUIState listState; - final String filter; + final String? filter; final bool isLoading; final Function(BuildContext) onRefreshed; final Function(String) onSortColumn; diff --git a/lib/ui/user/user_screen.dart b/lib/ui/user/user_screen.dart index 8b0261878..56b6d5bc2 100644 --- a/lib/ui/user/user_screen.dart +++ b/lib/ui/user/user_screen.dart @@ -19,8 +19,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class UserScreen extends StatelessWidget { const UserScreen({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); static const String route = '/$kSettings/$kSettingsUserManagement'; @@ -85,7 +85,7 @@ class UserScreen extends StatelessWidget { }, ), floatingActionButton: - state.prefState.isMobile && userCompany.canCreate(EntityType.user) + state.prefState.isMobile && userCompany!.canCreate(EntityType.user) ? FloatingActionButton( heroTag: 'user_fab', backgroundColor: Theme.of(context).primaryColorDark, @@ -97,7 +97,7 @@ class UserScreen extends StatelessWidget { Icons.add, color: Colors.white, ), - tooltip: localization.newUser, + tooltip: localization!.newUser, ) : null, ); diff --git a/lib/ui/user/user_screen_vm.dart b/lib/ui/user/user_screen_vm.dart index 33bf2f9be..00e72e667 100644 --- a/lib/ui/user/user_screen_vm.dart +++ b/lib/ui/user/user_screen_vm.dart @@ -14,7 +14,7 @@ import 'package:invoiceninja_flutter/redux/user/user_selectors.dart'; import 'user_screen.dart'; class UserScreenBuilder extends StatelessWidget { - const UserScreenBuilder({Key key}) : super(key: key); + const UserScreenBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -31,16 +31,16 @@ class UserScreenBuilder extends StatelessWidget { class UserScreenVM { UserScreenVM({ - @required this.isInMultiselect, - @required this.userList, - @required this.userCompany, - @required this.userMap, + required this.isInMultiselect, + required this.userList, + required this.userCompany, + required this.userMap, }); final bool isInMultiselect; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List userList; - final BuiltMap userMap; + final BuiltMap userMap; static UserScreenVM fromStore(Store store) { final state = store.state; @@ -52,7 +52,7 @@ class UserScreenVM { state.userState.map, state.userState.list, state.userListState, - state.user.id), + state.user!.id), userCompany: state.userCompany, isInMultiselect: state.userListState.isInMultiselect(), ); diff --git a/lib/ui/user/view/user_view.dart b/lib/ui/user/view/user_view.dart index 08fe3a4c8..c53b3e293 100644 --- a/lib/ui/user/view/user_view.dart +++ b/lib/ui/user/view/user_view.dart @@ -28,9 +28,9 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class UserView extends StatelessWidget { const UserView({ - Key key, - @required this.viewModel, - @required this.isFilter, + Key? key, + required this.viewModel, + required this.isFilter, }) : super(key: key); final UserViewVM viewModel; @@ -38,10 +38,10 @@ class UserView extends StatelessWidget { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final user = viewModel.user; final state = StoreProvider.of(context).state; - final userCompany = state.userCompany; + final userCompany = state.userCompany!; return ViewScaffold( isFilter: isFilter, diff --git a/lib/ui/user/view/user_view_vm.dart b/lib/ui/user/view/user_view_vm.dart index eebcf10d2..5677daeeb 100644 --- a/lib/ui/user/view/user_view_vm.dart +++ b/lib/ui/user/view/user_view_vm.dart @@ -22,7 +22,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class UserViewScreen extends StatelessWidget { const UserViewScreen({ - Key key, + Key? key, this.isFilter = false, }) : super(key: key); final bool isFilter; @@ -46,15 +46,15 @@ class UserViewScreen extends StatelessWidget { class UserViewVM { UserViewVM({ - @required this.state, - @required this.user, - @required this.company, - @required this.onEntityAction, - @required this.onBackPressed, - @required this.onRefreshed, - @required this.isSaving, - @required this.isLoading, - @required this.isDirty, + required this.state, + required this.user, + required this.company, + required this.onEntityAction, + required this.onBackPressed, + required this.onRefreshed, + required this.isSaving, + required this.isLoading, + required this.isDirty, }); factory UserViewVM.fromStore(Store store) { @@ -64,7 +64,7 @@ class UserViewVM { Future _handleRefresh(BuildContext context) { final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(LoadUser(completer: completer, userId: user.id)); return completer.future; } @@ -87,7 +87,7 @@ class UserViewVM { final AppState state; final UserEntity user; - final CompanyEntity company; + final CompanyEntity? company; final Function(BuildContext, EntityAction) onEntityAction; final Function onBackPressed; final Function(BuildContext) onRefreshed; diff --git a/lib/ui/vendor/edit/vendor_edit.dart b/lib/ui/vendor/edit/vendor_edit.dart index 3f1157dea..f496e5cc6 100644 --- a/lib/ui/vendor/edit/vendor_edit.dart +++ b/lib/ui/vendor/edit/vendor_edit.dart @@ -17,8 +17,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class VendorEdit extends StatefulWidget { const VendorEdit({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final VendorEditVM viewModel; @@ -29,7 +29,7 @@ class VendorEdit extends StatefulWidget { class _VendorEditState extends State with SingleTickerProviderStateMixin { - TabController _controller; + TabController? _controller; static final GlobalKey _formKey = GlobalKey(debugLabel: '_vendorEdit'); @@ -41,13 +41,13 @@ class _VendorEditState extends State @override void dispose() { - _controller.dispose(); + _controller!.dispose(); super.dispose(); } @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; final vendor = viewModel.vendor; final state = viewModel.state; @@ -60,7 +60,7 @@ class _VendorEditState extends State title: vendor.isNew ? localization.newVendor : localization.editVendor, onCancelPressed: (context) => viewModel.onCancelPressed(context), onSavePressed: (context) { - final bool isValid = _formKey.currentState.validate(); + final bool isValid = _formKey.currentState!.validate(); /* setState(() { diff --git a/lib/ui/vendor/edit/vendor_edit_address.dart b/lib/ui/vendor/edit/vendor_edit_address.dart index 20d351a51..ed9fad91a 100644 --- a/lib/ui/vendor/edit/vendor_edit_address.dart +++ b/lib/ui/vendor/edit/vendor_edit_address.dart @@ -14,8 +14,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class VendorEditAddress extends StatefulWidget { const VendorEditAddress({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final VendorEditVM viewModel; @@ -86,7 +86,7 @@ class VendorEditAddressState extends State { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; final vendor = viewModel.vendor; final isFullscreen = diff --git a/lib/ui/vendor/edit/vendor_edit_contacts.dart b/lib/ui/vendor/edit/vendor_edit_contacts.dart index eb22e14d9..e305fe6de 100644 --- a/lib/ui/vendor/edit/vendor_edit_contacts.dart +++ b/lib/ui/vendor/edit/vendor_edit_contacts.dart @@ -17,9 +17,9 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class VendorEditContacts extends StatefulWidget { const VendorEditContacts({ - Key key, - @required this.viewModel, - @required this.vendorViewModel, + Key? key, + required this.viewModel, + required this.vendorViewModel, }) : super(key: key); final VendorEditContactsVM viewModel; @@ -30,23 +30,23 @@ class VendorEditContacts extends StatefulWidget { } class _VendorEditContactsState extends State { - VendorContactEntity selectedContact; + VendorContactEntity? selectedContact; - void _showContactEditor(VendorContactEntity contact, BuildContext context) { + void _showContactEditor(VendorContactEntity? contact, BuildContext context) { showDialog( context: context, builder: (BuildContext context) { final viewModel = widget.viewModel; - final vendor = viewModel.vendor; + final vendor = viewModel.vendor!; return VendorContactEditDetails( viewModel: viewModel, vendorViewModel: widget.vendorViewModel, - key: Key(contact.entityKey), + key: Key(contact!.entityKey), contact: contact, isDialog: vendor.contacts.length > 1, index: vendor.contacts - .indexOf(vendor.contacts.firstWhere((c) => c.id == contact.id)), + .indexOf(vendor.contacts.firstWhere((c) => c!.id == contact.id)), ); }); } @@ -55,7 +55,7 @@ class _VendorEditContactsState extends State { Widget build(BuildContext context) { final localization = AppLocalization.of(context); final viewModel = widget.viewModel; - final vendor = viewModel.vendor; + final vendor = viewModel.vendor!; final state = widget.vendorViewModel.state; final prefState = state.prefState; final isFullscreen = prefState.isEditorFullScreen(EntityType.vendor); @@ -70,7 +70,7 @@ class _VendorEditContactsState extends State { )) .toList(); } else { - final contact = vendor.contacts[0]; + final contact = vendor.contacts[0]!; contacts = [ VendorContactEditDetails( viewModel: viewModel, @@ -104,8 +104,8 @@ class _VendorEditContactsState extends State { ), child: AppButton( label: (vendor.contacts.length == 1 - ? localization.addSecondContact - : localization.addContact) + ? localization!.addSecondContact + : localization!.addContact)! .toUpperCase(), onPressed: () => viewModel.onAddContactPressed(), ), @@ -124,12 +124,12 @@ class _VendorEditContactsState extends State { class ContactListTile extends StatelessWidget { const ContactListTile({ - @required this.contact, - @required this.onTap, + required this.contact, + required this.onTap, }); final Function onTap; - final VendorContactEntity contact; + final VendorContactEntity? contact; @override Widget build(BuildContext context) { @@ -140,15 +140,15 @@ class ContactListTile extends StatelessWidget { child: Column( children: [ ListTile( - onTap: onTap, - title: contact.fullName.isNotEmpty - ? Text(contact.fullName) - : Text(AppLocalization.of(context).blankContact, + onTap: onTap as void Function()?, + title: contact!.fullName.isNotEmpty + ? Text(contact!.fullName) + : Text(AppLocalization.of(context)!.blankContact, style: TextStyle( fontStyle: FontStyle.italic, )), subtitle: Text( - contact.email.isNotEmpty ? contact.email : contact.phone), + contact!.email.isNotEmpty ? contact!.email : contact!.phone), trailing: Icon(Icons.navigate_next), ), Divider( @@ -162,16 +162,16 @@ class ContactListTile extends StatelessWidget { class VendorContactEditDetails extends StatefulWidget { const VendorContactEditDetails({ - Key key, - @required this.index, - @required this.contact, - @required this.viewModel, - @required this.vendorViewModel, - @required this.isDialog, + Key? key, + required this.index, + required this.contact, + required this.viewModel, + required this.vendorViewModel, + required this.isDialog, }) : super(key: key); final int index; - final VendorContactEntity contact; + final VendorContactEntity? contact; final VendorEditContactsVM viewModel; final VendorEditVM vendorViewModel; final bool isDialog; @@ -193,7 +193,7 @@ class VendorContactEditDetailsState extends State { final _debouncer = Debouncer(); List _controllers = []; - VendorContactEntity _contact; + VendorContactEntity? _contact; void _onDoneContactPressed() { if (widget.isDialog) { @@ -225,7 +225,7 @@ class VendorContactEditDetailsState extends State { _controllers .forEach((dynamic controller) => controller.removeListener(_onChanged)); - final contact = _contact = widget.contact; + final contact = (_contact = widget.contact)!; _firstNameController.text = contact.firstName; _lastNameController.text = contact.lastName; _emailController.text = contact.email; @@ -252,7 +252,7 @@ class VendorContactEditDetailsState extends State { } void _onChanged() { - final contact = _contact = widget.contact.rebuild((b) => b + final contact = _contact = widget.contact!.rebuild((b) => b ..firstName = _firstNameController.text.trim() ..lastName = _lastNameController.text.trim() ..email = _emailController.text.trim() @@ -270,7 +270,7 @@ class VendorContactEditDetailsState extends State { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; final state = widget.vendorViewModel.state; final isFullscreen = state.prefState.isEditorFullScreen(EntityType.vendor); @@ -307,25 +307,25 @@ class VendorContactEditDetailsState extends State { CustomField( controller: _custom1Controller, field: CustomFieldType.vendorContact1, - value: widget.contact.customValue1, + value: widget.contact!.customValue1, onSavePressed: (_) => _onDoneContactPressed(), ), CustomField( controller: _custom2Controller, field: CustomFieldType.vendorContact2, - value: widget.contact.customValue2, + value: widget.contact!.customValue2, onSavePressed: (_) => _onDoneContactPressed(), ), CustomField( controller: _custom3Controller, field: CustomFieldType.vendorContact3, - value: widget.contact.customValue3, + value: widget.contact!.customValue3, onSavePressed: (_) => _onDoneContactPressed(), ), CustomField( controller: _custom4Controller, field: CustomFieldType.vendorContact4, - value: widget.contact.customValue4, + value: widget.contact!.customValue4, onSavePressed: (_) => _onDoneContactPressed(), ), if (widget.isDialog) @@ -333,14 +333,14 @@ class VendorContactEditDetailsState extends State { padding: const EdgeInsets.only(top: 20), child: SwitchListTile( activeColor: Theme.of(context).colorScheme.secondary, - title: Text(localization.addToInvoices), - value: _contact.sendEmail, + title: Text(localization.addToInvoices!), + value: _contact!.sendEmail, onChanged: (value) { setState(() => - _contact = _contact.rebuild((b) => b..sendEmail = value)); + _contact = _contact!.rebuild((b) => b..sendEmail = value)); viewModel.onChangedContact( - _contact.rebuild((b) => b..sendEmail = value), + _contact!.rebuild((b) => b..sendEmail = value), widget.index, ); }, diff --git a/lib/ui/vendor/edit/vendor_edit_contacts_vm.dart b/lib/ui/vendor/edit/vendor_edit_contacts_vm.dart index 94fd47e81..d62acd5a6 100644 --- a/lib/ui/vendor/edit/vendor_edit_contacts_vm.dart +++ b/lib/ui/vendor/edit/vendor_edit_contacts_vm.dart @@ -13,7 +13,7 @@ import 'package:invoiceninja_flutter/ui/vendor/edit/vendor_edit_contacts.dart'; import 'package:invoiceninja_flutter/ui/vendor/edit/vendor_edit_vm.dart'; class VendorEditContactsScreen extends StatelessWidget { - const VendorEditContactsScreen({Key key, @required this.viewModel}) + const VendorEditContactsScreen({Key? key, required this.viewModel}) : super(key: key); final VendorEditVM viewModel; @@ -36,13 +36,13 @@ class VendorEditContactsScreen extends StatelessWidget { class VendorEditContactsVM { VendorEditContactsVM({ - @required this.company, - @required this.vendor, - @required this.contact, - @required this.onAddContactPressed, - @required this.onRemoveContactPressed, - @required this.onDoneContactPressed, - @required this.onChangedContact, + required this.company, + required this.vendor, + required this.contact, + required this.onAddContactPressed, + required this.onRemoveContactPressed, + required this.onDoneContactPressed, + required this.onChangedContact, }); factory VendorEditContactsVM.fromStore(Store store) { @@ -66,9 +66,9 @@ class VendorEditContactsVM { }); } - final CompanyEntity company; - final VendorEntity vendor; - final VendorContactEntity contact; + final CompanyEntity? company; + final VendorEntity? vendor; + final VendorContactEntity? contact; final Function() onAddContactPressed; final Function(int) onRemoveContactPressed; final Function onDoneContactPressed; diff --git a/lib/ui/vendor/edit/vendor_edit_desktop.dart b/lib/ui/vendor/edit/vendor_edit_desktop.dart index 5f7f3173a..e655da8d4 100644 --- a/lib/ui/vendor/edit/vendor_edit_desktop.dart +++ b/lib/ui/vendor/edit/vendor_edit_desktop.dart @@ -13,8 +13,8 @@ import 'package:invoiceninja_flutter/ui/vendor/edit/vendor_edit_vm.dart'; class VendorEditDesktop extends StatelessWidget { const VendorEditDesktop({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final VendorEditVM viewModel; diff --git a/lib/ui/vendor/edit/vendor_edit_details.dart b/lib/ui/vendor/edit/vendor_edit_details.dart index 02378ceba..deb95a8d2 100644 --- a/lib/ui/vendor/edit/vendor_edit_details.dart +++ b/lib/ui/vendor/edit/vendor_edit_details.dart @@ -23,8 +23,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class VendorEditDetails extends StatefulWidget { const VendorEditDetails({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final VendorEditVM viewModel; @@ -48,7 +48,7 @@ class VendorEditDetailsState extends State { static final GlobalKey _formKey = GlobalKey(debugLabel: '_vendorEditDetails'); final _debouncer = Debouncer(); - List _controllers; + late List _controllers; @override void didChangeDependencies() { @@ -121,15 +121,15 @@ class VendorEditDetailsState extends State { final vendor = viewModel.vendor; final contactEmail = - contact.emails.isNotEmpty ? contact.emails.first : null; + contact.emails!.isNotEmpty ? contact.emails!.first : null; final contactPhone = - contact.phones.isNotEmpty ? contact.phones.first : null; - final contactAddress = contact.postalAddresses.isNotEmpty - ? contact.postalAddresses.first + contact.phones!.isNotEmpty ? contact.phones!.first : null; + final contactAddress = contact.postalAddresses!.isNotEmpty + ? contact.postalAddresses!.first : null; final countryMap = viewModel.state.staticState.countryMap; - String countryId; + String? countryId; countryMap.keys.forEach((countryId) { final country = countryMap[countryId] ?? CountryEntity(); @@ -146,7 +146,7 @@ class VendorEditDetailsState extends State { ..state = (contactAddress?.region ?? '').trim() ..postalCode = (contactAddress?.postcode ?? '').trim() ..countryId = countryId ?? '' - ..contacts[0] = vendor.contacts[0].rebuild((b) => b + ..contacts[0] = vendor.contacts[0]!.rebuild((b) => b ..firstName = (contact?.givenName ?? '').trim() ..lastName = (contact?.familyName ?? '').trim() ..email = (contactEmail?.value ?? '').trim() @@ -155,7 +155,7 @@ class VendorEditDetailsState extends State { } void _onSavePressed(BuildContext context) { - final bool isValid = _formKey.currentState.validate(); + final bool isValid = _formKey.currentState!.validate(); if (!isValid) { return; @@ -166,7 +166,7 @@ class VendorEditDetailsState extends State { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; final vendor = viewModel.vendor; final state = viewModel.state; @@ -188,7 +188,7 @@ class VendorEditDetailsState extends State { autofocus: true, controller: _nameController, validator: (String val) => val.trim().isEmpty - ? AppLocalization.of(context).pleaseEnterAName + ? AppLocalization.of(context)!.pleaseEnterAName : null, onSavePressed: _onSavePressed, label: localization.name, @@ -274,7 +274,7 @@ class VendorEditDetailsState extends State { value: vendor.customValue4, onSavePressed: _onSavePressed, ), - if (state.company.calculateTaxes) + if (state.company!.calculateTaxes) AppDropdownButton( labelText: localization.classification, showBlank: true, @@ -285,7 +285,7 @@ class VendorEditDetailsState extends State { }, items: kTaxClassifications .map((classification) => DropdownMenuItem( - child: Text(localization.lookup(classification)), + child: Text(localization.lookup(classification)!), value: classification, )) .toList(), diff --git a/lib/ui/vendor/edit/vendor_edit_footer.dart b/lib/ui/vendor/edit/vendor_edit_footer.dart index c73ce2f8a..4d0a46970 100644 --- a/lib/ui/vendor/edit/vendor_edit_footer.dart +++ b/lib/ui/vendor/edit/vendor_edit_footer.dart @@ -15,7 +15,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/platforms.dart'; class VendorEditFooter extends StatelessWidget { - const VendorEditFooter({@required this.vendor}); + const VendorEditFooter({required this.vendor}); final VendorEntity vendor; @@ -42,8 +42,8 @@ class VendorEditFooter extends StatelessWidget { if (showLayoutToggle) Tooltip( message: useSidebarEditor - ? localization.fullscreenEditor - : localization.sidebarEditor, + ? localization!.fullscreenEditor + : localization!.sidebarEditor, child: InkWell( onTap: () => store.dispatch(ToggleEditorLayout(EntityType.vendor)), diff --git a/lib/ui/vendor/edit/vendor_edit_notes.dart b/lib/ui/vendor/edit/vendor_edit_notes.dart index 5c4a886fd..dfc28c952 100644 --- a/lib/ui/vendor/edit/vendor_edit_notes.dart +++ b/lib/ui/vendor/edit/vendor_edit_notes.dart @@ -12,8 +12,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class VendorEditNotes extends StatefulWidget { const VendorEditNotes({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final VendorEditVM viewModel; @@ -26,7 +26,7 @@ class VendorEditNotesState extends State { final _publicNotesController = TextEditingController(); final _privateNotesController = TextEditingController(); - List _controllers; + late List _controllers; final _debouncer = Debouncer(); @override @@ -73,7 +73,7 @@ class VendorEditNotesState extends State { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; final state = viewModel.state; final isFullscreen = state.prefState.isEditorFullScreen(EntityType.vendor); diff --git a/lib/ui/vendor/edit/vendor_edit_settings.dart b/lib/ui/vendor/edit/vendor_edit_settings.dart index fc2bf0710..78f1f4f15 100644 --- a/lib/ui/vendor/edit/vendor_edit_settings.dart +++ b/lib/ui/vendor/edit/vendor_edit_settings.dart @@ -12,8 +12,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class VendorEditSettings extends StatefulWidget { const VendorEditSettings({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final VendorEditVM viewModel; @@ -25,7 +25,7 @@ class VendorEditSettings extends StatefulWidget { class VendorEditSettingsState extends State { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; final state = viewModel.state; final vendor = viewModel.vendor; diff --git a/lib/ui/vendor/edit/vendor_edit_vm.dart b/lib/ui/vendor/edit/vendor_edit_vm.dart index 54ca5140e..d472e2cd0 100644 --- a/lib/ui/vendor/edit/vendor_edit_vm.dart +++ b/lib/ui/vendor/edit/vendor_edit_vm.dart @@ -22,7 +22,7 @@ import 'package:invoiceninja_flutter/ui/vendor/view/vendor_view_vm.dart'; import 'package:invoiceninja_flutter/utils/completers.dart'; class VendorEditScreen extends StatelessWidget { - const VendorEditScreen({Key key}) : super(key: key); + const VendorEditScreen({Key? key}) : super(key: key); static const String route = '/vendor/edit'; @override @@ -43,19 +43,19 @@ class VendorEditScreen extends StatelessWidget { class VendorEditVM { VendorEditVM({ - @required this.state, - @required this.vendor, - @required this.company, - @required this.onChanged, - @required this.isSaving, - @required this.origVendor, - @required this.onSavePressed, - @required this.onCancelPressed, - @required this.isLoading, + required this.state, + required this.vendor, + required this.company, + required this.onChanged, + required this.isSaving, + required this.origVendor, + required this.onSavePressed, + required this.onCancelPressed, + required this.isLoading, }); factory VendorEditVM.fromStore(Store store) { - final vendor = store.state.vendorUIState.editing; + final vendor = store.state.vendorUIState.editing!; final state = store.state; return VendorEditVM( @@ -71,21 +71,21 @@ class VendorEditVM { onCancelPressed: (BuildContext context) { createEntity(context: context, entity: VendorEntity(), force: true); if (state.vendorUIState.cancelCompleter != null) { - state.vendorUIState.cancelCompleter.complete(); + state.vendorUIState.cancelCompleter!.complete(); } else { store.dispatch(UpdateCurrentRoute(state.uiState.previousRoute)); } }, onSavePressed: (BuildContext context) { Debouncer.runOnComplete(() { - final vendor = store.state.vendorUIState.editing; + final vendor = store.state.vendorUIState.editing!; final localization = navigatorKey.localization; final navigator = navigatorKey.currentState; if (!vendor.hasNameSet) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { - return ErrorDialog(localization.pleaseEnterAName); + return ErrorDialog(localization!.pleaseEnterAName); }); return null; } @@ -95,15 +95,15 @@ class VendorEditVM { SaveVendorRequest(completer: completer, vendor: vendor)); return completer.future.then((savedVendor) { showToast(vendor.isNew - ? localization.createdVendor - : localization.updatedVendor); + ? localization!.createdVendor + : localization!.updatedVendor); if (state.prefState.isMobile) { store.dispatch(UpdateCurrentRoute(VendorViewScreen.route)); if (vendor.isNew && state.vendorUIState.saveCompleter == null) { - navigator.pushReplacementNamed(VendorViewScreen.route); + navigator!.pushReplacementNamed(VendorViewScreen.route); } else { - navigator.pop(savedVendor); + navigator!.pop(savedVendor); } } else if (state.vendorUIState.saveCompleter == null) { if (!state.prefState.isPreviewVisible) { @@ -113,7 +113,7 @@ class VendorEditVM { } }).catchError((Object error) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { return ErrorDialog(error); }); @@ -124,12 +124,12 @@ class VendorEditVM { } final VendorEntity vendor; - final CompanyEntity company; + final CompanyEntity? company; final Function(VendorEntity) onChanged; final Function(BuildContext) onSavePressed; final Function(BuildContext) onCancelPressed; final bool isLoading; final bool isSaving; - final VendorEntity origVendor; + final VendorEntity? origVendor; final AppState state; } diff --git a/lib/ui/vendor/vendor_list_item.dart b/lib/ui/vendor/vendor_list_item.dart index 32911985a..0599a462f 100644 --- a/lib/ui/vendor/vendor_list_item.dart +++ b/lib/ui/vendor/vendor_list_item.dart @@ -16,7 +16,7 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class VendorListItem extends StatelessWidget { const VendorListItem({ - @required this.vendor, + required this.vendor, this.filter = '', this.onTap, this.onLongPress, @@ -25,11 +25,11 @@ class VendorListItem extends StatelessWidget { this.isChecked = false, }); - final GestureTapCallback onTap; - final GestureTapCallback onLongPress; + final GestureTapCallback? onTap; + final GestureTapCallback? onLongPress; final VendorEntity vendor; - final String filter; - final Function(bool) onCheckboxChanged; + final String? filter; + final Function(bool)? onCheckboxChanged; final bool isChecked; final bool showCheck; @@ -39,11 +39,11 @@ class VendorListItem extends StatelessWidget { final state = store.state; final uiState = state.uiState; final vendorUIState = uiState.vendorUIState; - final filterMatch = filter != null && filter.isNotEmpty + final filterMatch = filter != null && filter!.isNotEmpty ? vendor.matchesFilterValue(filter) : null; final textStyle = TextStyle(fontSize: 16); - final textColor = Theme.of(context).textTheme.bodyLarge.color; + final textColor = Theme.of(context).textTheme.bodyLarge!.color; final documents = vendor.documents ?? []; return DismissibleEntity( @@ -51,7 +51,7 @@ class VendorListItem extends StatelessWidget { !showCheck && vendor.id == (uiState.isEditing - ? vendorUIState.editing.id + ? vendorUIState.editing!.id : vendorUIState.selectedId), showMultiselect: showCheck, userCompany: store.state.userCompany, @@ -61,9 +61,9 @@ class VendorListItem extends StatelessWidget { return constraints.maxWidth > kTableListWidthCutoff ? InkWell( onTap: () => - onTap != null ? onTap() : selectEntity(entity: vendor), + onTap != null ? onTap!() : selectEntity(entity: vendor), onLongPress: () => onLongPress != null - ? onLongPress() + ? onLongPress!() : selectEntity(entity: vendor, longPress: true), child: Padding( padding: const EdgeInsets.only( @@ -130,9 +130,9 @@ class VendorListItem extends StatelessWidget { overflow: TextOverflow.ellipsis, style: Theme.of(context) .textTheme - .titleSmall + .titleSmall! .copyWith( - color: textColor + color: textColor! .withOpacity(kLighterOpacity), )), ], @@ -153,9 +153,9 @@ class VendorListItem extends StatelessWidget { ) : ListTile( onTap: () => - onTap != null ? onTap() : selectEntity(entity: vendor), + onTap != null ? onTap!() : selectEntity(entity: vendor), onLongPress: () => onLongPress != null - ? onLongPress() + ? onLongPress!() : selectEntity(entity: vendor, longPress: true), leading: showCheck ? IgnorePointer( @@ -196,9 +196,9 @@ class VendorListItem extends StatelessWidget { overflow: TextOverflow.ellipsis, style: Theme.of(context) .textTheme - .titleSmall + .titleSmall! .copyWith( - color: textColor.withOpacity(kLighterOpacity), + color: textColor!.withOpacity(kLighterOpacity), )) : Text(vendor.number), EntityStateLabel(vendor), diff --git a/lib/ui/vendor/vendor_list_vm.dart b/lib/ui/vendor/vendor_list_vm.dart index 492f4b6e2..497db1b63 100644 --- a/lib/ui/vendor/vendor_list_vm.dart +++ b/lib/ui/vendor/vendor_list_vm.dart @@ -24,7 +24,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class VendorListBuilder extends StatelessWidget { - const VendorListBuilder({Key key}) : super(key: key); + const VendorListBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -42,7 +42,7 @@ class VendorListBuilder extends StatelessWidget { onSortColumn: viewModel.onSortColumn, itemBuilder: (BuildContext context, index) { final vendorId = viewModel.vendorList[index]; - final vendor = viewModel.vendorMap[vendorId]; + final vendor = viewModel.vendorMap[vendorId]!; final state = viewModel.state; final listUIState = state.getListState(EntityType.vendor); @@ -61,16 +61,16 @@ class VendorListBuilder extends StatelessWidget { class VendorListVM { VendorListVM({ - @required this.state, - @required this.vendorList, - @required this.vendorMap, - @required this.filter, - @required this.isLoading, - @required this.listState, - @required this.onRefreshed, - @required this.tableColumns, - @required this.onSortColumn, - @required this.onClearMultielsect, + required this.state, + required this.vendorList, + required this.vendorMap, + required this.filter, + required this.isLoading, + required this.listState, + required this.onRefreshed, + required this.tableColumns, + required this.onSortColumn, + required this.onClearMultielsect, }); static VendorListVM fromStore(Store store) { @@ -79,7 +79,7 @@ class VendorListVM { return Future(null); } final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(RefreshData(completer: completer)); return completer.future; } @@ -101,7 +101,7 @@ class VendorListVM { filter: state.vendorUIState.listUIState.filter, onRefreshed: (context) => _handleRefresh(context), tableColumns: - state.userCompany.settings?.getTableColumns(EntityType.vendor) ?? + state.userCompany!.settings?.getTableColumns(EntityType.vendor) ?? VendorPresenter.getDefaultTableFields(state.userCompany), onSortColumn: (field) => store.dispatch(SortVendors(field)), onClearMultielsect: () => store.dispatch(ClearVendorMultiselect()), @@ -110,9 +110,9 @@ class VendorListVM { final AppState state; final List vendorList; - final BuiltMap vendorMap; + final BuiltMap vendorMap; final ListUIState listState; - final String filter; + final String? filter; final bool isLoading; final Function(BuildContext) onRefreshed; final List tableColumns; diff --git a/lib/ui/vendor/vendor_presenter.dart b/lib/ui/vendor/vendor_presenter.dart index 2343a5e45..e08db8be6 100644 --- a/lib/ui/vendor/vendor_presenter.dart +++ b/lib/ui/vendor/vendor_presenter.dart @@ -14,7 +14,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:url_launcher/url_launcher.dart'; class VendorPresenter extends EntityPresenter { - static List getDefaultTableFields(UserCompanyEntity userCompany) { + static List getDefaultTableFields(UserCompanyEntity? userCompany) { return [ VendorFields.number, VendorFields.name, @@ -50,84 +50,84 @@ class VendorPresenter extends EntityPresenter { VendorFields.archivedAt, VendorFields.documents, VendorFields.contacts, - if (userCompany.company.calculateTaxes) ...[ + if (userCompany.company!.calculateTaxes) ...[ VendorFields.classification, ], ]; } @override - Widget getField({String field, BuildContext context}) { - final vendor = entity as VendorEntity; + Widget getField({String? field, required BuildContext context}) { + final vendor = entity as VendorEntity?; final localization = AppLocalization.of(context); final store = StoreProvider.of(context); final state = store.state; switch (field) { case VendorFields.name: - return Text(vendor.name); + return Text(vendor!.name); case VendorFields.city: - return Text(vendor.city); + return Text(vendor!.city); case VendorFields.phone: - return Text(vendor.phone); + return Text(vendor!.phone); case VendorFields.state: - return Text(vendor.state); + return Text(vendor!.state); case VendorFields.address1: - return Text(vendor.address1); + return Text(vendor!.address1); case VendorFields.address2: - return Text(vendor.address2); + return Text(vendor!.address2); case VendorFields.idNumber: - return Text(vendor.idNumber); + return Text(vendor!.idNumber); case VendorFields.number: - return Text(vendor.number); + return Text(vendor!.number); case VendorFields.postalCode: - return Text(vendor.postalCode); + return Text(vendor!.postalCode); case VendorFields.countryId: - return Text(state.staticState.countryMap[vendor.countryId]?.name ?? ''); + return Text(state.staticState.countryMap[vendor!.countryId]?.name ?? ''); case VendorFields.privateNotes: - return TableTooltip(message: vendor.privateNotes); + return TableTooltip(message: vendor!.privateNotes); case VendorFields.publicNotes: - return TableTooltip(message: vendor.publicNotes); + return TableTooltip(message: vendor!.publicNotes); case VendorFields.website: - return Text(vendor.website); + return Text(vendor!.website); case VendorFields.vatNumber: - return Text(vendor.vatNumber); + return Text(vendor!.vatNumber); case VendorFields.currencyId: return Text( - state.staticState.currencyMap[vendor.currencyId]?.name ?? ''); + state.staticState.currencyMap[vendor!.currencyId]?.name ?? ''); case VendorFields.languageId: return Text( - state.staticState.languageMap[vendor.languageId]?.name ?? ''); + state.staticState.languageMap[vendor!.languageId]?.name ?? ''); case VendorFields.customValue1: - return Text(presentCustomField(context, vendor.customValue1)); + return Text(presentCustomField(context, vendor!.customValue1)!); case VendorFields.customValue2: - return Text(presentCustomField(context, vendor.customValue2)); + return Text(presentCustomField(context, vendor!.customValue2)!); case VendorFields.customValue3: - return Text(presentCustomField(context, vendor.customValue3)); + return Text(presentCustomField(context, vendor!.customValue3)!); case VendorFields.customValue4: - return Text(presentCustomField(context, vendor.customValue4)); + return Text(presentCustomField(context, vendor!.customValue4)!); case VendorFields.documents: - return Text('${vendor.documents.length}'); + return Text('${vendor!.documents.length}'); case VendorFields.contacts: return Text( - vendor.contacts.map((contact) => contact.fullName).join('\n'), + vendor!.contacts.map((contact) => contact!.fullName).join('\n'), maxLines: 3, overflow: TextOverflow.ellipsis, ); case VendorFields.contactEmail: return CopyToClipboard( - value: vendor.primaryContact.email, + value: vendor!.primaryContact!.email, showBorder: true, onLongPress: () => - launchUrl(Uri.parse('mailto:${vendor.primaryContact.email}')), + launchUrl(Uri.parse('mailto:${vendor.primaryContact!.email}')), ); case VendorFields.lastLoginAt: - return Text(vendor.lastLogin == 0 + return Text(vendor!.lastLogin == 0 ? '' : formatDate( convertTimestampToDateString(vendor.lastLogin), context)); case VendorFields.classification: - return Text(localization.lookup(vendor.classification)); + return Text(localization!.lookup(vendor!.classification)!); } return super.getField(field: field, context: context); diff --git a/lib/ui/vendor/vendor_screen.dart b/lib/ui/vendor/vendor_screen.dart index a2bf5e701..07b98208e 100644 --- a/lib/ui/vendor/vendor_screen.dart +++ b/lib/ui/vendor/vendor_screen.dart @@ -19,8 +19,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class VendorScreen extends StatelessWidget { const VendorScreen({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); static const String route = '/vendor'; @@ -31,8 +31,8 @@ class VendorScreen extends StatelessWidget { Widget build(BuildContext context) { final store = StoreProvider.of(context); final state = store.state; - final company = state.company; - final userCompany = store.state.userCompany; + final company = state.company!; + final userCompany = store.state.userCompany!; final localization = AppLocalization.of(context); return ListScaffold( @@ -108,7 +108,7 @@ class VendorScreen extends StatelessWidget { Icons.add, color: Colors.white, ), - tooltip: localization.newVendor, + tooltip: localization!.newVendor, ) : null, ); diff --git a/lib/ui/vendor/vendor_screen_vm.dart b/lib/ui/vendor/vendor_screen_vm.dart index 63f898d5d..c90c5afea 100644 --- a/lib/ui/vendor/vendor_screen_vm.dart +++ b/lib/ui/vendor/vendor_screen_vm.dart @@ -14,7 +14,7 @@ import 'package:invoiceninja_flutter/redux/vendor/vendor_selectors.dart'; import 'vendor_screen.dart'; class VendorScreenBuilder extends StatelessWidget { - const VendorScreenBuilder({Key key}) : super(key: key); + const VendorScreenBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -31,16 +31,16 @@ class VendorScreenBuilder extends StatelessWidget { class VendorScreenVM { VendorScreenVM({ - @required this.isInMultiselect, - @required this.vendorList, - @required this.userCompany, - @required this.vendorMap, + required this.isInMultiselect, + required this.vendorList, + required this.userCompany, + required this.vendorMap, }); final bool isInMultiselect; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List vendorList; - final BuiltMap vendorMap; + final BuiltMap vendorMap; static VendorScreenVM fromStore(Store store) { final state = store.state; diff --git a/lib/ui/vendor/view/vendor_view.dart b/lib/ui/vendor/view/vendor_view.dart index 6693f43aa..3eb5ecc8c 100644 --- a/lib/ui/vendor/view/vendor_view.dart +++ b/lib/ui/vendor/view/vendor_view.dart @@ -22,11 +22,11 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class VendorView extends StatefulWidget { const VendorView({ - Key key, - @required this.viewModel, - @required this.isFilter, - @required this.isTopFilter, - @required this.tabIndex, + Key? key, + required this.viewModel, + required this.isFilter, + required this.isTopFilter, + required this.tabIndex, }) : super(key: key); final VendorViewVM viewModel; @@ -40,7 +40,7 @@ class VendorView extends StatefulWidget { class _VendorViewState extends State with SingleTickerProviderStateMixin { - TabController _controller; + TabController? _controller; @override void initState() { @@ -49,9 +49,9 @@ class _VendorViewState extends State final state = widget.viewModel.state; _controller = TabController( vsync: this, - length: state.company.isModuleEnabled(EntityType.document) ? 4 : 3, + length: state.company!.isModuleEnabled(EntityType.document) ? 4 : 3, initialIndex: widget.isFilter ? 0 : state.vendorUIState.tabIndex); - _controller.addListener(_onTabChanged); + _controller!.addListener(_onTabChanged); } void _onTabChanged() { @@ -60,7 +60,7 @@ class _VendorViewState extends State } final store = StoreProvider.of(context); - store.dispatch(UpdateVendorTab(tabIndex: _controller.index)); + store.dispatch(UpdateVendorTab(tabIndex: _controller!.index)); } @override @@ -68,14 +68,14 @@ class _VendorViewState extends State super.didUpdateWidget(oldWidget); if (oldWidget.tabIndex != widget.tabIndex) { - _controller.index = widget.tabIndex; + _controller!.index = widget.tabIndex; } } @override void dispose() { - _controller.removeListener(_onTabChanged); - _controller.dispose(); + _controller!.removeListener(_onTabChanged); + _controller!.dispose(); super.dispose(); } @@ -116,12 +116,12 @@ class _VendorViewState extends State isScrollable: true, tabs: [ Tab( - text: localization.overview, + text: localization!.overview, ), Tab( text: localization.details, ), - if (company.isModuleEnabled(EntityType.document)) + if (company!.isModuleEnabled(EntityType.document)) Tab( text: documents.isEmpty ? localization.documents diff --git a/lib/ui/vendor/view/vendor_view_activity.dart b/lib/ui/vendor/view/vendor_view_activity.dart index fa6f4739f..82d3a217f 100644 --- a/lib/ui/vendor/view/vendor_view_activity.dart +++ b/lib/ui/vendor/view/vendor_view_activity.dart @@ -9,9 +9,9 @@ import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart'; import 'package:invoiceninja_flutter/ui/vendor/view/vendor_view_vm.dart'; class VendorViewActivity extends StatefulWidget { - const VendorViewActivity({Key key, this.viewModel}) : super(key: key); + const VendorViewActivity({Key? key, this.viewModel}) : super(key: key); - final VendorViewVM viewModel; + final VendorViewVM? viewModel; @override _VendorViewActivityState createState() => _VendorViewActivityState(); @@ -20,15 +20,15 @@ class VendorViewActivity extends StatefulWidget { class _VendorViewActivityState extends State { @override void didChangeDependencies() { - if (widget.viewModel.vendor.isStale) { - widget.viewModel.onRefreshed(context); + if (widget.viewModel!.vendor.isStale) { + widget.viewModel!.onRefreshed(context); } super.didChangeDependencies(); } @override Widget build(BuildContext context) { - final vendor = widget.viewModel.vendor; + final vendor = widget.viewModel!.vendor; final activities = vendor.activities; if (!vendor.isLoaded) { diff --git a/lib/ui/vendor/view/vendor_view_details.dart b/lib/ui/vendor/view/vendor_view_details.dart index b3e98fda6..a0fa4e0bf 100644 --- a/lib/ui/vendor/view/vendor_view_details.dart +++ b/lib/ui/vendor/view/vendor_view_details.dart @@ -21,14 +21,14 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; class VendorViewDetails extends StatefulWidget { const VendorViewDetails({this.vendor}); - final VendorEntity vendor; + final VendorEntity? vendor; @override _VendorViewDetailsState createState() => _VendorViewDetailsState(); } class _VendorViewDetailsState extends State { - Future _launched; + Future? _launched; Future _launchURL(BuildContext context, String url) async { await launchUrl(Uri.parse(url)); @@ -37,7 +37,7 @@ class _VendorViewDetailsState extends State { Widget _launchStatus(BuildContext context, AsyncSnapshot snapshot) { final localization = AppLocalization.of(context); if (snapshot.hasError) { - return Text('${localization.error}: ${snapshot.error}'); + return Text('${localization!.error}: ${snapshot.error}'); } else { return const Text(''); } @@ -52,14 +52,14 @@ class _VendorViewDetailsState extends State { List _buildDetailsList() { final listTiles = []; - final contacts = vendor.contacts; + final contacts = vendor!.contacts; contacts.forEach((contact) { final subtitleParts = []; - if (contact.email.isNotEmpty) { + if (contact!.email.isNotEmpty) { subtitleParts.add(contact.email); } - if (company.hasCustomField(CustomFieldType.vendorContact1) && + if (company!.hasCustomField(CustomFieldType.vendorContact1) && contact.customValue1.isNotEmpty) { subtitleParts.add(company.formatCustomFieldValue( CustomFieldType.vendorContact1, contact.customValue1)); @@ -88,7 +88,7 @@ class _VendorViewDetailsState extends State { ), icon: Icons.email, title: contact.fullName.isEmpty - ? localization.blankContact + ? localization!.blankContact : contact.fullName, subtitle: subtitleParts.join('\n'), copyValue: contact.email, @@ -106,7 +106,7 @@ class _VendorViewDetailsState extends State { icon: Icons.phone, title: contact.fullName + '\n' + contact.phone, copyValue: contact.phone, - subtitle: localization.phone, + subtitle: localization!.phone, /* trailing: isApple() || isAndroid() ? IconButton( @@ -134,7 +134,7 @@ class _VendorViewDetailsState extends State { listTiles.add(AppListTile( icon: Icons.link, title: vendor.website, - subtitle: localization.website, + subtitle: localization!.website, onLongPress: () => setState(() { _launched = _launchURL(context, formatURL(vendor.website)); }), @@ -145,7 +145,7 @@ class _VendorViewDetailsState extends State { listTiles.add(AppListTile( icon: Icons.phone, title: vendor.phone, - subtitle: localization.phone, + subtitle: localization!.phone, /* trailing: isApple() || isAndroid() ? IconButton( @@ -172,7 +172,7 @@ class _VendorViewDetailsState extends State { listTiles.add(AppListTile( icon: Icons.location_city, title: vendor.vatNumber, - subtitle: localization.vatNumber, + subtitle: localization!.vatNumber, )); } @@ -180,7 +180,7 @@ class _VendorViewDetailsState extends State { listTiles.add(AppListTile( icon: Icons.business, title: vendor.idNumber, - subtitle: localization.idNumber, + subtitle: localization!.idNumber, )); } @@ -192,7 +192,7 @@ class _VendorViewDetailsState extends State { listTiles.add(AppListTile( icon: Icons.pin_drop, title: address, - subtitle: localization.billingAddress, + subtitle: localization!.billingAddress, onLongPress: () { _launched = _launchURL( context, diff --git a/lib/ui/vendor/view/vendor_view_documents.dart b/lib/ui/vendor/view/vendor_view_documents.dart index 59b502c3b..4a6e7587c 100644 --- a/lib/ui/vendor/view/vendor_view_documents.dart +++ b/lib/ui/vendor/view/vendor_view_documents.dart @@ -9,7 +9,7 @@ import 'package:invoiceninja_flutter/ui/app/document_grid.dart'; import 'package:invoiceninja_flutter/ui/vendor/view/vendor_view_vm.dart'; class VendorViewDocuments extends StatelessWidget { - const VendorViewDocuments({Key key, @required this.viewModel}) + const VendorViewDocuments({Key? key, required this.viewModel}) : super(key: key); final VendorViewVM viewModel; diff --git a/lib/ui/vendor/view/vendor_view_fullwidth.dart b/lib/ui/vendor/view/vendor_view_fullwidth.dart index 6479ecf48..51c444b43 100644 --- a/lib/ui/vendor/view/vendor_view_fullwidth.dart +++ b/lib/ui/vendor/view/vendor_view_fullwidth.dart @@ -21,8 +21,8 @@ import 'package:url_launcher/url_launcher.dart'; class VendorViewFullwidth extends StatefulWidget { const VendorViewFullwidth({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final VendorViewVM viewModel; @@ -33,9 +33,9 @@ class VendorViewFullwidth extends StatefulWidget { class _VendorViewFullwidthState extends State with TickerProviderStateMixin { - ScrollController _scrollController1; - ScrollController _scrollController2; - ScrollController _scrollController3; + ScrollController? _scrollController1; + ScrollController? _scrollController2; + ScrollController? _scrollController3; @override void initState() { @@ -48,9 +48,9 @@ class _VendorViewFullwidthState extends State @override void dispose() { - _scrollController1.dispose(); - _scrollController2.dispose(); - _scrollController3.dispose(); + _scrollController1!.dispose(); + _scrollController2!.dispose(); + _scrollController3!.dispose(); super.dispose(); } @@ -60,7 +60,7 @@ class _VendorViewFullwidthState extends State final store = StoreProvider.of(context); final state = store.state; final company = state.company; - final vendor = state.vendorState.get(state.uiState.filterEntityId); + final vendor = state.vendorState.get(state.uiState.filterEntityId!)!; final documents = vendor.documents; final viewModel = widget.viewModel; final billingAddress = formatAddress(state, object: vendor); @@ -88,7 +88,7 @@ class _VendorViewFullwidthState extends State left: kMobileDialogPadding), child: ListView(controller: _scrollController1, children: [ Text( - localization.details, + localization!.details, style: Theme.of(context).textTheme.titleLarge, ), SizedBox(height: 8), @@ -127,7 +127,7 @@ class _VendorViewFullwidthState extends State ), ), SizedBox(height: 4), - if (vendor.currencyId != state.company.currencyId) + if (vendor.currencyId != state.company!.currencyId) Padding( padding: const EdgeInsets.only(bottom: 1), child: Text( @@ -138,7 +138,7 @@ class _VendorViewFullwidthState extends State ), ), if ((vendor.languageId ?? '').isNotEmpty && - vendor.languageId != state.company.languageId) + vendor.languageId != state.company!.languageId) Padding( padding: const EdgeInsets.only(bottom: 1), child: Text( @@ -149,16 +149,16 @@ class _VendorViewFullwidthState extends State ), ), if (vendor.customValue1.isNotEmpty) - Text(company.formatCustomFieldValue( + Text(company!.formatCustomFieldValue( CustomFieldType.vendor1, vendor.customValue1)), if (vendor.customValue2.isNotEmpty) - Text(company.formatCustomFieldValue( + Text(company!.formatCustomFieldValue( CustomFieldType.vendor2, vendor.customValue2)), if (vendor.customValue3.isNotEmpty) - Text(company.formatCustomFieldValue( + Text(company!.formatCustomFieldValue( CustomFieldType.vendor3, vendor.customValue3)), if (vendor.customValue4.isNotEmpty) - Text(company.formatCustomFieldValue( + Text(company!.formatCustomFieldValue( CustomFieldType.vendor4, vendor.customValue4)), ]), ), @@ -254,7 +254,7 @@ class _VendorViewFullwidthState extends State crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - contact.fullName, + contact!.fullName, style: Theme.of(context).textTheme.titleMedium, ), if (contact.email.isNotEmpty) @@ -278,19 +278,19 @@ class _VendorViewFullwidthState extends State ), ), if (contact.customValue1.isNotEmpty) - Text(company.formatCustomFieldValue( + Text(company!.formatCustomFieldValue( CustomFieldType.vendorContact1, contact.customValue1)), if (contact.customValue2.isNotEmpty) - Text(company.formatCustomFieldValue( + Text(company!.formatCustomFieldValue( CustomFieldType.vendorContact2, contact.customValue2)), if (contact.customValue3.isNotEmpty) - Text(company.formatCustomFieldValue( + Text(company!.formatCustomFieldValue( CustomFieldType.vendorContact3, contact.customValue3)), if (contact.customValue4.isNotEmpty) - Text(company.formatCustomFieldValue( + Text(company!.formatCustomFieldValue( CustomFieldType.vendorContact4, contact.customValue4)), SizedBox(height: 8), @@ -335,7 +335,7 @@ class _VendorViewFullwidthState extends State bottom: kMobileDialogPadding, left: kMobileDialogPadding / 2), child: DefaultTabController( - length: company.isModuleEnabled(EntityType.document) ? 3 : 2, + length: company!.isModuleEnabled(EntityType.document) ? 3 : 2, child: SizedBox( height: minHeight, child: Column( @@ -345,7 +345,7 @@ class _VendorViewFullwidthState extends State isScrollable: true, tabs: [ Tab( - child: Text(localization.standing), + child: Text(localization.standing!), ), if (company.isModuleEnabled(EntityType.document)) Tab( @@ -374,7 +374,7 @@ class _VendorViewFullwidthState extends State state.expenseState.list), context, currencyId: vendor.currencyId ?? - state.company.currencyId), + state.company!.currencyId), ), if (vendor.privateNotes.isNotEmpty) IconText( diff --git a/lib/ui/vendor/view/vendor_view_overview.dart b/lib/ui/vendor/view/vendor_view_overview.dart index ff0db733b..ab520770e 100644 --- a/lib/ui/vendor/view/vendor_view_overview.dart +++ b/lib/ui/vendor/view/vendor_view_overview.dart @@ -24,9 +24,9 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class VendorOverview extends StatelessWidget { const VendorOverview({ - Key key, - @required this.viewModel, - @required this.isFilter, + Key? key, + required this.viewModel, + required this.isFilter, }) : super(key: key); final VendorViewVM viewModel; @@ -34,23 +34,23 @@ class VendorOverview extends StatelessWidget { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final vendor = viewModel.vendor; - final company = viewModel.company; + final company = viewModel.company!; final state = StoreProvider.of(context).state; final statics = state.staticState; - final fields = {}; + final fields = {}; final user = - vendor.hasUser ? state.userState.get(vendor.assignedUserId) : null; + vendor.hasUser ? state.userState.get(vendor.assignedUserId!) : null; if (vendor.hasCurrency && vendor.currencyId != company.currencyId) { fields[VendorFields.currencyId] = - statics.currencyMap[vendor.currencyId].name; + statics.currencyMap[vendor.currencyId]!.name; } if (vendor.hasLanguage && vendor.languageId != company.languageId) { fields[VendorFields.languageId] = - statics.languageMap[vendor.currencyId].name; + statics.languageMap[vendor.currencyId]!.name; } if (company.hasCustomField(CustomFieldType.vendor1) && diff --git a/lib/ui/vendor/view/vendor_view_vm.dart b/lib/ui/vendor/view/vendor_view_vm.dart index 8715a8b5d..8e8cab247 100644 --- a/lib/ui/vendor/view/vendor_view_vm.dart +++ b/lib/ui/vendor/view/vendor_view_vm.dart @@ -22,7 +22,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class VendorViewScreen extends StatelessWidget { const VendorViewScreen({ - Key key, + Key? key, this.isFilter = false, this.isTopFilter = false, }) : super(key: key); @@ -51,17 +51,17 @@ class VendorViewScreen extends StatelessWidget { class VendorViewVM { VendorViewVM({ - @required this.state, - @required this.vendor, - @required this.company, - @required this.onAddExpensePressed, - @required this.onEntityAction, - @required this.onEntityPressed, - @required this.onRefreshed, - @required this.isSaving, - @required this.isLoading, - @required this.isDirty, - @required this.onUploadDocuments, + required this.state, + required this.vendor, + required this.company, + required this.onAddExpensePressed, + required this.onEntityAction, + required this.onEntityPressed, + required this.onRefreshed, + required this.isSaving, + required this.isLoading, + required this.isDirty, + required this.onUploadDocuments, }); factory VendorViewVM.fromStore(Store store) { @@ -71,7 +71,7 @@ class VendorViewVM { Future _handleRefresh(BuildContext context) { final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(LoadVendor(completer: completer, vendorId: vendor.id)); return completer.future; } @@ -115,7 +115,7 @@ class VendorViewVM { vendor: vendor, completer: completer)); completer.future.then((client) { - showToast(AppLocalization.of(context).uploadedDocument); + showToast(AppLocalization.of(context)!.uploadedDocument); }).catchError((Object error) { showDialog( context: context, @@ -129,7 +129,7 @@ class VendorViewVM { final AppState state; final VendorEntity vendor; - final CompanyEntity company; + final CompanyEntity? company; final Function(BuildContext, EntityAction) onEntityAction; final Function(BuildContext, EntityType, [bool]) onEntityPressed; final Function(BuildContext) onRefreshed; @@ -137,5 +137,5 @@ class VendorViewVM { final bool isSaving; final bool isLoading; final bool isDirty; - final Function(BuildContext, List, bool) onUploadDocuments; + final Function(BuildContext, List, bool?) onUploadDocuments; } diff --git a/lib/ui/webhook/edit/webhook_edit.dart b/lib/ui/webhook/edit/webhook_edit.dart index 70d8fd7ae..557365997 100644 --- a/lib/ui/webhook/edit/webhook_edit.dart +++ b/lib/ui/webhook/edit/webhook_edit.dart @@ -17,8 +17,8 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class WebhookEdit extends StatefulWidget { const WebhookEdit({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); final WebhookEditVM viewModel; @@ -77,7 +77,7 @@ class _WebhookEditState extends State { } void _onSavePressed(BuildContext context) { - final bool isValid = _formKey.currentState.validate(); + final bool isValid = _formKey.currentState!.validate(); if (!isValid) { return; @@ -97,7 +97,7 @@ class _WebhookEditState extends State { return EditScaffold( entity: webhook, - title: webhook.isNew ? localization.newWebhook : localization.editWebhook, + title: webhook.isNew ? localization!.newWebhook : localization!.editWebhook, onCancelPressed: (context) => viewModel.onCancelPressed(context), onSavePressed: _onSavePressed, body: Form( @@ -129,7 +129,7 @@ class _WebhookEditState extends State { items: WebhookEntity.EVENT_MAP.keys .map((eventId) => DropdownMenuItem( child: Text(localization - .lookup(WebhookEntity.EVENT_MAP[eventId])), + .lookup(WebhookEntity.EVENT_MAP[eventId])!), value: eventId, )) .toList(), @@ -214,7 +214,7 @@ class _WebhookEditState extends State { ), SizedBox(width: kTableColumnGap), Expanded( - child: Text(webhook.headers[key]), + child: Text(webhook.headers[key]!), ) ], ), diff --git a/lib/ui/webhook/edit/webhook_edit_vm.dart b/lib/ui/webhook/edit/webhook_edit_vm.dart index 52e824562..6e186c63f 100644 --- a/lib/ui/webhook/edit/webhook_edit_vm.dart +++ b/lib/ui/webhook/edit/webhook_edit_vm.dart @@ -23,7 +23,7 @@ import 'package:invoiceninja_flutter/ui/webhook/view/webhook_view_vm.dart'; import 'package:invoiceninja_flutter/utils/completers.dart'; class WebhookEditScreen extends StatelessWidget { - const WebhookEditScreen({Key key}) : super(key: key); + const WebhookEditScreen({Key? key}) : super(key: key); static const String route = '/$kSettings/$kSettingsWebhookEdit'; @@ -45,20 +45,20 @@ class WebhookEditScreen extends StatelessWidget { class WebhookEditVM { WebhookEditVM({ - @required this.state, - @required this.webhook, - @required this.company, - @required this.onChanged, - @required this.isSaving, - @required this.origWebhook, - @required this.onSavePressed, - @required this.onCancelPressed, - @required this.isLoading, + required this.state, + required this.webhook, + required this.company, + required this.onChanged, + required this.isSaving, + required this.origWebhook, + required this.onSavePressed, + required this.onCancelPressed, + required this.isLoading, }); factory WebhookEditVM.fromStore(Store store) { final state = store.state; - final webhook = state.webhookUIState.editing; + final webhook = state.webhookUIState.editing!; return WebhookEditVM( state: state, @@ -73,7 +73,7 @@ class WebhookEditVM { onCancelPressed: (BuildContext context) { createEntity(context: context, entity: WebhookEntity(), force: true); if (state.webhookUIState.cancelCompleter != null) { - state.webhookUIState.cancelCompleter.complete(); + state.webhookUIState.cancelCompleter!.complete(); } else { store.dispatch(UpdateCurrentRoute(state.uiState.previousRoute)); } @@ -88,16 +88,16 @@ class WebhookEditVM { store.dispatch( SaveWebhookRequest(completer: completer, webhook: webhook)); return completer.future.then((savedWebhook) { - showToast(webhook.isNew - ? localization.createdWebhook - : localization.updatedWebhook); + showToast(webhook!.isNew + ? localization!.createdWebhook + : localization!.updatedWebhook); if (state.prefState.isMobile) { store.dispatch(UpdateCurrentRoute(WebhookViewScreen.route)); if (webhook.isNew) { - navigator.pushReplacementNamed(WebhookViewScreen.route); + navigator!.pushReplacementNamed(WebhookViewScreen.route); } else { - navigator.pop(savedWebhook); + navigator!.pop(savedWebhook); } } else { viewEntity( @@ -107,7 +107,7 @@ class WebhookEditVM { } }).catchError((Object error) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { return ErrorDialog(error); }); @@ -118,12 +118,12 @@ class WebhookEditVM { } final WebhookEntity webhook; - final CompanyEntity company; + final CompanyEntity? company; final Function(WebhookEntity) onChanged; final Function(BuildContext) onSavePressed; final Function(BuildContext) onCancelPressed; final bool isLoading; final bool isSaving; - final WebhookEntity origWebhook; + final WebhookEntity? origWebhook; final AppState state; } diff --git a/lib/ui/webhook/view/webhook_view.dart b/lib/ui/webhook/view/webhook_view.dart index b5ffe2373..f8572575e 100644 --- a/lib/ui/webhook/view/webhook_view.dart +++ b/lib/ui/webhook/view/webhook_view.dart @@ -14,9 +14,9 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class WebhookView extends StatefulWidget { const WebhookView({ - Key key, - @required this.viewModel, - @required this.isFilter, + Key? key, + required this.viewModel, + required this.isFilter, }) : super(key: key); final WebhookViewVM viewModel; @@ -29,7 +29,7 @@ class WebhookView extends StatefulWidget { class _WebhookViewState extends State { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final viewModel = widget.viewModel; final webhook = viewModel.webhook; @@ -61,7 +61,7 @@ class _WebhookViewState extends State { class TargetListTile extends StatelessWidget { const TargetListTile({this.webhook}); - final WebhookEntity webhook; + final WebhookEntity? webhook; @override Widget build(BuildContext context) { @@ -69,7 +69,7 @@ class TargetListTile extends StatelessWidget { contentPadding: const EdgeInsets.all(22), title: Padding( padding: const EdgeInsets.only(right: 16), - child: Text(webhook.targetUrl), + child: Text(webhook!.targetUrl), ), trailing: Icon(Icons.content_copy), onTap: () { diff --git a/lib/ui/webhook/view/webhook_view_vm.dart b/lib/ui/webhook/view/webhook_view_vm.dart index 3644b5294..0bb23a69b 100644 --- a/lib/ui/webhook/view/webhook_view_vm.dart +++ b/lib/ui/webhook/view/webhook_view_vm.dart @@ -22,7 +22,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class WebhookViewScreen extends StatelessWidget { const WebhookViewScreen({ - Key key, + Key? key, this.isFilter = false, }) : super(key: key); @@ -47,15 +47,15 @@ class WebhookViewScreen extends StatelessWidget { class WebhookViewVM { WebhookViewVM({ - @required this.state, - @required this.webhook, - @required this.company, - @required this.onEntityAction, - @required this.onBackPressed, - @required this.onRefreshed, - @required this.isSaving, - @required this.isLoading, - @required this.isDirty, + required this.state, + required this.webhook, + required this.company, + required this.onEntityAction, + required this.onBackPressed, + required this.onRefreshed, + required this.isSaving, + required this.isLoading, + required this.isDirty, }); factory WebhookViewVM.fromStore(Store store) { @@ -65,7 +65,7 @@ class WebhookViewVM { Future _handleRefresh(BuildContext context) { final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(LoadWebhook(completer: completer, webhookId: webhook.id)); return completer.future; } @@ -88,7 +88,7 @@ class WebhookViewVM { final AppState state; final WebhookEntity webhook; - final CompanyEntity company; + final CompanyEntity? company; final Function(BuildContext, EntityAction) onEntityAction; final Function(BuildContext) onRefreshed; final Function onBackPressed; diff --git a/lib/ui/webhook/webhook_list_item.dart b/lib/ui/webhook/webhook_list_item.dart index c67e1c844..43a0ab17d 100644 --- a/lib/ui/webhook/webhook_list_item.dart +++ b/lib/ui/webhook/webhook_list_item.dart @@ -15,26 +15,26 @@ import 'package:invoiceninja_flutter/utils/localization.dart'; class WebhookListItem extends StatelessWidget { const WebhookListItem({ - @required this.user, - @required this.webhook, - @required this.filter, + required this.user, + required this.webhook, + required this.filter, this.onTap, this.onLongPress, this.onCheckboxChanged, this.isChecked = false, }); - final UserEntity user; - final GestureTapCallback onTap; - final GestureTapCallback onLongPress; - final WebhookEntity webhook; - final String filter; - final Function(bool) onCheckboxChanged; + final UserEntity? user; + final GestureTapCallback? onTap; + final GestureTapCallback? onLongPress; + final WebhookEntity? webhook; + final String? filter; + final Function(bool?)? onCheckboxChanged; final bool isChecked; @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; final store = StoreProvider.of(context); final state = store.state; final uiState = state.uiState; @@ -43,30 +43,30 @@ class WebhookListItem extends StatelessWidget { final isInMultiselect = listUIState.isInMultiselect(); final showCheckbox = onCheckboxChanged != null || isInMultiselect; - final filterMatch = filter != null && filter.isNotEmpty - ? webhook.matchesFilterValue(filter) + final filterMatch = filter != null && filter!.isNotEmpty + ? webhook!.matchesFilterValue(filter) : null; final subtitle = filterMatch; return DismissibleEntity( userCompany: state.userCompany, entity: webhook, - isSelected: webhook.id == + isSelected: webhook!.id == (uiState.isEditing - ? webhookUIState.editing.id + ? webhookUIState.editing!.id : webhookUIState.selectedId), child: ListTile( - onTap: () => onTap != null ? onTap() : selectEntity(entity: webhook), + onTap: () => onTap != null ? onTap!() : selectEntity(entity: webhook!), onLongPress: () => onLongPress != null - ? onLongPress() - : selectEntity(entity: webhook, longPress: true), + ? onLongPress!() + : selectEntity(entity: webhook!, longPress: true), leading: showCheckbox ? IgnorePointer( ignoring: listUIState.isInMultiselect(), child: Checkbox( value: isChecked, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, - onChanged: (value) => onCheckboxChanged(value), + onChanged: (value) => onCheckboxChanged!(value), activeColor: Theme.of(context).colorScheme.secondary, ), ) @@ -77,11 +77,11 @@ class WebhookListItem extends StatelessWidget { children: [ Expanded( child: Text( - webhook.targetUrl, + webhook!.targetUrl, style: Theme.of(context).textTheme.titleMedium, ), ), - Text(formatNumber(webhook.listDisplayAmount, context), + Text(formatNumber(webhook!.listDisplayAmount, context)!, style: Theme.of(context).textTheme.titleMedium), ], ), @@ -89,7 +89,7 @@ class WebhookListItem extends StatelessWidget { subtitle: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text(localization.lookup(webhook.eventType)), + Text(localization.lookup(webhook!.eventType)!), subtitle != null && subtitle.isNotEmpty ? Text( subtitle, diff --git a/lib/ui/webhook/webhook_list_vm.dart b/lib/ui/webhook/webhook_list_vm.dart index ecdeffe54..54fb5737a 100644 --- a/lib/ui/webhook/webhook_list_vm.dart +++ b/lib/ui/webhook/webhook_list_vm.dart @@ -24,7 +24,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class WebhookListBuilder extends StatelessWidget { - const WebhookListBuilder({Key key}) : super(key: key); + const WebhookListBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -51,7 +51,7 @@ class WebhookListBuilder extends StatelessWidget { user: viewModel.state.user, filter: viewModel.filter, webhook: webhook, - isChecked: isInMultiselect && listState.isSelected(webhook.id), + isChecked: isInMultiselect && listState.isSelected(webhook!.id), ); }); }, @@ -61,18 +61,18 @@ class WebhookListBuilder extends StatelessWidget { class WebhookListVM { WebhookListVM({ - @required this.state, - @required this.userCompany, - @required this.webhookList, - @required this.webhookMap, - @required this.filter, - @required this.isLoading, - @required this.listState, - @required this.onRefreshed, - @required this.onEntityAction, - @required this.tableColumns, - @required this.onSortColumn, - @required this.onClearMultielsect, + required this.state, + required this.userCompany, + required this.webhookList, + required this.webhookMap, + required this.filter, + required this.isLoading, + required this.listState, + required this.onRefreshed, + required this.onEntityAction, + required this.tableColumns, + required this.onSortColumn, + required this.onClearMultielsect, }); static WebhookListVM fromStore(Store store) { @@ -81,7 +81,7 @@ class WebhookListVM { return Future(null); } final completer = snackBarCompleter( - context, AppLocalization.of(context).refreshComplete); + context, AppLocalization.of(context)!.refreshComplete); store.dispatch(RefreshData(completer: completer)); return completer.future; } @@ -105,7 +105,7 @@ class WebhookListVM { handleWebhookAction(context, webhooks, action), onRefreshed: (context) => _handleRefresh(context), tableColumns: - state.userCompany.settings?.getTableColumns(EntityType.webhook) ?? + state.userCompany!.settings?.getTableColumns(EntityType.webhook) ?? WebhookPresenter.getDefaultTableFields(state.userCompany), onSortColumn: (field) => store.dispatch(SortWebhooks(field)), onClearMultielsect: () => store.dispatch(ClearWebhookMultiselect()), @@ -113,11 +113,11 @@ class WebhookListVM { } final AppState state; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List webhookList; - final BuiltMap webhookMap; + final BuiltMap webhookMap; final ListUIState listState; - final String filter; + final String? filter; final bool isLoading; final Function(BuildContext) onRefreshed; final Function(BuildContext, List, EntityAction) onEntityAction; diff --git a/lib/ui/webhook/webhook_presenter.dart b/lib/ui/webhook/webhook_presenter.dart index 3813bb14c..6effc47a4 100644 --- a/lib/ui/webhook/webhook_presenter.dart +++ b/lib/ui/webhook/webhook_presenter.dart @@ -6,11 +6,11 @@ import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/ui/app/presenters/entity_presenter.dart'; class WebhookPresenter extends EntityPresenter { - static List getDefaultTableFields(UserCompanyEntity userCompany) { + static List getDefaultTableFields(UserCompanyEntity? userCompany) { return []; } - static List getAllTableFields(UserCompanyEntity userCompany) { + static List getAllTableFields(UserCompanyEntity? userCompany) { return [ ...getDefaultTableFields(userCompany), ...EntityPresenter.getBaseFields(), @@ -18,7 +18,7 @@ class WebhookPresenter extends EntityPresenter { } @override - Widget getField({String field, BuildContext context}) { + Widget getField({String? field, required BuildContext context}) { //final state = StoreProvider.of(context).state; //final webhook = entity as InvoiceEntity; diff --git a/lib/ui/webhook/webhook_screen.dart b/lib/ui/webhook/webhook_screen.dart index 79a1b35a9..377065a2c 100644 --- a/lib/ui/webhook/webhook_screen.dart +++ b/lib/ui/webhook/webhook_screen.dart @@ -20,8 +20,8 @@ import 'webhook_screen_vm.dart'; class WebhookScreen extends StatelessWidget { const WebhookScreen({ - Key key, - @required this.viewModel, + Key? key, + required this.viewModel, }) : super(key: key); static const String route = '/$kSettings/$kSettingsWebhooks'; @@ -90,7 +90,7 @@ class WebhookScreen extends StatelessWidget { store.dispatch(FilterWebhooksByCustom4(value)), ), floatingActionButton: state.prefState.isMenuFloated && - userCompany.canCreate(EntityType.webhook) + userCompany!.canCreate(EntityType.webhook) ? FloatingActionButton( heroTag: 'webhook_fab', backgroundColor: Theme.of(context).primaryColorDark, @@ -102,7 +102,7 @@ class WebhookScreen extends StatelessWidget { Icons.add, color: Colors.white, ), - tooltip: localization.newWebhook, + tooltip: localization!.newWebhook, ) : null, ); diff --git a/lib/ui/webhook/webhook_screen_vm.dart b/lib/ui/webhook/webhook_screen_vm.dart index 91a30a4c3..e750c6434 100644 --- a/lib/ui/webhook/webhook_screen_vm.dart +++ b/lib/ui/webhook/webhook_screen_vm.dart @@ -15,7 +15,7 @@ import 'package:invoiceninja_flutter/redux/webhook/webhook_selectors.dart'; import 'webhook_screen.dart'; class WebhookScreenBuilder extends StatelessWidget { - const WebhookScreenBuilder({Key key}) : super(key: key); + const WebhookScreenBuilder({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -32,18 +32,18 @@ class WebhookScreenBuilder extends StatelessWidget { class WebhookScreenVM { WebhookScreenVM({ - @required this.isInMultiselect, - @required this.webhookList, - @required this.userCompany, - @required this.onEntityAction, - @required this.webhookMap, + required this.isInMultiselect, + required this.webhookList, + required this.userCompany, + required this.onEntityAction, + required this.webhookMap, }); final bool isInMultiselect; - final UserCompanyEntity userCompany; + final UserCompanyEntity? userCompany; final List webhookList; final Function(BuildContext, List, EntityAction) onEntityAction; - final BuiltMap webhookMap; + final BuiltMap webhookMap; static WebhookScreenVM fromStore(Store store) { final state = store.state; diff --git a/lib/utils/colors.dart b/lib/utils/colors.dart index 71a585728..50df2a14e 100644 --- a/lib/utils/colors.dart +++ b/lib/utils/colors.dart @@ -1,7 +1,7 @@ // Flutter imports: import 'package:flutter/material.dart'; -Color convertHexStringToColor(String value) { +Color? convertHexStringToColor(String? value) { if (value == null) { return null; } @@ -16,7 +16,7 @@ Color convertHexStringToColor(String value) { } } -String convertColorToHexString(Color color) { +String? convertColorToHexString(Color color) { try { final hex = color.value.toRadixString(16); return '#' + hex.substring(2, hex.length); diff --git a/lib/utils/completers.dart b/lib/utils/completers.dart index 64b0c15e3..f9f89f5ce 100644 --- a/lib/utils/completers.dart +++ b/lib/utils/completers.dart @@ -14,9 +14,9 @@ import 'package:invoiceninja_flutter/ui/app/dialogs/error_dialog.dart'; Completer snackBarCompleter( BuildContext context, - String message, { + String? message, { bool shouldPop = false, - VoidCallback callback, + VoidCallback? callback, }) { final Completer completer = Completer(); final navigator = Navigator.of(context); @@ -34,7 +34,7 @@ Completer snackBarCompleter( navigator.pop(); } showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { return ErrorDialog(error); }); @@ -48,9 +48,9 @@ Completer popCompleter(BuildContext context, dynamic result) { completer.future.then((_) { Navigator.of(context).pop(result); - }).catchError((Object error) { + } as FutureOr<_> Function(Null)).catchError((Object error) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { return ErrorDialog(error); }); @@ -64,7 +64,7 @@ Completer errorCompleter(BuildContext context) { completer.future.catchError((Object error) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { return ErrorDialog(error); }); @@ -81,8 +81,8 @@ class Debouncer { final int milliseconds; - static VoidCallback action; - static Timer timer; + static VoidCallback? action; + static Timer? timer; void run(VoidCallback action) { if (milliseconds == null) { @@ -91,7 +91,7 @@ class Debouncer { } if (timer != null) { - timer.cancel(); + timer!.cancel(); } Debouncer.action = action; @@ -107,7 +107,7 @@ class Debouncer { static void complete() { if (action != null) { - action(); + action!(); action = null; } } @@ -125,11 +125,11 @@ class SimpleDebouncer { final int milliseconds; - static Timer timer; + static Timer? timer; void run(VoidCallback action) { if (timer != null) { - timer.cancel(); + timer!.cancel(); } timer = Timer(Duration(milliseconds: milliseconds), () { @@ -147,11 +147,11 @@ class PersistDebouncer { final int milliseconds; - static Timer timer; + static Timer? timer; void run(VoidCallback action) { if (timer != null) { - timer.cancel(); + timer!.cancel(); } timer = Timer(Duration(milliseconds: milliseconds), () { diff --git a/lib/utils/contacts.dart b/lib/utils/contacts.dart index 4bb78133b..d29c871f2 100644 --- a/lib/utils/contacts.dart +++ b/lib/utils/contacts.dart @@ -2,7 +2,7 @@ import 'package:contacts_service/contacts_service.dart'; import 'package:permission_handler/permission_handler.dart'; -Future getDeviceContact() async { +Future getDeviceContact() async { try { final permissionStatus = await Permission.contacts.request(); if (permissionStatus == PermissionStatus.granted) { diff --git a/lib/utils/dates.dart b/lib/utils/dates.dart index f9499da88..88c8df4fe 100644 --- a/lib/utils/dates.dart +++ b/lib/utils/dates.dart @@ -60,12 +60,12 @@ DateTime addMonths(DateTime dateTime, int offset) { } } -String calculateStartDate({ - CompanyEntity company, - DateRange dateRange, +String? calculateStartDate({ + required CompanyEntity company, + DateRange? dateRange, int offset = 0, - String customStartDate, - String customEndDate, + String? customStartDate, + String? customEndDate, }) { final today = DateTime.now(); final firstDayOfMonth = DateTime.utc(today.year, today.month, 1); @@ -118,12 +118,12 @@ String calculateStartDate({ } } -String calculateEndDate({ - CompanyEntity company, - DateRange dateRange, +String? calculateEndDate({ + required CompanyEntity company, + DateRange? dateRange, int offset = 0, - String customStartDate, - String customEndDate, + String? customStartDate, + String? customEndDate, }) { final today = DateTime.now(); final firstDayOfMonth = DateTime.utc(today.year, today.month, 1); diff --git a/lib/utils/designs.dart b/lib/utils/designs.dart index 9cd5a3c99..b86fc0cb7 100644 --- a/lib/utils/designs.dart +++ b/lib/utils/designs.dart @@ -17,11 +17,11 @@ import 'package:invoiceninja_flutter/redux/app/app_state.dart'; import 'dialogs.dart'; void loadDesign({ - @required BuildContext context, - @required DesignEntity design, - @required bool isDraftMode, - @required bool isPurchaseOrder, - @required Function(Response) onComplete, + required BuildContext context, + required DesignEntity design, + required bool isDraftMode, + required bool isPurchaseOrder, + required Function(Response?) onComplete, }) { if (Config.DEMO_MODE) { onComplete(null); @@ -51,7 +51,7 @@ void loadDesign({ if ((response as Response).statusCode >= 400) { showErrorDialog( message: - '${(response as Response).statusCode}: ${(response as Response).reasonPhrase}'); + '${response.statusCode}: ${response.reasonPhrase}'); onComplete(null); } else { onComplete(response); diff --git a/lib/utils/dialogs.dart b/lib/utils/dialogs.dart index 014fc853d..748c73500 100644 --- a/lib/utils/dialogs.dart +++ b/lib/utils/dialogs.dart @@ -31,11 +31,11 @@ import 'package:invoiceninja_flutter/utils/web_stub.dart' if (dart.library.html) 'package:invoiceninja_flutter/utils/web.dart'; void showRefreshDataDialog( - {@required BuildContext context, bool includeStatic = false}) async { + {required BuildContext context, bool includeStatic = false}) async { final store = StoreProvider.of(context); store.dispatch(RefreshData( completer: snackBarCompleter( - context, AppLocalization.of(context).refreshComplete, + context, AppLocalization.of(context)!.refreshComplete, shouldPop: true), clearData: true, includeStatic: includeStatic, @@ -48,25 +48,25 @@ void showRefreshDataDialog( children: [LoadingDialog()], )); - AppBuilder.of(navigatorKey.currentContext).rebuild(); + AppBuilder.of(navigatorKey.currentContext!)!.rebuild(); } void showErrorDialog({ - String message, + String? message, bool clearErrorOnDismiss = false, }) { showDialog( - context: navigatorKey.currentContext, + context: navigatorKey.currentContext!, builder: (BuildContext context) { return ErrorDialog(message, clearErrorOnDismiss: clearErrorOnDismiss); }); } void showMessageDialog({ - @required BuildContext context, - @required String message, - List secondaryActions, - Function onDismiss, + required BuildContext context, + required String? message, + List? secondaryActions, + Function? onDismiss, }) { showDialog( context: context, @@ -80,10 +80,10 @@ void showMessageDialog({ } void confirmCallback({ - @required BuildContext context, - @required Function(String) callback, - String message, - String typeToConfirm, + required BuildContext? context, + required Function(String?) callback, + String? message, + String? typeToConfirm, bool askForReason = false, bool skip = false, }) { @@ -92,9 +92,9 @@ void confirmCallback({ return; } - final localization = AppLocalization.of(context); - final title = message == null ? localization.areYouSure : message; - final content = message == null ? null : localization.areYouSure; + final localization = AppLocalization.of(context!); + final title = message == null ? localization!.areYouSure : message; + final content = message == null ? null : localization!.areYouSure; showDialog( context: context, @@ -110,14 +110,14 @@ void confirmCallback({ } else { showMessageDialog( context: context, - message: localization.pleaseTypeToConfirm + message: localization!.pleaseTypeToConfirm .replaceFirst(':value', typeToConfirm)); } } return PointerInterceptor( child: AlertDialog( - semanticLabel: localization.areYouSure, + semanticLabel: localization!.areYouSure, title: typeToConfirm != null ? null : Text(title), content: typeToConfirm != null ? Column( @@ -139,7 +139,7 @@ void confirmCallback({ ), if (askForReason) ...[ SizedBox(height: 30), - Flexible(child: Text(localization.whyAreYouLeaving)), + Flexible(child: Text(localization.whyAreYouLeaving!)), DecoratedFormField( onChanged: (value) => _reason = value, minLines: 4, @@ -177,30 +177,30 @@ void confirmCallback({ } void passwordCallback({ - @required BuildContext context, - @required Function(String, String) callback, + required BuildContext context, + required Function(String?, String?) callback, bool alwaysRequire = false, bool skipOAuth = false, }) { final store = StoreProvider.of(context); final state = store.state; final localization = AppLocalization.of(context); - final user = state.user; + final user = state.user!; print( - '## Confirm password: $alwaysRequire, ${user.hasPassword}, ${state.hasRecentlyEnteredPassword}, ${user.oauthProvider}, ${state.company.oauthPasswordRequired}'); + '## Confirm password: $alwaysRequire, ${user.hasPassword}, ${state.hasRecentlyEnteredPassword}, ${user.oauthProvider}, ${state.company!.oauthPasswordRequired}'); if (alwaysRequire && !user.hasPassword) { showMessageDialog( context: context, - message: localization.pleaseSetAPassword, + message: localization!.pleaseSetAPassword, secondaryActions: [ TextButton( onPressed: () { store.dispatch(ViewSettings(section: kSettingsUserDetails)); Navigator.of(context).pop(); }, - child: Text(localization.setPassword.toUpperCase())) + child: Text(localization.setPassword!.toUpperCase())) ]); print('## 1'); return; @@ -234,7 +234,7 @@ void passwordCallback({ try { if (user.isConnectedToGoogle) { GoogleOAuth.signIn((idToken, accessToken) { - if ((!alwaysRequire && !state.company.oauthPasswordRequired) || + if ((!alwaysRequire && !state.company!.oauthPasswordRequired) || !user.hasPassword) { print('## 4'); callback(null, idToken); @@ -254,7 +254,7 @@ void passwordCallback({ }, isSilent: true); } else if (user.isConnectedToMicrosoft) { WebUtils.microsoftLogin((idToken, accessToken) { - if ((!alwaysRequire && !state.company.oauthPasswordRequired) || + if ((!alwaysRequire && !state.company!.oauthPasswordRequired) || !user.hasPassword) { print('## 6'); callback(null, idToken); @@ -283,7 +283,7 @@ void passwordCallback({ } class PasswordConfirmation extends StatefulWidget { - const PasswordConfirmation({@required this.callback, this.idToken = ''}); + const PasswordConfirmation({required this.callback, this.idToken = ''}); final Function(String, String) callback; final String idToken; @@ -293,7 +293,7 @@ class PasswordConfirmation extends StatefulWidget { } class _PasswordConfirmationState extends State { - String _password; + String? _password; bool _isPasswordObscured = true; void _submit() { @@ -307,7 +307,7 @@ class _PasswordConfirmationState extends State { @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; return AlertDialog( title: Text(localization.verifyPassword), @@ -346,13 +346,13 @@ class _PasswordConfirmationState extends State { } void fieldCallback({ - BuildContext context, - String title, - String field, + required BuildContext context, + String? title, + String? field, String value = '', - Function(String) callback, - int maxLength, - List secondaryActions, + Function(String)? callback, + int? maxLength, + List? secondaryActions, }) { showDialog( context: context, @@ -372,27 +372,27 @@ void fieldCallback({ class FieldConfirmation extends StatefulWidget { const FieldConfirmation({ - @required this.callback, - @required this.title, - @required this.field, + required this.callback, + required this.title, + required this.field, this.value = '', this.maxLength, this.secondaryActions, }); - final Function(String) callback; - final String title; - final String field; + final Function(String)? callback; + final String? title; + final String? field; final String value; - final int maxLength; - final List secondaryActions; + final int? maxLength; + final List? secondaryActions; @override _FieldConfirmationState createState() => _FieldConfirmationState(); } class _FieldConfirmationState extends State { - String _field; + String? _field; void _submit() { final value = (_field ?? '').trim(); @@ -402,15 +402,15 @@ class _FieldConfirmationState extends State { } Navigator.pop(context); - widget.callback(value); + widget.callback!(value); } @override Widget build(BuildContext context) { - final localization = AppLocalization.of(context); + final localization = AppLocalization.of(context)!; return AlertDialog( - title: Text(widget.title), + title: Text(widget.title!), content: TextFormField( initialValue: widget.value, autofocus: true, @@ -440,8 +440,8 @@ class _FieldConfirmationState extends State { } void cloneToDialog({ - @required BuildContext context, - @required InvoiceEntity invoice, + required BuildContext context, + required InvoiceEntity? invoice, }) { final localization = AppLocalization.of(context); final store = StoreProvider.of(context); @@ -452,11 +452,11 @@ void cloneToDialog({ context: context, builder: (BuildContext context) { return AlertDialog( - title: Text(localization.cloneTo), + title: Text(localization!.cloneTo), content: Column( mainAxisSize: MainAxisSize.min, children: [ - if (userCompany.canCreate(EntityType.invoice)) + if (userCompany!.canCreate(EntityType.invoice)) ListTile( leading: Icon(getEntityIcon(EntityType.invoice)), title: Text(localization.invoice), @@ -495,7 +495,7 @@ void cloneToDialog({ if (userCompany.canCreate(EntityType.purchaseOrder)) ListTile( leading: Icon(getEntityIcon(EntityType.purchaseOrder)), - title: Text(localization.purchaseOrder), + title: Text(localization.purchaseOrder!), onTap: () { Navigator.of(context).pop(); handleEntityAction( @@ -515,8 +515,8 @@ void cloneToDialog({ } void changeTaskStatusDialog({ - @required BuildContext context, - @required TaskEntity task, + required BuildContext context, + required TaskEntity task, }) { final localization = AppLocalization.of(context); final store = StoreProvider.of(context); @@ -530,11 +530,11 @@ void changeTaskStatusDialog({ context: context, builder: (BuildContext context) { return AlertDialog( - title: Text(localization.changeStatus), + title: Text(localization!.changeStatus!), content: Column( mainAxisSize: MainAxisSize.min, children: statusIds.map((statusId) { - final status = state.taskStatusState.get(statusId); + final status = state.taskStatusState.get(statusId)!; return ListTile( title: Text(status.name), leading: Icon(Icons.check_circle), @@ -562,16 +562,16 @@ void changeTaskStatusDialog({ } void addToInvoiceDialog({ - @required BuildContext context, - @required String clientId, - @required List items, + required BuildContext context, + required String? clientId, + required List items, }) { final localization = AppLocalization.of(context); final store = StoreProvider.of(context); final state = store.state; final invoices = state.invoiceState.map.values.where((invoice) { - if (clientId != invoice.clientId) { + if (clientId != invoice!.clientId) { return false; } @@ -579,7 +579,7 @@ void addToInvoiceDialog({ }); if (invoices.isEmpty) { - showMessageDialog(context: context, message: localization.noInvoicesFound); + showMessageDialog(context: context, message: localization!.noInvoicesFound); return; } @@ -587,14 +587,14 @@ void addToInvoiceDialog({ context: context, builder: (BuildContext context) { return SimpleDialog( - title: Text(localization.addToInvoice), + title: Text(localization!.addToInvoice!), children: invoices.map((invoice) { return SimpleDialogOption( child: Row(children: [ - Expanded(child: Text(invoice.number)), + Expanded(child: Text(invoice!.number)), Text( formatNumber(invoice.amount, context, - clientId: invoice.clientId), + clientId: invoice.clientId)!, ), ]), onPressed: () { diff --git a/lib/utils/enums.dart b/lib/utils/enums.dart index 26a368c20..2b76cb7ad 100644 --- a/lib/utils/enums.dart +++ b/lib/utils/enums.dart @@ -1,19 +1,20 @@ +import 'package:collection/collection.dart' show IterableExtension; + class EnumUtils { - static String parse(dynamic enumItem) { + static String? parse(dynamic enumItem) { if (enumItem == null) { return null; } return enumItem.toString().split('.')[1]; } - static T fromString(List enumValues, String value) { + static T? fromString(List enumValues, String? value) { if (value == null || enumValues == null) { return null; } - return enumValues.singleWhere( + return enumValues.singleWhereOrNull( (enumItem) => - EnumUtils.parse(enumItem)?.toLowerCase() == value?.toLowerCase(), - orElse: () => null); + EnumUtils.parse(enumItem)?.toLowerCase() == value?.toLowerCase()); } } diff --git a/lib/utils/extensions.dart b/lib/utils/extensions.dart index afafa0030..dda9423cf 100644 --- a/lib/utils/extensions.dart +++ b/lib/utils/extensions.dart @@ -10,7 +10,7 @@ import 'package:invoiceninja_flutter/redux/app/app_state.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; extension ContextHelper on BuildContext { - AppLocalization get localization { + AppLocalization? get localization { return AppLocalization.of(this); } @@ -24,7 +24,7 @@ extension ContextHelper on BuildContext { } extension ListHelper on List { - T get firstOrNull => isEmpty ? null : first; + T? get firstOrNull => isEmpty ? null : first; - T get lastOrNull => isEmpty ? null : last; + T? get lastOrNull => isEmpty ? null : last; } diff --git a/lib/utils/files.dart b/lib/utils/files.dart index 7c317000e..95571142c 100644 --- a/lib/utils/files.dart +++ b/lib/utils/files.dart @@ -16,10 +16,10 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; import 'package:invoiceninja_flutter/utils/web_stub.dart' if (dart.library.html) 'package:invoiceninja_flutter/utils/web.dart'; -Future> pickFiles({ - String fileIndex, - FileType fileType, - List allowedExtensions, +Future?> pickFiles({ + String? fileIndex, + FileType? fileType, + List? allowedExtensions, bool allowMultiple = true, }) async { if (kIsWeb || isDesktopOS()) { @@ -48,11 +48,11 @@ Future> pickFiles({ } } -Future> _pickFiles({ - String fileIndex, - FileType fileType, - List allowedExtensions, - bool allowMultiple, +Future?> _pickFiles({ + String? fileIndex, + FileType? fileType, + List? allowedExtensions, + required bool allowMultiple, }) async { final result = await FilePicker.platform.pickFiles( type: fileType ?? FileType.custom, @@ -68,7 +68,7 @@ Future> _pickFiles({ for (var index = 0; index < result.files.length; index++) { final file = result.files[index]; multipartFiles.add(MultipartFile.fromBytes( - allowMultiple ? 'documents[$index]' : fileIndex, file.bytes, + allowMultiple ? 'documents[$index]' : fileIndex!, file.bytes!, filename: file.name)); } diff --git a/lib/utils/formatting.dart b/lib/utils/formatting.dart index 967775f0f..9815cbec4 100644 --- a/lib/utils/formatting.dart +++ b/lib/utils/formatting.dart @@ -19,12 +19,12 @@ import 'package:invoiceninja_flutter/redux/app/app_state.dart'; import 'package:invoiceninja_flutter/redux/company/company_selectors.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; -double round(double value, int precision) { +double round(double? value, int precision) { if (value == null || value.isNaN) { return 0; } - final int fac = pow(10, precision); + final int fac = pow(10, precision) as int; double result = value * fac; // Workaround for floating point issues: @@ -37,7 +37,7 @@ double round(double value, int precision) { return result.round() / fac; } -int parseInt(String value, {bool zeroIsNull = false}) { +int? parseInt(String value, {bool zeroIsNull = false}) { value = value.replaceAll(RegExp(r'[^0-9\.\-]'), ''); final intValue = int.tryParse(value) ?? 0; @@ -45,16 +45,16 @@ int parseInt(String value, {bool zeroIsNull = false}) { return (intValue == 0 && zeroIsNull) ? null : intValue; } -double parseDouble(String value, {bool zeroIsNull = false}) { +double? parseDouble(String? value, {bool zeroIsNull = false}) { // check for comma as decimal separator - final state = StoreProvider.of(navigatorKey.currentContext).state; + final state = StoreProvider.of(navigatorKey.currentContext!).state; - if (state.company.useCommaAsDecimalPlace && value.contains(',')) { + if (state.company!.useCommaAsDecimalPlace && value!.contains(',')) { value = value.replaceAll('.', ''); value = value.replaceAll(',', '.'); } - value = value.replaceAll(RegExp(r'[^0-9\.\-]'), ''); + value = value!.replaceAll(RegExp(r'[^0-9\.\-]'), ''); final doubleValue = double.tryParse(value) ?? 0.0; @@ -77,14 +77,14 @@ String formatSize(int size) { : '${round(size / 1000, 0).toInt()} KB'; } -String formatNumber( - double value, - BuildContext context, { - String clientId, - String vendorId, - String currencyId, - FormatNumberType formatNumberType = FormatNumberType.money, - bool showCurrencyCode, +String? formatNumber( + double? value, + BuildContext? context, { + String? clientId, + String? vendorId, + String? currencyId, + FormatNumberType? formatNumberType = FormatNumberType.money, + bool? showCurrencyCode, bool zeroIsNull = false, bool roundToPrecision = true, }) { @@ -101,17 +101,17 @@ String formatNumber( return formatDuration(Duration(seconds: value.toInt())); } - final state = StoreProvider.of(context).state; - final CompanyEntity company = state.company; - final ClientEntity client = state.clientState.map[clientId]; - final VendorEntity vendor = state.vendorState.map[vendorId]; - final GroupEntity group = state.groupState.map[client?.groupId]; + final state = StoreProvider.of(context!).state; + final CompanyEntity company = state.company!; + final ClientEntity? client = state.clientState.map[clientId]; + final VendorEntity? vendor = state.vendorState.map[vendorId]; + final GroupEntity? group = state.groupState.map[client?.groupId]; - String countryId; + String? countryId; - if ((client?.countryId ?? '').isNotEmpty && client.hasNameSet) { + if ((client?.countryId ?? '').isNotEmpty && client!.hasNameSet) { countryId = client.countryId; - } else if ((vendor?.countryId ?? '').isNotEmpty && vendor.hasNameSet) { + } else if ((vendor?.countryId ?? '').isNotEmpty && vendor!.hasNameSet) { countryId = vendor.countryId; } else { countryId = company.settings.countryId; @@ -131,8 +131,8 @@ String formatNumber( currencyId = company.currencyId; } - final CurrencyEntity currency = state.staticState.currencyMap[currencyId]; - final CurrencyEntity companyCurrency = + final CurrencyEntity? currency = state.staticState.currencyMap[currencyId]; + final CurrencyEntity? companyCurrency = state.staticState.currencyMap[company.currencyId]; final CountryEntity country = @@ -151,7 +151,7 @@ String formatNumber( String thousandSeparator = currency.thousandSeparator; String decimalSeparator = currency.decimalSeparator; - bool swapCurrencySymbol = companyCurrency.swapCurrencySymbol; + bool swapCurrencySymbol = companyCurrency!.swapCurrencySymbol; if (currency.id == kCurrencyEuro) { swapCurrencySymbol = companyCountry.swapCurrencySymbol; @@ -170,7 +170,7 @@ String formatNumber( FormatNumberType.inputAmount, ].contains(formatNumberType)) { thousandSeparator = ''; - if (state.company.useCommaAsDecimalPlace) { + if (state.company!.useCommaAsDecimalPlace) { decimalSeparator = ','; } else { decimalSeparator = '.'; @@ -196,8 +196,8 @@ String formatNumber( SCIENTIFIC_PATTERN: '', ); - NumberFormat formatter; - String formatted; + late NumberFormat formatter; + String? formatted; if (formatNumberType == FormatNumberType.int) { return NumberFormat('#,##0', 'custom').format(value); @@ -301,7 +301,7 @@ String formatAddress(AppState appState, } if (countryId.isNotEmpty && - countryId != appState.company.settings.countryId) { + countryId != appState.company!.settings.countryId) { if (str.isNotEmpty) { str += delimiter; } @@ -312,28 +312,28 @@ String formatAddress(AppState appState, return str; } -String convertDateTimeToSqlDate([DateTime date]) { +String convertDateTimeToSqlDate([DateTime? date]) { date = date ?? DateTime.now(); return date.toIso8601String().split('T').first; } -DateTime convertSqlDateToDateTime([String date]) { +DateTime convertSqlDateToDateTime([String? date]) { date = date ?? convertDateTimeToSqlDate(); final parts = date.split('-'); return DateTime.utc( - parseInt(parts[0]), - parseInt(parts[1]), - parseInt(parts[2]), + parseInt(parts[0])!, + parseInt(parts[1])!, + parseInt(parts[2])!, ); } -DateTime convertTimestampToDate(int timestamp) => +DateTime convertTimestampToDate(int? timestamp) => DateTime.fromMillisecondsSinceEpoch((timestamp ?? 0) * 1000, isUtc: true); -String convertTimestampToDateString(int timestamp) => +String convertTimestampToDateString(int? timestamp) => convertTimestampToDate(timestamp).toIso8601String(); -String formatDuration(Duration duration, {bool showSeconds = true}) { +String formatDuration(Duration? duration, {bool showSeconds = true}) { final time = duration.toString().split('.')[0]; if (showSeconds) { @@ -344,25 +344,25 @@ String formatDuration(Duration duration, {bool showSeconds = true}) { } } -DateTime convertTimeOfDayToDateTime(TimeOfDay timeOfDay, [DateTime dateTime]) { +DateTime convertTimeOfDayToDateTime(TimeOfDay? timeOfDay, [DateTime? dateTime]) { dateTime ??= DateTime.now(); return DateTime(dateTime.year, dateTime.month, dateTime.day, timeOfDay?.hour ?? 0, timeOfDay?.minute ?? 0) .toUtc(); } -TimeOfDay convertDateTimeToTimeOfDay(DateTime dateTime) => +TimeOfDay convertDateTimeToTimeOfDay(DateTime? dateTime) => TimeOfDay(hour: dateTime?.hour ?? 0, minute: dateTime?.minute ?? 0); String formatDateRange(String startDate, String endDate, BuildContext context) { final today = DateTime.now(); - final startDateTime = DateTime.tryParse(startDate).toLocal(); + final startDateTime = DateTime.tryParse(startDate)!.toLocal(); final startFormatter = DateFormat(today.year == startDateTime.year ? 'MMM d' : 'MMM d, yyy'); final startDateTimeString = startFormatter.format(startDateTime); - final endDateTime = DateTime.tryParse(endDate).toLocal(); + final endDateTime = DateTime.tryParse(endDate)!.toLocal(); final endFormatter = DateFormat(today.year == endDateTime.year ? 'MMM d' : 'MMM d, yyy'); final endDateTimeString = endFormatter.format(endDateTime); @@ -376,36 +376,36 @@ String parseDate(String value, BuildContext context) { } final state = StoreProvider.of(context).state; - final CompanyEntity company = state.company; + final CompanyEntity company = state.company!; final dateFormats = state.staticState.dateFormatMap; final dateFormatId = (company.settings.dateFormatId ?? '').isNotEmpty ? company.settings.dateFormatId : kDefaultDateFormat; - final format = dateFormats[dateFormatId].format; + final format = dateFormats[dateFormatId]!.format; final formatter = DateFormat(format, localeSelector(state)); return convertDateTimeToSqlDate(formatter.parse(value)); } -DateTime parseTime(String value, BuildContext context) { +DateTime? parseTime(String value, BuildContext context) { if (value == null || value.isEmpty) { return null; } final state = StoreProvider.of(context).state; - final CompanyEntity company = state.company; + final CompanyEntity company = state.company!; final showSeconds = ':'.allMatches(value).length >= 2; final enableMilitaryTime = company.settings.enableMilitaryTime; String format; format = showSeconds - ? enableMilitaryTime + ? enableMilitaryTime! ? 'H:mm:ss' : 'h:mm:ss a' - : enableMilitaryTime + : enableMilitaryTime! ? 'H:mm' : 'h:mm a'; @@ -413,38 +413,38 @@ DateTime parseTime(String value, BuildContext context) { return formatter.parse('2000-01-01 ' + value); } -String formatDate(String value, BuildContext context, +String formatDate(String? value, BuildContext? context, {bool showDate = true, bool showTime = false, bool showSeconds = true}) { if (value == null || value.isEmpty) { return ''; } - final state = StoreProvider.of(context).state; - final CompanyEntity company = state.company; + final state = StoreProvider.of(context!).state; + final CompanyEntity? company = state.company; var formattedValue = ''; if (showTime) { String format; if (!showDate) { format = showSeconds - ? company.settings.enableMilitaryTime + ? company!.settings.enableMilitaryTime! ? 'H:mm:ss' : 'h:mm:ss a' - : company.settings.enableMilitaryTime + : company!.settings.enableMilitaryTime! ? 'H:mm' : 'h:mm a'; } else { final dateFormats = state.staticState.dateFormatMap; - final dateFormatId = (company.settings.dateFormatId ?? '').isNotEmpty + final dateFormatId = (company!.settings.dateFormatId ?? '').isNotEmpty ? company.settings.dateFormatId : kDefaultDateFormat; - format = dateFormats[dateFormatId].format; + format = dateFormats[dateFormatId]!.format; format += ' ' + (showSeconds - ? company.settings.enableMilitaryTime + ? company.settings.enableMilitaryTime! ? 'H:mm:ss' : 'h:mm:ss a' - : company.settings.enableMilitaryTime + : company.settings.enableMilitaryTime! ? 'H:mm' : 'h:mm a'); } @@ -454,7 +454,7 @@ String formatDate(String value, BuildContext context, } else { final dateFormats = state.staticState.dateFormatMap; final formatter = DateFormat( - dateFormats[company.settings.dateFormatId].format, + dateFormats[company!.settings.dateFormatId]!.format, localeSelector(state)); final parsed = DateTime.tryParse(value); formattedValue = parsed == null ? '' : formatter.format(parsed); @@ -464,7 +464,7 @@ String formatDate(String value, BuildContext context, return formattedValue.replaceFirst('..', '.'); } -String formatApiUrl(String url) { +String formatApiUrl(String? url) { url = cleanApiUrl(url); if (url.isEmpty) { @@ -474,19 +474,19 @@ String formatApiUrl(String url) { return url + '/api/v1'; } -String cleanApiUrl(String url) => (url ?? '') +String cleanApiUrl(String? url) => (url ?? '') .trim() .replaceFirst(RegExp(r'/api/v1'), '') .replaceFirst(RegExp(r'/$'), ''); -String formatCustomValue({String value, String field, BuildContext context}) { +String? formatCustomValue({String? value, String? field, required BuildContext context}) { final localization = AppLocalization.of(context); final state = StoreProvider.of(context).state; - final CompanyEntity company = state.company; + final CompanyEntity company = state.company!; switch (company.getCustomFieldType(field)) { case kFieldTypeSwitch: - return value == 'yes' ? localization.yes : localization.no; + return value == 'yes' ? localization!.yes : localization!.no; break; case kFieldTypeDate: return formatDate(value, context); diff --git a/lib/utils/i18n.dart b/lib/utils/i18n.dart index 1c1eac837..2da3f0268 100644 --- a/lib/utils/i18n.dart +++ b/lib/utils/i18n.dart @@ -102809,6650 +102809,6650 @@ mixin LocalizationsProvider on LocaleCodeAware { }; String get createdProject => - _localizedValues[localeCode]['created_project'] ?? ''; + _localizedValues[localeCode]!['created_project'] ?? ''; String get updatedProject => - _localizedValues[localeCode]['updated_project'] ?? ''; + _localizedValues[localeCode]!['updated_project'] ?? ''; String get archivedProject => - _localizedValues[localeCode]['archived_project'] ?? ''; + _localizedValues[localeCode]!['archived_project'] ?? ''; String get deletedProject => - _localizedValues[localeCode]['deleted_project'] ?? ''; + _localizedValues[localeCode]!['deleted_project'] ?? ''; String get restoredProject => - _localizedValues[localeCode]['restored_project'] ?? ''; + _localizedValues[localeCode]!['restored_project'] ?? ''; String get archivedProjects => - _localizedValues[localeCode]['archived_projects'] ?? ''; + _localizedValues[localeCode]!['archived_projects'] ?? ''; String get deletedProjects => - _localizedValues[localeCode]['deleted_projects'] ?? ''; + _localizedValues[localeCode]!['deleted_projects'] ?? ''; String get restoredProjects => - _localizedValues[localeCode]['restored_projects'] ?? ''; + _localizedValues[localeCode]!['restored_projects'] ?? ''; - String get newProject => _localizedValues[localeCode]['new_project'] ?? ''; + String get newProject => _localizedValues[localeCode]!['new_project'] ?? ''; String get thankYouForUsingOurApp => - _localizedValues[localeCode]['thank_you_for_using_our_app'] ?? ''; + _localizedValues[localeCode]!['thank_you_for_using_our_app'] ?? ''; String get ifYouLikeIt => - _localizedValues[localeCode]['if_you_like_it'] ?? ''; + _localizedValues[localeCode]!['if_you_like_it'] ?? ''; - String get clickHere => _localizedValues[localeCode]['click_here'] ?? ''; + String get clickHere => _localizedValues[localeCode]!['click_here'] ?? ''; String get clickHereCapital => - _localizedValues[localeCode]['click_here_capital'] ?? ''; + _localizedValues[localeCode]!['click_here_capital'] ?? ''; - String get toRateIt => _localizedValues[localeCode]['to_rate_it'] ?? ''; + String get toRateIt => _localizedValues[localeCode]!['to_rate_it'] ?? ''; - String get average => _localizedValues[localeCode]['average'] ?? ''; + String get average => _localizedValues[localeCode]!['average'] ?? ''; - String get unapproved => _localizedValues[localeCode]['unapproved'] ?? ''; + String get unapproved => _localizedValues[localeCode]!['unapproved'] ?? ''; String get authenticateToChangeSetting => - _localizedValues[localeCode]['authenticate_to_change_setting'] ?? ''; + _localizedValues[localeCode]!['authenticate_to_change_setting'] ?? ''; - String get locked => _localizedValues[localeCode]['locked'] ?? ''; + String get locked => _localizedValues[localeCode]!['locked'] ?? ''; - String get authenticate => _localizedValues[localeCode]['authenticate'] ?? ''; + String get authenticate => _localizedValues[localeCode]!['authenticate'] ?? ''; String get pleaseAuthenticate => - _localizedValues[localeCode]['please_authenticate'] ?? ''; + _localizedValues[localeCode]!['please_authenticate'] ?? ''; String get biometricAuthentication => - _localizedValues[localeCode]['biometric_authentication'] ?? ''; + _localizedValues[localeCode]!['biometric_authentication'] ?? ''; - String get footer => _localizedValues[localeCode]['footer'] ?? ''; + String get footer => _localizedValues[localeCode]!['footer'] ?? ''; - String get compare => _localizedValues[localeCode]['compare'] ?? ''; + String get compare => _localizedValues[localeCode]!['compare'] ?? ''; - String get hostedLogin => _localizedValues[localeCode]['hosted_login'] ?? ''; + String get hostedLogin => _localizedValues[localeCode]!['hosted_login'] ?? ''; String get selfhostLogin => - _localizedValues[localeCode]['selfhost_login'] ?? ''; + _localizedValues[localeCode]!['selfhost_login'] ?? ''; String get googleSignIn => - _localizedValues[localeCode]['google_sign_in'] ?? ''; + _localizedValues[localeCode]!['google_sign_in'] ?? ''; - String get today => _localizedValues[localeCode]['today'] ?? ''; + String get today => _localizedValues[localeCode]!['today'] ?? ''; - String get customRange => _localizedValues[localeCode]['custom_range'] ?? ''; + String get customRange => _localizedValues[localeCode]!['custom_range'] ?? ''; - String get dateRange => _localizedValues[localeCode]['date_range'] ?? ''; + String get dateRange => _localizedValues[localeCode]!['date_range'] ?? ''; - String get current => _localizedValues[localeCode]['current'] ?? ''; + String get current => _localizedValues[localeCode]!['current'] ?? ''; - String get previous => _localizedValues[localeCode]['previous'] ?? ''; + String get previous => _localizedValues[localeCode]!['previous'] ?? ''; String get currentPeriod => - _localizedValues[localeCode]['current_period'] ?? ''; + _localizedValues[localeCode]!['current_period'] ?? ''; String get comparisonPeriod => - _localizedValues[localeCode]['comparison_period'] ?? ''; + _localizedValues[localeCode]!['comparison_period'] ?? ''; String get previousPeriod => - _localizedValues[localeCode]['previous_period'] ?? ''; + _localizedValues[localeCode]!['previous_period'] ?? ''; String get previousYear => - _localizedValues[localeCode]['previous_year'] ?? ''; + _localizedValues[localeCode]!['previous_year'] ?? ''; - String get compareTo => _localizedValues[localeCode]['compare_to'] ?? ''; + String get compareTo => _localizedValues[localeCode]!['compare_to'] ?? ''; - String get last7Days => _localizedValues[localeCode]['last7_days'] ?? ''; + String get last7Days => _localizedValues[localeCode]!['last7_days'] ?? ''; - String get lastWeek => _localizedValues[localeCode]['last_week'] ?? ''; + String get lastWeek => _localizedValues[localeCode]!['last_week'] ?? ''; - String get last30Days => _localizedValues[localeCode]['last30_days'] ?? ''; + String get last30Days => _localizedValues[localeCode]!['last30_days'] ?? ''; - String get thisMonth => _localizedValues[localeCode]['this_month'] ?? ''; + String get thisMonth => _localizedValues[localeCode]!['this_month'] ?? ''; - String get lastMonth => _localizedValues[localeCode]['last_month'] ?? ''; + String get lastMonth => _localizedValues[localeCode]!['last_month'] ?? ''; - String get thisYear => _localizedValues[localeCode]['this_year'] ?? ''; + String get thisYear => _localizedValues[localeCode]!['this_year'] ?? ''; - String get lastYear => _localizedValues[localeCode]['last_year'] ?? ''; + String get lastYear => _localizedValues[localeCode]!['last_year'] ?? ''; - String get allTime => _localizedValues[localeCode]['all_time'] ?? ''; + String get allTime => _localizedValues[localeCode]!['all_time'] ?? ''; - String get custom => _localizedValues[localeCode]['custom'] ?? ''; + String get custom => _localizedValues[localeCode]!['custom'] ?? ''; String get cloneToInvoice => - _localizedValues[localeCode]['clone_to_invoice'] ?? ''; + _localizedValues[localeCode]!['clone_to_invoice'] ?? ''; String get cloneToQuote => - _localizedValues[localeCode]['clone_to_quote'] ?? ''; + _localizedValues[localeCode]!['clone_to_quote'] ?? ''; - String get viewInvoice => _localizedValues[localeCode]['view_invoice'] ?? ''; + String get viewInvoice => _localizedValues[localeCode]!['view_invoice'] ?? ''; - String get convert => _localizedValues[localeCode]['convert'] ?? ''; + String get convert => _localizedValues[localeCode]!['convert'] ?? ''; - String get more => _localizedValues[localeCode]['more'] ?? ''; + String get more => _localizedValues[localeCode]!['more'] ?? ''; - String get editClient => _localizedValues[localeCode]['edit_client'] ?? ''; + String get editClient => _localizedValues[localeCode]!['edit_client'] ?? ''; - String get editProduct => _localizedValues[localeCode]['edit_product'] ?? ''; + String get editProduct => _localizedValues[localeCode]!['edit_product'] ?? ''; - String get editInvoice => _localizedValues[localeCode]['edit_invoice'] ?? ''; + String get editInvoice => _localizedValues[localeCode]!['edit_invoice'] ?? ''; - String get editQuote => _localizedValues[localeCode]['edit_quote'] ?? ''; + String get editQuote => _localizedValues[localeCode]!['edit_quote'] ?? ''; - String get editPayment => _localizedValues[localeCode]['edit_payment'] ?? ''; + String get editPayment => _localizedValues[localeCode]!['edit_payment'] ?? ''; - String get editTask => _localizedValues[localeCode]['edit_task'] ?? ''; + String get editTask => _localizedValues[localeCode]!['edit_task'] ?? ''; - String get editExpense => _localizedValues[localeCode]['edit_expense'] ?? ''; + String get editExpense => _localizedValues[localeCode]!['edit_expense'] ?? ''; - String get editVendor => _localizedValues[localeCode]['edit_vendor'] ?? ''; + String get editVendor => _localizedValues[localeCode]!['edit_vendor'] ?? ''; - String get editProject => _localizedValues[localeCode]['edit_project'] ?? ''; + String get editProject => _localizedValues[localeCode]!['edit_project'] ?? ''; - String get editCredit => _localizedValues[localeCode]['edit_credit'] ?? ''; + String get editCredit => _localizedValues[localeCode]!['edit_credit'] ?? ''; String get editRecurringInvoice => - _localizedValues[localeCode]['edit_recurring_invoice'] ?? ''; + _localizedValues[localeCode]!['edit_recurring_invoice'] ?? ''; String get editRecurringExpense => - _localizedValues[localeCode]['edit_recurring_expense'] ?? ''; + _localizedValues[localeCode]!['edit_recurring_expense'] ?? ''; String get editRecurringQuote => - _localizedValues[localeCode]['edit_recurring_quote'] ?? ''; + _localizedValues[localeCode]!['edit_recurring_quote'] ?? ''; String get billingAddress => - _localizedValues[localeCode]['billing_address'] ?? ''; + _localizedValues[localeCode]!['billing_address'] ?? ''; String get shippingAddress => - _localizedValues[localeCode]['shipping_address'] ?? ''; + _localizedValues[localeCode]!['shipping_address'] ?? ''; String get totalRevenue => - _localizedValues[localeCode]['total_revenue'] ?? ''; + _localizedValues[localeCode]!['total_revenue'] ?? ''; String get averageInvoice => - _localizedValues[localeCode]['average_invoice'] ?? ''; + _localizedValues[localeCode]!['average_invoice'] ?? ''; - String get outstanding => _localizedValues[localeCode]['outstanding'] ?? ''; + String get outstanding => _localizedValues[localeCode]!['outstanding'] ?? ''; String get invoicesSent => - _localizedValues[localeCode]['invoices_sent'] ?? ''; + _localizedValues[localeCode]!['invoices_sent'] ?? ''; String get activeClients => - _localizedValues[localeCode]['active_clients'] ?? ''; + _localizedValues[localeCode]!['active_clients'] ?? ''; - String get close => _localizedValues[localeCode]['close'] ?? ''; + String get close => _localizedValues[localeCode]!['close'] ?? ''; - String get email => _localizedValues[localeCode]['email'] ?? ''; + String get email => _localizedValues[localeCode]!['email'] ?? ''; - String get password => _localizedValues[localeCode]['password'] ?? ''; + String get password => _localizedValues[localeCode]!['password'] ?? ''; - String get url => _localizedValues[localeCode]['url'] ?? ''; + String get url => _localizedValues[localeCode]!['url'] ?? ''; - String get secret => _localizedValues[localeCode]['secret'] ?? ''; + String get secret => _localizedValues[localeCode]!['secret'] ?? ''; - String get name => _localizedValues[localeCode]['name'] ?? ''; + String get name => _localizedValues[localeCode]!['name'] ?? ''; - String get logout => _localizedValues[localeCode]['logout'] ?? ''; + String get logout => _localizedValues[localeCode]!['logout'] ?? ''; - String get login => _localizedValues[localeCode]['login'] ?? ''; + String get login => _localizedValues[localeCode]!['login'] ?? ''; - String get filter => _localizedValues[localeCode]['filter'] ?? ''; + String get filter => _localizedValues[localeCode]!['filter'] ?? ''; - String get sort => _localizedValues[localeCode]['sort'] ?? ''; + String get sort => _localizedValues[localeCode]!['sort'] ?? ''; - String get search => _localizedValues[localeCode]['search'] ?? ''; + String get search => _localizedValues[localeCode]!['search'] ?? ''; - String get active => _localizedValues[localeCode]['active'] ?? ''; + String get active => _localizedValues[localeCode]!['active'] ?? ''; - String get archived => _localizedValues[localeCode]['archived'] ?? ''; + String get archived => _localizedValues[localeCode]!['archived'] ?? ''; - String get deleted => _localizedValues[localeCode]['deleted'] ?? ''; + String get deleted => _localizedValues[localeCode]!['deleted'] ?? ''; - String get dashboard => _localizedValues[localeCode]['dashboard'] ?? ''; + String get dashboard => _localizedValues[localeCode]!['dashboard'] ?? ''; - String get archive => _localizedValues[localeCode]['archive'] ?? ''; + String get archive => _localizedValues[localeCode]!['archive'] ?? ''; - String get delete => _localizedValues[localeCode]['delete'] ?? ''; + String get delete => _localizedValues[localeCode]!['delete'] ?? ''; - String get restore => _localizedValues[localeCode]['restore'] ?? ''; + String get restore => _localizedValues[localeCode]!['restore'] ?? ''; String get refreshComplete => - _localizedValues[localeCode]['refresh_complete'] ?? ''; + _localizedValues[localeCode]!['refresh_complete'] ?? ''; String get pleaseEnterYourEmail => - _localizedValues[localeCode]['please_enter_your_email'] ?? ''; + _localizedValues[localeCode]!['please_enter_your_email'] ?? ''; String get pleaseEnterYourPassword => - _localizedValues[localeCode]['please_enter_your_password'] ?? ''; + _localizedValues[localeCode]!['please_enter_your_password'] ?? ''; String get pleaseEnterYourUrl => - _localizedValues[localeCode]['please_enter_your_url'] ?? ''; + _localizedValues[localeCode]!['please_enter_your_url'] ?? ''; String get pleaseEnterAProductKey => - _localizedValues[localeCode]['please_enter_a_product_key'] ?? ''; + _localizedValues[localeCode]!['please_enter_a_product_key'] ?? ''; String get pleaseEnterAFirstName => - _localizedValues[localeCode]['please_enter_a_first_name'] ?? ''; + _localizedValues[localeCode]!['please_enter_a_first_name'] ?? ''; String get pleaseEnterALastName => - _localizedValues[localeCode]['please_enter_a_last_name'] ?? ''; + _localizedValues[localeCode]!['please_enter_a_last_name'] ?? ''; - String get ascending => _localizedValues[localeCode]['ascending'] ?? ''; + String get ascending => _localizedValues[localeCode]!['ascending'] ?? ''; - String get descending => _localizedValues[localeCode]['descending'] ?? ''; + String get descending => _localizedValues[localeCode]!['descending'] ?? ''; - String get save => _localizedValues[localeCode]['save'] ?? ''; + String get save => _localizedValues[localeCode]!['save'] ?? ''; String get anErrorOccurred => - _localizedValues[localeCode]['an_error_occurred'] ?? ''; + _localizedValues[localeCode]!['an_error_occurred'] ?? ''; - String get paidToDate => _localizedValues[localeCode]['paid_to_date'] ?? ''; + String get paidToDate => _localizedValues[localeCode]!['paid_to_date'] ?? ''; - String get balanceDue => _localizedValues[localeCode]['balance_due'] ?? ''; + String get balanceDue => _localizedValues[localeCode]!['balance_due'] ?? ''; - String get balance => _localizedValues[localeCode]['balance'] ?? ''; + String get balance => _localizedValues[localeCode]!['balance'] ?? ''; - String get overview => _localizedValues[localeCode]['overview'] ?? ''; + String get overview => _localizedValues[localeCode]!['overview'] ?? ''; - String get details => _localizedValues[localeCode]['details'] ?? ''; + String get details => _localizedValues[localeCode]!['details'] ?? ''; - String get phone => _localizedValues[localeCode]['phone'] ?? ''; + String get phone => _localizedValues[localeCode]!['phone'] ?? ''; - String get website => _localizedValues[localeCode]['website'] ?? ''; + String get website => _localizedValues[localeCode]!['website'] ?? ''; - String get vatNumber => _localizedValues[localeCode]['vat_number'] ?? ''; + String get vatNumber => _localizedValues[localeCode]!['vat_number'] ?? ''; - String get idNumber => _localizedValues[localeCode]['id_number'] ?? ''; + String get idNumber => _localizedValues[localeCode]!['id_number'] ?? ''; - String get create => _localizedValues[localeCode]['create'] ?? ''; + String get create => _localizedValues[localeCode]!['create'] ?? ''; String get copiedToClipboard => - _localizedValues[localeCode]['copied_to_clipboard'] ?? ''; + _localizedValues[localeCode]!['copied_to_clipboard'] ?? ''; - String get error => _localizedValues[localeCode]['error'] ?? ''; + String get error => _localizedValues[localeCode]!['error'] ?? ''; String get couldNotLaunch => - _localizedValues[localeCode]['could_not_launch'] ?? ''; + _localizedValues[localeCode]!['could_not_launch'] ?? ''; - String get contacts => _localizedValues[localeCode]['contacts'] ?? ''; + String get contacts => _localizedValues[localeCode]!['contacts'] ?? ''; - String get additional => _localizedValues[localeCode]['additional'] ?? ''; + String get additional => _localizedValues[localeCode]!['additional'] ?? ''; - String get firstName => _localizedValues[localeCode]['first_name'] ?? ''; + String get firstName => _localizedValues[localeCode]!['first_name'] ?? ''; - String get lastName => _localizedValues[localeCode]['last_name'] ?? ''; + String get lastName => _localizedValues[localeCode]!['last_name'] ?? ''; - String get addContact => _localizedValues[localeCode]['add_contact'] ?? ''; + String get addContact => _localizedValues[localeCode]!['add_contact'] ?? ''; - String get areYouSure => _localizedValues[localeCode]['are_you_sure'] ?? ''; + String get areYouSure => _localizedValues[localeCode]!['are_you_sure'] ?? ''; - String get cancel => _localizedValues[localeCode]['cancel'] ?? ''; + String get cancel => _localizedValues[localeCode]!['cancel'] ?? ''; - String get ok => _localizedValues[localeCode]['ok'] ?? ''; + String get ok => _localizedValues[localeCode]!['ok'] ?? ''; - String get remove => _localizedValues[localeCode]['remove'] ?? ''; + String get remove => _localizedValues[localeCode]!['remove'] ?? ''; String get emailIsInvalid => - _localizedValues[localeCode]['email_is_invalid'] ?? ''; + _localizedValues[localeCode]!['email_is_invalid'] ?? ''; - String get product => _localizedValues[localeCode]['product'] ?? ''; + String get product => _localizedValues[localeCode]!['product'] ?? ''; - String get products => _localizedValues[localeCode]['products'] ?? ''; + String get products => _localizedValues[localeCode]!['products'] ?? ''; - String get newProduct => _localizedValues[localeCode]['new_product'] ?? ''; + String get newProduct => _localizedValues[localeCode]!['new_product'] ?? ''; String get createdProduct => - _localizedValues[localeCode]['created_product'] ?? ''; + _localizedValues[localeCode]!['created_product'] ?? ''; String get updatedProduct => - _localizedValues[localeCode]['updated_product'] ?? ''; + _localizedValues[localeCode]!['updated_product'] ?? ''; String get archivedProduct => - _localizedValues[localeCode]['archived_product'] ?? ''; + _localizedValues[localeCode]!['archived_product'] ?? ''; String get deletedProduct => - _localizedValues[localeCode]['deleted_product'] ?? ''; + _localizedValues[localeCode]!['deleted_product'] ?? ''; String get restoredProduct => - _localizedValues[localeCode]['restored_product'] ?? ''; + _localizedValues[localeCode]!['restored_product'] ?? ''; String get archivedProducts => - _localizedValues[localeCode]['archived_products'] ?? ''; + _localizedValues[localeCode]!['archived_products'] ?? ''; String get deletedProducts => - _localizedValues[localeCode]['deleted_products'] ?? ''; + _localizedValues[localeCode]!['deleted_products'] ?? ''; String get restoredProducts => - _localizedValues[localeCode]['restored_products'] ?? ''; + _localizedValues[localeCode]!['restored_products'] ?? ''; - String get newVendor => _localizedValues[localeCode]['new_vendor'] ?? ''; + String get newVendor => _localizedValues[localeCode]!['new_vendor'] ?? ''; String get createdVendor => - _localizedValues[localeCode]['created_vendor'] ?? ''; + _localizedValues[localeCode]!['created_vendor'] ?? ''; String get updatedVendor => - _localizedValues[localeCode]['updated_vendor'] ?? ''; + _localizedValues[localeCode]!['updated_vendor'] ?? ''; String get archivedVendor => - _localizedValues[localeCode]['archived_vendor'] ?? ''; + _localizedValues[localeCode]!['archived_vendor'] ?? ''; String get deletedVendor => - _localizedValues[localeCode]['deleted_vendor'] ?? ''; + _localizedValues[localeCode]!['deleted_vendor'] ?? ''; String get restoredVendor => - _localizedValues[localeCode]['restored_vendor'] ?? ''; + _localizedValues[localeCode]!['restored_vendor'] ?? ''; String get archivedVendors => - _localizedValues[localeCode]['archived_vendors'] ?? ''; + _localizedValues[localeCode]!['archived_vendors'] ?? ''; String get deletedVendors => - _localizedValues[localeCode]['deleted_vendors'] ?? ''; + _localizedValues[localeCode]!['deleted_vendors'] ?? ''; String get restoredVendors => - _localizedValues[localeCode]['restored_vendors'] ?? ''; + _localizedValues[localeCode]!['restored_vendors'] ?? ''; - String get document => _localizedValues[localeCode]['document'] ?? ''; + String get document => _localizedValues[localeCode]!['document'] ?? ''; - String get documents => _localizedValues[localeCode]['documents'] ?? ''; + String get documents => _localizedValues[localeCode]!['documents'] ?? ''; - String get newDocument => _localizedValues[localeCode]['new_document'] ?? ''; + String get newDocument => _localizedValues[localeCode]!['new_document'] ?? ''; String get editDocument => - _localizedValues[localeCode]['edit_document'] ?? ''; + _localizedValues[localeCode]!['edit_document'] ?? ''; String get uploadedDocument => - _localizedValues[localeCode]['uploaded_document'] ?? ''; + _localizedValues[localeCode]!['uploaded_document'] ?? ''; String get updatedDocument => - _localizedValues[localeCode]['updated_document'] ?? ''; + _localizedValues[localeCode]!['updated_document'] ?? ''; String get archivedDocument => - _localizedValues[localeCode]['archived_document'] ?? ''; + _localizedValues[localeCode]!['archived_document'] ?? ''; String get deletedDocument => - _localizedValues[localeCode]['deleted_document'] ?? ''; + _localizedValues[localeCode]!['deleted_document'] ?? ''; String get restoredDocument => - _localizedValues[localeCode]['restored_document'] ?? ''; + _localizedValues[localeCode]!['restored_document'] ?? ''; String get archivedDocuments => - _localizedValues[localeCode]['archived_documents'] ?? ''; + _localizedValues[localeCode]!['archived_documents'] ?? ''; String get deletedDocuments => - _localizedValues[localeCode]['deleted_documents'] ?? ''; + _localizedValues[localeCode]!['deleted_documents'] ?? ''; String get restoredDocuments => - _localizedValues[localeCode]['restored_documents'] ?? ''; + _localizedValues[localeCode]!['restored_documents'] ?? ''; - String get newExpense => _localizedValues[localeCode]['new_expense'] ?? ''; + String get newExpense => _localizedValues[localeCode]!['new_expense'] ?? ''; String get createdExpense => - _localizedValues[localeCode]['created_expense'] ?? ''; + _localizedValues[localeCode]!['created_expense'] ?? ''; String get updatedExpense => - _localizedValues[localeCode]['updated_expense'] ?? ''; + _localizedValues[localeCode]!['updated_expense'] ?? ''; String get archivedExpense => - _localizedValues[localeCode]['archived_expense'] ?? ''; + _localizedValues[localeCode]!['archived_expense'] ?? ''; String get deletedExpense => - _localizedValues[localeCode]['deleted_expense'] ?? ''; + _localizedValues[localeCode]!['deleted_expense'] ?? ''; String get restoredExpense => - _localizedValues[localeCode]['restored_expense'] ?? ''; + _localizedValues[localeCode]!['restored_expense'] ?? ''; String get archivedExpenses => - _localizedValues[localeCode]['archived_expenses'] ?? ''; + _localizedValues[localeCode]!['archived_expenses'] ?? ''; String get deletedExpenses => - _localizedValues[localeCode]['deleted_expenses'] ?? ''; + _localizedValues[localeCode]!['deleted_expenses'] ?? ''; String get restoredExpenses => - _localizedValues[localeCode]['restored_expenses'] ?? ''; + _localizedValues[localeCode]!['restored_expenses'] ?? ''; - String get productKey => _localizedValues[localeCode]['product_key'] ?? ''; + String get productKey => _localizedValues[localeCode]!['product_key'] ?? ''; - String get notes => _localizedValues[localeCode]['notes'] ?? ''; + String get notes => _localizedValues[localeCode]!['notes'] ?? ''; - String get cost => _localizedValues[localeCode]['cost'] ?? ''; + String get cost => _localizedValues[localeCode]!['cost'] ?? ''; - String get client => _localizedValues[localeCode]['client'] ?? ''; + String get client => _localizedValues[localeCode]!['client'] ?? ''; - String get clients => _localizedValues[localeCode]['clients'] ?? ''; + String get clients => _localizedValues[localeCode]!['clients'] ?? ''; - String get newClient => _localizedValues[localeCode]['new_client'] ?? ''; + String get newClient => _localizedValues[localeCode]!['new_client'] ?? ''; String get createdClient => - _localizedValues[localeCode]['created_client'] ?? ''; + _localizedValues[localeCode]!['created_client'] ?? ''; String get updatedClient => - _localizedValues[localeCode]['updated_client'] ?? ''; + _localizedValues[localeCode]!['updated_client'] ?? ''; String get archivedClient => - _localizedValues[localeCode]['archived_client'] ?? ''; + _localizedValues[localeCode]!['archived_client'] ?? ''; String get deletedClient => - _localizedValues[localeCode]['deleted_client'] ?? ''; + _localizedValues[localeCode]!['deleted_client'] ?? ''; String get restoredClient => - _localizedValues[localeCode]['restored_client'] ?? ''; + _localizedValues[localeCode]!['restored_client'] ?? ''; String get archivedClients => - _localizedValues[localeCode]['archived_clients'] ?? ''; + _localizedValues[localeCode]!['archived_clients'] ?? ''; String get deletedClients => - _localizedValues[localeCode]['deleted_clients'] ?? ''; + _localizedValues[localeCode]!['deleted_clients'] ?? ''; String get restoredClients => - _localizedValues[localeCode]['restored_clients'] ?? ''; + _localizedValues[localeCode]!['restored_clients'] ?? ''; - String get address1 => _localizedValues[localeCode]['address1'] ?? ''; + String get address1 => _localizedValues[localeCode]!['address1'] ?? ''; - String get address2 => _localizedValues[localeCode]['address2'] ?? ''; + String get address2 => _localizedValues[localeCode]!['address2'] ?? ''; - String get city => _localizedValues[localeCode]['city'] ?? ''; + String get city => _localizedValues[localeCode]!['city'] ?? ''; - String get state => _localizedValues[localeCode]['state'] ?? ''; + String get state => _localizedValues[localeCode]!['state'] ?? ''; - String get postalCode => _localizedValues[localeCode]['postal_code'] ?? ''; + String get postalCode => _localizedValues[localeCode]!['postal_code'] ?? ''; - String get country => _localizedValues[localeCode]['country'] ?? ''; + String get country => _localizedValues[localeCode]!['country'] ?? ''; - String get invoice => _localizedValues[localeCode]['invoice'] ?? ''; + String get invoice => _localizedValues[localeCode]!['invoice'] ?? ''; - String get invoices => _localizedValues[localeCode]['invoices'] ?? ''; + String get invoices => _localizedValues[localeCode]!['invoices'] ?? ''; - String get newInvoice => _localizedValues[localeCode]['new_invoice'] ?? ''; + String get newInvoice => _localizedValues[localeCode]!['new_invoice'] ?? ''; String get createdInvoice => - _localizedValues[localeCode]['created_invoice'] ?? ''; + _localizedValues[localeCode]!['created_invoice'] ?? ''; String get updatedInvoice => - _localizedValues[localeCode]['updated_invoice'] ?? ''; + _localizedValues[localeCode]!['updated_invoice'] ?? ''; String get archivedInvoice => - _localizedValues[localeCode]['archived_invoice'] ?? ''; + _localizedValues[localeCode]!['archived_invoice'] ?? ''; String get deletedInvoice => - _localizedValues[localeCode]['deleted_invoice'] ?? ''; + _localizedValues[localeCode]!['deleted_invoice'] ?? ''; String get restoredInvoice => - _localizedValues[localeCode]['restored_invoice'] ?? ''; + _localizedValues[localeCode]!['restored_invoice'] ?? ''; String get archivedInvoices => - _localizedValues[localeCode]['archived_invoices'] ?? ''; + _localizedValues[localeCode]!['archived_invoices'] ?? ''; String get deletedInvoices => - _localizedValues[localeCode]['deleted_invoices'] ?? ''; + _localizedValues[localeCode]!['deleted_invoices'] ?? ''; String get restoredInvoices => - _localizedValues[localeCode]['restored_invoices'] ?? ''; + _localizedValues[localeCode]!['restored_invoices'] ?? ''; String get emailedInvoice => - _localizedValues[localeCode]['emailed_invoice'] ?? ''; + _localizedValues[localeCode]!['emailed_invoice'] ?? ''; String get emailedPayment => - _localizedValues[localeCode]['emailed_payment'] ?? ''; + _localizedValues[localeCode]!['emailed_payment'] ?? ''; - String get amount => _localizedValues[localeCode]['amount'] ?? ''; + String get amount => _localizedValues[localeCode]!['amount'] ?? ''; String get invoiceNumber => - _localizedValues[localeCode]['invoice_number'] ?? ''; + _localizedValues[localeCode]!['invoice_number'] ?? ''; - String get invoiceDate => _localizedValues[localeCode]['invoice_date'] ?? ''; + String get invoiceDate => _localizedValues[localeCode]!['invoice_date'] ?? ''; - String get discount => _localizedValues[localeCode]['discount'] ?? ''; + String get discount => _localizedValues[localeCode]!['discount'] ?? ''; - String get poNumber => _localizedValues[localeCode]['po_number'] ?? ''; + String get poNumber => _localizedValues[localeCode]!['po_number'] ?? ''; - String get terms => _localizedValues[localeCode]['terms'] ?? ''; + String get terms => _localizedValues[localeCode]!['terms'] ?? ''; - String get publicNotes => _localizedValues[localeCode]['public_notes'] ?? ''; + String get publicNotes => _localizedValues[localeCode]!['public_notes'] ?? ''; String get privateNotes => - _localizedValues[localeCode]['private_notes'] ?? ''; + _localizedValues[localeCode]!['private_notes'] ?? ''; - String get frequency => _localizedValues[localeCode]['frequency'] ?? ''; + String get frequency => _localizedValues[localeCode]!['frequency'] ?? ''; - String get startDate => _localizedValues[localeCode]['start_date'] ?? ''; + String get startDate => _localizedValues[localeCode]!['start_date'] ?? ''; - String get endDate => _localizedValues[localeCode]['end_date'] ?? ''; + String get endDate => _localizedValues[localeCode]!['end_date'] ?? ''; - String get quoteNumber => _localizedValues[localeCode]['quote_number'] ?? ''; + String get quoteNumber => _localizedValues[localeCode]!['quote_number'] ?? ''; - String get quoteDate => _localizedValues[localeCode]['quote_date'] ?? ''; + String get quoteDate => _localizedValues[localeCode]!['quote_date'] ?? ''; - String get validUntil => _localizedValues[localeCode]['valid_until'] ?? ''; + String get validUntil => _localizedValues[localeCode]!['valid_until'] ?? ''; - String get items => _localizedValues[localeCode]['items'] ?? ''; + String get items => _localizedValues[localeCode]!['items'] ?? ''; String get partialDeposit => - _localizedValues[localeCode]['partial_deposit'] ?? ''; + _localizedValues[localeCode]!['partial_deposit'] ?? ''; - String get description => _localizedValues[localeCode]['description'] ?? ''; + String get description => _localizedValues[localeCode]!['description'] ?? ''; - String get unitCost => _localizedValues[localeCode]['unit_cost'] ?? ''; + String get unitCost => _localizedValues[localeCode]!['unit_cost'] ?? ''; - String get quantity => _localizedValues[localeCode]['quantity'] ?? ''; + String get quantity => _localizedValues[localeCode]!['quantity'] ?? ''; - String get addItem => _localizedValues[localeCode]['add_item'] ?? ''; + String get addItem => _localizedValues[localeCode]!['add_item'] ?? ''; - String get contact => _localizedValues[localeCode]['contact'] ?? ''; + String get contact => _localizedValues[localeCode]!['contact'] ?? ''; - String get workPhone => _localizedValues[localeCode]['work_phone'] ?? ''; + String get workPhone => _localizedValues[localeCode]!['work_phone'] ?? ''; - String get totalAmount => _localizedValues[localeCode]['total_amount'] ?? ''; + String get totalAmount => _localizedValues[localeCode]!['total_amount'] ?? ''; - String get pdf => _localizedValues[localeCode]['pdf'] ?? ''; + String get pdf => _localizedValues[localeCode]!['pdf'] ?? ''; - String get dueDate => _localizedValues[localeCode]['due_date'] ?? ''; + String get dueDate => _localizedValues[localeCode]!['due_date'] ?? ''; String get partialDueDate => - _localizedValues[localeCode]['partial_due_date'] ?? ''; + _localizedValues[localeCode]!['partial_due_date'] ?? ''; - String get status => _localizedValues[localeCode]['status'] ?? ''; + String get status => _localizedValues[localeCode]!['status'] ?? ''; String get invoiceStatusId => - _localizedValues[localeCode]['invoice_status_id'] ?? ''; + _localizedValues[localeCode]!['invoice_status_id'] ?? ''; String get quoteStatusId => - _localizedValues[localeCode]['quote_status'] ?? ''; + _localizedValues[localeCode]!['quote_status'] ?? ''; String get clickPlusToAddItem => - _localizedValues[localeCode]['click_plus_to_add_item'] ?? ''; + _localizedValues[localeCode]!['click_plus_to_add_item'] ?? ''; String get clickPlusToAddTime => - _localizedValues[localeCode]['click_plus_to_add_time'] ?? ''; + _localizedValues[localeCode]!['click_plus_to_add_time'] ?? ''; String get countSelected => - _localizedValues[localeCode]['count_selected'] ?? ''; + _localizedValues[localeCode]!['count_selected'] ?? ''; - String get total => _localizedValues[localeCode]['total'] ?? ''; + String get total => _localizedValues[localeCode]!['total'] ?? ''; - String get totals => _localizedValues[localeCode]['totals'] ?? ''; + String get totals => _localizedValues[localeCode]!['totals'] ?? ''; - String get percent => _localizedValues[localeCode]['percent'] ?? ''; + String get percent => _localizedValues[localeCode]!['percent'] ?? ''; - String get edit => _localizedValues[localeCode]['edit'] ?? ''; + String get edit => _localizedValues[localeCode]!['edit'] ?? ''; - String get dismiss => _localizedValues[localeCode]['dismiss'] ?? ''; + String get dismiss => _localizedValues[localeCode]!['dismiss'] ?? ''; String get pleaseSelectADate => - _localizedValues[localeCode]['please_select_a_date'] ?? ''; + _localizedValues[localeCode]!['please_select_a_date'] ?? ''; String get pleaseSelectAClient => - _localizedValues[localeCode]['please_select_a_client'] ?? ''; + _localizedValues[localeCode]!['please_select_a_client'] ?? ''; String get pleaseSelectAnInvoice => - _localizedValues[localeCode]['please_select_an_invoice'] ?? ''; + _localizedValues[localeCode]!['please_select_an_invoice'] ?? ''; - String get taskRate => _localizedValues[localeCode]['task_rate'] ?? ''; + String get taskRate => _localizedValues[localeCode]!['task_rate'] ?? ''; - String get settings => _localizedValues[localeCode]['settings'] ?? ''; + String get settings => _localizedValues[localeCode]!['settings'] ?? ''; - String get language => _localizedValues[localeCode]['language'] ?? ''; + String get language => _localizedValues[localeCode]!['language'] ?? ''; - String get currency => _localizedValues[localeCode]['currency'] ?? ''; + String get currency => _localizedValues[localeCode]!['currency'] ?? ''; - String get createdAt => _localizedValues[localeCode]['created_at'] ?? ''; + String get createdAt => _localizedValues[localeCode]!['created_at'] ?? ''; - String get createdOn => _localizedValues[localeCode]['created_on'] ?? ''; + String get createdOn => _localizedValues[localeCode]!['created_on'] ?? ''; - String get updatedAt => _localizedValues[localeCode]['updated_at'] ?? ''; + String get updatedAt => _localizedValues[localeCode]!['updated_at'] ?? ''; - String get tax => _localizedValues[localeCode]['tax'] ?? ''; + String get tax => _localizedValues[localeCode]!['tax'] ?? ''; String get pleaseEnterAnInvoiceNumber => - _localizedValues[localeCode]['please_enter_an_invoice_number'] ?? ''; + _localizedValues[localeCode]!['please_enter_an_invoice_number'] ?? ''; String get pleaseEnterAQuoteNumber => - _localizedValues[localeCode]['please_enter_a_quote_number'] ?? ''; + _localizedValues[localeCode]!['please_enter_a_quote_number'] ?? ''; - String get pastDue => _localizedValues[localeCode]['past_due'] ?? ''; + String get pastDue => _localizedValues[localeCode]!['past_due'] ?? ''; - String get draft => _localizedValues[localeCode]['draft'] ?? ''; + String get draft => _localizedValues[localeCode]!['draft'] ?? ''; - String get sent => _localizedValues[localeCode]['sent'] ?? ''; + String get sent => _localizedValues[localeCode]!['sent'] ?? ''; - String get viewed => _localizedValues[localeCode]['viewed'] ?? ''; + String get viewed => _localizedValues[localeCode]!['viewed'] ?? ''; - String get approved => _localizedValues[localeCode]['approved'] ?? ''; + String get approved => _localizedValues[localeCode]!['approved'] ?? ''; - String get partial => _localizedValues[localeCode]['partial'] ?? ''; + String get partial => _localizedValues[localeCode]!['partial'] ?? ''; - String get paid => _localizedValues[localeCode]['paid'] ?? ''; + String get paid => _localizedValues[localeCode]!['paid'] ?? ''; - String get markSent => _localizedValues[localeCode]['mark_sent'] ?? ''; + String get markSent => _localizedValues[localeCode]!['mark_sent'] ?? ''; String get markedInvoiceAsSent => - _localizedValues[localeCode]['marked_invoice_as_sent'] ?? ''; + _localizedValues[localeCode]!['marked_invoice_as_sent'] ?? ''; String get markedInvoiceAsPaid => - _localizedValues[localeCode]['marked_invoice_as_paid'] ?? ''; + _localizedValues[localeCode]!['marked_invoice_as_paid'] ?? ''; String get markedInvoicesAsSent => - _localizedValues[localeCode]['marked_invoices_as_sent'] ?? ''; + _localizedValues[localeCode]!['marked_invoices_as_sent'] ?? ''; String get markedInvoicesAsPaid => - _localizedValues[localeCode]['marked_invoices_as_paid'] ?? ''; + _localizedValues[localeCode]!['marked_invoices_as_paid'] ?? ''; - String get done => _localizedValues[localeCode]['done'] ?? ''; + String get done => _localizedValues[localeCode]!['done'] ?? ''; String get pleaseEnterAClientOrContactName => - _localizedValues[localeCode]['please_enter_a_client_or_contact_name'] ?? + _localizedValues[localeCode]!['please_enter_a_client_or_contact_name'] ?? ''; - String get darkMode => _localizedValues[localeCode]['dark_mode'] ?? ''; + String get darkMode => _localizedValues[localeCode]!['dark_mode'] ?? ''; String get restartAppToApplyChange => - _localizedValues[localeCode]['restart_app_to_apply_change'] ?? ''; + _localizedValues[localeCode]!['restart_app_to_apply_change'] ?? ''; - String get refreshData => _localizedValues[localeCode]['refresh_data'] ?? ''; + String get refreshData => _localizedValues[localeCode]!['refresh_data'] ?? ''; String get blankContact => - _localizedValues[localeCode]['blank_contact'] ?? ''; + _localizedValues[localeCode]!['blank_contact'] ?? ''; - String get activity => _localizedValues[localeCode]['activity'] ?? ''; + String get activity => _localizedValues[localeCode]!['activity'] ?? ''; String get noRecordsFound => - _localizedValues[localeCode]['no_records_found'] ?? ''; + _localizedValues[localeCode]!['no_records_found'] ?? ''; - String get clone => _localizedValues[localeCode]['clone'] ?? ''; + String get clone => _localizedValues[localeCode]!['clone'] ?? ''; - String get loading => _localizedValues[localeCode]['loading'] ?? ''; + String get loading => _localizedValues[localeCode]!['loading'] ?? ''; - String get industry => _localizedValues[localeCode]['industry'] ?? ''; + String get industry => _localizedValues[localeCode]!['industry'] ?? ''; - String get size => _localizedValues[localeCode]['size'] ?? ''; + String get size => _localizedValues[localeCode]!['size'] ?? ''; String get paymentTerms => - _localizedValues[localeCode]['payment_terms'] ?? ''; + _localizedValues[localeCode]!['payment_terms'] ?? ''; - String get paymentDate => _localizedValues[localeCode]['payment_date'] ?? ''; + String get paymentDate => _localizedValues[localeCode]!['payment_date'] ?? ''; String get paymentStatus => - _localizedValues[localeCode]['payment_status'] ?? ''; + _localizedValues[localeCode]!['payment_status'] ?? ''; String get paymentStatus1 => - _localizedValues[localeCode]['payment_status_1'] ?? ''; + _localizedValues[localeCode]!['payment_status_1'] ?? ''; String get paymentStatus2 => - _localizedValues[localeCode]['payment_status_2'] ?? ''; + _localizedValues[localeCode]!['payment_status_2'] ?? ''; String get paymentStatus3 => - _localizedValues[localeCode]['payment_status_3'] ?? ''; + _localizedValues[localeCode]!['payment_status_3'] ?? ''; String get paymentStatus4 => - _localizedValues[localeCode]['payment_status_4'] ?? ''; + _localizedValues[localeCode]!['payment_status_4'] ?? ''; String get paymentStatus5 => - _localizedValues[localeCode]['payment_status_5'] ?? ''; + _localizedValues[localeCode]!['payment_status_5'] ?? ''; String get paymentStatus6 => - _localizedValues[localeCode]['payment_status_6'] ?? ''; + _localizedValues[localeCode]!['payment_status_6'] ?? ''; - String get net => _localizedValues[localeCode]['net'] ?? ''; + String get net => _localizedValues[localeCode]!['net'] ?? ''; String get clientPortal => - _localizedValues[localeCode]['client_portal'] ?? ''; + _localizedValues[localeCode]!['client_portal'] ?? ''; - String get showTasks => _localizedValues[localeCode]['show_tasks'] ?? ''; + String get showTasks => _localizedValues[localeCode]!['show_tasks'] ?? ''; String get emailReminders => - _localizedValues[localeCode]['email_reminders'] ?? ''; + _localizedValues[localeCode]!['email_reminders'] ?? ''; - String get enabled => _localizedValues[localeCode]['enabled'] ?? ''; + String get enabled => _localizedValues[localeCode]!['enabled'] ?? ''; - String get recipients => _localizedValues[localeCode]['recipients'] ?? ''; + String get recipients => _localizedValues[localeCode]!['recipients'] ?? ''; String get initialEmail => - _localizedValues[localeCode]['initial_email'] ?? ''; + _localizedValues[localeCode]!['initial_email'] ?? ''; String get firstReminder => - _localizedValues[localeCode]['first_reminder'] ?? ''; + _localizedValues[localeCode]!['first_reminder'] ?? ''; String get secondReminder => - _localizedValues[localeCode]['second_reminder'] ?? ''; + _localizedValues[localeCode]!['second_reminder'] ?? ''; String get thirdReminder => - _localizedValues[localeCode]['third_reminder'] ?? ''; + _localizedValues[localeCode]!['third_reminder'] ?? ''; - String get template => _localizedValues[localeCode]['template'] ?? ''; + String get template => _localizedValues[localeCode]!['template'] ?? ''; - String get send => _localizedValues[localeCode]['send'] ?? ''; + String get send => _localizedValues[localeCode]!['send'] ?? ''; - String get subject => _localizedValues[localeCode]['subject'] ?? ''; + String get subject => _localizedValues[localeCode]!['subject'] ?? ''; - String get body => _localizedValues[localeCode]['body'] ?? ''; + String get body => _localizedValues[localeCode]!['body'] ?? ''; - String get sendEmail => _localizedValues[localeCode]['send_email'] ?? ''; + String get sendEmail => _localizedValues[localeCode]!['send_email'] ?? ''; String get emailReceipt => - _localizedValues[localeCode]['email_receipt'] ?? ''; + _localizedValues[localeCode]!['email_receipt'] ?? ''; - String get autoBilling => _localizedValues[localeCode]['auto_billing'] ?? ''; + String get autoBilling => _localizedValues[localeCode]!['auto_billing'] ?? ''; - String get button => _localizedValues[localeCode]['button'] ?? ''; + String get button => _localizedValues[localeCode]!['button'] ?? ''; - String get preview => _localizedValues[localeCode]['preview'] ?? ''; + String get preview => _localizedValues[localeCode]!['preview'] ?? ''; - String get customize => _localizedValues[localeCode]['customize'] ?? ''; + String get customize => _localizedValues[localeCode]!['customize'] ?? ''; - String get history => _localizedValues[localeCode]['history'] ?? ''; + String get history => _localizedValues[localeCode]!['history'] ?? ''; - String get payment => _localizedValues[localeCode]['payment'] ?? ''; + String get payment => _localizedValues[localeCode]!['payment'] ?? ''; - String get payments => _localizedValues[localeCode]['payments'] ?? ''; + String get payments => _localizedValues[localeCode]!['payments'] ?? ''; - String get refunded => _localizedValues[localeCode]['refunded'] ?? ''; + String get refunded => _localizedValues[localeCode]!['refunded'] ?? ''; - String get paymentType => _localizedValues[localeCode]['payment_type'] ?? ''; + String get paymentType => _localizedValues[localeCode]!['payment_type'] ?? ''; String get transactionReference => - _localizedValues[localeCode]['transaction_reference'] ?? ''; + _localizedValues[localeCode]!['transaction_reference'] ?? ''; String get enterPayment => - _localizedValues[localeCode]['enter_payment'] ?? ''; + _localizedValues[localeCode]!['enter_payment'] ?? ''; String get createdPayment => - _localizedValues[localeCode]['created_payment'] ?? ''; + _localizedValues[localeCode]!['created_payment'] ?? ''; String get updatedPayment => - _localizedValues[localeCode]['updated_payment'] ?? ''; + _localizedValues[localeCode]!['updated_payment'] ?? ''; String get archivedPayment => - _localizedValues[localeCode]['archived_payment'] ?? ''; + _localizedValues[localeCode]!['archived_payment'] ?? ''; String get deletedPayment => - _localizedValues[localeCode]['deleted_payment'] ?? ''; + _localizedValues[localeCode]!['deleted_payment'] ?? ''; String get restoredPayment => - _localizedValues[localeCode]['restored_payment'] ?? ''; + _localizedValues[localeCode]!['restored_payment'] ?? ''; String get archivedPayments => - _localizedValues[localeCode]['archived_payments'] ?? ''; + _localizedValues[localeCode]!['archived_payments'] ?? ''; String get deletedPayments => - _localizedValues[localeCode]['deleted_payments'] ?? ''; + _localizedValues[localeCode]!['deleted_payments'] ?? ''; String get restoredPayments => - _localizedValues[localeCode]['restored_payments'] ?? ''; + _localizedValues[localeCode]!['restored_payments'] ?? ''; - String get quote => _localizedValues[localeCode]['quote'] ?? ''; + String get quote => _localizedValues[localeCode]!['quote'] ?? ''; - String get quotes => _localizedValues[localeCode]['quotes'] ?? ''; + String get quotes => _localizedValues[localeCode]!['quotes'] ?? ''; - String get newQuote => _localizedValues[localeCode]['new_quote'] ?? ''; + String get newQuote => _localizedValues[localeCode]!['new_quote'] ?? ''; String get createdQuote => - _localizedValues[localeCode]['created_quote'] ?? ''; + _localizedValues[localeCode]!['created_quote'] ?? ''; String get updatedQuote => - _localizedValues[localeCode]['updated_quote'] ?? ''; + _localizedValues[localeCode]!['updated_quote'] ?? ''; String get archivedQuote => - _localizedValues[localeCode]['archived_quote'] ?? ''; + _localizedValues[localeCode]!['archived_quote'] ?? ''; String get deletedQuote => - _localizedValues[localeCode]['deleted_quote'] ?? ''; + _localizedValues[localeCode]!['deleted_quote'] ?? ''; String get restoredQuote => - _localizedValues[localeCode]['restored_quote'] ?? ''; + _localizedValues[localeCode]!['restored_quote'] ?? ''; String get archivedQuotes => - _localizedValues[localeCode]['archived_quotes'] ?? ''; + _localizedValues[localeCode]!['archived_quotes'] ?? ''; String get deletedQuotes => - _localizedValues[localeCode]['deleted_quotes'] ?? ''; + _localizedValues[localeCode]!['deleted_quotes'] ?? ''; String get restoredQuotes => - _localizedValues[localeCode]['restored_quotes'] ?? ''; + _localizedValues[localeCode]!['restored_quotes'] ?? ''; - String get expense => _localizedValues[localeCode]['expense'] ?? ''; + String get expense => _localizedValues[localeCode]!['expense'] ?? ''; - String get expenses => _localizedValues[localeCode]['expenses'] ?? ''; + String get expenses => _localizedValues[localeCode]!['expenses'] ?? ''; - String get vendor => _localizedValues[localeCode]['vendor'] ?? ''; + String get vendor => _localizedValues[localeCode]!['vendor'] ?? ''; - String get vendors => _localizedValues[localeCode]['vendors'] ?? ''; + String get vendors => _localizedValues[localeCode]!['vendors'] ?? ''; - String get task => _localizedValues[localeCode]['task'] ?? ''; + String get task => _localizedValues[localeCode]!['task'] ?? ''; - String get tasks => _localizedValues[localeCode]['tasks'] ?? ''; + String get tasks => _localizedValues[localeCode]!['tasks'] ?? ''; - String get project => _localizedValues[localeCode]['project'] ?? ''; + String get project => _localizedValues[localeCode]!['project'] ?? ''; - String get projects => _localizedValues[localeCode]['projects'] ?? ''; + String get projects => _localizedValues[localeCode]!['projects'] ?? ''; String get oneTimePassword => - _localizedValues[localeCode]['one_time_password'] ?? ''; + _localizedValues[localeCode]!['one_time_password'] ?? ''; String get emailedQuote => - _localizedValues[localeCode]['emailed_quote'] ?? ''; + _localizedValues[localeCode]!['emailed_quote'] ?? ''; String get emailedCredit => - _localizedValues[localeCode]['emailed_credit'] ?? ''; + _localizedValues[localeCode]!['emailed_credit'] ?? ''; String get markedQuoteAsSent => - _localizedValues[localeCode]['marked_quote_as_sent'] ?? ''; + _localizedValues[localeCode]!['marked_quote_as_sent'] ?? ''; String get markedCreditAsSent => - _localizedValues[localeCode]['marked_credit_as_sent'] ?? ''; + _localizedValues[localeCode]!['marked_credit_as_sent'] ?? ''; - String get expired => _localizedValues[localeCode]['expired'] ?? ''; + String get expired => _localizedValues[localeCode]!['expired'] ?? ''; String get budgetedHours => - _localizedValues[localeCode]['budgeted_hours'] ?? ''; + _localizedValues[localeCode]!['budgeted_hours'] ?? ''; String get pleaseEnterAName => - _localizedValues[localeCode]['please_enter_a_name'] ?? ''; + _localizedValues[localeCode]!['please_enter_a_name'] ?? ''; - String get createdTask => _localizedValues[localeCode]['created_task'] ?? ''; + String get createdTask => _localizedValues[localeCode]!['created_task'] ?? ''; - String get updatedTask => _localizedValues[localeCode]['updated_task'] ?? ''; + String get updatedTask => _localizedValues[localeCode]!['updated_task'] ?? ''; String get archivedTask => - _localizedValues[localeCode]['archived_task'] ?? ''; + _localizedValues[localeCode]!['archived_task'] ?? ''; - String get deletedTask => _localizedValues[localeCode]['deleted_task'] ?? ''; + String get deletedTask => _localizedValues[localeCode]!['deleted_task'] ?? ''; String get restoredTask => - _localizedValues[localeCode]['restored_task'] ?? ''; + _localizedValues[localeCode]!['restored_task'] ?? ''; String get archivedTasks => - _localizedValues[localeCode]['archived_tasks'] ?? ''; + _localizedValues[localeCode]!['archived_tasks'] ?? ''; String get deletedTasks => - _localizedValues[localeCode]['deleted_tasks'] ?? ''; + _localizedValues[localeCode]!['deleted_tasks'] ?? ''; String get restoredTasks => - _localizedValues[localeCode]['restored_tasks'] ?? ''; + _localizedValues[localeCode]!['restored_tasks'] ?? ''; - String get newTask => _localizedValues[localeCode]['new_task'] ?? ''; + String get newTask => _localizedValues[localeCode]!['new_task'] ?? ''; - String get duration => _localizedValues[localeCode]['duration'] ?? ''; + String get duration => _localizedValues[localeCode]!['duration'] ?? ''; - String get times => _localizedValues[localeCode]['times'] ?? ''; + String get times => _localizedValues[localeCode]!['times'] ?? ''; - String get date => _localizedValues[localeCode]['date'] ?? ''; + String get date => _localizedValues[localeCode]!['date'] ?? ''; - String get startTime => _localizedValues[localeCode]['start_time'] ?? ''; + String get startTime => _localizedValues[localeCode]!['start_time'] ?? ''; - String get endTime => _localizedValues[localeCode]['end_time'] ?? ''; + String get endTime => _localizedValues[localeCode]!['end_time'] ?? ''; - String get budgeted => _localizedValues[localeCode]['budgeted'] ?? ''; + String get budgeted => _localizedValues[localeCode]!['budgeted'] ?? ''; - String get timer => _localizedValues[localeCode]['timer'] ?? ''; + String get timer => _localizedValues[localeCode]!['timer'] ?? ''; - String get manual => _localizedValues[localeCode]['manual'] ?? ''; + String get manual => _localizedValues[localeCode]!['manual'] ?? ''; String get autoStartTasks => - _localizedValues[localeCode]['auto_start_tasks'] ?? ''; + _localizedValues[localeCode]!['auto_start_tasks'] ?? ''; String get autoStartTasksHelp => - _localizedValues[localeCode]['auto_start_tasks_help'] ?? ''; + _localizedValues[localeCode]!['auto_start_tasks_help'] ?? ''; - String get now => _localizedValues[localeCode]['now'] ?? ''; + String get now => _localizedValues[localeCode]!['now'] ?? ''; - String get startedTask => _localizedValues[localeCode]['started_task'] ?? ''; + String get startedTask => _localizedValues[localeCode]!['started_task'] ?? ''; - String get stoppedTask => _localizedValues[localeCode]['stopped_task'] ?? ''; + String get stoppedTask => _localizedValues[localeCode]!['stopped_task'] ?? ''; - String get resumedTask => _localizedValues[localeCode]['resumed_task'] ?? ''; + String get resumedTask => _localizedValues[localeCode]!['resumed_task'] ?? ''; - String get start => _localizedValues[localeCode]['start'] ?? ''; + String get start => _localizedValues[localeCode]!['start'] ?? ''; - String get stop => _localizedValues[localeCode]['stop'] ?? ''; + String get stop => _localizedValues[localeCode]!['stop'] ?? ''; - String get taskErrors => _localizedValues[localeCode]['task_errors'] ?? ''; + String get taskErrors => _localizedValues[localeCode]!['task_errors'] ?? ''; - String get resume => _localizedValues[localeCode]['resume'] ?? ''; + String get resume => _localizedValues[localeCode]!['resume'] ?? ''; - String get running => _localizedValues[localeCode]['running'] ?? ''; + String get running => _localizedValues[localeCode]!['running'] ?? ''; - String get invoiced => _localizedValues[localeCode]['invoiced'] ?? ''; + String get invoiced => _localizedValues[localeCode]!['invoiced'] ?? ''; - String get logged => _localizedValues[localeCode]['logged'] ?? ''; + String get logged => _localizedValues[localeCode]!['logged'] ?? ''; String get failedToFindRecord => - _localizedValues[localeCode]['failed_to_find_record'] ?? ''; + _localizedValues[localeCode]!['failed_to_find_record'] ?? ''; String get passwordIsTooShort => - _localizedValues[localeCode]['password_is_too_short'] ?? ''; + _localizedValues[localeCode]!['password_is_too_short'] ?? ''; - String get design => _localizedValues[localeCode]['design'] ?? ''; + String get design => _localizedValues[localeCode]!['design'] ?? ''; String get copyShipping => - _localizedValues[localeCode]['copy_shipping'] ?? ''; + _localizedValues[localeCode]!['copy_shipping'] ?? ''; - String get copyBilling => _localizedValues[localeCode]['copy_billing'] ?? ''; + String get copyBilling => _localizedValues[localeCode]!['copy_billing'] ?? ''; - String get address => _localizedValues[localeCode]['address'] ?? ''; + String get address => _localizedValues[localeCode]!['address'] ?? ''; - String get category => _localizedValues[localeCode]['category'] ?? ''; + String get category => _localizedValues[localeCode]!['category'] ?? ''; - String get markPaid => _localizedValues[localeCode]['mark_paid'] ?? ''; + String get markPaid => _localizedValues[localeCode]!['mark_paid'] ?? ''; String get convertCurrency => - _localizedValues[localeCode]['convert_currency'] ?? ''; + _localizedValues[localeCode]!['convert_currency'] ?? ''; String get exchangeRate => - _localizedValues[localeCode]['exchange_rate'] ?? ''; + _localizedValues[localeCode]!['exchange_rate'] ?? ''; String get addDocumentsToInvoice => - _localizedValues[localeCode]['add_documents_to_invoice'] ?? ''; + _localizedValues[localeCode]!['add_documents_to_invoice'] ?? ''; - String get pending => _localizedValues[localeCode]['pending'] ?? ''; + String get pending => _localizedValues[localeCode]!['pending'] ?? ''; - String get converted => _localizedValues[localeCode]['converted'] ?? ''; + String get converted => _localizedValues[localeCode]!['converted'] ?? ''; String get expenseStatus1 => - _localizedValues[localeCode]['expense_status_1'] ?? ''; + _localizedValues[localeCode]!['expense_status_1'] ?? ''; String get expenseStatus2 => - _localizedValues[localeCode]['expense_status_2'] ?? ''; + _localizedValues[localeCode]!['expense_status_2'] ?? ''; String get expenseStatus3 => - _localizedValues[localeCode]['expense_status_3'] ?? ''; + _localizedValues[localeCode]!['expense_status_3'] ?? ''; - String get expenseDate => _localizedValues[localeCode]['expense_date'] ?? ''; + String get expenseDate => _localizedValues[localeCode]!['expense_date'] ?? ''; - String get noHistory => _localizedValues[localeCode]['no_history'] ?? ''; + String get noHistory => _localizedValues[localeCode]!['no_history'] ?? ''; - String get takePicture => _localizedValues[localeCode]['take_picture'] ?? ''; + String get takePicture => _localizedValues[localeCode]!['take_picture'] ?? ''; - String get selectFile => _localizedValues[localeCode]['select_file'] ?? ''; + String get selectFile => _localizedValues[localeCode]!['select_file'] ?? ''; - String get uploadFiles => _localizedValues[localeCode]['upload_files'] ?? ''; + String get uploadFiles => _localizedValues[localeCode]!['upload_files'] ?? ''; String get requiredFilesMissing => - _localizedValues[localeCode]['required_files_missing'] ?? ''; + _localizedValues[localeCode]!['required_files_missing'] ?? ''; - String get download => _localizedValues[localeCode]['download'] ?? ''; + String get download => _localizedValues[localeCode]!['download'] ?? ''; String get noRecordSelected => - _localizedValues[localeCode]['no_record_selected'] ?? ''; + _localizedValues[localeCode]!['no_record_selected'] ?? ''; String get requiresAnEnterprisePlan => - _localizedValues[localeCode]['requires_an_enterprise_plan'] ?? ''; + _localizedValues[localeCode]!['requires_an_enterprise_plan'] ?? ''; String get errorUnsavedChanges => - _localizedValues[localeCode]['error_unsaved_changes'] ?? ''; + _localizedValues[localeCode]!['error_unsaved_changes'] ?? ''; - String get createNew => _localizedValues[localeCode]['create_new'] ?? ''; + String get createNew => _localizedValues[localeCode]!['create_new'] ?? ''; - String get emailLogin => _localizedValues[localeCode]['email_login'] ?? ''; + String get emailLogin => _localizedValues[localeCode]!['email_login'] ?? ''; String get createAccount => - _localizedValues[localeCode]['create_account'] ?? ''; + _localizedValues[localeCode]!['create_account'] ?? ''; - String get viewWebsite => _localizedValues[localeCode]['view_website'] ?? ''; + String get viewWebsite => _localizedValues[localeCode]!['view_website'] ?? ''; String get accountLogin => - _localizedValues[localeCode]['account_login'] ?? ''; + _localizedValues[localeCode]!['account_login'] ?? ''; - String get signUp => _localizedValues[localeCode]['sign_up'] ?? ''; + String get signUp => _localizedValues[localeCode]!['sign_up'] ?? ''; String get googleSignUp => - _localizedValues[localeCode]['google_sign_up'] ?? ''; + _localizedValues[localeCode]!['google_sign_up'] ?? ''; String get pleaseAgreeToTermsAndPrivacy => - _localizedValues[localeCode]['please_agree_to_terms_and_privacy'] ?? ''; + _localizedValues[localeCode]!['please_agree_to_terms_and_privacy'] ?? ''; String get iAgreeToThe => - _localizedValues[localeCode]['i_agree_to_the'] ?? ''; + _localizedValues[localeCode]!['i_agree_to_the'] ?? ''; String get termsOfService => - _localizedValues[localeCode]['terms_of_service'] ?? ''; + _localizedValues[localeCode]!['terms_of_service'] ?? ''; String get privacyPolicy => - _localizedValues[localeCode]['privacy_policy'] ?? ''; + _localizedValues[localeCode]!['privacy_policy'] ?? ''; - String get upgrade => _localizedValues[localeCode]['upgrade'] ?? ''; + String get upgrade => _localizedValues[localeCode]!['upgrade'] ?? ''; - String get proPlan => _localizedValues[localeCode]['pro_plan'] ?? ''; + String get proPlan => _localizedValues[localeCode]!['pro_plan'] ?? ''; String get enterprisePlan => - _localizedValues[localeCode]['enterprise_plan'] ?? ''; + _localizedValues[localeCode]!['enterprise_plan'] ?? ''; - String get countUsers => _localizedValues[localeCode]['count_users'] ?? ''; + String get countUsers => _localizedValues[localeCode]!['count_users'] ?? ''; String get annualSubscription => - _localizedValues[localeCode]['annual_subscription'] ?? ''; + _localizedValues[localeCode]!['annual_subscription'] ?? ''; String get pastPurchases => - _localizedValues[localeCode]['past_purchases'] ?? ''; + _localizedValues[localeCode]!['past_purchases'] ?? ''; - String get back => _localizedValues[localeCode]['back'] ?? ''; + String get back => _localizedValues[localeCode]!['back'] ?? ''; - String get redeem => _localizedValues[localeCode]['redeem'] ?? ''; + String get redeem => _localizedValues[localeCode]!['redeem'] ?? ''; String get thankYouForYourPurchase => - _localizedValues[localeCode]['thank_you_for_your_purchase'] ?? ''; + _localizedValues[localeCode]!['thank_you_for_your_purchase'] ?? ''; - String get select => _localizedValues[localeCode]['select'] ?? ''; + String get select => _localizedValues[localeCode]!['select'] ?? ''; String get longPressSelectionIsDefault => - _localizedValues[localeCode]['long_press_multiselect'] ?? ''; + _localizedValues[localeCode]!['long_press_multiselect'] ?? ''; - String get all => _localizedValues[localeCode]['all'] ?? ''; + String get all => _localizedValues[localeCode]!['all'] ?? ''; - String get emailSignUp => _localizedValues[localeCode]['email_sign_up'] ?? ''; + String get emailSignUp => _localizedValues[localeCode]!['email_sign_up'] ?? ''; - String get price => _localizedValues[localeCode]['price'] ?? ''; + String get price => _localizedValues[localeCode]!['price'] ?? ''; String get companyDetails => - _localizedValues[localeCode]['company_details'] ?? ''; + _localizedValues[localeCode]!['company_details'] ?? ''; - String get userDetails => _localizedValues[localeCode]['user_details'] ?? ''; + String get userDetails => _localizedValues[localeCode]!['user_details'] ?? ''; - String get localization => _localizedValues[localeCode]['localization'] ?? ''; + String get localization => _localizedValues[localeCode]!['localization'] ?? ''; String get onlinePayments => - _localizedValues[localeCode]['online_payments'] ?? ''; + _localizedValues[localeCode]!['online_payments'] ?? ''; - String get taxRates => _localizedValues[localeCode]['tax_rates'] ?? ''; + String get taxRates => _localizedValues[localeCode]!['tax_rates'] ?? ''; String get notifications => - _localizedValues[localeCode]['notifications'] ?? ''; + _localizedValues[localeCode]!['notifications'] ?? ''; String get importExport => - _localizedValues[localeCode]['import_export'] ?? ''; + _localizedValues[localeCode]!['import_export'] ?? ''; String get customFields => - _localizedValues[localeCode]['custom_fields'] ?? ''; + _localizedValues[localeCode]!['custom_fields'] ?? ''; String get invoiceDesign => - _localizedValues[localeCode]['invoice_design'] ?? ''; + _localizedValues[localeCode]!['invoice_design'] ?? ''; String get buyNowButtons => - _localizedValues[localeCode]['buy_now_buttons'] ?? ''; + _localizedValues[localeCode]!['buy_now_buttons'] ?? ''; String get emailSettings => - _localizedValues[localeCode]['email_settings'] ?? ''; + _localizedValues[localeCode]!['email_settings'] ?? ''; String get templatesAndReminders => - _localizedValues[localeCode]['templates_and_reminders'] ?? ''; + _localizedValues[localeCode]!['templates_and_reminders'] ?? ''; String get creditCardsAndBanks => - _localizedValues[localeCode]['credit_cards_and_banks'] ?? ''; + _localizedValues[localeCode]!['credit_cards_and_banks'] ?? ''; String get dataVisualizations => - _localizedValues[localeCode]['data_visualizations'] ?? ''; + _localizedValues[localeCode]!['data_visualizations'] ?? ''; String get basicSettings => - _localizedValues[localeCode]['basic_settings'] ?? ''; + _localizedValues[localeCode]!['basic_settings'] ?? ''; String get advancedSettings => - _localizedValues[localeCode]['advanced_settings'] ?? ''; + _localizedValues[localeCode]!['advanced_settings'] ?? ''; - String get defaults => _localizedValues[localeCode]['defaults'] ?? ''; + String get defaults => _localizedValues[localeCode]!['defaults'] ?? ''; String get deviceSettings => - _localizedValues[localeCode]['device_settings'] ?? ''; + _localizedValues[localeCode]!['device_settings'] ?? ''; String get productSettings => - _localizedValues[localeCode]['product_settings'] ?? ''; + _localizedValues[localeCode]!['product_settings'] ?? ''; String get savedSettings => - _localizedValues[localeCode]['saved_settings'] ?? ''; + _localizedValues[localeCode]!['saved_settings'] ?? ''; - String get logo => _localizedValues[localeCode]['logo'] ?? ''; + String get logo => _localizedValues[localeCode]!['logo'] ?? ''; - String get uploadLogo => _localizedValues[localeCode]['upload_logo'] ?? ''; + String get uploadLogo => _localizedValues[localeCode]!['upload_logo'] ?? ''; String get uploadedLogo => - _localizedValues[localeCode]['uploaded_logo'] ?? ''; + _localizedValues[localeCode]!['uploaded_logo'] ?? ''; - String get newGroup => _localizedValues[localeCode]['new_group'] ?? ''; + String get newGroup => _localizedValues[localeCode]!['new_group'] ?? ''; String get createdGroup => - _localizedValues[localeCode]['created_group'] ?? ''; + _localizedValues[localeCode]!['created_group'] ?? ''; String get updatedGroup => - _localizedValues[localeCode]['updated_group'] ?? ''; + _localizedValues[localeCode]!['updated_group'] ?? ''; String get archivedGroup => - _localizedValues[localeCode]['archived_group'] ?? ''; + _localizedValues[localeCode]!['archived_group'] ?? ''; String get deletedGroup => - _localizedValues[localeCode]['deleted_group'] ?? ''; + _localizedValues[localeCode]!['deleted_group'] ?? ''; String get restoredGroup => - _localizedValues[localeCode]['restored_group'] ?? ''; + _localizedValues[localeCode]!['restored_group'] ?? ''; String get archivedGroups => - _localizedValues[localeCode]['archived_groups'] ?? ''; + _localizedValues[localeCode]!['archived_groups'] ?? ''; String get deletedGroups => - _localizedValues[localeCode]['deleted_groups'] ?? ''; + _localizedValues[localeCode]!['deleted_groups'] ?? ''; String get restoredGroups => - _localizedValues[localeCode]['restored_groups'] ?? ''; + _localizedValues[localeCode]!['restored_groups'] ?? ''; - String get editGroup => _localizedValues[localeCode]['edit_group'] ?? ''; + String get editGroup => _localizedValues[localeCode]!['edit_group'] ?? ''; - String get groups => _localizedValues[localeCode]['groups'] ?? ''; + String get groups => _localizedValues[localeCode]!['groups'] ?? ''; String get groupSettings => - _localizedValues[localeCode]['group_settings'] ?? ''; + _localizedValues[localeCode]!['group_settings'] ?? ''; String get filteredByGroup => - _localizedValues[localeCode]['filtered_by_group'] ?? ''; + _localizedValues[localeCode]!['filtered_by_group'] ?? ''; String get filteredByClient => - _localizedValues[localeCode]['filtered_by_client'] ?? ''; + _localizedValues[localeCode]!['filtered_by_client'] ?? ''; String get filteredByVendor => - _localizedValues[localeCode]['filtered_by_vendor'] ?? ''; + _localizedValues[localeCode]!['filtered_by_vendor'] ?? ''; String get filteredByInvoice => - _localizedValues[localeCode]['filtered_by_invoice'] ?? ''; + _localizedValues[localeCode]!['filtered_by_invoice'] ?? ''; String get filteredByProject => - _localizedValues[localeCode]['filtered_by_project'] ?? ''; + _localizedValues[localeCode]!['filtered_by_project'] ?? ''; - String get group => _localizedValues[localeCode]['group'] ?? ''; + String get group => _localizedValues[localeCode]!['group'] ?? ''; - String get timezone => _localizedValues[localeCode]['timezone'] ?? ''; + String get timezone => _localizedValues[localeCode]!['timezone'] ?? ''; - String get dateFormat => _localizedValues[localeCode]['date_format'] ?? ''; + String get dateFormat => _localizedValues[localeCode]!['date_format'] ?? ''; String get datetimeFormat => - _localizedValues[localeCode]['datetime_format'] ?? ''; + _localizedValues[localeCode]!['datetime_format'] ?? ''; String get militaryTime => - _localizedValues[localeCode]['military_time'] ?? ''; + _localizedValues[localeCode]!['military_time'] ?? ''; String get militaryTimeHelp => - _localizedValues[localeCode]['military_time_help'] ?? ''; + _localizedValues[localeCode]!['military_time_help'] ?? ''; String get sendReminders => - _localizedValues[localeCode]['send_reminders'] ?? ''; + _localizedValues[localeCode]!['send_reminders'] ?? ''; - String get symbol => _localizedValues[localeCode]['symbol'] ?? ''; + String get symbol => _localizedValues[localeCode]!['symbol'] ?? ''; - String get code => _localizedValues[localeCode]['ocde'] ?? ''; + String get code => _localizedValues[localeCode]!['ocde'] ?? ''; - String get sunday => _localizedValues[localeCode]['sunday'] ?? ''; + String get sunday => _localizedValues[localeCode]!['sunday'] ?? ''; - String get monday => _localizedValues[localeCode]['monday'] ?? ''; + String get monday => _localizedValues[localeCode]!['monday'] ?? ''; - String get tuesday => _localizedValues[localeCode]['tuesday'] ?? ''; + String get tuesday => _localizedValues[localeCode]!['tuesday'] ?? ''; - String get wednesday => _localizedValues[localeCode]['wednesday'] ?? ''; + String get wednesday => _localizedValues[localeCode]!['wednesday'] ?? ''; - String get thursday => _localizedValues[localeCode]['thursday'] ?? ''; + String get thursday => _localizedValues[localeCode]!['thursday'] ?? ''; - String get friday => _localizedValues[localeCode]['friday'] ?? ''; + String get friday => _localizedValues[localeCode]!['friday'] ?? ''; - String get saturday => _localizedValues[localeCode]['saturday'] ?? ''; + String get saturday => _localizedValues[localeCode]!['saturday'] ?? ''; - String get january => _localizedValues[localeCode]['january'] ?? ''; + String get january => _localizedValues[localeCode]!['january'] ?? ''; - String get february => _localizedValues[localeCode]['february'] ?? ''; + String get february => _localizedValues[localeCode]!['february'] ?? ''; - String get march => _localizedValues[localeCode]['march'] ?? ''; + String get march => _localizedValues[localeCode]!['march'] ?? ''; - String get april => _localizedValues[localeCode]['april'] ?? ''; + String get april => _localizedValues[localeCode]!['april'] ?? ''; - String get may => _localizedValues[localeCode]['may'] ?? ''; + String get may => _localizedValues[localeCode]!['may'] ?? ''; - String get june => _localizedValues[localeCode]['june'] ?? ''; + String get june => _localizedValues[localeCode]!['june'] ?? ''; - String get july => _localizedValues[localeCode]['july'] ?? ''; + String get july => _localizedValues[localeCode]!['july'] ?? ''; - String get august => _localizedValues[localeCode]['august'] ?? ''; + String get august => _localizedValues[localeCode]!['august'] ?? ''; - String get september => _localizedValues[localeCode]['september'] ?? ''; + String get september => _localizedValues[localeCode]!['september'] ?? ''; - String get october => _localizedValues[localeCode]['october'] ?? ''; + String get october => _localizedValues[localeCode]!['october'] ?? ''; - String get november => _localizedValues[localeCode]['november'] ?? ''; + String get november => _localizedValues[localeCode]!['november'] ?? ''; - String get december => _localizedValues[localeCode]['december'] ?? ''; + String get december => _localizedValues[localeCode]!['december'] ?? ''; String get firstDayOfTheWeek => - _localizedValues[localeCode]['first_day_of_the_week'] ?? ''; + _localizedValues[localeCode]!['first_day_of_the_week'] ?? ''; String get firstMonthOfTheYear => - _localizedValues[localeCode]['first_month_of_the_year'] ?? ''; + _localizedValues[localeCode]!['first_month_of_the_year'] ?? ''; String get currencyFormat => - _localizedValues[localeCode]['currency_format'] ?? ''; + _localizedValues[localeCode]!['currency_format'] ?? ''; - String get disabled => _localizedValues[localeCode]['disabled'] ?? ''; + String get disabled => _localizedValues[localeCode]!['disabled'] ?? ''; String get defaultValue => - _localizedValues[localeCode]['default_value'] ?? ''; + _localizedValues[localeCode]!['default_value'] ?? ''; String get discardChanges => - _localizedValues[localeCode]['discard_changes'] ?? ''; + _localizedValues[localeCode]!['discard_changes'] ?? ''; String get continueEditing => - _localizedValues[localeCode]['continue_editing'] ?? ''; + _localizedValues[localeCode]!['continue_editing'] ?? ''; String get editCompanyGateway => - _localizedValues[localeCode]['edit_company_gateway'] ?? ''; + _localizedValues[localeCode]!['edit_company_gateway'] ?? ''; String get newCompanyGateway => - _localizedValues[localeCode]['new_company_gateway'] ?? ''; + _localizedValues[localeCode]!['new_company_gateway'] ?? ''; String get createdCompanyGateway => - _localizedValues[localeCode]['created_company_gateway'] ?? ''; + _localizedValues[localeCode]!['created_company_gateway'] ?? ''; String get updatedCompanyGateway => - _localizedValues[localeCode]['updated_company_gateway'] ?? ''; + _localizedValues[localeCode]!['updated_company_gateway'] ?? ''; String get archivedCompanyGateway => - _localizedValues[localeCode]['archived_company_gateway'] ?? ''; + _localizedValues[localeCode]!['archived_company_gateway'] ?? ''; String get deletedCompanyGateway => - _localizedValues[localeCode]['deleted_company_gateway'] ?? ''; + _localizedValues[localeCode]!['deleted_company_gateway'] ?? ''; String get restoredCompanyGateway => - _localizedValues[localeCode]['restored_company_gateway'] ?? ''; + _localizedValues[localeCode]!['restored_company_gateway'] ?? ''; String get archivedCompanyGateways => - _localizedValues[localeCode]['archived_company_gateways'] ?? ''; + _localizedValues[localeCode]!['archived_company_gateways'] ?? ''; String get deletedCompanyGateways => - _localizedValues[localeCode]['deleted_company_gateways'] ?? ''; + _localizedValues[localeCode]!['deleted_company_gateways'] ?? ''; String get restoredCompanyGateways => - _localizedValues[localeCode]['restored_company_gateways'] ?? ''; + _localizedValues[localeCode]!['restored_company_gateways'] ?? ''; String get companyGateways => - _localizedValues[localeCode]['company_gateways'] ?? ''; + _localizedValues[localeCode]!['company_gateways'] ?? ''; String get companyGateway => - _localizedValues[localeCode]['company_gateway'] ?? ''; + _localizedValues[localeCode]!['company_gateway'] ?? ''; - String get provider => _localizedValues[localeCode]['provider'] ?? ''; + String get provider => _localizedValues[localeCode]!['provider'] ?? ''; - String get fees => _localizedValues[localeCode]['fees'] ?? ''; + String get fees => _localizedValues[localeCode]!['fees'] ?? ''; - String get limits => _localizedValues[localeCode]['limits'] ?? ''; + String get limits => _localizedValues[localeCode]!['limits'] ?? ''; String get fillProducts => - _localizedValues[localeCode]['fill_products'] ?? ''; + _localizedValues[localeCode]!['fill_products'] ?? ''; String get fillProductsHelp => - _localizedValues[localeCode]['fill_products_help'] ?? ''; + _localizedValues[localeCode]!['fill_products_help'] ?? ''; String get updateProducts => - _localizedValues[localeCode]['update_products'] ?? ''; + _localizedValues[localeCode]!['update_products'] ?? ''; String get updateProductsHelp => - _localizedValues[localeCode]['update_products_help'] ?? ''; + _localizedValues[localeCode]!['update_products_help'] ?? ''; String get convertProducts => - _localizedValues[localeCode]['convert_products'] ?? ''; + _localizedValues[localeCode]!['convert_products'] ?? ''; String get convertProductsHelp => - _localizedValues[localeCode]['convert_products_help'] ?? ''; + _localizedValues[localeCode]!['convert_products_help'] ?? ''; - String get newTaxRate => _localizedValues[localeCode]['new_tax_rate'] ?? ''; + String get newTaxRate => _localizedValues[localeCode]!['new_tax_rate'] ?? ''; String get createdTaxRate => - _localizedValues[localeCode]['created_tax_rate'] ?? ''; + _localizedValues[localeCode]!['created_tax_rate'] ?? ''; String get updatedTaxRate => - _localizedValues[localeCode]['updated_tax_rate'] ?? ''; + _localizedValues[localeCode]!['updated_tax_rate'] ?? ''; String get archivedTaxRate => - _localizedValues[localeCode]['archived_tax_rate'] ?? ''; + _localizedValues[localeCode]!['archived_tax_rate'] ?? ''; String get deletedTaxRate => - _localizedValues[localeCode]['deleted_tax_rate'] ?? ''; + _localizedValues[localeCode]!['deleted_tax_rate'] ?? ''; String get restoredTaxRate => - _localizedValues[localeCode]['restored_tax_rate'] ?? ''; + _localizedValues[localeCode]!['restored_tax_rate'] ?? ''; String get archivedTaxRates => - _localizedValues[localeCode]['archived_tax_rates'] ?? ''; + _localizedValues[localeCode]!['archived_tax_rates'] ?? ''; String get deletedTaxRates => - _localizedValues[localeCode]['deleted_tax_rates'] ?? ''; + _localizedValues[localeCode]!['deleted_tax_rates'] ?? ''; String get restoredTaxRates => - _localizedValues[localeCode]['restored_tax_rates'] ?? ''; + _localizedValues[localeCode]!['restored_tax_rates'] ?? ''; - String get editTaxRate => _localizedValues[localeCode]['edit_tax_rate'] ?? ''; + String get editTaxRate => _localizedValues[localeCode]!['edit_tax_rate'] ?? ''; - String get taxRate => _localizedValues[localeCode]['tax_rate'] ?? ''; + String get taxRate => _localizedValues[localeCode]!['tax_rate'] ?? ''; - String get rate => _localizedValues[localeCode]['rate'] ?? ''; + String get rate => _localizedValues[localeCode]!['rate'] ?? ''; String get updateAddress => - _localizedValues[localeCode]['update_address'] ?? ''; + _localizedValues[localeCode]!['update_address'] ?? ''; String get updateAddressHelp => - _localizedValues[localeCode]['update_address_help'] ?? ''; + _localizedValues[localeCode]!['update_address_help'] ?? ''; - String get credentials => _localizedValues[localeCode]['credentials'] ?? ''; + String get credentials => _localizedValues[localeCode]!['credentials'] ?? ''; String get acceptedCardLogos => - _localizedValues[localeCode]['accepted_card_logos'] ?? ''; + _localizedValues[localeCode]!['accepted_card_logos'] ?? ''; - String get min => _localizedValues[localeCode]['min'] ?? ''; + String get min => _localizedValues[localeCode]!['min'] ?? ''; - String get max => _localizedValues[localeCode]['max'] ?? ''; + String get max => _localizedValues[localeCode]!['max'] ?? ''; - String get minLimit => _localizedValues[localeCode]['min_limit'] ?? ''; + String get minLimit => _localizedValues[localeCode]!['min_limit'] ?? ''; - String get maxLimit => _localizedValues[localeCode]['max_limit'] ?? ''; + String get maxLimit => _localizedValues[localeCode]!['max_limit'] ?? ''; - String get enableMin => _localizedValues[localeCode]['enable_min'] ?? ''; + String get enableMin => _localizedValues[localeCode]!['enable_min'] ?? ''; - String get enableMax => _localizedValues[localeCode]['enable_max'] ?? ''; + String get enableMax => _localizedValues[localeCode]!['enable_max'] ?? ''; String get limitsAndFees => - _localizedValues[localeCode]['limits_and_fees'] ?? ''; + _localizedValues[localeCode]!['limits_and_fees'] ?? ''; - String get feeAmount => _localizedValues[localeCode]['fee_amount'] ?? ''; + String get feeAmount => _localizedValues[localeCode]!['fee_amount'] ?? ''; - String get feePercent => _localizedValues[localeCode]['fee_percent'] ?? ''; + String get feePercent => _localizedValues[localeCode]!['fee_percent'] ?? ''; - String get feeCap => _localizedValues[localeCode]['fee_cap'] ?? ''; + String get feeCap => _localizedValues[localeCode]!['fee_cap'] ?? ''; - String get priority => _localizedValues[localeCode]['priority'] ?? ''; + String get priority => _localizedValues[localeCode]!['priority'] ?? ''; - String get creditCard => _localizedValues[localeCode]['credit_card'] ?? ''; + String get creditCard => _localizedValues[localeCode]!['credit_card'] ?? ''; String get bankTransfer => - _localizedValues[localeCode]['bank_transfer'] ?? ''; + _localizedValues[localeCode]!['bank_transfer'] ?? ''; - String get processed => _localizedValues[localeCode]['processed'] ?? ''; + String get processed => _localizedValues[localeCode]!['processed'] ?? ''; String get replyToEmail => - _localizedValues[localeCode]['reply_to_email'] ?? ''; + _localizedValues[localeCode]!['reply_to_email'] ?? ''; - String get replyToName => _localizedValues[localeCode]['reply_to_name'] ?? ''; + String get replyToName => _localizedValues[localeCode]!['reply_to_name'] ?? ''; - String get bccEmail => _localizedValues[localeCode]['bcc_email'] ?? ''; + String get bccEmail => _localizedValues[localeCode]!['bcc_email'] ?? ''; - String get attachPdf => _localizedValues[localeCode]['attach_pdf'] ?? ''; + String get attachPdf => _localizedValues[localeCode]!['attach_pdf'] ?? ''; String get attachDocuments => - _localizedValues[localeCode]['attach_documents'] ?? ''; + _localizedValues[localeCode]!['attach_documents'] ?? ''; - String get attachUbl => _localizedValues[localeCode]['attach_ubl'] ?? ''; + String get attachUbl => _localizedValues[localeCode]!['attach_ubl'] ?? ''; - String get emailStyle => _localizedValues[localeCode]['email_style'] ?? ''; + String get emailStyle => _localizedValues[localeCode]!['email_style'] ?? ''; String get enableMarkup => - _localizedValues[localeCode]['enable_email_markup'] ?? ''; + _localizedValues[localeCode]!['enable_email_markup'] ?? ''; String get enableMarkupHelp => - _localizedValues[localeCode]['enable_email_markup_help'] ?? ''; + _localizedValues[localeCode]!['enable_email_markup_help'] ?? ''; - String get emailDesign => _localizedValues[localeCode]['email_design'] ?? ''; + String get emailDesign => _localizedValues[localeCode]!['email_design'] ?? ''; - String get plain => _localizedValues[localeCode]['plain'] ?? ''; + String get plain => _localizedValues[localeCode]!['plain'] ?? ''; - String get light => _localizedValues[localeCode]['light'] ?? ''; + String get light => _localizedValues[localeCode]!['light'] ?? ''; - String get dark => _localizedValues[localeCode]['dark'] ?? ''; + String get dark => _localizedValues[localeCode]!['dark'] ?? ''; String get emailSignature => - _localizedValues[localeCode]['email_signature'] ?? ''; + _localizedValues[localeCode]!['email_signature'] ?? ''; - String get portalMode => _localizedValues[localeCode]['portal_mode'] ?? ''; + String get portalMode => _localizedValues[localeCode]!['portal_mode'] ?? ''; - String get domain => _localizedValues[localeCode]['domain'] ?? ''; + String get domain => _localizedValues[localeCode]!['domain'] ?? ''; - String get subdomain => _localizedValues[localeCode]['subdomain'] ?? ''; + String get subdomain => _localizedValues[localeCode]!['subdomain'] ?? ''; String get authorization => - _localizedValues[localeCode]['authorization'] ?? ''; + _localizedValues[localeCode]!['authorization'] ?? ''; String get enablePortalPassword => - _localizedValues[localeCode]['enable_portal_password'] ?? ''; + _localizedValues[localeCode]!['enable_portal_password'] ?? ''; String get enablePortalPasswordHelp => - _localizedValues[localeCode]['enable_portal_password_help'] ?? ''; + _localizedValues[localeCode]!['enable_portal_password_help'] ?? ''; String get showAcceptInvoiceTerms => - _localizedValues[localeCode]['show_accept_invoice_terms'] ?? ''; + _localizedValues[localeCode]!['show_accept_invoice_terms'] ?? ''; String get showAcceptInvoiceTermsHelp => - _localizedValues[localeCode]['show_accept_invoice_terms_help'] ?? ''; + _localizedValues[localeCode]!['show_accept_invoice_terms_help'] ?? ''; String get showAcceptQuoteTerms => - _localizedValues[localeCode]['show_accept_quote_terms'] ?? ''; + _localizedValues[localeCode]!['show_accept_quote_terms'] ?? ''; String get showAcceptQuoteTermsHelp => - _localizedValues[localeCode]['show_accept_quote_terms_help'] ?? ''; + _localizedValues[localeCode]!['show_accept_quote_terms_help'] ?? ''; String get requireInvoiceSignature => - _localizedValues[localeCode]['require_invoice_signature'] ?? ''; + _localizedValues[localeCode]!['require_invoice_signature'] ?? ''; String get requireInvoiceSignatureHelp => - _localizedValues[localeCode]['require_invoice_signature_help'] ?? ''; + _localizedValues[localeCode]!['require_invoice_signature_help'] ?? ''; String get requireQuoteSignature => - _localizedValues[localeCode]['require_quote_signature'] ?? ''; + _localizedValues[localeCode]!['require_quote_signature'] ?? ''; String get signatureOnPdf => - _localizedValues[localeCode]['signature_on_pdf'] ?? ''; + _localizedValues[localeCode]!['signature_on_pdf'] ?? ''; String get signatureOnPdfHelp => - _localizedValues[localeCode]['signature_on_pdf_help'] ?? ''; + _localizedValues[localeCode]!['signature_on_pdf_help'] ?? ''; - String get customCss => _localizedValues[localeCode]['custom_css'] ?? ''; + String get customCss => _localizedValues[localeCode]!['custom_css'] ?? ''; String get customJavascript => - _localizedValues[localeCode]['custom_javascript'] ?? ''; + _localizedValues[localeCode]!['custom_javascript'] ?? ''; - String get messages => _localizedValues[localeCode]['messages'] ?? ''; + String get messages => _localizedValues[localeCode]!['messages'] ?? ''; - String get prefix => _localizedValues[localeCode]['prefix'] ?? ''; + String get prefix => _localizedValues[localeCode]!['prefix'] ?? ''; String get numberPattern => - _localizedValues[localeCode]['number_pattern'] ?? ''; + _localizedValues[localeCode]!['number_pattern'] ?? ''; String get numberCounter => - _localizedValues[localeCode]['number_counter'] ?? ''; + _localizedValues[localeCode]!['number_counter'] ?? ''; - String get creditField => _localizedValues[localeCode]['credit_field'] ?? ''; + String get creditField => _localizedValues[localeCode]!['credit_field'] ?? ''; String get invoiceField => - _localizedValues[localeCode]['invoice_field'] ?? ''; + _localizedValues[localeCode]!['invoice_field'] ?? ''; - String get clientField => _localizedValues[localeCode]['client_field'] ?? ''; + String get clientField => _localizedValues[localeCode]!['client_field'] ?? ''; String get productField => - _localizedValues[localeCode]['product_field'] ?? ''; + _localizedValues[localeCode]!['product_field'] ?? ''; String get paymentField => - _localizedValues[localeCode]['payment_field'] ?? ''; + _localizedValues[localeCode]!['payment_field'] ?? ''; String get contactField => - _localizedValues[localeCode]['contact_field'] ?? ''; + _localizedValues[localeCode]!['contact_field'] ?? ''; - String get vendorField => _localizedValues[localeCode]['vendor_field'] ?? ''; + String get vendorField => _localizedValues[localeCode]!['vendor_field'] ?? ''; String get expenseField => - _localizedValues[localeCode]['expense_field'] ?? ''; + _localizedValues[localeCode]!['expense_field'] ?? ''; String get projectField => - _localizedValues[localeCode]['project_field'] ?? ''; + _localizedValues[localeCode]!['project_field'] ?? ''; - String get taskField => _localizedValues[localeCode]['task_field'] ?? ''; + String get taskField => _localizedValues[localeCode]!['task_field'] ?? ''; - String get groupField => _localizedValues[localeCode]['group_field'] ?? ''; + String get groupField => _localizedValues[localeCode]!['group_field'] ?? ''; - String get general => _localizedValues[localeCode]['general'] ?? ''; + String get general => _localizedValues[localeCode]!['general'] ?? ''; String get numberPadding => - _localizedValues[localeCode]['number_padding'] ?? ''; + _localizedValues[localeCode]!['number_padding'] ?? ''; String get recurringPrefix => - _localizedValues[localeCode]['recurring_prefix'] ?? ''; + _localizedValues[localeCode]!['recurring_prefix'] ?? ''; String get resetCounter => - _localizedValues[localeCode]['reset_counter'] ?? ''; + _localizedValues[localeCode]!['reset_counter'] ?? ''; - String get nextReset => _localizedValues[localeCode]['next_reset'] ?? ''; + String get nextReset => _localizedValues[localeCode]!['next_reset'] ?? ''; - String get credit => _localizedValues[localeCode]['credit'] ?? ''; + String get credit => _localizedValues[localeCode]!['credit'] ?? ''; - String get credits => _localizedValues[localeCode]['credits'] ?? ''; + String get credits => _localizedValues[localeCode]!['credits'] ?? ''; String get customSurcharge => - _localizedValues[localeCode]['invoice_surcharge'] ?? ''; + _localizedValues[localeCode]!['invoice_surcharge'] ?? ''; - String get chargeTaxes => _localizedValues[localeCode]['charge_taxes'] ?? ''; + String get chargeTaxes => _localizedValues[localeCode]!['charge_taxes'] ?? ''; String get companyField => - _localizedValues[localeCode]['company_field'] ?? ''; + _localizedValues[localeCode]!['company_field'] ?? ''; String get companyValue => - _localizedValues[localeCode]['company_value'] ?? ''; + _localizedValues[localeCode]!['company_value'] ?? ''; String get generatedNumbers => - _localizedValues[localeCode]['generated_numbers'] ?? ''; + _localizedValues[localeCode]!['generated_numbers'] ?? ''; - String get company => _localizedValues[localeCode]['company'] ?? ''; + String get company => _localizedValues[localeCode]!['company'] ?? ''; String get surchargeField => - _localizedValues[localeCode]['surcharge_field'] ?? ''; + _localizedValues[localeCode]!['surcharge_field'] ?? ''; - String get never => _localizedValues[localeCode]['never'] ?? ''; + String get never => _localizedValues[localeCode]!['never'] ?? ''; - String get freqDaily => _localizedValues[localeCode]['freq_daily'] ?? ''; + String get freqDaily => _localizedValues[localeCode]!['freq_daily'] ?? ''; - String get freqWeekly => _localizedValues[localeCode]['freq_weekly'] ?? ''; + String get freqWeekly => _localizedValues[localeCode]!['freq_weekly'] ?? ''; String get freqTwoWeeks => - _localizedValues[localeCode]['freq_two_weeks'] ?? ''; + _localizedValues[localeCode]!['freq_two_weeks'] ?? ''; String get freqFourWeeks => - _localizedValues[localeCode]['freq_four_weeks'] ?? ''; + _localizedValues[localeCode]!['freq_four_weeks'] ?? ''; - String get freqMonthly => _localizedValues[localeCode]['freq_monthly'] ?? ''; + String get freqMonthly => _localizedValues[localeCode]!['freq_monthly'] ?? ''; String get freqTwoMonths => - _localizedValues[localeCode]['freq_two_months'] ?? ''; + _localizedValues[localeCode]!['freq_two_months'] ?? ''; String get freqThreeMonths => - _localizedValues[localeCode]['freq_three_months'] ?? ''; + _localizedValues[localeCode]!['freq_three_months'] ?? ''; String get freqFourMonths => - _localizedValues[localeCode]['freq_four_months'] ?? ''; + _localizedValues[localeCode]!['freq_four_months'] ?? ''; String get freqSixMonths => - _localizedValues[localeCode]['freq_six_months'] ?? ''; + _localizedValues[localeCode]!['freq_six_months'] ?? ''; String get freqAnnually => - _localizedValues[localeCode]['freq_annually'] ?? ''; + _localizedValues[localeCode]!['freq_annually'] ?? ''; String get freqTwoYears => - _localizedValues[localeCode]['freq_two_years'] ?? ''; + _localizedValues[localeCode]!['freq_two_years'] ?? ''; String get freqThreeYears => - _localizedValues[localeCode]['freq_three_years'] ?? ''; + _localizedValues[localeCode]!['freq_three_years'] ?? ''; String get workflowSettings => - _localizedValues[localeCode]['workflow_settings'] ?? ''; + _localizedValues[localeCode]!['workflow_settings'] ?? ''; String get autoEmailInvoice => - _localizedValues[localeCode]['auto_email_invoice'] ?? ''; + _localizedValues[localeCode]!['auto_email_invoice'] ?? ''; String get autoEmailInvoiceHelp => - _localizedValues[localeCode]['auto_email_invoice_help'] ?? ''; + _localizedValues[localeCode]!['auto_email_invoice_help'] ?? ''; String get autoArchiveQuote => - _localizedValues[localeCode]['auto_archive_quote'] ?? ''; + _localizedValues[localeCode]!['auto_archive_quote'] ?? ''; String get autoArchiveQuoteHelp => - _localizedValues[localeCode]['auto_archive_quote_help'] ?? ''; + _localizedValues[localeCode]!['auto_archive_quote_help'] ?? ''; String get autoConvertQuote => - _localizedValues[localeCode]['auto_convert_quote'] ?? ''; + _localizedValues[localeCode]!['auto_convert_quote'] ?? ''; String get autoConvertQuoteHelp => - _localizedValues[localeCode]['auto_convert_quote_help'] ?? ''; + _localizedValues[localeCode]!['auto_convert_quote_help'] ?? ''; String get invoiceTerms => - _localizedValues[localeCode]['invoice_terms'] ?? ''; + _localizedValues[localeCode]!['invoice_terms'] ?? ''; String get invoiceFooter => - _localizedValues[localeCode]['invoice_footer'] ?? ''; + _localizedValues[localeCode]!['invoice_footer'] ?? ''; - String get quoteTerms => _localizedValues[localeCode]['quote_terms'] ?? ''; + String get quoteTerms => _localizedValues[localeCode]!['quote_terms'] ?? ''; - String get quoteFooter => _localizedValues[localeCode]['quote_footer'] ?? ''; + String get quoteFooter => _localizedValues[localeCode]!['quote_footer'] ?? ''; String get invoiceFields => - _localizedValues[localeCode]['invoice_fields'] ?? ''; + _localizedValues[localeCode]!['invoice_fields'] ?? ''; String get productFields => - _localizedValues[localeCode]['product_fields'] ?? ''; + _localizedValues[localeCode]!['product_fields'] ?? ''; - String get quoteDesign => _localizedValues[localeCode]['quote_design'] ?? ''; + String get quoteDesign => _localizedValues[localeCode]!['quote_design'] ?? ''; - String get pageSize => _localizedValues[localeCode]['page_size'] ?? ''; + String get pageSize => _localizedValues[localeCode]!['page_size'] ?? ''; - String get fontSize => _localizedValues[localeCode]['font_size'] ?? ''; + String get fontSize => _localizedValues[localeCode]!['font_size'] ?? ''; String get primaryColor => - _localizedValues[localeCode]['primary_color'] ?? ''; + _localizedValues[localeCode]!['primary_color'] ?? ''; String get secondaryColor => - _localizedValues[localeCode]['secondary_color'] ?? ''; + _localizedValues[localeCode]!['secondary_color'] ?? ''; - String get primaryFont => _localizedValues[localeCode]['primary_font'] ?? ''; + String get primaryFont => _localizedValues[localeCode]!['primary_font'] ?? ''; String get secondaryFont => - _localizedValues[localeCode]['secondary_font'] ?? ''; + _localizedValues[localeCode]!['secondary_font'] ?? ''; String get hidePaidToDate => - _localizedValues[localeCode]['hide_paid_to_date'] ?? ''; + _localizedValues[localeCode]!['hide_paid_to_date'] ?? ''; String get hidePaidToDateHelp => - _localizedValues[localeCode]['hide_paid_to_date_help'] ?? ''; + _localizedValues[localeCode]!['hide_paid_to_date_help'] ?? ''; String get invoiceEmbedDocuments => - _localizedValues[localeCode]['invoice_embed_documents'] ?? ''; + _localizedValues[localeCode]!['invoice_embed_documents'] ?? ''; String get invoiceEmbedDocumentsHelp => - _localizedValues[localeCode]['invoice_embed_documents_help'] ?? ''; + _localizedValues[localeCode]!['invoice_embed_documents_help'] ?? ''; String get allPagesHeader => - _localizedValues[localeCode]['all_pages_header'] ?? ''; + _localizedValues[localeCode]!['all_pages_header'] ?? ''; String get allPagesFooter => - _localizedValues[localeCode]['all_pages_footer'] ?? ''; + _localizedValues[localeCode]!['all_pages_footer'] ?? ''; - String get firstPage => _localizedValues[localeCode]['first_page'] ?? ''; + String get firstPage => _localizedValues[localeCode]!['first_page'] ?? ''; - String get allPages => _localizedValues[localeCode]['all_pages'] ?? ''; + String get allPages => _localizedValues[localeCode]!['all_pages'] ?? ''; - String get lastPage => _localizedValues[localeCode]['last_page'] ?? ''; + String get lastPage => _localizedValues[localeCode]!['last_page'] ?? ''; String get generalSettings => - _localizedValues[localeCode]['general_settings'] ?? ''; + _localizedValues[localeCode]!['general_settings'] ?? ''; String get invoiceOptions => - _localizedValues[localeCode]['invoice_options'] ?? ''; + _localizedValues[localeCode]!['invoice_options'] ?? ''; - String get newUser => _localizedValues[localeCode]['new_user'] ?? ''; + String get newUser => _localizedValues[localeCode]!['new_user'] ?? ''; - String get createdUser => _localizedValues[localeCode]['created_user'] ?? ''; + String get createdUser => _localizedValues[localeCode]!['created_user'] ?? ''; - String get updatedUser => _localizedValues[localeCode]['updated_user'] ?? ''; + String get updatedUser => _localizedValues[localeCode]!['updated_user'] ?? ''; String get archivedUser => - _localizedValues[localeCode]['archived_user'] ?? ''; + _localizedValues[localeCode]!['archived_user'] ?? ''; - String get deletedUser => _localizedValues[localeCode]['deleted_user'] ?? ''; + String get deletedUser => _localizedValues[localeCode]!['deleted_user'] ?? ''; - String get removedUser => _localizedValues[localeCode]['removed_user'] ?? ''; + String get removedUser => _localizedValues[localeCode]!['removed_user'] ?? ''; String get restoredUser => - _localizedValues[localeCode]['restored_user'] ?? ''; + _localizedValues[localeCode]!['restored_user'] ?? ''; String get archivedUsers => - _localizedValues[localeCode]['archived_users'] ?? ''; + _localizedValues[localeCode]!['archived_users'] ?? ''; String get deletedUsers => - _localizedValues[localeCode]['deleted_users'] ?? ''; + _localizedValues[localeCode]!['deleted_users'] ?? ''; String get removedUsers => - _localizedValues[localeCode]['removed_users'] ?? ''; + _localizedValues[localeCode]!['removed_users'] ?? ''; String get restoredUsers => - _localizedValues[localeCode]['restored_users'] ?? ''; + _localizedValues[localeCode]!['restored_users'] ?? ''; - String get editUser => _localizedValues[localeCode]['edit_user'] ?? ''; + String get editUser => _localizedValues[localeCode]!['edit_user'] ?? ''; - String get users => _localizedValues[localeCode]['users'] ?? ''; + String get users => _localizedValues[localeCode]!['users'] ?? ''; String get userManagement => - _localizedValues[localeCode]['user_management'] ?? ''; + _localizedValues[localeCode]!['user_management'] ?? ''; String get administrator => - _localizedValues[localeCode]['administrator'] ?? ''; + _localizedValues[localeCode]!['administrator'] ?? ''; String get administratorHelp => - _localizedValues[localeCode]['administrator_help'] ?? ''; + _localizedValues[localeCode]!['administrator_help'] ?? ''; String get filteredByUser => - _localizedValues[localeCode]['filtered_by_user'] ?? ''; + _localizedValues[localeCode]!['filtered_by_user'] ?? ''; String get endlessReminder => - _localizedValues[localeCode]['endless_reminder'] ?? ''; + _localizedValues[localeCode]!['endless_reminder'] ?? ''; String get invoiceEmail => - _localizedValues[localeCode]['invoice_email'] ?? ''; + _localizedValues[localeCode]!['invoice_email'] ?? ''; String get paymentEmail => - _localizedValues[localeCode]['payment_email'] ?? ''; + _localizedValues[localeCode]!['payment_email'] ?? ''; - String get quoteEmail => _localizedValues[localeCode]['quote_email'] ?? ''; + String get quoteEmail => _localizedValues[localeCode]!['quote_email'] ?? ''; - String get days => _localizedValues[localeCode]['days'] ?? ''; + String get days => _localizedValues[localeCode]!['days'] ?? ''; String get beforeDueDate => - _localizedValues[localeCode]['before_due_date'] ?? ''; + _localizedValues[localeCode]!['before_due_date'] ?? ''; String get afterDueDate => - _localizedValues[localeCode]['after_due_date'] ?? ''; + _localizedValues[localeCode]!['after_due_date'] ?? ''; String get afterInvoiceDate => - _localizedValues[localeCode]['after_invoice_date'] ?? ''; + _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'] ?? ''; + _localizedValues[localeCode]!['late_fee_amount'] ?? ''; String get lateFeePercent => - _localizedValues[localeCode]['late_fee_percent'] ?? ''; + _localizedValues[localeCode]!['late_fee_percent'] ?? ''; String get creditNumber => - _localizedValues[localeCode]['credit_number'] ?? ''; + _localizedValues[localeCode]!['credit_number'] ?? ''; String get paymentNumber => - _localizedValues[localeCode]['payment_number'] ?? ''; + _localizedValues[localeCode]!['payment_number'] ?? ''; - String get lateFees => _localizedValues[localeCode]['late_fees'] ?? ''; + String get lateFees => _localizedValues[localeCode]!['late_fees'] ?? ''; String get recoverPassword => - _localizedValues[localeCode]['recover_password'] ?? ''; + _localizedValues[localeCode]!['recover_password'] ?? ''; - String get submit => _localizedValues[localeCode]['submit'] ?? ''; + String get submit => _localizedValues[localeCode]!['submit'] ?? ''; String get recoverPasswordEmailSent => - _localizedValues[localeCode]['recover_password_email_sent'] ?? ''; + _localizedValues[localeCode]!['recover_password_email_sent'] ?? ''; - String get fieldType => _localizedValues[localeCode]['field_type'] ?? ''; + String get fieldType => _localizedValues[localeCode]!['field_type'] ?? ''; String get singleLineText => - _localizedValues[localeCode]['single_line_text'] ?? ''; + _localizedValues[localeCode]!['single_line_text'] ?? ''; String get multiLineText => - _localizedValues[localeCode]['multi_line_text'] ?? ''; + _localizedValues[localeCode]!['multi_line_text'] ?? ''; - String get dropdown => _localizedValues[localeCode]['dropdown'] ?? ''; + String get dropdown => _localizedValues[localeCode]!['dropdown'] ?? ''; - String get options => _localizedValues[localeCode]['options'] ?? ''; + String get options => _localizedValues[localeCode]!['options'] ?? ''; String get commaSeparatedList => - _localizedValues[localeCode]['comma_sparated_list'] ?? ''; + _localizedValues[localeCode]!['comma_sparated_list'] ?? ''; - String get switchLabel => _localizedValues[localeCode]['switch'] ?? ''; + String get switchLabel => _localizedValues[localeCode]!['switch'] ?? ''; - String get accentColor => _localizedValues[localeCode]['accent_color'] ?? ''; + String get accentColor => _localizedValues[localeCode]!['accent_color'] ?? ''; - String get taxSettings => _localizedValues[localeCode]['tax_settings'] ?? ''; + String get taxSettings => _localizedValues[localeCode]!['tax_settings'] ?? ''; String get configureRates => - _localizedValues[localeCode]['configure_rates'] ?? ''; + _localizedValues[localeCode]!['configure_rates'] ?? ''; String get configureGateways => - _localizedValues[localeCode]['configure_gateways'] ?? ''; + _localizedValues[localeCode]!['configure_gateways'] ?? ''; String get taxSettingsRates => - _localizedValues[localeCode]['tax_settings_rates'] ?? ''; + _localizedValues[localeCode]!['tax_settings_rates'] ?? ''; String get noClientSelected => - _localizedValues[localeCode]['no_client_selected'] ?? ''; + _localizedValues[localeCode]!['no_client_selected'] ?? ''; - String get invoiceTax => _localizedValues[localeCode]['invoice_tax'] ?? ''; + String get invoiceTax => _localizedValues[localeCode]!['invoice_tax'] ?? ''; - String get lineItemTax => _localizedValues[localeCode]['line_item_tax'] ?? ''; + String get lineItemTax => _localizedValues[localeCode]!['line_item_tax'] ?? ''; String get inclusiveTaxes => - _localizedValues[localeCode]['inclusive_taxes'] ?? ''; + _localizedValues[localeCode]!['inclusive_taxes'] ?? ''; String get invoiceTaxRates => - _localizedValues[localeCode]['invoice_tax_rates'] ?? ''; + _localizedValues[localeCode]!['invoice_tax_rates'] ?? ''; String get itemTaxRates => - _localizedValues[localeCode]['item_tax_rates'] ?? ''; + _localizedValues[localeCode]!['item_tax_rates'] ?? ''; - String get user => _localizedValues[localeCode]['user'] ?? ''; + String get user => _localizedValues[localeCode]!['user'] ?? ''; String get defaultTaxRate => - _localizedValues[localeCode]['default_tax_rate'] ?? ''; + _localizedValues[localeCode]!['default_tax_rate'] ?? ''; - String get oneTaxRate => _localizedValues[localeCode]['one_tax_rate'] ?? ''; + String get oneTaxRate => _localizedValues[localeCode]!['one_tax_rate'] ?? ''; - String get twoTaxRates => _localizedValues[localeCode]['two_tax_rates'] ?? ''; + String get twoTaxRates => _localizedValues[localeCode]!['two_tax_rates'] ?? ''; String get threeTaxRates => - _localizedValues[localeCode]['three_tax_rates'] ?? ''; + _localizedValues[localeCode]!['three_tax_rates'] ?? ''; String get customValue1 => - _localizedValues[localeCode]['custom_value1'] ?? ''; + _localizedValues[localeCode]!['custom_value1'] ?? ''; String get customValue2 => - _localizedValues[localeCode]['custom_value2'] ?? ''; + _localizedValues[localeCode]!['custom_value2'] ?? ''; String get customValue3 => - _localizedValues[localeCode]['custom_value3'] ?? ''; + _localizedValues[localeCode]!['custom_value3'] ?? ''; String get customValue4 => - _localizedValues[localeCode]['custom_value4'] ?? ''; + _localizedValues[localeCode]!['custom_value4'] ?? ''; String get emailStyleCustom => - _localizedValues[localeCode]['email_style_custom'] ?? ''; + _localizedValues[localeCode]!['email_style_custom'] ?? ''; String get customMessageDashboard => - _localizedValues[localeCode]['custom_message_dashboard'] ?? ''; + _localizedValues[localeCode]!['custom_message_dashboard'] ?? ''; String get customMessageUnpaidInvoice => - _localizedValues[localeCode]['custom_message_unpaid_invoice'] ?? ''; + _localizedValues[localeCode]!['custom_message_unpaid_invoice'] ?? ''; String get customMessagePaidInvoice => - _localizedValues[localeCode]['custom_message_paid_invoice'] ?? ''; + _localizedValues[localeCode]!['custom_message_paid_invoice'] ?? ''; String get customMessageUnapprovedQuote => - _localizedValues[localeCode]['custom_message_unapproved_quote'] ?? ''; + _localizedValues[localeCode]!['custom_message_unapproved_quote'] ?? ''; String get lockInvoices => - _localizedValues[localeCode]['lock_invoices'] ?? ''; + _localizedValues[localeCode]!['lock_invoices'] ?? ''; - String get translations => _localizedValues[localeCode]['translations'] ?? ''; + String get translations => _localizedValues[localeCode]!['translations'] ?? ''; String get taskNumberPattern => - _localizedValues[localeCode]['task_number_pattern'] ?? ''; + _localizedValues[localeCode]!['task_number_pattern'] ?? ''; String get taskNumberCounter => - _localizedValues[localeCode]['task_number_counter'] ?? ''; + _localizedValues[localeCode]!['task_number_counter'] ?? ''; String get expenseNumberPattern => - _localizedValues[localeCode]['expense_number_pattern'] ?? ''; + _localizedValues[localeCode]!['expense_number_pattern'] ?? ''; String get expenseNumberCounter => - _localizedValues[localeCode]['expense_number_counter'] ?? ''; + _localizedValues[localeCode]!['expense_number_counter'] ?? ''; String get vendorNumberPattern => - _localizedValues[localeCode]['vendor_number_pattern'] ?? ''; + _localizedValues[localeCode]!['vendor_number_pattern'] ?? ''; String get vendorNumberCounter => - _localizedValues[localeCode]['vendor_number_counter'] ?? ''; + _localizedValues[localeCode]!['vendor_number_counter'] ?? ''; String get ticketNumberPattern => - _localizedValues[localeCode]['ticket_number_pattern'] ?? ''; + _localizedValues[localeCode]!['ticket_number_pattern'] ?? ''; String get ticketNumberCounter => - _localizedValues[localeCode]['ticket_number_counter'] ?? ''; + _localizedValues[localeCode]!['ticket_number_counter'] ?? ''; String get paymentNumberPattern => - _localizedValues[localeCode]['payment_number_pattern'] ?? ''; + _localizedValues[localeCode]!['payment_number_pattern'] ?? ''; String get paymentNumberCounter => - _localizedValues[localeCode]['payment_number_counter'] ?? ''; + _localizedValues[localeCode]!['payment_number_counter'] ?? ''; String get invoiceNumberPattern => - _localizedValues[localeCode]['invoice_number_pattern'] ?? ''; + _localizedValues[localeCode]!['invoice_number_pattern'] ?? ''; String get invoiceNumberCounter => - _localizedValues[localeCode]['invoice_number_counter'] ?? ''; + _localizedValues[localeCode]!['invoice_number_counter'] ?? ''; String get quoteNumberPattern => - _localizedValues[localeCode]['quote_number_pattern'] ?? ''; + _localizedValues[localeCode]!['quote_number_pattern'] ?? ''; String get quoteNumberCounter => - _localizedValues[localeCode]['quote_number_counter'] ?? ''; + _localizedValues[localeCode]!['quote_number_counter'] ?? ''; String get clientNumberPattern => - _localizedValues[localeCode]['client_number_pattern'] ?? ''; + _localizedValues[localeCode]!['client_number_pattern'] ?? ''; String get clientNumberCounter => - _localizedValues[localeCode]['client_number_counter'] ?? ''; + _localizedValues[localeCode]!['client_number_counter'] ?? ''; String get creditNumberPattern => - _localizedValues[localeCode]['credit_number_pattern'] ?? ''; + _localizedValues[localeCode]!['credit_number_pattern'] ?? ''; String get creditNumberCounter => - _localizedValues[localeCode]['credit_number_counter'] ?? ''; + _localizedValues[localeCode]!['credit_number_counter'] ?? ''; String get resetCounterDate => - _localizedValues[localeCode]['reset_counter_date'] ?? ''; + _localizedValues[localeCode]!['reset_counter_date'] ?? ''; String get counterPadding => - _localizedValues[localeCode]['counter_padding'] ?? ''; + _localizedValues[localeCode]!['counter_padding'] ?? ''; String get sharedInvoiceQuoteCounter => - _localizedValues[localeCode]['shared_invoice_quote_counter'] ?? ''; + _localizedValues[localeCode]!['shared_invoice_quote_counter'] ?? ''; String get defaultTaxName1 => - _localizedValues[localeCode]['default_tax_name_1'] ?? ''; + _localizedValues[localeCode]!['default_tax_name_1'] ?? ''; String get defaultTaxRate1 => - _localizedValues[localeCode]['default_tax_rate_1'] ?? ''; + _localizedValues[localeCode]!['default_tax_rate_1'] ?? ''; String get defaultTaxName2 => - _localizedValues[localeCode]['default_tax_name_2'] ?? ''; + _localizedValues[localeCode]!['default_tax_name_2'] ?? ''; String get defaultTaxRate2 => - _localizedValues[localeCode]['default_tax_rate_2'] ?? ''; + _localizedValues[localeCode]!['default_tax_rate_2'] ?? ''; String get defaultTaxName3 => - _localizedValues[localeCode]['default_tax_name_3'] ?? ''; + _localizedValues[localeCode]!['default_tax_name_3'] ?? ''; String get defaultTaxRate3 => - _localizedValues[localeCode]['default_tax_rate_3'] ?? ''; + _localizedValues[localeCode]!['default_tax_rate_3'] ?? ''; String get emailSubjectInvoice => - _localizedValues[localeCode]['email_subject_invoice'] ?? ''; + _localizedValues[localeCode]!['email_subject_invoice'] ?? ''; String get emailSubjectQuote => - _localizedValues[localeCode]['email_subject_quote'] ?? ''; + _localizedValues[localeCode]!['email_subject_quote'] ?? ''; String get emailSubjectPayment => - _localizedValues[localeCode]['email_subject_payment'] ?? ''; + _localizedValues[localeCode]!['email_subject_payment'] ?? ''; String get emailSubjectPaymentPartial => - _localizedValues[localeCode]['email_subject_payment_partial'] ?? ''; + _localizedValues[localeCode]!['email_subject_payment_partial'] ?? ''; - String get showCost => _localizedValues[localeCode]['show_cost'] ?? ''; + String get showCost => _localizedValues[localeCode]!['show_cost'] ?? ''; String get showProductCost => - _localizedValues[localeCode]['show_product_cost'] ?? ''; + _localizedValues[localeCode]!['show_product_cost'] ?? ''; String get showCostHelp => - _localizedValues[localeCode]['show_cost_help'] ?? ''; + _localizedValues[localeCode]!['show_cost_help'] ?? ''; String get showInvoiceQuantity => - _localizedValues[localeCode]['show_invoice_quantity'] ?? ''; + _localizedValues[localeCode]!['show_invoice_quantity'] ?? ''; String get showProductQuantityHelp => - _localizedValues[localeCode]['show_product_quantity_help'] ?? ''; + _localizedValues[localeCode]!['show_product_quantity_help'] ?? ''; String get showProductQuantity => - _localizedValues[localeCode]['show_product_quantity'] ?? ''; + _localizedValues[localeCode]!['show_product_quantity'] ?? ''; String get showInvoiceQuantityHelp => - _localizedValues[localeCode]['show_invoice_quantity_help'] ?? ''; + _localizedValues[localeCode]!['show_invoice_quantity_help'] ?? ''; String get showProductDiscount => - _localizedValues[localeCode]['show_product_discount'] ?? ''; + _localizedValues[localeCode]!['show_product_discount'] ?? ''; String get showProductDiscountHelp => - _localizedValues[localeCode]['show_product_discount_help'] ?? ''; + _localizedValues[localeCode]!['show_product_discount_help'] ?? ''; String get defaultQuantity => - _localizedValues[localeCode]['default_quantity'] ?? ''; + _localizedValues[localeCode]!['default_quantity'] ?? ''; String get defaultTaskRate => - _localizedValues[localeCode]['default_task_rate'] ?? ''; + _localizedValues[localeCode]!['default_task_rate'] ?? ''; String get defaultQuantityHelp => - _localizedValues[localeCode]['default_quantity_help'] ?? ''; + _localizedValues[localeCode]!['default_quantity_help'] ?? ''; - String get firstCustom => _localizedValues[localeCode]['first_custom'] ?? ''; + String get firstCustom => _localizedValues[localeCode]!['first_custom'] ?? ''; String get secondCustom => - _localizedValues[localeCode]['second_custom'] ?? ''; + _localizedValues[localeCode]!['second_custom'] ?? ''; - String get thirdCustom => _localizedValues[localeCode]['third_custom'] ?? ''; + String get thirdCustom => _localizedValues[localeCode]!['third_custom'] ?? ''; - String get module => _localizedValues[localeCode]['module'] ?? ''; + String get module => _localizedValues[localeCode]!['module'] ?? ''; - String get view => _localizedValues[localeCode]['view'] ?? ''; + String get view => _localizedValues[localeCode]!['view'] ?? ''; - String get layout => _localizedValues[localeCode]['layout'] ?? ''; + String get layout => _localizedValues[localeCode]!['layout'] ?? ''; - String get mobile => _localizedValues[localeCode]['mobile'] ?? ''; + String get mobile => _localizedValues[localeCode]!['mobile'] ?? ''; - String get desktop => _localizedValues[localeCode]['desktop'] ?? ''; + String get desktop => _localizedValues[localeCode]!['desktop'] ?? ''; - String get tablet => _localizedValues[localeCode]['tablet'] ?? ''; + String get tablet => _localizedValues[localeCode]!['tablet'] ?? ''; - String get float => _localizedValues[localeCode]['float'] ?? ''; + String get float => _localizedValues[localeCode]!['float'] ?? ''; - String get collapse => _localizedValues[localeCode]['collapse'] ?? ''; + String get collapse => _localizedValues[localeCode]!['collapse'] ?? ''; - String get showOrHide => _localizedValues[localeCode]['show_or_hide'] ?? ''; + String get showOrHide => _localizedValues[localeCode]!['show_or_hide'] ?? ''; - String get menuSidebar => _localizedValues[localeCode]['menu_sidebar'] ?? ''; + String get menuSidebar => _localizedValues[localeCode]!['menu_sidebar'] ?? ''; String get historySidebar => - _localizedValues[localeCode]['history_sidebar'] ?? ''; + _localizedValues[localeCode]!['history_sidebar'] ?? ''; String get selectCompany => - _localizedValues[localeCode]['select_company'] ?? ''; + _localizedValues[localeCode]!['select_company'] ?? ''; - String get newPayment => _localizedValues[localeCode]['new_payment'] ?? ''; + String get newPayment => _localizedValues[localeCode]!['new_payment'] ?? ''; - String get showTable => _localizedValues[localeCode]['show_table'] ?? ''; + String get showTable => _localizedValues[localeCode]!['show_table'] ?? ''; - String get showList => _localizedValues[localeCode]['show_list'] ?? ''; + String get showList => _localizedValues[localeCode]!['show_list'] ?? ''; - String get whenSaved => _localizedValues[localeCode]['when_saved'] ?? ''; + String get whenSaved => _localizedValues[localeCode]!['when_saved'] ?? ''; - String get whenSent => _localizedValues[localeCode]['when_sent'] ?? ''; + String get whenSent => _localizedValues[localeCode]!['when_sent'] ?? ''; String get generateNumber => - _localizedValues[localeCode]['generate_number'] ?? ''; + _localizedValues[localeCode]!['generate_number'] ?? ''; - String get yes => _localizedValues[localeCode]['yes'] ?? ''; + String get yes => _localizedValues[localeCode]!['yes'] ?? ''; - String get no => _localizedValues[localeCode]['no'] ?? ''; + String get no => _localizedValues[localeCode]!['no'] ?? ''; - String get deletedLogo => _localizedValues[localeCode]['deleted_logo'] ?? ''; + String get deletedLogo => _localizedValues[localeCode]!['deleted_logo'] ?? ''; String get pleaseEnterAValue => - _localizedValues[localeCode]['please_enter_a_value'] ?? ''; + _localizedValues[localeCode]!['please_enter_a_value'] ?? ''; String get clientPortalTasks => - _localizedValues[localeCode]['client_portal_tasks'] ?? ''; + _localizedValues[localeCode]!['client_portal_tasks'] ?? ''; String get clientPortalDashboard => - _localizedValues[localeCode]['client_portal_dashboard'] ?? ''; + _localizedValues[localeCode]!['client_portal_dashboard'] ?? ''; String get passwordIsTooEasy => - _localizedValues[localeCode]['password_is_too_easy'] ?? ''; + _localizedValues[localeCode]!['password_is_too_easy'] ?? ''; - String get iFrameUrl => _localizedValues[localeCode]['iframe_url'] ?? ''; + String get iFrameUrl => _localizedValues[localeCode]!['iframe_url'] ?? ''; - String get domainUrl => _localizedValues[localeCode]['domain_url'] ?? ''; + String get domainUrl => _localizedValues[localeCode]!['domain_url'] ?? ''; - String get creditEmail => _localizedValues[localeCode]['credit_email'] ?? ''; + String get creditEmail => _localizedValues[localeCode]!['credit_email'] ?? ''; - String get item => _localizedValues[localeCode]['item'] ?? ''; + String get item => _localizedValues[localeCode]!['item'] ?? ''; - String get lineTotal => _localizedValues[localeCode]['line_total'] ?? ''; + String get lineTotal => _localizedValues[localeCode]!['line_total'] ?? ''; String get calculateSubtotal => - _localizedValues[localeCode]['subtotal'] ?? ''; + _localizedValues[localeCode]!['subtotal'] ?? ''; - String get contactUs => _localizedValues[localeCode]['contact_us'] ?? ''; + String get contactUs => _localizedValues[localeCode]!['contact_us'] ?? ''; String get documentation => - _localizedValues[localeCode]['documentation'] ?? ''; + _localizedValues[localeCode]!['documentation'] ?? ''; - String get about => _localizedValues[localeCode]['about'] ?? ''; + String get about => _localizedValues[localeCode]!['about'] ?? ''; String get supportForum => - _localizedValues[localeCode]['support_forum'] ?? ''; + _localizedValues[localeCode]!['support_forum'] ?? ''; String get configureSettings => - _localizedValues[localeCode]['configure_settings'] ?? ''; + _localizedValues[localeCode]!['configure_settings'] ?? ''; String get adjustFeePercent => - _localizedValues[localeCode]['adjust_fee_percent'] ?? ''; + _localizedValues[localeCode]!['adjust_fee_percent'] ?? ''; String get adjustFeePercentHelp => - _localizedValues[localeCode]['adjust_fee_percent_help'] ?? ''; + _localizedValues[localeCode]!['adjust_fee_percent_help'] ?? ''; String get pdfMinRequirements => - _localizedValues[localeCode]['pdf_min_requirements'] ?? ''; + _localizedValues[localeCode]!['pdf_min_requirements'] ?? ''; String get showProductDetails => - _localizedValues[localeCode]['show_product_details'] ?? ''; + _localizedValues[localeCode]!['show_product_details'] ?? ''; String get showProductDetailsHelp => - _localizedValues[localeCode]['show_product_details_help'] ?? ''; + _localizedValues[localeCode]!['show_product_details_help'] ?? ''; - String get from => _localizedValues[localeCode]['from'] ?? ''; + String get from => _localizedValues[localeCode]!['from'] ?? ''; - String get message => _localizedValues[localeCode]['message'] ?? ''; + String get message => _localizedValues[localeCode]!['message'] ?? ''; String get yourMessageHasBeenReceived => - _localizedValues[localeCode]['your_message_has_been_received'] ?? ''; + _localizedValues[localeCode]!['your_message_has_been_received'] ?? ''; String get includeRecentErrors => - _localizedValues[localeCode]['include_recent_errors'] ?? ''; + _localizedValues[localeCode]!['include_recent_errors'] ?? ''; - String get applied => _localizedValues[localeCode]['applied'] ?? ''; + String get applied => _localizedValues[localeCode]!['applied'] ?? ''; String get verifyPassword => - _localizedValues[localeCode]['verify_password'] ?? ''; + _localizedValues[localeCode]!['verify_password'] ?? ''; - String get entityState => _localizedValues[localeCode]['entity_state'] ?? ''; + String get entityState => _localizedValues[localeCode]!['entity_state'] ?? ''; - String get multiselect => _localizedValues[localeCode]['multiselect'] ?? ''; + String get multiselect => _localizedValues[localeCode]!['multiselect'] ?? ''; String get contactEmail => - _localizedValues[localeCode]['contact_email'] ?? ''; + _localizedValues[localeCode]!['contact_email'] ?? ''; - String get filteredBy => _localizedValues[localeCode]['filtered_by'] ?? ''; + String get filteredBy => _localizedValues[localeCode]!['filtered_by'] ?? ''; - String get refund => _localizedValues[localeCode]['refund'] ?? ''; + String get refund => _localizedValues[localeCode]!['refund'] ?? ''; - String get refundDate => _localizedValues[localeCode]['refund_date'] ?? ''; + String get refundDate => _localizedValues[localeCode]!['refund_date'] ?? ''; - String get help => _localizedValues[localeCode]['help'] ?? ''; + String get help => _localizedValues[localeCode]!['help'] ?? ''; String get unpaidInvoice => - _localizedValues[localeCode]['unpaid_invoice'] ?? ''; + _localizedValues[localeCode]!['unpaid_invoice'] ?? ''; - String get paidInvoice => _localizedValues[localeCode]['paid_invoice'] ?? ''; + String get paidInvoice => _localizedValues[localeCode]!['paid_invoice'] ?? ''; String get unapprovedQuote => - _localizedValues[localeCode]['unapproved_quote'] ?? ''; + _localizedValues[localeCode]!['unapproved_quote'] ?? ''; - String get addCompany => _localizedValues[localeCode]['add_company'] ?? ''; + String get addCompany => _localizedValues[localeCode]!['add_company'] ?? ''; - String get reports => _localizedValues[localeCode]['reports'] ?? ''; + String get reports => _localizedValues[localeCode]!['reports'] ?? ''; - String get report => _localizedValues[localeCode]['report'] ?? ''; + String get report => _localizedValues[localeCode]!['report'] ?? ''; - String get aging => _localizedValues[localeCode]['aging'] ?? ''; + String get aging => _localizedValues[localeCode]!['aging'] ?? ''; - String get columns => _localizedValues[localeCode]['columns'] ?? ''; + String get columns => _localizedValues[localeCode]!['columns'] ?? ''; String get profitAndLoss => - _localizedValues[localeCode]['profit_and_loss'] ?? ''; + _localizedValues[localeCode]!['profit_and_loss'] ?? ''; - String get editColumns => _localizedValues[localeCode]['edit_columns'] ?? ''; + String get editColumns => _localizedValues[localeCode]!['edit_columns'] ?? ''; - String get addColumn => _localizedValues[localeCode]['add_column'] ?? ''; + String get addColumn => _localizedValues[localeCode]!['add_column'] ?? ''; - String get assignedTo => _localizedValues[localeCode]['assigned_to'] ?? ''; + String get assignedTo => _localizedValues[localeCode]!['assigned_to'] ?? ''; - String get createdBy => _localizedValues[localeCode]['created_by'] ?? ''; + String get createdBy => _localizedValues[localeCode]!['created_by'] ?? ''; String get assignedTId => - _localizedValues[localeCode]['assigned_to_id'] ?? ''; + _localizedValues[localeCode]!['assigned_to_id'] ?? ''; - String get createdById => _localizedValues[localeCode]['created_by_id'] ?? ''; + String get createdById => _localizedValues[localeCode]!['created_by_id'] ?? ''; - String get clientId => _localizedValues[localeCode]['client_id'] ?? ''; + String get clientId => _localizedValues[localeCode]!['client_id'] ?? ''; String get shippingAddress1 => - _localizedValues[localeCode]['shipping_address1'] ?? ''; + _localizedValues[localeCode]!['shipping_address1'] ?? ''; String get shippingAddress2 => - _localizedValues[localeCode]['shipping_address2'] ?? ''; + _localizedValues[localeCode]!['shipping_address2'] ?? ''; String get shippingCity => - _localizedValues[localeCode]['shipping_city'] ?? ''; + _localizedValues[localeCode]!['shipping_city'] ?? ''; String get shippingState => - _localizedValues[localeCode]['shipping_state'] ?? ''; + _localizedValues[localeCode]!['shipping_state'] ?? ''; String get shippingPostalCode => - _localizedValues[localeCode]['shipping_postal_code'] ?? ''; + _localizedValues[localeCode]!['shipping_postal_code'] ?? ''; String get shippingCountry => - _localizedValues[localeCode]['shipping_country'] ?? ''; + _localizedValues[localeCode]!['shipping_country'] ?? ''; String get billingAddress1 => - _localizedValues[localeCode]['billing_address1'] ?? ''; + _localizedValues[localeCode]!['billing_address1'] ?? ''; String get billingAddress2 => - _localizedValues[localeCode]['billing_address2'] ?? ''; + _localizedValues[localeCode]!['billing_address2'] ?? ''; - String get billingCity => _localizedValues[localeCode]['billing_city'] ?? ''; + String get billingCity => _localizedValues[localeCode]!['billing_city'] ?? ''; String get billingState => - _localizedValues[localeCode]['billing_state'] ?? ''; + _localizedValues[localeCode]!['billing_state'] ?? ''; String get billingPostalCode => - _localizedValues[localeCode]['billing_postal_code'] ?? ''; + _localizedValues[localeCode]!['billing_postal_code'] ?? ''; String get billingCountry => - _localizedValues[localeCode]['billing_country'] ?? ''; + _localizedValues[localeCode]!['billing_country'] ?? ''; String get contactFullName => - _localizedValues[localeCode]['contact_full_name'] ?? ''; + _localizedValues[localeCode]!['contact_full_name'] ?? ''; String get contactPhone => - _localizedValues[localeCode]['contact_phone'] ?? ''; + _localizedValues[localeCode]!['contact_phone'] ?? ''; String get contactCustomValue1 => - _localizedValues[localeCode]['contact_custom_value1'] ?? ''; + _localizedValues[localeCode]!['contact_custom_value1'] ?? ''; String get contactCustomValue2 => - _localizedValues[localeCode]['contact_custom_value2'] ?? ''; + _localizedValues[localeCode]!['contact_custom_value2'] ?? ''; String get contactCustomValue3 => - _localizedValues[localeCode]['contact_custom_value3'] ?? ''; + _localizedValues[localeCode]!['contact_custom_value3'] ?? ''; String get contactCustomValue4 => - _localizedValues[localeCode]['contact_custom_value4'] ?? ''; + _localizedValues[localeCode]!['contact_custom_value4'] ?? ''; String get creditBalance => - _localizedValues[localeCode]['credit_balance'] ?? ''; + _localizedValues[localeCode]!['credit_balance'] ?? ''; String get contactLastLogin => - _localizedValues[localeCode]['contact_last_login'] ?? ''; + _localizedValues[localeCode]!['contact_last_login'] ?? ''; - String get groupBy => _localizedValues[localeCode]['group_by'] ?? ''; + String get groupBy => _localizedValues[localeCode]!['group_by'] ?? ''; - String get isActive => _localizedValues[localeCode]['is_active'] ?? ''; + String get isActive => _localizedValues[localeCode]!['is_active'] ?? ''; - String get subgroup => _localizedValues[localeCode]['subgroup'] ?? ''; + String get subgroup => _localizedValues[localeCode]!['subgroup'] ?? ''; - String get day => _localizedValues[localeCode]['day'] ?? ''; + String get day => _localizedValues[localeCode]!['day'] ?? ''; - String get month => _localizedValues[localeCode]['month'] ?? ''; + String get month => _localizedValues[localeCode]!['month'] ?? ''; - String get year => _localizedValues[localeCode]['year'] ?? ''; + String get year => _localizedValues[localeCode]!['year'] ?? ''; - String get blank => _localizedValues[localeCode]['blank'] ?? ''; + String get blank => _localizedValues[localeCode]!['blank'] ?? ''; - String get count => _localizedValues[localeCode]['count'] ?? ''; + String get count => _localizedValues[localeCode]!['count'] ?? ''; - String get chart => _localizedValues[localeCode]['chart'] ?? ''; + String get chart => _localizedValues[localeCode]!['chart'] ?? ''; - String get export => _localizedValues[localeCode]['export'] ?? ''; + String get export => _localizedValues[localeCode]!['export'] ?? ''; - String get number => _localizedValues[localeCode]['number'] ?? ''; + String get number => _localizedValues[localeCode]!['number'] ?? ''; - String get reset => _localizedValues[localeCode]['reset'] ?? ''; + String get reset => _localizedValues[localeCode]!['reset'] ?? ''; - String get client1 => _localizedValues[localeCode]['client1'] ?? ''; + String get client1 => _localizedValues[localeCode]!['client1'] ?? ''; - String get client2 => _localizedValues[localeCode]['client2'] ?? ''; + String get client2 => _localizedValues[localeCode]!['client2'] ?? ''; - String get client3 => _localizedValues[localeCode]['client3'] ?? ''; + String get client3 => _localizedValues[localeCode]!['client3'] ?? ''; - String get client4 => _localizedValues[localeCode]['client4'] ?? ''; + String get client4 => _localizedValues[localeCode]!['client4'] ?? ''; - String get company1 => _localizedValues[localeCode]['company1'] ?? ''; + String get company1 => _localizedValues[localeCode]!['company1'] ?? ''; - String get company2 => _localizedValues[localeCode]['company2'] ?? ''; + String get company2 => _localizedValues[localeCode]!['company2'] ?? ''; - String get company3 => _localizedValues[localeCode]['company3'] ?? ''; + String get company3 => _localizedValues[localeCode]!['company3'] ?? ''; - String get company4 => _localizedValues[localeCode]['company4'] ?? ''; + String get company4 => _localizedValues[localeCode]!['company4'] ?? ''; - String get product1 => _localizedValues[localeCode]['product1'] ?? ''; + String get product1 => _localizedValues[localeCode]!['product1'] ?? ''; - String get product2 => _localizedValues[localeCode]['product2'] ?? ''; + String get product2 => _localizedValues[localeCode]!['product2'] ?? ''; - String get product3 => _localizedValues[localeCode]['product3'] ?? ''; + String get product3 => _localizedValues[localeCode]!['product3'] ?? ''; - String get product4 => _localizedValues[localeCode]['product4'] ?? ''; + String get product4 => _localizedValues[localeCode]!['product4'] ?? ''; - String get contact1 => _localizedValues[localeCode]['contact1'] ?? ''; + String get contact1 => _localizedValues[localeCode]!['contact1'] ?? ''; - String get contact2 => _localizedValues[localeCode]['contact2'] ?? ''; + String get contact2 => _localizedValues[localeCode]!['contact2'] ?? ''; - String get contact3 => _localizedValues[localeCode]['contact3'] ?? ''; + String get contact3 => _localizedValues[localeCode]!['contact3'] ?? ''; - String get contact4 => _localizedValues[localeCode]['contact4'] ?? ''; + String get contact4 => _localizedValues[localeCode]!['contact4'] ?? ''; - String get task1 => _localizedValues[localeCode]['task1'] ?? ''; + String get task1 => _localizedValues[localeCode]!['task1'] ?? ''; - String get task2 => _localizedValues[localeCode]['task2'] ?? ''; + String get task2 => _localizedValues[localeCode]!['task2'] ?? ''; - String get task3 => _localizedValues[localeCode]['task3'] ?? ''; + String get task3 => _localizedValues[localeCode]!['task3'] ?? ''; - String get task4 => _localizedValues[localeCode]['task4'] ?? ''; + String get task4 => _localizedValues[localeCode]!['task4'] ?? ''; - String get project1 => _localizedValues[localeCode]['project1'] ?? ''; + String get project1 => _localizedValues[localeCode]!['project1'] ?? ''; - String get project2 => _localizedValues[localeCode]['project2'] ?? ''; + String get project2 => _localizedValues[localeCode]!['project2'] ?? ''; - String get project3 => _localizedValues[localeCode]['project3'] ?? ''; + String get project3 => _localizedValues[localeCode]!['project3'] ?? ''; - String get project4 => _localizedValues[localeCode]['project4'] ?? ''; + String get project4 => _localizedValues[localeCode]!['project4'] ?? ''; - String get expense1 => _localizedValues[localeCode]['expense1'] ?? ''; + String get expense1 => _localizedValues[localeCode]!['expense1'] ?? ''; - String get expense2 => _localizedValues[localeCode]['expense2'] ?? ''; + String get expense2 => _localizedValues[localeCode]!['expense2'] ?? ''; - String get expense3 => _localizedValues[localeCode]['expense3'] ?? ''; + String get expense3 => _localizedValues[localeCode]!['expense3'] ?? ''; - String get expense4 => _localizedValues[localeCode]['expense4'] ?? ''; + String get expense4 => _localizedValues[localeCode]!['expense4'] ?? ''; - String get vendor1 => _localizedValues[localeCode]['vendor1'] ?? ''; + String get vendor1 => _localizedValues[localeCode]!['vendor1'] ?? ''; - String get vendor2 => _localizedValues[localeCode]['vendor2'] ?? ''; + String get vendor2 => _localizedValues[localeCode]!['vendor2'] ?? ''; - String get vendor3 => _localizedValues[localeCode]['vendor3'] ?? ''; + String get vendor3 => _localizedValues[localeCode]!['vendor3'] ?? ''; - String get vendor4 => _localizedValues[localeCode]['vendor4'] ?? ''; + String get vendor4 => _localizedValues[localeCode]!['vendor4'] ?? ''; - String get invoice1 => _localizedValues[localeCode]['invoice1'] ?? ''; + String get invoice1 => _localizedValues[localeCode]!['invoice1'] ?? ''; - String get invoice2 => _localizedValues[localeCode]['invoice2'] ?? ''; + String get invoice2 => _localizedValues[localeCode]!['invoice2'] ?? ''; - String get invoice3 => _localizedValues[localeCode]['invoice3'] ?? ''; + String get invoice3 => _localizedValues[localeCode]!['invoice3'] ?? ''; - String get invoice4 => _localizedValues[localeCode]['invoice4'] ?? ''; + String get invoice4 => _localizedValues[localeCode]!['invoice4'] ?? ''; - String get payment1 => _localizedValues[localeCode]['payment1'] ?? ''; + String get payment1 => _localizedValues[localeCode]!['payment1'] ?? ''; - String get payment2 => _localizedValues[localeCode]['payment2'] ?? ''; + String get payment2 => _localizedValues[localeCode]!['payment2'] ?? ''; - String get payment3 => _localizedValues[localeCode]['payment3'] ?? ''; + String get payment3 => _localizedValues[localeCode]!['payment3'] ?? ''; - String get payment4 => _localizedValues[localeCode]['payment4'] ?? ''; + String get payment4 => _localizedValues[localeCode]!['payment4'] ?? ''; - String get surcharge1 => _localizedValues[localeCode]['surcharge1'] ?? ''; + String get surcharge1 => _localizedValues[localeCode]!['surcharge1'] ?? ''; - String get surcharge2 => _localizedValues[localeCode]['surcharge2'] ?? ''; + String get surcharge2 => _localizedValues[localeCode]!['surcharge2'] ?? ''; - String get surcharge3 => _localizedValues[localeCode]['surcharge3'] ?? ''; + String get surcharge3 => _localizedValues[localeCode]!['surcharge3'] ?? ''; - String get surcharge4 => _localizedValues[localeCode]['surcharge4'] ?? ''; + String get surcharge4 => _localizedValues[localeCode]!['surcharge4'] ?? ''; - String get group1 => _localizedValues[localeCode]['group1'] ?? ''; + String get group1 => _localizedValues[localeCode]!['group1'] ?? ''; - String get group2 => _localizedValues[localeCode]['group2'] ?? ''; + String get group2 => _localizedValues[localeCode]!['group2'] ?? ''; - String get group3 => _localizedValues[localeCode]['group3'] ?? ''; + String get group3 => _localizedValues[localeCode]!['group3'] ?? ''; - String get group4 => _localizedValues[localeCode]['group4'] ?? ''; + String get group4 => _localizedValues[localeCode]!['group4'] ?? ''; String get addedCompany => - _localizedValues[localeCode]['added_company'] ?? ''; + _localizedValues[localeCode]!['added_company'] ?? ''; - String get newCompany => _localizedValues[localeCode]['new_company'] ?? ''; + String get newCompany => _localizedValues[localeCode]!['new_company'] ?? ''; String get creditFooter => - _localizedValues[localeCode]['credit_footer'] ?? ''; + _localizedValues[localeCode]!['credit_footer'] ?? ''; - String get creditTerms => _localizedValues[localeCode]['credit_terms'] ?? ''; + String get creditTerms => _localizedValues[localeCode]!['credit_terms'] ?? ''; String get slackWebhookUrl => - _localizedValues[localeCode]['slack_webhook_url'] ?? ''; + _localizedValues[localeCode]!['slack_webhook_url'] ?? ''; - String get trackingId => _localizedValues[localeCode]['tracking_id'] ?? ''; + String get trackingId => _localizedValues[localeCode]!['tracking_id'] ?? ''; - String get integrations => _localizedValues[localeCode]['integrations'] ?? ''; + String get integrations => _localizedValues[localeCode]!['integrations'] ?? ''; - String get learnMore => _localizedValues[localeCode]['learn_more'] ?? ''; + String get learnMore => _localizedValues[localeCode]!['learn_more'] ?? ''; String get updateAvailable => - _localizedValues[localeCode]['update_available'] ?? ''; + _localizedValues[localeCode]!['update_available'] ?? ''; String get aNewVersionIsAvailable => - _localizedValues[localeCode]['a_new_version_is_available'] ?? ''; + _localizedValues[localeCode]!['a_new_version_is_available'] ?? ''; - String get updateNow => _localizedValues[localeCode]['update_now'] ?? ''; + String get updateNow => _localizedValues[localeCode]!['update_now'] ?? ''; String get currentVersion => - _localizedValues[localeCode]['current_version'] ?? ''; + _localizedValues[localeCode]!['current_version'] ?? ''; String get latestVersion => - _localizedValues[localeCode]['latest_version'] ?? ''; + _localizedValues[localeCode]!['latest_version'] ?? ''; - String get appUpdated => _localizedValues[localeCode]['app_updated'] ?? ''; + String get appUpdated => _localizedValues[localeCode]!['app_updated'] ?? ''; - String get taskStatus => _localizedValues[localeCode]['task_status'] ?? ''; + String get taskStatus => _localizedValues[localeCode]!['task_status'] ?? ''; String get taskStatuses => - _localizedValues[localeCode]['task_statuses'] ?? ''; + _localizedValues[localeCode]!['task_statuses'] ?? ''; String get newTaskStatus => - _localizedValues[localeCode]['new_task_status'] ?? ''; + _localizedValues[localeCode]!['new_task_status'] ?? ''; String get createdTaskStatus => - _localizedValues[localeCode]['created_task_status'] ?? ''; + _localizedValues[localeCode]!['created_task_status'] ?? ''; String get updatedTaskStatus => - _localizedValues[localeCode]['updated_task_status'] ?? ''; + _localizedValues[localeCode]!['updated_task_status'] ?? ''; String get archivedTaskStatus => - _localizedValues[localeCode]['archived_task_status'] ?? ''; + _localizedValues[localeCode]!['archived_task_status'] ?? ''; String get deletedTaskStatus => - _localizedValues[localeCode]['deleted_task_status'] ?? ''; + _localizedValues[localeCode]!['deleted_task_status'] ?? ''; String get restoredTaskStatus => - _localizedValues[localeCode]['restored_task_status'] ?? ''; + _localizedValues[localeCode]!['restored_task_status'] ?? ''; String get archivedTaskStatuses => - _localizedValues[localeCode]['archived_task_statuses'] ?? ''; + _localizedValues[localeCode]!['archived_task_statuses'] ?? ''; String get deletedTaskStatuses => - _localizedValues[localeCode]['deleted_task_statuses'] ?? ''; + _localizedValues[localeCode]!['deleted_task_statuses'] ?? ''; String get restoredTaskStatuses => - _localizedValues[localeCode]['restored_task_statuses'] ?? ''; + _localizedValues[localeCode]!['restored_task_statuses'] ?? ''; String get editTaskStatus => - _localizedValues[localeCode]['edit_task_status'] ?? ''; + _localizedValues[localeCode]!['edit_task_status'] ?? ''; String get searchTaskStatus => - _localizedValues[localeCode]['search_task_status'] ?? ''; + _localizedValues[localeCode]!['search_task_status'] ?? ''; String get expenseTotal => - _localizedValues[localeCode]['expense_total'] ?? ''; + _localizedValues[localeCode]!['expense_total'] ?? ''; String get expenseCategory => - _localizedValues[localeCode]['expense_category'] ?? ''; + _localizedValues[localeCode]!['expense_category'] ?? ''; String get expenseCategories => - _localizedValues[localeCode]['expense_categories'] ?? ''; + _localizedValues[localeCode]!['expense_categories'] ?? ''; String get newExpenseCategory => - _localizedValues[localeCode]['new_expense_category'] ?? ''; + _localizedValues[localeCode]!['new_expense_category'] ?? ''; String get createdExpenseCategory => - _localizedValues[localeCode]['created_expense_category'] ?? ''; + _localizedValues[localeCode]!['created_expense_category'] ?? ''; String get updatedExpenseCategory => - _localizedValues[localeCode]['updated_expense_category'] ?? ''; + _localizedValues[localeCode]!['updated_expense_category'] ?? ''; String get archivedExpenseCategory => - _localizedValues[localeCode]['archived_expense_category'] ?? ''; + _localizedValues[localeCode]!['archived_expense_category'] ?? ''; String get deletedExpenseCategory => - _localizedValues[localeCode]['deleted_expense_category'] ?? ''; + _localizedValues[localeCode]!['deleted_expense_category'] ?? ''; String get restoredExpenseCategory => - _localizedValues[localeCode]['restored_expense_category'] ?? ''; + _localizedValues[localeCode]!['restored_expense_category'] ?? ''; String get archivedExpenseCategories => - _localizedValues[localeCode]['archived_expense_categories'] ?? ''; + _localizedValues[localeCode]!['archived_expense_categories'] ?? ''; String get deletedExpenseCategories => - _localizedValues[localeCode]['deleted_expense_categories'] ?? ''; + _localizedValues[localeCode]!['deleted_expense_categories'] ?? ''; String get restoredExpenseCategories => - _localizedValues[localeCode]['restored_expense_categories'] ?? ''; + _localizedValues[localeCode]!['restored_expense_categories'] ?? ''; String get editExpenseCategory => - _localizedValues[localeCode]['edit_expense_category'] ?? ''; + _localizedValues[localeCode]!['edit_expense_category'] ?? ''; String get searchExpenseCategory => - _localizedValues[localeCode]['search_expense_category'] ?? ''; + _localizedValues[localeCode]!['search_expense_category'] ?? ''; String get recurringInvoice => - _localizedValues[localeCode]['recurring_invoice'] ?? ''; + _localizedValues[localeCode]!['recurring_invoice'] ?? ''; String get recurringInvoices => - _localizedValues[localeCode]['recurring_invoices'] ?? ''; + _localizedValues[localeCode]!['recurring_invoices'] ?? ''; String get newRecurringInvoice => - _localizedValues[localeCode]['new_recurring_invoice'] ?? ''; + _localizedValues[localeCode]!['new_recurring_invoice'] ?? ''; String get createdRecurringInvoice => - _localizedValues[localeCode]['created_recurring_invoice'] ?? ''; + _localizedValues[localeCode]!['created_recurring_invoice'] ?? ''; String get updatedRecurringInvoice => - _localizedValues[localeCode]['updated_recurring_invoice'] ?? ''; + _localizedValues[localeCode]!['updated_recurring_invoice'] ?? ''; String get archivedRecurringInvoice => - _localizedValues[localeCode]['archived_recurring_invoice'] ?? ''; + _localizedValues[localeCode]!['archived_recurring_invoice'] ?? ''; String get deletedRecurringInvoice => - _localizedValues[localeCode]['deleted_recurring_invoice'] ?? ''; + _localizedValues[localeCode]!['deleted_recurring_invoice'] ?? ''; String get restoredRecurringInvoice => - _localizedValues[localeCode]['restored_recurring_invoice'] ?? ''; + _localizedValues[localeCode]!['restored_recurring_invoice'] ?? ''; String get archivedRecurringInvoices => - _localizedValues[localeCode]['archived_recurring_invoices'] ?? ''; + _localizedValues[localeCode]!['archived_recurring_invoices'] ?? ''; String get deletedRecurringInvoices => - _localizedValues[localeCode]['deleted_recurring_invoices'] ?? ''; + _localizedValues[localeCode]!['deleted_recurring_invoices'] ?? ''; String get restoredRecurringInvoices => - _localizedValues[localeCode]['restored_recurring_invoices'] ?? ''; + _localizedValues[localeCode]!['restored_recurring_invoices'] ?? ''; String get stoppedRecurringInvoice => - _localizedValues[localeCode]['stopped_recurring_invoice'] ?? ''; + _localizedValues[localeCode]!['stopped_recurring_invoice'] ?? ''; String get startedRecurringInvoice => - _localizedValues[localeCode]['started_recurring_invoice'] ?? ''; + _localizedValues[localeCode]!['started_recurring_invoice'] ?? ''; String get resumedRecurringInvoice => - _localizedValues[localeCode]['resumed_recurring_invoice'] ?? ''; + _localizedValues[localeCode]!['resumed_recurring_invoice'] ?? ''; String get searchRecurringInvoice => - _localizedValues[localeCode]['search_recurring_invoice'] ?? ''; + _localizedValues[localeCode]!['search_recurring_invoice'] ?? ''; - String get webhook => _localizedValues[localeCode]['webhook'] ?? ''; + String get webhook => _localizedValues[localeCode]!['webhook'] ?? ''; - String get webhooks => _localizedValues[localeCode]['webhooks'] ?? ''; + String get webhooks => _localizedValues[localeCode]!['webhooks'] ?? ''; - String get newWebhook => _localizedValues[localeCode]['new_webhook'] ?? ''; + String get newWebhook => _localizedValues[localeCode]!['new_webhook'] ?? ''; String get createdWebhook => - _localizedValues[localeCode]['created_webhook'] ?? ''; + _localizedValues[localeCode]!['created_webhook'] ?? ''; String get updatedWebhook => - _localizedValues[localeCode]['updated_webhook'] ?? ''; + _localizedValues[localeCode]!['updated_webhook'] ?? ''; String get archivedWebhook => - _localizedValues[localeCode]['archived_webhook'] ?? ''; + _localizedValues[localeCode]!['archived_webhook'] ?? ''; String get deletedWebhook => - _localizedValues[localeCode]['deleted_webhook'] ?? ''; + _localizedValues[localeCode]!['deleted_webhook'] ?? ''; String get restoredWebhook => - _localizedValues[localeCode]['restored_webhook'] ?? ''; + _localizedValues[localeCode]!['restored_webhook'] ?? ''; String get archivedWebhooks => - _localizedValues[localeCode]['archived_webhooks'] ?? ''; + _localizedValues[localeCode]!['archived_webhooks'] ?? ''; String get deletedWebhooks => - _localizedValues[localeCode]['deleted_webhooks'] ?? ''; + _localizedValues[localeCode]!['deleted_webhooks'] ?? ''; String get restoredWebhooks => - _localizedValues[localeCode]['restored_webhooks'] ?? ''; + _localizedValues[localeCode]!['restored_webhooks'] ?? ''; - String get editWebhook => _localizedValues[localeCode]['edit_webhook'] ?? ''; + String get editWebhook => _localizedValues[localeCode]!['edit_webhook'] ?? ''; - String get token => _localizedValues[localeCode]['token'] ?? ''; + String get token => _localizedValues[localeCode]!['token'] ?? ''; - String get tokens => _localizedValues[localeCode]['tokens'] ?? ''; + String get tokens => _localizedValues[localeCode]!['tokens'] ?? ''; - String get newToken => _localizedValues[localeCode]['new_token'] ?? ''; + String get newToken => _localizedValues[localeCode]!['new_token'] ?? ''; String get createdToken => - _localizedValues[localeCode]['created_token'] ?? ''; + _localizedValues[localeCode]!['created_token'] ?? ''; String get updatedToken => - _localizedValues[localeCode]['updated_token'] ?? ''; + _localizedValues[localeCode]!['updated_token'] ?? ''; String get archivedToken => - _localizedValues[localeCode]['archived_token'] ?? ''; + _localizedValues[localeCode]!['archived_token'] ?? ''; String get deletedToken => - _localizedValues[localeCode]['deleted_token'] ?? ''; + _localizedValues[localeCode]!['deleted_token'] ?? ''; String get restoredToken => - _localizedValues[localeCode]['restored_token'] ?? ''; + _localizedValues[localeCode]!['restored_token'] ?? ''; String get archivedTokens => - _localizedValues[localeCode]['archived_tokens'] ?? ''; + _localizedValues[localeCode]!['archived_tokens'] ?? ''; String get deletedTokens => - _localizedValues[localeCode]['deleted_tokens'] ?? ''; + _localizedValues[localeCode]!['deleted_tokens'] ?? ''; String get restoredTokens => - _localizedValues[localeCode]['restored_tokens'] ?? ''; + _localizedValues[localeCode]!['restored_tokens'] ?? ''; - String get editToken => _localizedValues[localeCode]['edit_token'] ?? ''; + String get editToken => _localizedValues[localeCode]!['edit_token'] ?? ''; - String get paymentTerm => _localizedValues[localeCode]['payment_term'] ?? ''; + String get paymentTerm => _localizedValues[localeCode]!['payment_term'] ?? ''; String get newPaymentTerm => - _localizedValues[localeCode]['new_payment_term'] ?? ''; + _localizedValues[localeCode]!['new_payment_term'] ?? ''; String get createdPaymentTerm => - _localizedValues[localeCode]['created_payment_term'] ?? ''; + _localizedValues[localeCode]!['created_payment_term'] ?? ''; String get updatedPaymentTerm => - _localizedValues[localeCode]['updated_payment_term'] ?? ''; + _localizedValues[localeCode]!['updated_payment_term'] ?? ''; String get archivedPaymentTerm => - _localizedValues[localeCode]['archived_payment_term'] ?? ''; + _localizedValues[localeCode]!['archived_payment_term'] ?? ''; String get deletedPaymentTerm => - _localizedValues[localeCode]['deleted_payment_term'] ?? ''; + _localizedValues[localeCode]!['deleted_payment_term'] ?? ''; String get restoredPaymentTerm => - _localizedValues[localeCode]['restored_payment_term'] ?? ''; + _localizedValues[localeCode]!['restored_payment_term'] ?? ''; String get archivedPaymentTerms => - _localizedValues[localeCode]['archived_payment_terms'] ?? ''; + _localizedValues[localeCode]!['archived_payment_terms'] ?? ''; String get deletedPaymentTerms => - _localizedValues[localeCode]['deleted_payment_terms'] ?? ''; + _localizedValues[localeCode]!['deleted_payment_terms'] ?? ''; String get restoredPaymentTerms => - _localizedValues[localeCode]['restored_payment_terms'] ?? ''; + _localizedValues[localeCode]!['restored_payment_terms'] ?? ''; String get editPaymentTerm => - _localizedValues[localeCode]['edit_payment_term'] ?? ''; + _localizedValues[localeCode]!['edit_payment_term'] ?? ''; - String get designs => _localizedValues[localeCode]['designs'] ?? ''; + String get designs => _localizedValues[localeCode]!['designs'] ?? ''; - String get newDesign => _localizedValues[localeCode]['new_design'] ?? ''; + String get newDesign => _localizedValues[localeCode]!['new_design'] ?? ''; String get createdDesign => - _localizedValues[localeCode]['created_design'] ?? ''; + _localizedValues[localeCode]!['created_design'] ?? ''; String get updatedDesign => - _localizedValues[localeCode]['updated_design'] ?? ''; + _localizedValues[localeCode]!['updated_design'] ?? ''; String get archivedDesign => - _localizedValues[localeCode]['archived_design'] ?? ''; + _localizedValues[localeCode]!['archived_design'] ?? ''; String get deletedDesign => - _localizedValues[localeCode]['deleted_design'] ?? ''; + _localizedValues[localeCode]!['deleted_design'] ?? ''; String get restoredDesign => - _localizedValues[localeCode]['restored_design'] ?? ''; + _localizedValues[localeCode]!['restored_design'] ?? ''; String get archivedDesigns => - _localizedValues[localeCode]['archived_designs'] ?? ''; + _localizedValues[localeCode]!['archived_designs'] ?? ''; String get deletedDesigns => - _localizedValues[localeCode]['deleted_designs'] ?? ''; + _localizedValues[localeCode]!['deleted_designs'] ?? ''; String get restoredDesigns => - _localizedValues[localeCode]['restored_designs'] ?? ''; + _localizedValues[localeCode]!['restored_designs'] ?? ''; - String get editDesign => _localizedValues[localeCode]['edit_design'] ?? ''; + String get editDesign => _localizedValues[localeCode]!['edit_design'] ?? ''; - String get newCredit => _localizedValues[localeCode]['new_credit'] ?? ''; + String get newCredit => _localizedValues[localeCode]!['new_credit'] ?? ''; String get createdCredit => - _localizedValues[localeCode]['created_credit'] ?? ''; + _localizedValues[localeCode]!['created_credit'] ?? ''; String get updatedCredit => - _localizedValues[localeCode]['updated_credit'] ?? ''; + _localizedValues[localeCode]!['updated_credit'] ?? ''; String get archivedCredit => - _localizedValues[localeCode]['archived_credit'] ?? ''; + _localizedValues[localeCode]!['archived_credit'] ?? ''; String get deletedCredit => - _localizedValues[localeCode]['deleted_credit'] ?? ''; + _localizedValues[localeCode]!['deleted_credit'] ?? ''; String get restoredCredit => - _localizedValues[localeCode]['restored_credit'] ?? ''; + _localizedValues[localeCode]!['restored_credit'] ?? ''; String get archivedCredits => - _localizedValues[localeCode]['archived_credits'] ?? ''; + _localizedValues[localeCode]!['archived_credits'] ?? ''; String get deletedCredits => - _localizedValues[localeCode]['deleted_credits'] ?? ''; + _localizedValues[localeCode]!['deleted_credits'] ?? ''; String get restoredCredits => - _localizedValues[localeCode]['restored_credits'] ?? ''; + _localizedValues[localeCode]!['restored_credits'] ?? ''; - String get creditDate => _localizedValues[localeCode]['credit_date'] ?? ''; + String get creditDate => _localizedValues[localeCode]!['credit_date'] ?? ''; String get accountManagement => - _localizedValues[localeCode]['account_management'] ?? ''; + _localizedValues[localeCode]!['account_management'] ?? ''; - String get proposals => _localizedValues[localeCode]['proposals'] ?? ''; + String get proposals => _localizedValues[localeCode]!['proposals'] ?? ''; - String get tickets => _localizedValues[localeCode]['tickets'] ?? ''; + String get tickets => _localizedValues[localeCode]!['tickets'] ?? ''; String get recurringQuotes => - _localizedValues[localeCode]['recurring_quotes'] ?? ''; + _localizedValues[localeCode]!['recurring_quotes'] ?? ''; String get recurringTasks => - _localizedValues[localeCode]['recurring_tasks'] ?? ''; + _localizedValues[localeCode]!['recurring_tasks'] ?? ''; String get recurringExpenses => - _localizedValues[localeCode]['recurring_expenses'] ?? ''; + _localizedValues[localeCode]!['recurring_expenses'] ?? ''; String get customDesigns => - _localizedValues[localeCode]['custom_designs'] ?? ''; + _localizedValues[localeCode]!['custom_designs'] ?? ''; String get cssFramework => - _localizedValues[localeCode]['css_framework'] ?? ''; + _localizedValues[localeCode]!['css_framework'] ?? ''; - String get loadDesign => _localizedValues[localeCode]['load_design'] ?? ''; + String get loadDesign => _localizedValues[localeCode]!['load_design'] ?? ''; - String get header => _localizedValues[localeCode]['header'] ?? ''; + String get header => _localizedValues[localeCode]!['header'] ?? ''; - String get includes => _localizedValues[localeCode]['includes'] ?? ''; + String get includes => _localizedValues[localeCode]!['includes'] ?? ''; String get creditDesign => - _localizedValues[localeCode]['credit_design'] ?? ''; + _localizedValues[localeCode]!['credit_design'] ?? ''; String get partialPaymentEmail => - _localizedValues[localeCode]['partial_payment_email'] ?? ''; + _localizedValues[localeCode]!['partial_payment_email'] ?? ''; String get partialPayment => - _localizedValues[localeCode]['partial_payment'] ?? ''; + _localizedValues[localeCode]!['partial_payment'] ?? ''; String get convertedQuote => - _localizedValues[localeCode]['converted_quote'] ?? ''; + _localizedValues[localeCode]!['converted_quote'] ?? ''; String get enabledModules => - _localizedValues[localeCode]['enabled_modules'] ?? ''; + _localizedValues[localeCode]!['enabled_modules'] ?? ''; String get cancelAccount => - _localizedValues[localeCode]['cancel_account'] ?? ''; + _localizedValues[localeCode]!['cancel_account'] ?? ''; String get cancelAccountMessage => - _localizedValues[localeCode]['cancel_account_message'] ?? ''; + _localizedValues[localeCode]!['cancel_account_message'] ?? ''; String get deleteCompany => - _localizedValues[localeCode]['delete_company'] ?? ''; + _localizedValues[localeCode]!['delete_company'] ?? ''; String get deleteCompanyMessage => - _localizedValues[localeCode]['delete_company_message'] ?? ''; + _localizedValues[localeCode]!['delete_company_message'] ?? ''; String get purchaseLicense => - _localizedValues[localeCode]['purchase_license'] ?? ''; + _localizedValues[localeCode]!['purchase_license'] ?? ''; String get applyLicense => - _localizedValues[localeCode]['apply_license'] ?? ''; + _localizedValues[localeCode]!['apply_license'] ?? ''; String get receiveAllNotifications => - _localizedValues[localeCode]['receive_all_notifications'] ?? ''; + _localizedValues[localeCode]!['receive_all_notifications'] ?? ''; - String get invoiceSent => _localizedValues[localeCode]['invoice_sent'] ?? ''; + String get invoiceSent => _localizedValues[localeCode]!['invoice_sent'] ?? ''; String get invoiceViewed => - _localizedValues[localeCode]['invoice_viewed'] ?? ''; + _localizedValues[localeCode]!['invoice_viewed'] ?? ''; String get paymentSuccess => - _localizedValues[localeCode]['payment_success'] ?? ''; + _localizedValues[localeCode]!['payment_success'] ?? ''; String get paymentFailure => - _localizedValues[localeCode]['payment_failure'] ?? ''; + _localizedValues[localeCode]!['payment_failure'] ?? ''; - String get quoteSent => _localizedValues[localeCode]['quote_sent'] ?? ''; + String get quoteSent => _localizedValues[localeCode]!['quote_sent'] ?? ''; - String get quoteViewed => _localizedValues[localeCode]['quote_viewed'] ?? ''; + String get quoteViewed => _localizedValues[localeCode]!['quote_viewed'] ?? ''; String get quoteApproved => - _localizedValues[localeCode]['quote_approved'] ?? ''; + _localizedValues[localeCode]!['quote_approved'] ?? ''; - String get creditSent => _localizedValues[localeCode]['credit_sent'] ?? ''; + String get creditSent => _localizedValues[localeCode]!['credit_sent'] ?? ''; String get creditViewed => - _localizedValues[localeCode]['credit_viewed'] ?? ''; + _localizedValues[localeCode]!['credit_viewed'] ?? ''; - String get none => _localizedValues[localeCode]['none'] ?? ''; + String get none => _localizedValues[localeCode]!['none'] ?? ''; - String get owned => _localizedValues[localeCode]['owned'] ?? ''; + String get owned => _localizedValues[localeCode]!['owned'] ?? ''; - String get permissions => _localizedValues[localeCode]['permissions'] ?? ''; + String get permissions => _localizedValues[localeCode]!['permissions'] ?? ''; - String get allEvents => _localizedValues[localeCode]['all_events'] ?? ''; + String get allEvents => _localizedValues[localeCode]!['all_events'] ?? ''; - String get addField => _localizedValues[localeCode]['add_field'] ?? ''; + String get addField => _localizedValues[localeCode]!['add_field'] ?? ''; String get clientDetails => - _localizedValues[localeCode]['client_details'] ?? ''; + _localizedValues[localeCode]!['client_details'] ?? ''; String get companyAddress => - _localizedValues[localeCode]['company_address'] ?? ''; + _localizedValues[localeCode]!['company_address'] ?? ''; String get invoiceDetails => - _localizedValues[localeCode]['invoice_details'] ?? ''; + _localizedValues[localeCode]!['invoice_details'] ?? ''; String get quoteDetails => - _localizedValues[localeCode]['quote_details'] ?? ''; + _localizedValues[localeCode]!['quote_details'] ?? ''; String get creditDetails => - _localizedValues[localeCode]['credit_details'] ?? ''; + _localizedValues[localeCode]!['credit_details'] ?? ''; String get productColumns => - _localizedValues[localeCode]['product_columns'] ?? ''; + _localizedValues[localeCode]!['product_columns'] ?? ''; - String get taskColumns => _localizedValues[localeCode]['task_columns'] ?? ''; + String get taskColumns => _localizedValues[localeCode]!['task_columns'] ?? ''; String get cloneToCredit => - _localizedValues[localeCode]['clone_to_credit'] ?? ''; + _localizedValues[localeCode]!['clone_to_credit'] ?? ''; - String get savedDesign => _localizedValues[localeCode]['saved_design'] ?? ''; + String get savedDesign => _localizedValues[localeCode]!['saved_design'] ?? ''; - String get refresh => _localizedValues[localeCode]['refresh'] ?? ''; + String get refresh => _localizedValues[localeCode]!['refresh'] ?? ''; - String get clientCity => _localizedValues[localeCode]['client_city'] ?? ''; + String get clientCity => _localizedValues[localeCode]!['client_city'] ?? ''; - String get clientState => _localizedValues[localeCode]['client_state'] ?? ''; + String get clientState => _localizedValues[localeCode]!['client_state'] ?? ''; String get clientCountry => - _localizedValues[localeCode]['client_country'] ?? ''; + _localizedValues[localeCode]!['client_country'] ?? ''; String get clientIsActive => - _localizedValues[localeCode]['client_is_active'] ?? ''; + _localizedValues[localeCode]!['client_is_active'] ?? ''; String get clientBalance => - _localizedValues[localeCode]['client_balance'] ?? ''; + _localizedValues[localeCode]!['client_balance'] ?? ''; String get clientAddress1 => - _localizedValues[localeCode]['client_address1'] ?? ''; + _localizedValues[localeCode]!['client_address1'] ?? ''; String get clientAddress2 => - _localizedValues[localeCode]['client_address2'] ?? ''; + _localizedValues[localeCode]!['client_address2'] ?? ''; String get vendorAddress1 => - _localizedValues[localeCode]['vendor_address1'] ?? ''; + _localizedValues[localeCode]!['vendor_address1'] ?? ''; String get vendorAddress2 => - _localizedValues[localeCode]['vendor_address2'] ?? ''; + _localizedValues[localeCode]!['vendor_address2'] ?? ''; - String get type => _localizedValues[localeCode]['type'] ?? ''; + String get type => _localizedValues[localeCode]!['type'] ?? ''; - String get importType => _localizedValues[localeCode]['import_type'] ?? ''; + String get importType => _localizedValues[localeCode]!['import_type'] ?? ''; - String get import => _localizedValues[localeCode]['import'] ?? ''; + String get import => _localizedValues[localeCode]!['import'] ?? ''; String get invoiceAmount => - _localizedValues[localeCode]['invoice_amount'] ?? ''; + _localizedValues[localeCode]!['invoice_amount'] ?? ''; String get invoiceDueDate => - _localizedValues[localeCode]['invoice_due_date'] ?? ''; + _localizedValues[localeCode]!['invoice_due_date'] ?? ''; - String get taxRate1 => _localizedValues[localeCode]['tax_rate1'] ?? ''; + String get taxRate1 => _localizedValues[localeCode]!['tax_rate1'] ?? ''; - String get taxRate2 => _localizedValues[localeCode]['tax_rate2'] ?? ''; + String get taxRate2 => _localizedValues[localeCode]!['tax_rate2'] ?? ''; - String get taxRate3 => _localizedValues[localeCode]['tax_rate3'] ?? ''; + String get taxRate3 => _localizedValues[localeCode]!['tax_rate3'] ?? ''; - String get autoBill => _localizedValues[localeCode]['auto_bill'] ?? ''; + String get autoBill => _localizedValues[localeCode]!['auto_bill'] ?? ''; - String get archivedAt => _localizedValues[localeCode]['archived_at'] ?? ''; + String get archivedAt => _localizedValues[localeCode]!['archived_at'] ?? ''; - String get hasExpenses => _localizedValues[localeCode]['has_expenses'] ?? ''; + String get hasExpenses => _localizedValues[localeCode]!['has_expenses'] ?? ''; String get customTaxes1 => - _localizedValues[localeCode]['custom_taxes1'] ?? ''; + _localizedValues[localeCode]!['custom_taxes1'] ?? ''; String get customTaxes2 => - _localizedValues[localeCode]['custom_taxes2'] ?? ''; + _localizedValues[localeCode]!['custom_taxes2'] ?? ''; String get customTaxes3 => - _localizedValues[localeCode]['custom_taxes3'] ?? ''; + _localizedValues[localeCode]!['custom_taxes3'] ?? ''; String get customTaxes4 => - _localizedValues[localeCode]['custom_taxes4'] ?? ''; + _localizedValues[localeCode]!['custom_taxes4'] ?? ''; String get customSurcharge1 => - _localizedValues[localeCode]['custom_surcharge1'] ?? ''; + _localizedValues[localeCode]!['custom_surcharge1'] ?? ''; String get customSurcharge2 => - _localizedValues[localeCode]['custom_surcharge2'] ?? ''; + _localizedValues[localeCode]!['custom_surcharge2'] ?? ''; String get customSurcharge3 => - _localizedValues[localeCode]['custom_surcharge3'] ?? ''; + _localizedValues[localeCode]!['custom_surcharge3'] ?? ''; String get customSurcharge4 => - _localizedValues[localeCode]['custom_surcharge4'] ?? ''; + _localizedValues[localeCode]!['custom_surcharge4'] ?? ''; - String get isDeleted => _localizedValues[localeCode]['is_deleted'] ?? ''; + String get isDeleted => _localizedValues[localeCode]!['is_deleted'] ?? ''; - String get vendorCity => _localizedValues[localeCode]['vendor_city'] ?? ''; + String get vendorCity => _localizedValues[localeCode]!['vendor_city'] ?? ''; - String get vendorState => _localizedValues[localeCode]['vendor_state'] ?? ''; + String get vendorState => _localizedValues[localeCode]!['vendor_state'] ?? ''; String get vendorCountry => - _localizedValues[localeCode]['vendor_country'] ?? ''; + _localizedValues[localeCode]!['vendor_country'] ?? ''; - String get isApproved => _localizedValues[localeCode]['is_approved'] ?? ''; + String get isApproved => _localizedValues[localeCode]!['is_approved'] ?? ''; - String get taxName => _localizedValues[localeCode]['tax_name'] ?? ''; + String get taxName => _localizedValues[localeCode]!['tax_name'] ?? ''; - String get taxAmount => _localizedValues[localeCode]['tax_amount'] ?? ''; + String get taxAmount => _localizedValues[localeCode]!['tax_amount'] ?? ''; - String get taxPaid => _localizedValues[localeCode]['tax_paid'] ?? ''; + String get taxPaid => _localizedValues[localeCode]!['tax_paid'] ?? ''; String get paymentAmount => - _localizedValues[localeCode]['payment_amount'] ?? ''; + _localizedValues[localeCode]!['payment_amount'] ?? ''; - String get age => _localizedValues[localeCode]['age'] ?? ''; + String get age => _localizedValues[localeCode]!['age'] ?? ''; - String get ageGroup0 => _localizedValues[localeCode]['age_group_0'] ?? ''; + String get ageGroup0 => _localizedValues[localeCode]!['age_group_0'] ?? ''; - String get ageGroup30 => _localizedValues[localeCode]['age_group_30'] ?? ''; + String get ageGroup30 => _localizedValues[localeCode]!['age_group_30'] ?? ''; - String get ageGroup60 => _localizedValues[localeCode]['age_group_60'] ?? ''; + String get ageGroup60 => _localizedValues[localeCode]!['age_group_60'] ?? ''; - String get ageGroup90 => _localizedValues[localeCode]['age_group_90'] ?? ''; + String get ageGroup90 => _localizedValues[localeCode]!['age_group_90'] ?? ''; - String get ageGroup120 => _localizedValues[localeCode]['age_group_120'] ?? ''; + String get ageGroup120 => _localizedValues[localeCode]!['age_group_120'] ?? ''; String get invoiceBalance => - _localizedValues[localeCode]['invoice_balance'] ?? ''; + _localizedValues[localeCode]!['invoice_balance'] ?? ''; - String get purgeData => _localizedValues[localeCode]['purge_data'] ?? ''; + String get purgeData => _localizedValues[localeCode]!['purge_data'] ?? ''; String get purgeSuccessful => - _localizedValues[localeCode]['purge_successful'] ?? ''; + _localizedValues[localeCode]!['purge_successful'] ?? ''; String get purgeDataMessage => - _localizedValues[localeCode]['purge_data_message'] ?? ''; + _localizedValues[localeCode]!['purge_data_message'] ?? ''; - String get license => _localizedValues[localeCode]['license'] ?? ''; + String get license => _localizedValues[localeCode]!['license'] ?? ''; - String get optional => _localizedValues[localeCode]['optional'] ?? ''; + String get optional => _localizedValues[localeCode]!['optional'] ?? ''; - String get custom1 => _localizedValues[localeCode]['custom1'] ?? ''; + String get custom1 => _localizedValues[localeCode]!['custom1'] ?? ''; - String get custom2 => _localizedValues[localeCode]['custom2'] ?? ''; + String get custom2 => _localizedValues[localeCode]!['custom2'] ?? ''; - String get custom3 => _localizedValues[localeCode]['custom3'] ?? ''; + String get custom3 => _localizedValues[localeCode]!['custom3'] ?? ''; - String get custom4 => _localizedValues[localeCode]['custom4'] ?? ''; + String get custom4 => _localizedValues[localeCode]!['custom4'] ?? ''; - String get fullName => _localizedValues[localeCode]['full_name'] ?? ''; + String get fullName => _localizedValues[localeCode]!['full_name'] ?? ''; String get cityStatePostal => - _localizedValues[localeCode]['city_state_postal'] ?? ''; + _localizedValues[localeCode]!['city_state_postal'] ?? ''; String get postalCityState => - _localizedValues[localeCode]['postal_city_state'] ?? ''; + _localizedValues[localeCode]!['postal_city_state'] ?? ''; - String get reverse => _localizedValues[localeCode]['reverse'] ?? ''; + String get reverse => _localizedValues[localeCode]!['reverse'] ?? ''; String get cancelledInvoice => - _localizedValues[localeCode]['cancelled_invoice'] ?? ''; + _localizedValues[localeCode]!['cancelled_invoice'] ?? ''; String get cancelledInvoices => - _localizedValues[localeCode]['cancelled_invoices'] ?? ''; + _localizedValues[localeCode]!['cancelled_invoices'] ?? ''; String get reversedInvoice => - _localizedValues[localeCode]['reversed_invoice'] ?? ''; + _localizedValues[localeCode]!['reversed_invoice'] ?? ''; String get reversedInvoices => - _localizedValues[localeCode]['reversed_invoices'] ?? ''; + _localizedValues[localeCode]!['reversed_invoices'] ?? ''; String get refundPayment => - _localizedValues[localeCode]['refund_payment'] ?? ''; + _localizedValues[localeCode]!['refund_payment'] ?? ''; String get searchInvoices => - _localizedValues[localeCode]['search_invoices'] ?? ''; + _localizedValues[localeCode]!['search_invoices'] ?? ''; String get searchClients => - _localizedValues[localeCode]['search_clients'] ?? ''; + _localizedValues[localeCode]!['search_clients'] ?? ''; String get searchProducts => - _localizedValues[localeCode]['search_products'] ?? ''; + _localizedValues[localeCode]!['search_products'] ?? ''; String get searchQuotes => - _localizedValues[localeCode]['search_quotes'] ?? ''; + _localizedValues[localeCode]!['search_quotes'] ?? ''; String get searchCredits => - _localizedValues[localeCode]['search_credits'] ?? ''; + _localizedValues[localeCode]!['search_credits'] ?? ''; String get searchVendors => - _localizedValues[localeCode]['search_vendors'] ?? ''; + _localizedValues[localeCode]!['search_vendors'] ?? ''; - String get searchUsers => _localizedValues[localeCode]['search_users'] ?? ''; + String get searchUsers => _localizedValues[localeCode]!['search_users'] ?? ''; String get searchTaxRates => - _localizedValues[localeCode]['search_tax_rates'] ?? ''; + _localizedValues[localeCode]!['search_tax_rates'] ?? ''; - String get searchTasks => _localizedValues[localeCode]['search_tasks'] ?? ''; + String get searchTasks => _localizedValues[localeCode]!['search_tasks'] ?? ''; String get searchSettings => - _localizedValues[localeCode]['search_settings'] ?? ''; + _localizedValues[localeCode]!['search_settings'] ?? ''; String get searchProjects => - _localizedValues[localeCode]['search_projects'] ?? ''; + _localizedValues[localeCode]!['search_projects'] ?? ''; String get searchExpenses => - _localizedValues[localeCode]['search_expenses'] ?? ''; + _localizedValues[localeCode]!['search_expenses'] ?? ''; String get searchPayments => - _localizedValues[localeCode]['search_payments'] ?? ''; + _localizedValues[localeCode]!['search_payments'] ?? ''; String get searchGroups => - _localizedValues[localeCode]['search_groups'] ?? ''; + _localizedValues[localeCode]!['search_groups'] ?? ''; String get searchCompany => - _localizedValues[localeCode]['search_company'] ?? ''; + _localizedValues[localeCode]!['search_company'] ?? ''; String get searchDocuments => - _localizedValues[localeCode]['search_documents'] ?? ''; + _localizedValues[localeCode]!['search_documents'] ?? ''; String get searchDesigns => - _localizedValues[localeCode]['search_designs'] ?? ''; + _localizedValues[localeCode]!['search_designs'] ?? ''; String get searchInvoice => - _localizedValues[localeCode]['search_invoice'] ?? ''; + _localizedValues[localeCode]!['search_invoice'] ?? ''; String get searchClient => - _localizedValues[localeCode]['search_client'] ?? ''; + _localizedValues[localeCode]!['search_client'] ?? ''; String get searchProduct => - _localizedValues[localeCode]['search_product'] ?? ''; + _localizedValues[localeCode]!['search_product'] ?? ''; - String get searchQuote => _localizedValues[localeCode]['search_quote'] ?? ''; + String get searchQuote => _localizedValues[localeCode]!['search_quote'] ?? ''; String get searchCredit => - _localizedValues[localeCode]['search_credit'] ?? ''; + _localizedValues[localeCode]!['search_credit'] ?? ''; String get searchVendor => - _localizedValues[localeCode]['search_vendor'] ?? ''; + _localizedValues[localeCode]!['search_vendor'] ?? ''; - String get searchUser => _localizedValues[localeCode]['search_user'] ?? ''; + String get searchUser => _localizedValues[localeCode]!['search_user'] ?? ''; String get searchTaxRate => - _localizedValues[localeCode]['search_tax_rate'] ?? ''; + _localizedValues[localeCode]!['search_tax_rate'] ?? ''; - String get searchTask => _localizedValues[localeCode]['search_task'] ?? ''; + String get searchTask => _localizedValues[localeCode]!['search_task'] ?? ''; String get searchProject => - _localizedValues[localeCode]['search_project'] ?? ''; + _localizedValues[localeCode]!['search_project'] ?? ''; String get searchExpense => - _localizedValues[localeCode]['search_expense'] ?? ''; + _localizedValues[localeCode]!['search_expense'] ?? ''; String get searchPayment => - _localizedValues[localeCode]['search_payment'] ?? ''; + _localizedValues[localeCode]!['search_payment'] ?? ''; - String get searchGroup => _localizedValues[localeCode]['search_group'] ?? ''; + String get searchGroup => _localizedValues[localeCode]!['search_group'] ?? ''; String get searchDocument => - _localizedValues[localeCode]['search_document'] ?? ''; + _localizedValues[localeCode]!['search_document'] ?? ''; String get searchDesign => - _localizedValues[localeCode]['search_design'] ?? ''; + _localizedValues[localeCode]!['search_design'] ?? ''; - String get searchToken => _localizedValues[localeCode]['search_token'] ?? ''; + String get searchToken => _localizedValues[localeCode]!['search_token'] ?? ''; String get searchWebhook => - _localizedValues[localeCode]['search_webhook'] ?? ''; + _localizedValues[localeCode]!['search_webhook'] ?? ''; String get partiallyRefunded => - _localizedValues[localeCode]['partially_refunded'] ?? ''; + _localizedValues[localeCode]!['partially_refunded'] ?? ''; - String get hideMenu => _localizedValues[localeCode]['hide_menu'] ?? ''; + String get hideMenu => _localizedValues[localeCode]!['hide_menu'] ?? ''; - String get showMenu => _localizedValues[localeCode]['show_menu'] ?? ''; + String get showMenu => _localizedValues[localeCode]!['show_menu'] ?? ''; - String get exclusive => _localizedValues[localeCode]['exclusive'] ?? ''; + String get exclusive => _localizedValues[localeCode]!['exclusive'] ?? ''; - String get inclusive => _localizedValues[localeCode]['inclusive'] ?? ''; + String get inclusive => _localizedValues[localeCode]!['inclusive'] ?? ''; - String get hosted => _localizedValues[localeCode]['hosted'] ?? ''; + String get hosted => _localizedValues[localeCode]!['hosted'] ?? ''; - String get selfhosted => _localizedValues[localeCode]['selfhosted'] ?? ''; + String get selfhosted => _localizedValues[localeCode]!['selfhosted'] ?? ''; String get creditAmount => - _localizedValues[localeCode]['credit_amount'] ?? ''; + _localizedValues[localeCode]!['credit_amount'] ?? ''; - String get quoteAmount => _localizedValues[localeCode]['quote_amount'] ?? ''; + String get quoteAmount => _localizedValues[localeCode]!['quote_amount'] ?? ''; - String get reversed => _localizedValues[localeCode]['reversed'] ?? ''; + String get reversed => _localizedValues[localeCode]!['reversed'] ?? ''; - String get cancelled => _localizedValues[localeCode]['cancelled'] ?? ''; + String get cancelled => _localizedValues[localeCode]!['cancelled'] ?? ''; String get sendFromGmail => - _localizedValues[localeCode]['send_from_gmail'] ?? ''; + _localizedValues[localeCode]!['send_from_gmail'] ?? ''; String get changeToMobileLayout => - _localizedValues[localeCode]['change_to_mobile_layout'] ?? ''; + _localizedValues[localeCode]!['change_to_mobile_layout'] ?? ''; String get changeToDekstopLayout => - _localizedValues[localeCode]['change_to_desktop_layout'] ?? ''; + _localizedValues[localeCode]!['change_to_desktop_layout'] ?? ''; - String get change => _localizedValues[localeCode]['change'] ?? ''; + String get change => _localizedValues[localeCode]!['change'] ?? ''; - String get emailSignIn => _localizedValues[localeCode]['email_sign_in'] ?? ''; + String get emailSignIn => _localizedValues[localeCode]!['email_sign_in'] ?? ''; String get configurePaymentTerms => - _localizedValues[localeCode]['configure_payment_terms'] ?? ''; + _localizedValues[localeCode]!['configure_payment_terms'] ?? ''; String get numberOfDays => - _localizedValues[localeCode]['number_of_days'] ?? ''; + _localizedValues[localeCode]!['number_of_days'] ?? ''; String get reminderEndless => - _localizedValues[localeCode]['reminder_endless'] ?? ''; + _localizedValues[localeCode]!['reminder_endless'] ?? ''; - String get useDefault => _localizedValues[localeCode]['use_default'] ?? ''; + String get useDefault => _localizedValues[localeCode]!['use_default'] ?? ''; - String get contactName => _localizedValues[localeCode]['contact_name'] ?? ''; + String get contactName => _localizedValues[localeCode]!['contact_name'] ?? ''; String get creditRemaining => - _localizedValues[localeCode]['credit_remaining'] ?? ''; + _localizedValues[localeCode]!['credit_remaining'] ?? ''; - String get allRecords => _localizedValues[localeCode]['all_records'] ?? ''; + String get allRecords => _localizedValues[localeCode]!['all_records'] ?? ''; - String get ownedByUser => _localizedValues[localeCode]['owned_by_user'] ?? ''; + String get ownedByUser => _localizedValues[localeCode]!['owned_by_user'] ?? ''; - String get viewPdf => _localizedValues[localeCode]['view_pdf'] ?? ''; + String get viewPdf => _localizedValues[localeCode]!['view_pdf'] ?? ''; - String get ledger => _localizedValues[localeCode]['ledger'] ?? ''; + String get ledger => _localizedValues[localeCode]!['ledger'] ?? ''; String get clientEmailNotSet => - _localizedValues[localeCode]['client_email_not_set'] ?? ''; + _localizedValues[localeCode]!['client_email_not_set'] ?? ''; String get emailInvoice => - _localizedValues[localeCode]['email_invoice'] ?? ''; + _localizedValues[localeCode]!['email_invoice'] ?? ''; - String get emailQuote => _localizedValues[localeCode]['email_quote'] ?? ''; + String get emailQuote => _localizedValues[localeCode]!['email_quote'] ?? ''; - String get emailCredit => _localizedValues[localeCode]['email_credit'] ?? ''; + String get emailCredit => _localizedValues[localeCode]!['email_credit'] ?? ''; String get emailPayment => - _localizedValues[localeCode]['email_payment'] ?? ''; + _localizedValues[localeCode]!['email_payment'] ?? ''; String get clientRegistration => - _localizedValues[localeCode]['client_registration'] ?? ''; + _localizedValues[localeCode]!['client_registration'] ?? ''; String get clientRegistrationHelp => - _localizedValues[localeCode]['client_registration_help'] ?? ''; + _localizedValues[localeCode]!['client_registration_help'] ?? ''; String get documentUpload => - _localizedValues[localeCode]['document_upload'] ?? ''; + _localizedValues[localeCode]!['document_upload'] ?? ''; String get documentUploadHelp => - _localizedValues[localeCode]['document_upload_help'] ?? ''; + _localizedValues[localeCode]!['document_upload_help'] ?? ''; - String get subtotal => _localizedValues[localeCode]['subtotal'] ?? ''; + String get subtotal => _localizedValues[localeCode]!['subtotal'] ?? ''; String get searchTokens => - _localizedValues[localeCode]['search_tokens'] ?? ''; + _localizedValues[localeCode]!['search_tokens'] ?? ''; String get searchWebhooks => - _localizedValues[localeCode]['search_webhooks'] ?? ''; + _localizedValues[localeCode]!['search_webhooks'] ?? ''; - String get apiTokens => _localizedValues[localeCode]['api_tokens'] ?? ''; + String get apiTokens => _localizedValues[localeCode]!['api_tokens'] ?? ''; - String get apiDocs => _localizedValues[localeCode]['api_docs'] ?? ''; + String get apiDocs => _localizedValues[localeCode]!['api_docs'] ?? ''; - String get apiWebhooks => _localizedValues[localeCode]['api_webhooks'] ?? ''; + String get apiWebhooks => _localizedValues[localeCode]!['api_webhooks'] ?? ''; String get cronsNotEnabled => - _localizedValues[localeCode]['crons_not_enabled'] ?? ''; + _localizedValues[localeCode]!['crons_not_enabled'] ?? ''; String get mustBeOnline => - _localizedValues[localeCode]['must_be_online'] ?? ''; + _localizedValues[localeCode]!['must_be_online'] ?? ''; - String get copy => _localizedValues[localeCode]['copy'] ?? ''; + String get copy => _localizedValues[localeCode]!['copy'] ?? ''; - String get targetUrl => _localizedValues[localeCode]['target_url'] ?? ''; + String get targetUrl => _localizedValues[localeCode]!['target_url'] ?? ''; - String get eventType => _localizedValues[localeCode]['event_type'] ?? ''; + String get eventType => _localizedValues[localeCode]!['event_type'] ?? ''; - String get showSidebar => _localizedValues[localeCode]['show_sidebar'] ?? ''; + String get showSidebar => _localizedValues[localeCode]!['show_sidebar'] ?? ''; - String get hideSidebar => _localizedValues[localeCode]['hide_sidebar'] ?? ''; + String get hideSidebar => _localizedValues[localeCode]!['hide_sidebar'] ?? ''; - String get plan => _localizedValues[localeCode]['plan'] ?? ''; + String get plan => _localizedValues[localeCode]!['plan'] ?? ''; - String get free => _localizedValues[localeCode]['free'] ?? ''; + String get free => _localizedValues[localeCode]!['free'] ?? ''; - String get expiresOn => _localizedValues[localeCode]['expires_on'] ?? ''; + String get expiresOn => _localizedValues[localeCode]!['expires_on'] ?? ''; - String get off => _localizedValues[localeCode]['off'] ?? ''; + String get off => _localizedValues[localeCode]!['off'] ?? ''; - String get whenPaid => _localizedValues[localeCode]['when_paid'] ?? ''; + String get whenPaid => _localizedValues[localeCode]!['when_paid'] ?? ''; String get createClient => - _localizedValues[localeCode]['create_client'] ?? ''; + _localizedValues[localeCode]!['create_client'] ?? ''; String get createInvoice => - _localizedValues[localeCode]['create_invoice'] ?? ''; + _localizedValues[localeCode]!['create_invoice'] ?? ''; - String get createQuote => _localizedValues[localeCode]['create_quote'] ?? ''; + String get createQuote => _localizedValues[localeCode]!['create_quote'] ?? ''; String get createPayment => - _localizedValues[localeCode]['create_payment'] ?? ''; + _localizedValues[localeCode]!['create_payment'] ?? ''; String get createVendor => - _localizedValues[localeCode]['create_vendor'] ?? ''; + _localizedValues[localeCode]!['create_vendor'] ?? ''; - String get updateQuote => _localizedValues[localeCode]['update_quote'] ?? ''; + String get updateQuote => _localizedValues[localeCode]!['update_quote'] ?? ''; - String get deleteQuote => _localizedValues[localeCode]['delete_quote'] ?? ''; + String get deleteQuote => _localizedValues[localeCode]!['delete_quote'] ?? ''; String get updateInvoice => - _localizedValues[localeCode]['update_invoice'] ?? ''; + _localizedValues[localeCode]!['update_invoice'] ?? ''; String get deleteInvoice => - _localizedValues[localeCode]['delete_invoice'] ?? ''; + _localizedValues[localeCode]!['delete_invoice'] ?? ''; String get updateClient => - _localizedValues[localeCode]['update_client'] ?? ''; + _localizedValues[localeCode]!['update_client'] ?? ''; String get deleteClient => - _localizedValues[localeCode]['delete_client'] ?? ''; + _localizedValues[localeCode]!['delete_client'] ?? ''; String get deletePayment => - _localizedValues[localeCode]['delete_payment'] ?? ''; + _localizedValues[localeCode]!['delete_payment'] ?? ''; String get updateVendor => - _localizedValues[localeCode]['update_vendor'] ?? ''; + _localizedValues[localeCode]!['update_vendor'] ?? ''; String get deleteVendor => - _localizedValues[localeCode]['delete_vendor'] ?? ''; + _localizedValues[localeCode]!['delete_vendor'] ?? ''; String get createExpense => - _localizedValues[localeCode]['create_expense'] ?? ''; + _localizedValues[localeCode]!['create_expense'] ?? ''; String get updateExpense => - _localizedValues[localeCode]['update_expense'] ?? ''; + _localizedValues[localeCode]!['update_expense'] ?? ''; String get deleteExpense => - _localizedValues[localeCode]['delete_expense'] ?? ''; + _localizedValues[localeCode]!['delete_expense'] ?? ''; - String get createTask => _localizedValues[localeCode]['create_task'] ?? ''; + String get createTask => _localizedValues[localeCode]!['create_task'] ?? ''; - String get updateTask => _localizedValues[localeCode]['update_task'] ?? ''; + String get updateTask => _localizedValues[localeCode]!['update_task'] ?? ''; - String get deleteTask => _localizedValues[localeCode]['delete_task'] ?? ''; + String get deleteTask => _localizedValues[localeCode]!['delete_task'] ?? ''; String get approveQuote => - _localizedValues[localeCode]['approve_quote'] ?? ''; + _localizedValues[localeCode]!['approve_quote'] ?? ''; String get upcomingInvoices => - _localizedValues[localeCode]['upcoming_invoices'] ?? ''; + _localizedValues[localeCode]!['upcoming_invoices'] ?? ''; String get pastDueInvoices => - _localizedValues[localeCode]['past_due_invoices'] ?? ''; + _localizedValues[localeCode]!['past_due_invoices'] ?? ''; String get recentPayments => - _localizedValues[localeCode]['recent_payments'] ?? ''; + _localizedValues[localeCode]!['recent_payments'] ?? ''; String get upcomingQuotes => - _localizedValues[localeCode]['upcoming_quotes'] ?? ''; + _localizedValues[localeCode]!['upcoming_quotes'] ?? ''; String get expiredQuotes => - _localizedValues[localeCode]['expired_quotes'] ?? ''; + _localizedValues[localeCode]!['expired_quotes'] ?? ''; String get selectedInvoices => - _localizedValues[localeCode]['selected_invoices'] ?? ''; + _localizedValues[localeCode]!['selected_invoices'] ?? ''; String get selectedPayments => - _localizedValues[localeCode]['selected_payments'] ?? ''; + _localizedValues[localeCode]!['selected_payments'] ?? ''; String get selectedQuotes => - _localizedValues[localeCode]['selected_quotes'] ?? ''; + _localizedValues[localeCode]!['selected_quotes'] ?? ''; String get selectedTasks => - _localizedValues[localeCode]['selected_tasks'] ?? ''; + _localizedValues[localeCode]!['selected_tasks'] ?? ''; String get selectedExpenses => - _localizedValues[localeCode]['selected_expenses'] ?? ''; + _localizedValues[localeCode]!['selected_expenses'] ?? ''; String get clientSettings => - _localizedValues[localeCode]['client_settings'] ?? ''; + _localizedValues[localeCode]!['client_settings'] ?? ''; - String get netAmount => _localizedValues[localeCode]['net_amount'] ?? ''; + String get netAmount => _localizedValues[localeCode]!['net_amount'] ?? ''; - String get netBalance => _localizedValues[localeCode]['net_balance'] ?? ''; + String get netBalance => _localizedValues[localeCode]!['net_balance'] ?? ''; - String get gross => _localizedValues[localeCode]['gross'] ?? ''; + String get gross => _localizedValues[localeCode]!['gross'] ?? ''; - String get completed => _localizedValues[localeCode]['completed'] ?? ''; + String get completed => _localizedValues[localeCode]!['completed'] ?? ''; String get onlinePaymentEmail => - _localizedValues[localeCode]['online_payment_email'] ?? ''; + _localizedValues[localeCode]!['online_payment_email'] ?? ''; String get manualPaymentEmail => - _localizedValues[localeCode]['manual_payment_email'] ?? ''; + _localizedValues[localeCode]!['manual_payment_email'] ?? ''; String get clientCreated => - _localizedValues[localeCode]['client_created'] ?? ''; + _localizedValues[localeCode]!['client_created'] ?? ''; - String get storefront => _localizedValues[localeCode]['storefront'] ?? ''; + String get storefront => _localizedValues[localeCode]!['storefront'] ?? ''; String get storefrontHelp => - _localizedValues[localeCode]['storefront_help'] ?? ''; + _localizedValues[localeCode]!['storefront_help'] ?? ''; - String get companyKey => _localizedValues[localeCode]['company_key'] ?? ''; + String get companyKey => _localizedValues[localeCode]!['company_key'] ?? ''; - String get lastLoginAt => _localizedValues[localeCode]['last_login_at'] ?? ''; + String get lastLoginAt => _localizedValues[localeCode]!['last_login_at'] ?? ''; String get paymenTypeId => - _localizedValues[localeCode]['payment_type_id'] ?? ''; + _localizedValues[localeCode]!['payment_type_id'] ?? ''; - String get healthCheck => _localizedValues[localeCode]['health_check'] ?? ''; + String get healthCheck => _localizedValues[localeCode]!['health_check'] ?? ''; - String get to => _localizedValues[localeCode]['to'] ?? ''; + String get to => _localizedValues[localeCode]!['to'] ?? ''; - String get recordType => _localizedValues[localeCode]['record_type'] ?? ''; + String get recordType => _localizedValues[localeCode]!['record_type'] ?? ''; - String get recordName => _localizedValues[localeCode]['record_name'] ?? ''; + String get recordName => _localizedValues[localeCode]!['record_name'] ?? ''; - String get fileType => _localizedValues[localeCode]['file_type'] ?? ''; + String get fileType => _localizedValues[localeCode]!['file_type'] ?? ''; - String get height => _localizedValues[localeCode]['height'] ?? ''; + String get height => _localizedValues[localeCode]!['height'] ?? ''; - String get width => _localizedValues[localeCode]['width'] ?? ''; + String get width => _localizedValues[localeCode]!['width'] ?? ''; String get customLabels => - _localizedValues[localeCode]['custom_labels'] ?? ''; + _localizedValues[localeCode]!['custom_labels'] ?? ''; - String get selectLabel => _localizedValues[localeCode]['select_label'] ?? ''; + String get selectLabel => _localizedValues[localeCode]!['select_label'] ?? ''; - String get unapplied => _localizedValues[localeCode]['unapplied'] ?? ''; + String get unapplied => _localizedValues[localeCode]!['unapplied'] ?? ''; - String get apply => _localizedValues[localeCode]['apply'] ?? ''; + String get apply => _localizedValues[localeCode]!['apply'] ?? ''; String get applyPayment => - _localizedValues[localeCode]['apply_payment'] ?? ''; + _localizedValues[localeCode]!['apply_payment'] ?? ''; - String get surcharge => _localizedValues[localeCode]['surcharge'] ?? ''; + String get surcharge => _localizedValues[localeCode]!['surcharge'] ?? ''; - String get hours => _localizedValues[localeCode]['hours'] ?? ''; + String get hours => _localizedValues[localeCode]!['hours'] ?? ''; - String get statement => _localizedValues[localeCode]['statement'] ?? ''; + String get statement => _localizedValues[localeCode]!['statement'] ?? ''; - String get taxes => _localizedValues[localeCode]['taxes'] ?? ''; + String get taxes => _localizedValues[localeCode]!['taxes'] ?? ''; - String get rowsPerPage => _localizedValues[localeCode]['rows_per_page'] ?? ''; + String get rowsPerPage => _localizedValues[localeCode]!['rows_per_page'] ?? ''; String get viewInStripe => - _localizedValues[localeCode]['view_in_stripe'] ?? ''; + _localizedValues[localeCode]!['view_in_stripe'] ?? ''; - String get gateway => _localizedValues[localeCode]['gateway'] ?? ''; + String get gateway => _localizedValues[localeCode]!['gateway'] ?? ''; String get emailedInvoices => - _localizedValues[localeCode]['emailed_invoices'] ?? ''; + _localizedValues[localeCode]!['emailed_invoices'] ?? ''; String get emailedQuotes => - _localizedValues[localeCode]['emailed_quotes'] ?? ''; + _localizedValues[localeCode]!['emailed_quotes'] ?? ''; String get emailedCredits => - _localizedValues[localeCode]['emailed_credits'] ?? ''; + _localizedValues[localeCode]!['emailed_credits'] ?? ''; - String get pdfPageInfo => _localizedValues[localeCode]['pdf_page_info'] ?? ''; + String get pdfPageInfo => _localizedValues[localeCode]!['pdf_page_info'] ?? ''; String get reminder1Sent => - _localizedValues[localeCode]['reminder1_sent'] ?? ''; + _localizedValues[localeCode]!['reminder1_sent'] ?? ''; String get reminder2Sent => - _localizedValues[localeCode]['reminder2_sent'] ?? ''; + _localizedValues[localeCode]!['reminder2_sent'] ?? ''; String get reminder3Sent => - _localizedValues[localeCode]['reminder3_sent'] ?? ''; + _localizedValues[localeCode]!['reminder3_sent'] ?? ''; String get reminderLastSent => - _localizedValues[localeCode]['reminder_last_sent'] ?? ''; + _localizedValues[localeCode]!['reminder_last_sent'] ?? ''; - String get companyName => _localizedValues[localeCode]['company_name'] ?? ''; + String get companyName => _localizedValues[localeCode]!['company_name'] ?? ''; String get clientNumber => - _localizedValues[localeCode]['client_number'] ?? ''; + _localizedValues[localeCode]!['client_number'] ?? ''; - String get autoConvert => _localizedValues[localeCode]['auto_convert'] ?? ''; + String get autoConvert => _localizedValues[localeCode]!['auto_convert'] ?? ''; - String get label => _localizedValues[localeCode]['label'] ?? ''; + String get label => _localizedValues[localeCode]!['label'] ?? ''; - String get always => _localizedValues[localeCode]['always'] ?? ''; + String get always => _localizedValues[localeCode]!['always'] ?? ''; - String get optIn => _localizedValues[localeCode]['optin'] ?? ''; + String get optIn => _localizedValues[localeCode]!['optin'] ?? ''; - String get optOut => _localizedValues[localeCode]['optout'] ?? ''; + String get optOut => _localizedValues[localeCode]!['optout'] ?? ''; String get welcomeToInvoiceNinja => - _localizedValues[localeCode]['welcome_to_invoice_ninja'] ?? ''; + _localizedValues[localeCode]!['welcome_to_invoice_ninja'] ?? ''; String get tokenBilling => - _localizedValues[localeCode]['token_billing'] ?? ''; + _localizedValues[localeCode]!['token_billing'] ?? ''; - String get copyLink => _localizedValues[localeCode]['copy_link'] ?? ''; + String get copyLink => _localizedValues[localeCode]!['copy_link'] ?? ''; - String get viewPortal => _localizedValues[localeCode]['view_portal'] ?? ''; + String get viewPortal => _localizedValues[localeCode]!['view_portal'] ?? ''; - String get systemLogs => _localizedValues[localeCode]['system_logs'] ?? ''; + String get systemLogs => _localizedValues[localeCode]!['system_logs'] ?? ''; String get paymentReconciliationSuccess => - _localizedValues[localeCode]['payment_reconciliation_success'] ?? ''; + _localizedValues[localeCode]!['payment_reconciliation_success'] ?? ''; String get paymentReconciliationFailure => - _localizedValues[localeCode]['payment_reconciliation_failure'] ?? ''; + _localizedValues[localeCode]!['payment_reconciliation_failure'] ?? ''; String get gatewaySuccess => - _localizedValues[localeCode]['gateway_success'] ?? ''; + _localizedValues[localeCode]!['gateway_success'] ?? ''; String get gatewayFailure => - _localizedValues[localeCode]['gateway_failure'] ?? ''; + _localizedValues[localeCode]!['gateway_failure'] ?? ''; String get gatewayError => - _localizedValues[localeCode]['gateway_error'] ?? ''; + _localizedValues[localeCode]!['gateway_error'] ?? ''; - String get emailSend => _localizedValues[localeCode]['email_send'] ?? ''; + String get emailSend => _localizedValues[localeCode]!['email_send'] ?? ''; String get emailRetryQueue => - _localizedValues[localeCode]['email_retry_queue'] ?? ''; + _localizedValues[localeCode]!['email_retry_queue'] ?? ''; - String get failure => _localizedValues[localeCode]['failure'] ?? ''; + String get failure => _localizedValues[localeCode]!['failure'] ?? ''; String get quotaExceeded => - _localizedValues[localeCode]['quota_exceeded'] ?? ''; + _localizedValues[localeCode]!['quota_exceeded'] ?? ''; String get upstreamFailure => - _localizedValues[localeCode]['upstream_failure'] ?? ''; + _localizedValues[localeCode]!['upstream_failure'] ?? ''; - String get opened => _localizedValues[localeCode]['opened'] ?? ''; + String get opened => _localizedValues[localeCode]!['opened'] ?? ''; - String get testMode => _localizedValues[localeCode]['test_mode'] ?? ''; + String get testMode => _localizedValues[localeCode]!['test_mode'] ?? ''; String get allowOverPayment => - _localizedValues[localeCode]['allow_over_payment'] ?? ''; + _localizedValues[localeCode]!['allow_over_payment'] ?? ''; String get allowOverPaymentHelp => - _localizedValues[localeCode]['allow_over_payment_help'] ?? ''; + _localizedValues[localeCode]!['allow_over_payment_help'] ?? ''; String get allowUnderPayment => - _localizedValues[localeCode]['allow_under_payment'] ?? ''; + _localizedValues[localeCode]!['allow_under_payment'] ?? ''; String get allowUnderPaymentHelp => - _localizedValues[localeCode]['allow_under_payment_help'] ?? ''; + _localizedValues[localeCode]!['allow_under_payment_help'] ?? ''; - String get lineItem => _localizedValues[localeCode]['line_item'] ?? ''; + String get lineItem => _localizedValues[localeCode]!['line_item'] ?? ''; - String get profit => _localizedValues[localeCode]['profit'] ?? ''; + String get profit => _localizedValues[localeCode]!['profit'] ?? ''; - String get sendDate => _localizedValues[localeCode]['send_date'] ?? ''; + String get sendDate => _localizedValues[localeCode]!['send_date'] ?? ''; String get minimumUnderPaymentAmount => - _localizedValues[localeCode]['minimum_under_payment_amount'] ?? ''; + _localizedValues[localeCode]!['minimum_under_payment_amount'] ?? ''; - String get autoBillOn => _localizedValues[localeCode]['auto_bill_on'] ?? ''; + String get autoBillOn => _localizedValues[localeCode]!['auto_bill_on'] ?? ''; String get nextSendDate => - _localizedValues[localeCode]['next_send_date'] ?? ''; + _localizedValues[localeCode]!['next_send_date'] ?? ''; String get remainingCycles => - _localizedValues[localeCode]['remaining_cycles'] ?? ''; + _localizedValues[localeCode]!['remaining_cycles'] ?? ''; - String get endless => _localizedValues[localeCode]['endless'] ?? ''; + String get endless => _localizedValues[localeCode]!['endless'] ?? ''; String get usePaymentTerms => - _localizedValues[localeCode]['use_payment_terms'] ?? ''; + _localizedValues[localeCode]!['use_payment_terms'] ?? ''; String get firstDayOfTheMonth => - _localizedValues[localeCode]['first_day_of_the_month'] ?? ''; + _localizedValues[localeCode]!['first_day_of_the_month'] ?? ''; String get lastDayOfTheMonth => - _localizedValues[localeCode]['last_day_of_the_month'] ?? ''; + _localizedValues[localeCode]!['last_day_of_the_month'] ?? ''; - String get dayCount => _localizedValues[localeCode]['day_count'] ?? ''; + String get dayCount => _localizedValues[localeCode]!['day_count'] ?? ''; - String get markActive => _localizedValues[localeCode]['mark_active'] ?? ''; + String get markActive => _localizedValues[localeCode]!['mark_active'] ?? ''; - String get paused => _localizedValues[localeCode]['paused'] ?? ''; + String get paused => _localizedValues[localeCode]!['paused'] ?? ''; - String get dueDateDays => _localizedValues[localeCode]['due_date_days'] ?? ''; + String get dueDateDays => _localizedValues[localeCode]!['due_date_days'] ?? ''; String get gatewayRefund => - _localizedValues[localeCode]['gateway_refund'] ?? ''; + _localizedValues[localeCode]!['gateway_refund'] ?? ''; String get gatewayRefundHelp => - _localizedValues[localeCode]['gateway_refund_help'] ?? ''; + _localizedValues[localeCode]!['gateway_refund_help'] ?? ''; - String get totalFields => _localizedValues[localeCode]['total_fields'] ?? ''; + String get totalFields => _localizedValues[localeCode]!['total_fields'] ?? ''; - String get totalTaxes => _localizedValues[localeCode]['total_taxes'] ?? ''; + String get totalTaxes => _localizedValues[localeCode]!['total_taxes'] ?? ''; - String get lineTaxes => _localizedValues[localeCode]['line_taxes'] ?? ''; + String get lineTaxes => _localizedValues[localeCode]!['line_taxes'] ?? ''; - String get captureCard => _localizedValues[localeCode]['capture_card'] ?? ''; + String get captureCard => _localizedValues[localeCode]!['capture_card'] ?? ''; String get autoBillEnabled => - _localizedValues[localeCode]['auto_bill_enabled'] ?? ''; + _localizedValues[localeCode]!['auto_bill_enabled'] ?? ''; - String get copyError => _localizedValues[localeCode]['copy_error'] ?? ''; + String get copyError => _localizedValues[localeCode]!['copy_error'] ?? ''; String get showPassword => - _localizedValues[localeCode]['show_password'] ?? ''; + _localizedValues[localeCode]!['show_password'] ?? ''; String get hidePassword => - _localizedValues[localeCode]['hide_password'] ?? ''; + _localizedValues[localeCode]!['hide_password'] ?? ''; - String get variables => _localizedValues[localeCode]['variables'] ?? ''; + String get variables => _localizedValues[localeCode]!['variables'] ?? ''; - String get userField => _localizedValues[localeCode]['user_field'] ?? ''; + String get userField => _localizedValues[localeCode]!['user_field'] ?? ''; - String get paypal => _localizedValues[localeCode]['paypal'] ?? ''; + String get paypal => _localizedValues[localeCode]!['paypal'] ?? ''; - String get alipay => _localizedValues[localeCode]['alipay'] ?? ''; + String get alipay => _localizedValues[localeCode]!['alipay'] ?? ''; - String get sofort => _localizedValues[localeCode]['sofort'] ?? ''; + String get sofort => _localizedValues[localeCode]!['sofort'] ?? ''; - String get applePay => _localizedValues[localeCode]['apple_pay'] ?? ''; + String get applePay => _localizedValues[localeCode]!['apple_pay'] ?? ''; - String get crypto => _localizedValues[localeCode]['crypto'] ?? ''; + String get crypto => _localizedValues[localeCode]!['crypto'] ?? ''; String get markPaidHelp => - _localizedValues[localeCode]['mark_paid_help'] ?? ''; + _localizedValues[localeCode]!['mark_paid_help'] ?? ''; String get addDocumentsToInvoiceHelp => - _localizedValues[localeCode]['add_documents_to_invoice_help'] ?? ''; + _localizedValues[localeCode]!['add_documents_to_invoice_help'] ?? ''; String get expenseSettings => - _localizedValues[localeCode]['expense_settings'] ?? ''; + _localizedValues[localeCode]!['expense_settings'] ?? ''; String get convertCurrencyHelp => - _localizedValues[localeCode]['convert_currency_help'] ?? ''; + _localizedValues[localeCode]!['convert_currency_help'] ?? ''; String get cloneToRecurring => - _localizedValues[localeCode]['clone_to_recurring'] ?? ''; + _localizedValues[localeCode]!['clone_to_recurring'] ?? ''; - String get forceUpdate => _localizedValues[localeCode]['force_update'] ?? ''; + String get forceUpdate => _localizedValues[localeCode]!['force_update'] ?? ''; String get forceUpdateHelp => - _localizedValues[localeCode]['force_update_help'] ?? ''; + _localizedValues[localeCode]!['force_update_help'] ?? ''; String get negativePaymentError => - _localizedValues[localeCode]['negative_payment_error'] ?? ''; + _localizedValues[localeCode]!['negative_payment_error'] ?? ''; - String get viewChanges => _localizedValues[localeCode]['view_changes'] ?? ''; + String get viewChanges => _localizedValues[localeCode]!['view_changes'] ?? ''; - String get showOption => _localizedValues[localeCode]['show_option'] ?? ''; + String get showOption => _localizedValues[localeCode]!['show_option'] ?? ''; String get useAvailableCredits => - _localizedValues[localeCode]['use_available_credits'] ?? ''; + _localizedValues[localeCode]!['use_available_credits'] ?? ''; String get shouldBeInvoiced => - _localizedValues[localeCode]['should_be_invoiced'] ?? ''; + _localizedValues[localeCode]!['should_be_invoiced'] ?? ''; String get shouldBeInvoicedHelp => - _localizedValues[localeCode]['should_be_invoiced_help'] ?? ''; + _localizedValues[localeCode]!['should_be_invoiced_help'] ?? ''; - String get isRunning => _localizedValues[localeCode]['is_running'] ?? ''; + String get isRunning => _localizedValues[localeCode]!['is_running'] ?? ''; - String get timeLog => _localizedValues[localeCode]['time_log'] ?? ''; + String get timeLog => _localizedValues[localeCode]!['time_log'] ?? ''; - String get bankId => _localizedValues[localeCode]['bank_id'] ?? ''; + String get bankId => _localizedValues[localeCode]!['bank_id'] ?? ''; String get expenseCategoryId => - _localizedValues[localeCode]['expense_category_id'] ?? ''; + _localizedValues[localeCode]!['expense_category_id'] ?? ''; String get invoiceCurrencyId => - _localizedValues[localeCode]['invoice_currency_id'] ?? ''; + _localizedValues[localeCode]!['invoice_currency_id'] ?? ''; - String get taxName1 => _localizedValues[localeCode]['tax_name1'] ?? ''; + String get taxName1 => _localizedValues[localeCode]!['tax_name1'] ?? ''; - String get taxName2 => _localizedValues[localeCode]['tax_name2'] ?? ''; + String get taxName2 => _localizedValues[localeCode]!['tax_name2'] ?? ''; - String get taxName3 => _localizedValues[localeCode]['tax_name3'] ?? ''; + String get taxName3 => _localizedValues[localeCode]!['tax_name3'] ?? ''; String get transactionId => - _localizedValues[localeCode]['transaction_id'] ?? ''; + _localizedValues[localeCode]!['transaction_id'] ?? ''; String get configureCategories => - _localizedValues[localeCode]['configure_categories'] ?? ''; + _localizedValues[localeCode]!['configure_categories'] ?? ''; String get configureStatuses => - _localizedValues[localeCode]['configure_statuses'] ?? ''; + _localizedValues[localeCode]!['configure_statuses'] ?? ''; String get taskSettings => - _localizedValues[localeCode]['task_settings'] ?? ''; + _localizedValues[localeCode]!['task_settings'] ?? ''; String get invoiceTaskTimelog => - _localizedValues[localeCode]['invoice_task_timelog'] ?? ''; + _localizedValues[localeCode]!['invoice_task_timelog'] ?? ''; String get invoiceTaskTimelogHelp => - _localizedValues[localeCode]['invoice_task_timelog_help'] ?? ''; + _localizedValues[localeCode]!['invoice_task_timelog_help'] ?? ''; String get invoiceTaskDatelog => - _localizedValues[localeCode]['invoice_task_datelog'] ?? ''; + _localizedValues[localeCode]!['invoice_task_datelog'] ?? ''; String get invoiceTaskDatelogHelp => - _localizedValues[localeCode]['invoice_task_datelog_help'] ?? ''; + _localizedValues[localeCode]!['invoice_task_datelog_help'] ?? ''; String get showTasksTable => - _localizedValues[localeCode]['show_tasks_table'] ?? ''; + _localizedValues[localeCode]!['show_tasks_table'] ?? ''; String get showTasksTableHelp => - _localizedValues[localeCode]['show_tasks_table_help'] ?? ''; + _localizedValues[localeCode]!['show_tasks_table_help'] ?? ''; - String get sortOrder => _localizedValues[localeCode]['sort_order'] ?? ''; + String get sortOrder => _localizedValues[localeCode]!['sort_order'] ?? ''; - String get clearCache => _localizedValues[localeCode]['clear_cache'] ?? ''; + String get clearCache => _localizedValues[localeCode]!['clear_cache'] ?? ''; String get calculatedRate => - _localizedValues[localeCode]['calculated_rate'] ?? ''; + _localizedValues[localeCode]!['calculated_rate'] ?? ''; String get requiredFields => - _localizedValues[localeCode]['required_fields'] ?? ''; + _localizedValues[localeCode]!['required_fields'] ?? ''; - String get clientName => _localizedValues[localeCode]['client_name'] ?? ''; + String get clientName => _localizedValues[localeCode]!['client_name'] ?? ''; - String get clientPhone => _localizedValues[localeCode]['client_phone'] ?? ''; + String get clientPhone => _localizedValues[localeCode]!['client_phone'] ?? ''; - String get cvv => _localizedValues[localeCode]['cvv'] ?? ''; + String get cvv => _localizedValues[localeCode]!['cvv'] ?? ''; - String get lateInvoice => _localizedValues[localeCode]['late_invoice'] ?? ''; + String get lateInvoice => _localizedValues[localeCode]!['late_invoice'] ?? ''; String get expiredQuote => - _localizedValues[localeCode]['expired_quote'] ?? ''; + _localizedValues[localeCode]!['expired_quote'] ?? ''; String get remindInvoice => - _localizedValues[localeCode]['remind_invoice'] ?? ''; + _localizedValues[localeCode]!['remind_invoice'] ?? ''; String get companyDisabledWarning => - _localizedValues[localeCode]['company_disabled_warning'] ?? ''; + _localizedValues[localeCode]!['company_disabled_warning'] ?? ''; String get viewSettings => - _localizedValues[localeCode]['view_settings'] ?? ''; + _localizedValues[localeCode]!['view_settings'] ?? ''; - String get warning => _localizedValues[localeCode]['warning'] ?? ''; + String get warning => _localizedValues[localeCode]!['warning'] ?? ''; String get projectNumber => - _localizedValues[localeCode]['project_number'] ?? ''; + _localizedValues[localeCode]!['project_number'] ?? ''; - String get projectName => _localizedValues[localeCode]['project_name'] ?? ''; + String get projectName => _localizedValues[localeCode]!['project_name'] ?? ''; - String get taskNumber => _localizedValues[localeCode]['task_number'] ?? ''; + String get taskNumber => _localizedValues[localeCode]!['task_number'] ?? ''; String get expenseNumber => - _localizedValues[localeCode]['expense_number'] ?? ''; + _localizedValues[localeCode]!['expense_number'] ?? ''; - String get actions => _localizedValues[localeCode]['actions'] ?? ''; + String get actions => _localizedValues[localeCode]!['actions'] ?? ''; String get invoiceTotal => - _localizedValues[localeCode]['invoice_total'] ?? ''; + _localizedValues[localeCode]!['invoice_total'] ?? ''; - String get quoteTotal => _localizedValues[localeCode]['quote_total'] ?? ''; + String get quoteTotal => _localizedValues[localeCode]!['quote_total'] ?? ''; - String get creditTotal => _localizedValues[localeCode]['credit_total'] ?? ''; + String get creditTotal => _localizedValues[localeCode]!['credit_total'] ?? ''; String get recurringInvoiceTotal => - _localizedValues[localeCode]['recurring_invoice_total'] ?? ''; + _localizedValues[localeCode]!['recurring_invoice_total'] ?? ''; - String get partialDue => _localizedValues[localeCode]['partial_due'] ?? ''; + String get partialDue => _localizedValues[localeCode]!['partial_due'] ?? ''; - String get invoiceLate => _localizedValues[localeCode]['invoice_late'] ?? ''; + String get invoiceLate => _localizedValues[localeCode]!['invoice_late'] ?? ''; String get quoteExpired => - _localizedValues[localeCode]['quote_expired'] ?? ''; + _localizedValues[localeCode]!['quote_expired'] ?? ''; String get appPlatforms => - _localizedValues[localeCode]['app_platforms'] ?? ''; + _localizedValues[localeCode]!['app_platforms'] ?? ''; - String get sourceCode => _localizedValues[localeCode]['source_code'] ?? ''; + String get sourceCode => _localizedValues[localeCode]!['source_code'] ?? ''; String get paidInvoicesArelocked => - _localizedValues[localeCode]['paid_invoices_are_locked'] ?? ''; + _localizedValues[localeCode]!['paid_invoices_are_locked'] ?? ''; String get sentInvoicesArelocked => - _localizedValues[localeCode]['sent_invoices_are_locked'] ?? ''; + _localizedValues[localeCode]!['sent_invoices_are_locked'] ?? ''; String get deliveryNote => - _localizedValues[localeCode]['delivery_note'] ?? ''; + _localizedValues[localeCode]!['delivery_note'] ?? ''; - String get whiteLabel => _localizedValues[localeCode]['white_label'] ?? ''; + String get whiteLabel => _localizedValues[localeCode]!['white_label'] ?? ''; - String get unpaid => _localizedValues[localeCode]['unpaid'] ?? ''; + String get unpaid => _localizedValues[localeCode]!['unpaid'] ?? ''; - String get paymentTax => _localizedValues[localeCode]['payment_tax'] ?? ''; + String get paymentTax => _localizedValues[localeCode]!['payment_tax'] ?? ''; - String get addCustom => _localizedValues[localeCode]['add_custom'] ?? ''; + String get addCustom => _localizedValues[localeCode]!['add_custom'] ?? ''; - String get labels => _localizedValues[localeCode]['labels'] ?? ''; + String get labels => _localizedValues[localeCode]!['labels'] ?? ''; String get cloneToOther => - _localizedValues[localeCode]['clone_to_other'] ?? ''; + _localizedValues[localeCode]!['clone_to_other'] ?? ''; - String get cloneTo => _localizedValues[localeCode]['clone_to'] ?? ''; + String get cloneTo => _localizedValues[localeCode]!['clone_to'] ?? ''; - String get service => _localizedValues[localeCode]['service'] ?? ''; + String get service => _localizedValues[localeCode]!['service'] ?? ''; - String get purge => _localizedValues[localeCode]['purge'] ?? ''; + String get purge => _localizedValues[localeCode]!['purge'] ?? ''; String get pleaseTypeToConfirm => - _localizedValues[localeCode]['please_type_to_confirm'] ?? ''; + _localizedValues[localeCode]!['please_type_to_confirm'] ?? ''; String get fullscreenEditor => - _localizedValues[localeCode]['fullscreen_editor'] ?? ''; + _localizedValues[localeCode]!['fullscreen_editor'] ?? ''; String get sidebarEditor => - _localizedValues[localeCode]['sidebar_editor'] ?? ''; + _localizedValues[localeCode]!['sidebar_editor'] ?? ''; - String get webhookUrl => _localizedValues[localeCode]['webhook_url'] ?? ''; + String get webhookUrl => _localizedValues[localeCode]!['webhook_url'] ?? ''; String get viewLicenses => - _localizedValues[localeCode]['view_licenses'] ?? ''; + _localizedValues[localeCode]!['view_licenses'] ?? ''; - String get csvFile => _localizedValues[localeCode]['csv_file'] ?? ''; + String get csvFile => _localizedValues[localeCode]!['csv_file'] ?? ''; String get noFileSelected => - _localizedValues[localeCode]['no_file_selected'] ?? ''; + _localizedValues[localeCode]!['no_file_selected'] ?? ''; String get firstRowAsColumnNames => - _localizedValues[localeCode]['first_row_as_column_names'] ?? ''; + _localizedValues[localeCode]!['first_row_as_column_names'] ?? ''; - String get column => _localizedValues[localeCode]['column'] ?? ''; + String get column => _localizedValues[localeCode]!['column'] ?? ''; - String get sample => _localizedValues[localeCode]['sample'] ?? ''; + String get sample => _localizedValues[localeCode]!['sample'] ?? ''; - String get mapTo => _localizedValues[localeCode]['map_to'] ?? ''; + String get mapTo => _localizedValues[localeCode]!['map_to'] ?? ''; String get usesInclusiveTaxes => - _localizedValues[localeCode]['uses_inclusive_taxes'] ?? ''; + _localizedValues[localeCode]!['uses_inclusive_taxes'] ?? ''; String get isAmountDiscount => - _localizedValues[localeCode]['is_amount_discount'] ?? ''; + _localizedValues[localeCode]!['is_amount_discount'] ?? ''; String get duplicateColumnMapping => - _localizedValues[localeCode]['duplicate_column_mapping'] ?? ''; + _localizedValues[localeCode]!['duplicate_column_mapping'] ?? ''; String get startedImport => - _localizedValues[localeCode]['started_import'] ?? ''; + _localizedValues[localeCode]!['started_import'] ?? ''; - String get updateApp => _localizedValues[localeCode]['update_app'] ?? ''; + String get updateApp => _localizedValues[localeCode]!['update_app'] ?? ''; String get runningTasks => - _localizedValues[localeCode]['running_tasks'] ?? ''; + _localizedValues[localeCode]!['running_tasks'] ?? ''; - String get recentTasks => _localizedValues[localeCode]['recent_tasks'] ?? ''; + String get recentTasks => _localizedValues[localeCode]!['recent_tasks'] ?? ''; String get recentExpenses => - _localizedValues[localeCode]['recent_expenses'] ?? ''; + _localizedValues[localeCode]!['recent_expenses'] ?? ''; String get upcomingExpenses => - _localizedValues[localeCode]['upcoming_expenses'] ?? ''; + _localizedValues[localeCode]!['upcoming_expenses'] ?? ''; String get debugModeIsEnabled => - _localizedValues[localeCode]['debug_mode_is_enabled'] ?? ''; + _localizedValues[localeCode]!['debug_mode_is_enabled'] ?? ''; String get debugModeIsEnabledHelp => - _localizedValues[localeCode]['debug_mode_is_enabled_help'] ?? ''; + _localizedValues[localeCode]!['debug_mode_is_enabled_help'] ?? ''; String get emptyColumns => - _localizedValues[localeCode]['empty_columns'] ?? ''; + _localizedValues[localeCode]!['empty_columns'] ?? ''; - String get show => _localizedValues[localeCode]['show'] ?? ''; + String get show => _localizedValues[localeCode]!['show'] ?? ''; - String get hide => _localizedValues[localeCode]['hide'] ?? ''; + String get hide => _localizedValues[localeCode]!['hide'] ?? ''; - String get color => _localizedValues[localeCode]['color'] ?? ''; + String get color => _localizedValues[localeCode]!['color'] ?? ''; - String get enterTaxes => _localizedValues[localeCode]['enter_taxes'] ?? ''; + String get enterTaxes => _localizedValues[localeCode]!['enter_taxes'] ?? ''; - String get byRate => _localizedValues[localeCode]['by_rate'] ?? ''; + String get byRate => _localizedValues[localeCode]!['by_rate'] ?? ''; - String get byAmount => _localizedValues[localeCode]['by_amount'] ?? ''; + String get byAmount => _localizedValues[localeCode]!['by_amount'] ?? ''; - String get enterAmount => _localizedValues[localeCode]['enter_amount'] ?? ''; + String get enterAmount => _localizedValues[localeCode]!['enter_amount'] ?? ''; - String get beforeTaxes => _localizedValues[localeCode]['before_taxes'] ?? ''; + String get beforeTaxes => _localizedValues[localeCode]!['before_taxes'] ?? ''; - String get afterTaxes => _localizedValues[localeCode]['after_taxes'] ?? ''; + String get afterTaxes => _localizedValues[localeCode]!['after_taxes'] ?? ''; - String get isSent => _localizedValues[localeCode]['is_sent'] ?? ''; + String get isSent => _localizedValues[localeCode]!['is_sent'] ?? ''; String get defaultDocuments => - _localizedValues[localeCode]['default_documents'] ?? ''; + _localizedValues[localeCode]!['default_documents'] ?? ''; String get convertedAmount => - _localizedValues[localeCode]['converted_amount'] ?? ''; + _localizedValues[localeCode]!['converted_amount'] ?? ''; String get convertedBalance => - _localizedValues[localeCode]['converted_balance'] ?? ''; + _localizedValues[localeCode]!['converted_balance'] ?? ''; String get supportedEvents => - _localizedValues[localeCode]['supported_events'] ?? ''; + _localizedValues[localeCode]!['supported_events'] ?? ''; String get saveAndPreview => - _localizedValues[localeCode]['save_and_preview'] ?? ''; + _localizedValues[localeCode]!['save_and_preview'] ?? ''; String get saveAndEmail => - _localizedValues[localeCode]['save_and_email'] ?? ''; + _localizedValues[localeCode]!['save_and_email'] ?? ''; String get searchPaymentTerm => - _localizedValues[localeCode]['search_payment_term'] ?? ''; + _localizedValues[localeCode]!['search_payment_term'] ?? ''; String get searchPaymentTerms => - _localizedValues[localeCode]['search_payment_terms'] ?? ''; + _localizedValues[localeCode]!['search_payment_terms'] ?? ''; - String get invoiceTask => _localizedValues[localeCode]['invoice_task'] ?? ''; + String get invoiceTask => _localizedValues[localeCode]!['invoice_task'] ?? ''; String get invoiceProject => - _localizedValues[localeCode]['invoice_project'] ?? ''; + _localizedValues[localeCode]!['invoice_project'] ?? ''; String get invoiceExpense => - _localizedValues[localeCode]['invoice_expense'] ?? ''; + _localizedValues[localeCode]!['invoice_expense'] ?? ''; String get registrationUrl => - _localizedValues[localeCode]['registration_url'] ?? ''; + _localizedValues[localeCode]!['registration_url'] ?? ''; String get convertToInvoice => - _localizedValues[localeCode]['convert_to_invoice'] ?? ''; + _localizedValues[localeCode]!['convert_to_invoice'] ?? ''; - String get toUpdateRun => _localizedValues[localeCode]['to_update_run'] ?? ''; + String get toUpdateRun => _localizedValues[localeCode]!['to_update_run'] ?? ''; - String get thisQuarter => _localizedValues[localeCode]['this_quarter'] ?? ''; + String get thisQuarter => _localizedValues[localeCode]!['this_quarter'] ?? ''; - String get lastQuarter => _localizedValues[localeCode]['last_quarter'] ?? ''; + String get lastQuarter => _localizedValues[localeCode]!['last_quarter'] ?? ''; String get counterPatternError => - _localizedValues[localeCode]['counter_pattern_error'] ?? ''; + _localizedValues[localeCode]!['counter_pattern_error'] ?? ''; String get convertedPaidToDate => - _localizedValues[localeCode]['converted_paid_to_date'] ?? ''; + _localizedValues[localeCode]!['converted_paid_to_date'] ?? ''; String get convertedCreditBalance => - _localizedValues[localeCode]['converted_credit_balance'] ?? ''; + _localizedValues[localeCode]!['converted_credit_balance'] ?? ''; String get convertedTotal => - _localizedValues[localeCode]['converted_total'] ?? ''; + _localizedValues[localeCode]!['converted_total'] ?? ''; String get emailSentToConfirmEmail => - _localizedValues[localeCode]['email_sent_to_confirm_email'] ?? ''; + _localizedValues[localeCode]!['email_sent_to_confirm_email'] ?? ''; String get listLongPress => - _localizedValues[localeCode]['list_long_press'] ?? ''; + _localizedValues[localeCode]!['list_long_press'] ?? ''; - String get showActions => _localizedValues[localeCode]['show_actions'] ?? ''; + String get showActions => _localizedValues[localeCode]!['show_actions'] ?? ''; String get startMultiselect => - _localizedValues[localeCode]['start_multiselect'] ?? ''; + _localizedValues[localeCode]!['start_multiselect'] ?? ''; String get selectAGmailUser => - _localizedValues[localeCode]['select_a_gmail_user'] ?? ''; + _localizedValues[localeCode]!['select_a_gmail_user'] ?? ''; String get partiallyUnapplied => - _localizedValues[localeCode]['partially_unapplied'] ?? ''; + _localizedValues[localeCode]!['partially_unapplied'] ?? ''; String get refundedPayment => - _localizedValues[localeCode]['refunded_payment'] ?? ''; + _localizedValues[localeCode]!['refunded_payment'] ?? ''; String get confirmYourEmailAddress => - _localizedValues[localeCode]['confirm_your_email_address'] ?? ''; + _localizedValues[localeCode]!['confirm_your_email_address'] ?? ''; - String get resendEmail => _localizedValues[localeCode]['resend_email'] ?? ''; + String get resendEmail => _localizedValues[localeCode]!['resend_email'] ?? ''; String get securitySettings => - _localizedValues[localeCode]['security_settings'] ?? ''; + _localizedValues[localeCode]!['security_settings'] ?? ''; String get webSessionTimeout => - _localizedValues[localeCode]['web_session_timeout'] ?? ''; + _localizedValues[localeCode]!['web_session_timeout'] ?? ''; - String get countHours => _localizedValues[localeCode]['count_hours'] ?? ''; + String get countHours => _localizedValues[localeCode]!['count_hours'] ?? ''; - String get countDays => _localizedValues[localeCode]['count_days'] ?? ''; + String get countDays => _localizedValues[localeCode]!['count_days'] ?? ''; - String get countDay => _localizedValues[localeCode]['count_day'] ?? ''; + String get countDay => _localizedValues[localeCode]!['count_day'] ?? ''; String get sessionAboutToExpire => - _localizedValues[localeCode]['session_about_to_expire'] ?? ''; + _localizedValues[localeCode]!['session_about_to_expire'] ?? ''; String get stayLoggedIn => - _localizedValues[localeCode]['stay_logged_in'] ?? ''; + _localizedValues[localeCode]!['stay_logged_in'] ?? ''; String get requirePasswordWithSocialLogin => - _localizedValues[localeCode]['require_password_with_social_login'] ?? ''; + _localizedValues[localeCode]!['require_password_with_social_login'] ?? ''; String get enableTwoFactor => - _localizedValues[localeCode]['enable_two_factor'] ?? ''; + _localizedValues[localeCode]!['enable_two_factor'] ?? ''; String get disableTwoFactor => - _localizedValues[localeCode]['disable_two_factor'] ?? ''; + _localizedValues[localeCode]!['disable_two_factor'] ?? ''; String get disabledTwoFactor => - _localizedValues[localeCode]['disabled_two_factor'] ?? ''; + _localizedValues[localeCode]!['disabled_two_factor'] ?? ''; String get connectGoogle => - _localizedValues[localeCode]['connect_google'] ?? ''; + _localizedValues[localeCode]!['connect_google'] ?? ''; String get disconnectGoogle => - _localizedValues[localeCode]['disconnect_google'] ?? ''; + _localizedValues[localeCode]!['disconnect_google'] ?? ''; String get twoFactorSetupHelp => - _localizedValues[localeCode]['two_factor_setup_help'] ?? ''; + _localizedValues[localeCode]!['two_factor_setup_help'] ?? ''; String get enabledTwoFactor => - _localizedValues[localeCode]['enabled_two_factor'] ?? ''; + _localizedValues[localeCode]!['enabled_two_factor'] ?? ''; - String get smsCode => _localizedValues[localeCode]['sms_code'] ?? ''; + String get smsCode => _localizedValues[localeCode]!['sms_code'] ?? ''; - String get sendSms => _localizedValues[localeCode]['send_sms'] ?? ''; + String get sendSms => _localizedValues[localeCode]!['send_sms'] ?? ''; String get enterPhoneToEnableTwoFactor => - _localizedValues[localeCode]['enter_phone_to_enable_two_factor'] ?? ''; + _localizedValues[localeCode]!['enter_phone_to_enable_two_factor'] ?? ''; - String get viewDocs => _localizedValues[localeCode]['view_docs'] ?? ''; + String get viewDocs => _localizedValues[localeCode]!['view_docs'] ?? ''; - String get delivered => _localizedValues[localeCode]['delivered'] ?? ''; + String get delivered => _localizedValues[localeCode]!['delivered'] ?? ''; - String get bounced => _localizedValues[localeCode]['bounced'] ?? ''; + String get bounced => _localizedValues[localeCode]!['bounced'] ?? ''; - String get spam => _localizedValues[localeCode]['spam'] ?? ''; + String get spam => _localizedValues[localeCode]!['spam'] ?? ''; String get connectedGoogle => - _localizedValues[localeCode]['connected_google'] ?? ''; + _localizedValues[localeCode]!['connected_google'] ?? ''; String get disconnectedGoogle => - _localizedValues[localeCode]['disconnected_google'] ?? ''; + _localizedValues[localeCode]!['disconnected_google'] ?? ''; String get resendInvite => - _localizedValues[localeCode]['resend_invite'] ?? ''; + _localizedValues[localeCode]!['resend_invite'] ?? ''; String get pleaseSelectACountry => - _localizedValues[localeCode]['please_select_a_country'] ?? ''; + _localizedValues[localeCode]!['please_select_a_country'] ?? ''; String get helpTranslate => - _localizedValues[localeCode]['help_translate'] ?? ''; + _localizedValues[localeCode]!['help_translate'] ?? ''; String get changingPhoneDisablesTwoFactor => - _localizedValues[localeCode]['changing_phone_disables_two_factor'] ?? ''; + _localizedValues[localeCode]!['changing_phone_disables_two_factor'] ?? ''; String get pleaseFirstSetAPassword => - _localizedValues[localeCode]['please_first_set_a_password'] ?? ''; + _localizedValues[localeCode]!['please_first_set_a_password'] ?? ''; String get anErrorOccurredTryAgain => - _localizedValues[localeCode]['an_error_occurred_try_again'] ?? ''; + _localizedValues[localeCode]!['an_error_occurred_try_again'] ?? ''; String get activateCompany => - _localizedValues[localeCode]['activate_company'] ?? ''; + _localizedValues[localeCode]!['activate_company'] ?? ''; String get activateCompanyHelp => - _localizedValues[localeCode]['activate_company_help'] ?? ''; + _localizedValues[localeCode]!['activate_company_help'] ?? ''; String get useLastEmail => - _localizedValues[localeCode]['use_last_email'] ?? ''; + _localizedValues[localeCode]!['use_last_email'] ?? ''; String get sharedInvoiceCreditCounter => - _localizedValues[localeCode]['shared_invoice_credit_counter'] ?? ''; + _localizedValues[localeCode]!['shared_invoice_credit_counter'] ?? ''; String get passwordTimeout => - _localizedValues[localeCode]['password_timeout'] ?? ''; + _localizedValues[localeCode]!['password_timeout'] ?? ''; String get countMinutes => - _localizedValues[localeCode]['count_minutes'] ?? ''; + _localizedValues[localeCode]!['count_minutes'] ?? ''; String get clientIdNumber => - _localizedValues[localeCode]['client_id_number'] ?? ''; + _localizedValues[localeCode]!['client_id_number'] ?? ''; String get updateFailHelp => - _localizedValues[localeCode]['update_fail_help'] ?? ''; + _localizedValues[localeCode]!['update_fail_help'] ?? ''; String get connectGmail => - _localizedValues[localeCode]['connect_gmail'] ?? ''; + _localizedValues[localeCode]!['connect_gmail'] ?? ''; String get disconnectGmail => - _localizedValues[localeCode]['disconnect_gmail'] ?? ''; + _localizedValues[localeCode]!['disconnect_gmail'] ?? ''; String get connectedGmail => - _localizedValues[localeCode]['connected_gmail'] ?? ''; + _localizedValues[localeCode]!['connected_gmail'] ?? ''; String get disconnectedGmail => - _localizedValues['en']['disconnected_gmail'] ?? ''; + _localizedValues['en']!['disconnected_gmail'] ?? ''; String get subdomainIsNotAvailable => - _localizedValues[localeCode]['subdomain_is_not_available'] ?? ''; + _localizedValues[localeCode]!['subdomain_is_not_available'] ?? ''; - String get paymentLink => - _localizedValues[localeCode]['payment_link'] ?? - _localizedValues['en']['payment_link']; + String? get paymentLink => + _localizedValues[localeCode]!['payment_link'] ?? + _localizedValues['en']!['payment_link']; - String get paymentLinks => - _localizedValues[localeCode]['payment_links'] ?? - _localizedValues['en']['payment_links']; + String? get paymentLinks => + _localizedValues[localeCode]!['payment_links'] ?? + _localizedValues['en']!['payment_links']; - String get newPaymentLink => - _localizedValues[localeCode]['new_payment_link'] ?? - _localizedValues['en']['new_payment_link']; + String? get newPaymentLink => + _localizedValues[localeCode]!['new_payment_link'] ?? + _localizedValues['en']!['new_payment_link']; - String get createdPaymentLink => - _localizedValues[localeCode]['created_payment_link'] ?? - _localizedValues['en']['created_payment_link']; + String? get createdPaymentLink => + _localizedValues[localeCode]!['created_payment_link'] ?? + _localizedValues['en']!['created_payment_link']; - String get updatedPaymentLink => - _localizedValues[localeCode]['updated_payment_link'] ?? - _localizedValues['en']['updated_payment_link']; + String? get updatedPaymentLink => + _localizedValues[localeCode]!['updated_payment_link'] ?? + _localizedValues['en']!['updated_payment_link']; - String get archivedPaymentLink => - _localizedValues[localeCode]['archived_payment_link'] ?? - _localizedValues['en']['archived_payment_link']; + String? get archivedPaymentLink => + _localizedValues[localeCode]!['archived_payment_link'] ?? + _localizedValues['en']!['archived_payment_link']; - String get deletedPaymentLink => - _localizedValues[localeCode]['deleted_payment_link'] ?? - _localizedValues['en']['deleted_payment_link']; + String? get deletedPaymentLink => + _localizedValues[localeCode]!['deleted_payment_link'] ?? + _localizedValues['en']!['deleted_payment_link']; - String get restoredPaymentLink => - _localizedValues[localeCode]['restored_payment_link'] ?? - _localizedValues['en']['restored_payment_link']; + String? get restoredPaymentLink => + _localizedValues[localeCode]!['restored_payment_link'] ?? + _localizedValues['en']!['restored_payment_link']; - String get editPaymentLink => - _localizedValues[localeCode]['edit_payment_link'] ?? - _localizedValues['en']['edit_payment_link']; + String? get editPaymentLink => + _localizedValues[localeCode]!['edit_payment_link'] ?? + _localizedValues['en']!['edit_payment_link']; - String get searchPaymentLink => - _localizedValues[localeCode]['search_payment_link'] ?? - _localizedValues['en']['search_payment_link']; + String? get searchPaymentLink => + _localizedValues[localeCode]!['search_payment_link'] ?? + _localizedValues['en']!['search_payment_link']; - String get searchPaymentLinks => - _localizedValues[localeCode]['search_payment_links'] ?? - _localizedValues['en']['search_payment_links']; + String? get searchPaymentLinks => + _localizedValues[localeCode]!['search_payment_links'] ?? + _localizedValues['en']!['search_payment_links']; - String get security => _localizedValues[localeCode]['security'] ?? ''; + String get security => _localizedValues[localeCode]!['security'] ?? ''; String get emailBounced => - _localizedValues[localeCode]['email_bounced'] ?? ''; + _localizedValues[localeCode]!['email_bounced'] ?? ''; String get emailSpamComplaint => - _localizedValues[localeCode]['email_spam_complaint'] ?? ''; + _localizedValues[localeCode]!['email_spam_complaint'] ?? ''; String get emailDelivery => - _localizedValues[localeCode]['email_delivery'] ?? ''; + _localizedValues[localeCode]!['email_delivery'] ?? ''; String get webhookResponse => - _localizedValues[localeCode]['webhook_response'] ?? ''; + _localizedValues[localeCode]!['webhook_response'] ?? ''; - String get pdfResponse => _localizedValues[localeCode]['pdf_response'] ?? ''; + String get pdfResponse => _localizedValues[localeCode]!['pdf_response'] ?? ''; String get authenticationFailure => - _localizedValues[localeCode]['authentication_failure'] ?? ''; + _localizedValues[localeCode]!['authentication_failure'] ?? ''; - String get pdfFailed => _localizedValues[localeCode]['pdf_failed'] ?? ''; + String get pdfFailed => _localizedValues[localeCode]!['pdf_failed'] ?? ''; - String get pdfSuccess => _localizedValues[localeCode]['pdf_success'] ?? ''; + String get pdfSuccess => _localizedValues[localeCode]!['pdf_success'] ?? ''; - String get modified => _localizedValues[localeCode]['modified'] ?? ''; + String get modified => _localizedValues[localeCode]!['modified'] ?? ''; String get recurringProducts => - _localizedValues[localeCode]['recurring_products'] ?? ''; + _localizedValues[localeCode]!['recurring_products'] ?? ''; - String get promoCode => _localizedValues[localeCode]['promo_code'] ?? ''; + String get promoCode => _localizedValues[localeCode]!['promo_code'] ?? ''; String get promoDiscount => - _localizedValues[localeCode]['promo_discount'] ?? ''; + _localizedValues[localeCode]!['promo_discount'] ?? ''; String get allowCancellation => - _localizedValues[localeCode]['allow_cancellation'] ?? ''; + _localizedValues[localeCode]!['allow_cancellation'] ?? ''; String get perSeatEnabled => - _localizedValues[localeCode]['per_seat_enabled'] ?? ''; + _localizedValues[localeCode]!['per_seat_enabled'] ?? ''; String get maxSeatsLimit => - _localizedValues[localeCode]['max_seats_limit'] ?? ''; + _localizedValues[localeCode]!['max_seats_limit'] ?? ''; String get trialEnabled => - _localizedValues[localeCode]['trial_enabled'] ?? ''; + _localizedValues[localeCode]!['trial_enabled'] ?? ''; String get trialDuration => - _localizedValues[localeCode]['trial_duration'] ?? ''; + _localizedValues[localeCode]!['trial_duration'] ?? ''; String get allowQueryOverrides => - _localizedValues[localeCode]['allow_query_overrides'] ?? ''; + _localizedValues[localeCode]!['allow_query_overrides'] ?? ''; String get allowPlanChanges => - _localizedValues[localeCode]['allow_plan_changes'] ?? ''; + _localizedValues[localeCode]!['allow_plan_changes'] ?? ''; - String get planMap => _localizedValues[localeCode]['plan_map'] ?? ''; + String get planMap => _localizedValues[localeCode]!['plan_map'] ?? ''; String get refundPeriod => - _localizedValues[localeCode]['refund_period'] ?? ''; + _localizedValues[localeCode]!['refund_period'] ?? ''; String get webhookConfiguration => - _localizedValues[localeCode]['webhook_configuration'] ?? ''; + _localizedValues[localeCode]!['webhook_configuration'] ?? ''; String get purchasePage => - _localizedValues[localeCode]['purchase_page'] ?? ''; + _localizedValues[localeCode]!['purchase_page'] ?? ''; - String get returnUrl => _localizedValues[localeCode]['return_url'] ?? ''; + String get returnUrl => _localizedValues[localeCode]!['return_url'] ?? ''; - String get restMethod => _localizedValues[localeCode]['rest_method'] ?? ''; + String get restMethod => _localizedValues[localeCode]!['rest_method'] ?? ''; - String get headerKey => _localizedValues[localeCode]['header_key'] ?? ''; + String get headerKey => _localizedValues[localeCode]!['header_key'] ?? ''; String get invoicePaymentTerms => - _localizedValues[localeCode]['invoice_payment_terms'] ?? ''; + _localizedValues[localeCode]!['invoice_payment_terms'] ?? ''; String get quoteValidUntil => - _localizedValues[localeCode]['quote_valid_until'] ?? ''; + _localizedValues[localeCode]!['quote_valid_until'] ?? ''; - String get headerValue => _localizedValues[localeCode]['header_value'] ?? ''; + String get headerValue => _localizedValues[localeCode]!['header_value'] ?? ''; - String get addHeader => _localizedValues[localeCode]['add_header'] ?? ''; + String get addHeader => _localizedValues[localeCode]!['add_header'] ?? ''; String get removeHeader => - _localizedValues[localeCode]['remove_header'] ?? ''; + _localizedValues[localeCode]!['remove_header'] ?? ''; - String get noHeaders => _localizedValues[localeCode]['no_headers'] ?? ''; + String get noHeaders => _localizedValues[localeCode]!['no_headers'] ?? ''; String get upgradeToPaidPlan => - _localizedValues[localeCode]['upgrade_to_paid_plan'] ?? ''; + _localizedValues[localeCode]!['upgrade_to_paid_plan'] ?? ''; String get ownerUpgradeToPaidPlan => - _localizedValues[localeCode]['owner_upgrade_to_paid_plan'] ?? ''; + _localizedValues[localeCode]!['owner_upgrade_to_paid_plan'] ?? ''; - String get pageLayout => _localizedValues[localeCode]['page_layout'] ?? ''; + String get pageLayout => _localizedValues[localeCode]!['page_layout'] ?? ''; - String get portrait => _localizedValues[localeCode]['portrait'] ?? ''; + String get portrait => _localizedValues[localeCode]!['portrait'] ?? ''; - String get landscape => _localizedValues[localeCode]['landscape'] ?? ''; + String get landscape => _localizedValues[localeCode]!['landscape'] ?? ''; - String get letter => _localizedValues[localeCode]['letter'] ?? ''; + String get letter => _localizedValues[localeCode]!['letter'] ?? ''; - String get legal => _localizedValues[localeCode]['legal'] ?? ''; + String get legal => _localizedValues[localeCode]!['legal'] ?? ''; - String get isViewed => _localizedValues[localeCode]['is_viewed'] ?? ''; + String get isViewed => _localizedValues[localeCode]!['is_viewed'] ?? ''; String get viewDateFormats => - _localizedValues[localeCode]['view_date_formats'] ?? ''; + _localizedValues[localeCode]!['view_date_formats'] ?? ''; String get addBodyVariableMessage => - _localizedValues[localeCode]['add_body_variable_message'] ?? ''; + _localizedValues[localeCode]!['add_body_variable_message'] ?? ''; String get bodyVariableMissing => - _localizedValues[localeCode]['body_variable_missing'] ?? ''; + _localizedValues[localeCode]!['body_variable_missing'] ?? ''; String get subdomainHelp => - _localizedValues[localeCode]['subdomain_help'] ?? ''; + _localizedValues[localeCode]!['subdomain_help'] ?? ''; - String get moveTop => _localizedValues[localeCode]['move_top'] ?? ''; + String get moveTop => _localizedValues[localeCode]!['move_top'] ?? ''; - String get moveUp => _localizedValues[localeCode]['move_up'] ?? ''; + String get moveUp => _localizedValues[localeCode]!['move_up'] ?? ''; - String get moveDown => _localizedValues[localeCode]['move_down'] ?? ''; + String get moveDown => _localizedValues[localeCode]!['move_down'] ?? ''; - String get moveBottom => _localizedValues[localeCode]['move_bottom'] ?? ''; + String get moveBottom => _localizedValues[localeCode]!['move_bottom'] ?? ''; - String get enable => _localizedValues[localeCode]['enable'] ?? ''; + String get enable => _localizedValues[localeCode]!['enable'] ?? ''; - String get kanban => - _localizedValues[localeCode]['kanban'] ?? - _localizedValues['en']['kanban']; + String? get kanban => + _localizedValues[localeCode]!['kanban'] ?? + _localizedValues['en']!['kanban']; - String get searchKanban => - _localizedValues[localeCode]['search_kanban'] ?? - _localizedValues['en']['search_kanban']; + String? get searchKanban => + _localizedValues[localeCode]!['search_kanban'] ?? + _localizedValues['en']!['search_kanban']; - String get searchKanbans => - _localizedValues[localeCode]['search_kanbans'] ?? - _localizedValues['en']['search_kanbans']; + String? get searchKanbans => + _localizedValues[localeCode]!['search_kanbans'] ?? + _localizedValues['en']!['search_kanbans']; - String get partialValue => - _localizedValues[localeCode]['partial_value'] ?? - _localizedValues['en']['partial_value']; + String? get partialValue => + _localizedValues[localeCode]!['partial_value'] ?? + _localizedValues['en']!['partial_value']; - String get unassigned => - _localizedValues[localeCode]['unassigned'] ?? - _localizedValues['en']['unassigned']; + String? get unassigned => + _localizedValues[localeCode]!['unassigned'] ?? + _localizedValues['en']!['unassigned']; - String get order => - _localizedValues[localeCode]['order'] ?? _localizedValues['en']['order']; + String? get order => + _localizedValues[localeCode]!['order'] ?? _localizedValues['en']!['order']; - String get contactFirstName => - _localizedValues[localeCode]['contact_first_name'] ?? - _localizedValues['en']['contact_first_name']; + String? get contactFirstName => + _localizedValues[localeCode]!['contact_first_name'] ?? + _localizedValues['en']!['contact_first_name']; - String get contactLastName => - _localizedValues[localeCode]['contact_last_name'] ?? - _localizedValues['en']['contact_last_name']; + String? get contactLastName => + _localizedValues[localeCode]!['contact_last_name'] ?? + _localizedValues['en']!['contact_last_name']; - String get invoiceItem => - _localizedValues[localeCode]['invoice_item'] ?? - _localizedValues['en']['invoice_item']; + String? get invoiceItem => + _localizedValues[localeCode]!['invoice_item'] ?? + _localizedValues['en']!['invoice_item']; - String get quoteItem => - _localizedValues[localeCode]['quote_item'] ?? - _localizedValues['en']['quote_item']; + String? get quoteItem => + _localizedValues[localeCode]!['quote_item'] ?? + _localizedValues['en']!['quote_item']; - String get lastUpdated => - _localizedValues[localeCode]['last_updated'] ?? - _localizedValues['en']['last_updated']; + String? get lastUpdated => + _localizedValues[localeCode]!['last_updated'] ?? + _localizedValues['en']!['last_updated']; - String get pro => - _localizedValues[localeCode]['pro'] ?? _localizedValues['en']['pro']; + String? get pro => + _localizedValues[localeCode]!['pro'] ?? _localizedValues['en']!['pro']; - String get enterprise => - _localizedValues[localeCode]['enterprise'] ?? - _localizedValues['en']['enterprise']; + String? get enterprise => + _localizedValues[localeCode]!['enterprise'] ?? + _localizedValues['en']!['enterprise']; - String get invoiceCreated => - _localizedValues[localeCode]['invoice_created'] ?? - _localizedValues['en']['invoice_created']; + String? get invoiceCreated => + _localizedValues[localeCode]!['invoice_created'] ?? + _localizedValues['en']!['invoice_created']; - String get quoteCreated => - _localizedValues[localeCode]['quote_created'] ?? - _localizedValues['en']['quote_created']; + String? get quoteCreated => + _localizedValues[localeCode]!['quote_created'] ?? + _localizedValues['en']!['quote_created']; - String get creditCreated => - _localizedValues[localeCode]['credit_created'] ?? - _localizedValues['en']['credit_created']; + String? get creditCreated => + _localizedValues[localeCode]!['credit_created'] ?? + _localizedValues['en']!['credit_created']; - String get endAllSessions => - _localizedValues[localeCode]['end_all_sessions'] ?? - _localizedValues['en']['end_all_sessions']; + String? get endAllSessions => + _localizedValues[localeCode]!['end_all_sessions'] ?? + _localizedValues['en']!['end_all_sessions']; - String get countSession => - _localizedValues[localeCode]['count_session'] ?? - _localizedValues['en']['count_session']; + String? get countSession => + _localizedValues[localeCode]!['count_session'] ?? + _localizedValues['en']!['count_session']; - String get countSessions => - _localizedValues[localeCode]['count_sessions'] ?? - _localizedValues['en']['count_sessions']; + String? get countSessions => + _localizedValues[localeCode]!['count_sessions'] ?? + _localizedValues['en']!['count_sessions']; - String get endedAllSessions => - _localizedValues[localeCode]['ended_all_sessions'] ?? - _localizedValues['en']['ended_all_sessions']; + String? get endedAllSessions => + _localizedValues[localeCode]!['ended_all_sessions'] ?? + _localizedValues['en']!['ended_all_sessions']; - String get yearsDataShown => - _localizedValues[localeCode]['years_data_shown'] ?? - _localizedValues['en']['years_data_shown']; + String? get yearsDataShown => + _localizedValues[localeCode]!['years_data_shown'] ?? + _localizedValues['en']!['years_data_shown']; - String get gatewaySetup => - _localizedValues[localeCode]['gateway_setup'] ?? - _localizedValues['en']['gateway_setup']; + String? get gatewaySetup => + _localizedValues[localeCode]!['gateway_setup'] ?? + _localizedValues['en']!['gateway_setup']; - String get showTaskEndDate => - _localizedValues[localeCode]['show_task_end_date'] ?? - _localizedValues['en']['show_task_end_date']; + String? get showTaskEndDate => + _localizedValues[localeCode]!['show_task_end_date'] ?? + _localizedValues['en']!['show_task_end_date']; - String get showTaskEndDateHelp => - _localizedValues[localeCode]['show_task_end_date_help'] ?? - _localizedValues['en']['show_task_end_date_help']; + String? get showTaskEndDateHelp => + _localizedValues[localeCode]!['show_task_end_date_help'] ?? + _localizedValues['en']!['show_task_end_date_help']; - String get migrationNotYetCompleted => - _localizedValues[localeCode]['migration_not_yet_completed'] ?? - _localizedValues['en']['migration_not_yet_completed']; + String? get migrationNotYetCompleted => + _localizedValues[localeCode]!['migration_not_yet_completed'] ?? + _localizedValues['en']!['migration_not_yet_completed']; - String get accountId => - _localizedValues[localeCode]['account_id'] ?? - _localizedValues['en']['account_id']; + String? get accountId => + _localizedValues[localeCode]!['account_id'] ?? + _localizedValues['en']!['account_id']; - String get step1SignIn => - _localizedValues[localeCode]['step_1_sign_in'] ?? - _localizedValues['en']['step_1_sign_in']; + String? get step1SignIn => + _localizedValues[localeCode]!['step_1_sign_in'] ?? + _localizedValues['en']!['step_1_sign_in']; - String get step2Authorize => - _localizedValues[localeCode]['step_2_authorize'] ?? - _localizedValues['en']['step_2_authorize']; + String? get step2Authorize => + _localizedValues[localeCode]!['step_2_authorize'] ?? + _localizedValues['en']!['step_2_authorize']; - String get includeDeletedClients => - _localizedValues[localeCode]['include_deleted_clients'] ?? - _localizedValues['en']['include_deleted_clients']; + String? get includeDeletedClients => + _localizedValues[localeCode]!['include_deleted_clients'] ?? + _localizedValues['en']!['include_deleted_clients']; - String get includeDeletedClientsHelp => - _localizedValues[localeCode]['include_deleted_clients_help'] ?? - _localizedValues['en']['include_deleted_clients_help']; + String? get includeDeletedClientsHelp => + _localizedValues[localeCode]!['include_deleted_clients_help'] ?? + _localizedValues['en']!['include_deleted_clients_help']; - String get exportedData => - _localizedValues[localeCode]['exported_data'] ?? - _localizedValues['en']['exported_data']; + String? get exportedData => + _localizedValues[localeCode]!['exported_data'] ?? + _localizedValues['en']!['exported_data']; - String get loginSuccess => - _localizedValues[localeCode]['login_success'] ?? - _localizedValues['en']['login_success']; + String? get loginSuccess => + _localizedValues[localeCode]!['login_success'] ?? + _localizedValues['en']!['login_success']; - String get loginFailure => - _localizedValues[localeCode]['login_failure'] ?? - _localizedValues['en']['login_failure']; + String? get loginFailure => + _localizedValues[localeCode]!['login_failure'] ?? + _localizedValues['en']!['login_failure']; - String get importCustomers => - _localizedValues[localeCode]['import_customers'] ?? - _localizedValues['en']['import_customers']; + String? get importCustomers => + _localizedValues[localeCode]!['import_customers'] ?? + _localizedValues['en']!['import_customers']; - String get importedCustomers => - _localizedValues[localeCode]['imported_customers'] ?? - _localizedValues['en']['imported_customers']; + String? get importedCustomers => + _localizedValues[localeCode]!['imported_customers'] ?? + _localizedValues['en']!['imported_customers']; - String get hasTaxes => - _localizedValues[localeCode]['has_taxes'] ?? - _localizedValues['en']['has_taxes']; + String? get hasTaxes => + _localizedValues[localeCode]!['has_taxes'] ?? + _localizedValues['en']!['has_taxes']; - String get netTotal => - _localizedValues[localeCode]['net_total'] ?? - _localizedValues['en']['net_total']; + String? get netTotal => + _localizedValues[localeCode]!['net_total'] ?? + _localizedValues['en']!['net_total']; - String get draftMode => - _localizedValues[localeCode]['html_mode'] ?? - _localizedValues['en']['html_mode']; + String? get draftMode => + _localizedValues[localeCode]!['html_mode'] ?? + _localizedValues['en']!['html_mode']; - String get draftModeHelp => - _localizedValues[localeCode]['html_mode_help'] ?? - _localizedValues['en']['html_mode_help']; + String? get draftModeHelp => + _localizedValues[localeCode]!['html_mode_help'] ?? + _localizedValues['en']!['html_mode_help']; - String get waitForData => - _localizedValues[localeCode]['wait_for_data'] ?? - _localizedValues['en']['wait_for_data']; + String? get waitForData => + _localizedValues[localeCode]!['wait_for_data'] ?? + _localizedValues['en']!['wait_for_data']; - String get noPaymentTypesEnabled => - _localizedValues[localeCode]['no_payment_types_enabled'] ?? - _localizedValues['en']['no_payment_types_enabled']; + String? get noPaymentTypesEnabled => + _localizedValues[localeCode]!['no_payment_types_enabled'] ?? + _localizedValues['en']!['no_payment_types_enabled']; - String get json => - _localizedValues[localeCode]['json'] ?? _localizedValues['en']['json']; + String? get json => + _localizedValues[localeCode]!['json'] ?? _localizedValues['en']!['json']; - String get jsonFileMissing => - _localizedValues[localeCode]['json_file_missing'] ?? - _localizedValues['en']['json_file_missing']; + String? get jsonFileMissing => + _localizedValues[localeCode]!['json_file_missing'] ?? + _localizedValues['en']!['json_file_missing']; - String get jsonOptionMissing => - _localizedValues[localeCode]['json_option_missing'] ?? - _localizedValues['en']['json_option_missing']; + String? get jsonOptionMissing => + _localizedValues[localeCode]!['json_option_missing'] ?? + _localizedValues['en']!['json_option_missing']; - String get importData => - _localizedValues[localeCode]['import_data'] ?? - _localizedValues['en']['import_data']; + String? get importData => + _localizedValues[localeCode]!['import_data'] ?? + _localizedValues['en']!['import_data']; - String get importSettings => - _localizedValues[localeCode]['import_settings'] ?? - _localizedValues['en']['import_settings']; + String? get importSettings => + _localizedValues[localeCode]!['import_settings'] ?? + _localizedValues['en']!['import_settings']; - String get sendTime => - _localizedValues[localeCode]['send_time'] ?? - _localizedValues['en']['send_time']; + String? get sendTime => + _localizedValues[localeCode]!['send_time'] ?? + _localizedValues['en']!['send_time']; - String get subdomainGuide => - _localizedValues[localeCode]['subdomain_guide'] ?? - _localizedValues['en']['subdomain_guide']; + String? get subdomainGuide => + _localizedValues[localeCode]!['subdomain_guide'] ?? + _localizedValues['en']!['subdomain_guide']; - String get tasksShownInPortal => - _localizedValues[localeCode]['tasks_shown_in_portal'] ?? - _localizedValues['en']['tasks_shown_in_portal']; + String? get tasksShownInPortal => + _localizedValues[localeCode]!['tasks_shown_in_portal'] ?? + _localizedValues['en']!['tasks_shown_in_portal']; - String get uninvoiced => - _localizedValues[localeCode]['uninvoiced'] ?? - _localizedValues['en']['uninvoiced']; + String? get uninvoiced => + _localizedValues[localeCode]!['uninvoiced'] ?? + _localizedValues['en']!['uninvoiced']; - String get clientPortalDomainHint => - _localizedValues[localeCode]['client_portal_domain_hint'] ?? - _localizedValues['en']['client_portal_domain_hint']; + String? get clientPortalDomainHint => + _localizedValues[localeCode]!['client_portal_domain_hint'] ?? + _localizedValues['en']!['client_portal_domain_hint']; - String get changeEmail => - _localizedValues[localeCode]['change_email'] ?? - _localizedValues['en']['change_email']; + String? get changeEmail => + _localizedValues[localeCode]!['change_email'] ?? + _localizedValues['en']!['change_email']; - String get freeTrial => - _localizedValues[localeCode]['free_trial'] ?? - _localizedValues['en']['free_trial']; + String? get freeTrial => + _localizedValues[localeCode]!['free_trial'] ?? + _localizedValues['en']!['free_trial']; - String get freeTrialEndsInDays => - _localizedValues[localeCode]['free_trial_ends_in_days'] ?? - _localizedValues['en']['free_trial_ends_in_days']; + String? get freeTrialEndsInDays => + _localizedValues[localeCode]!['free_trial_ends_in_days'] ?? + _localizedValues['en']!['free_trial_ends_in_days']; - String get freeTrialEndsToday => - _localizedValues[localeCode]['free_trial_ends_today'] ?? - _localizedValues['en']['free_trial_ends_today']; + String? get freeTrialEndsToday => + _localizedValues[localeCode]!['free_trial_ends_today'] ?? + _localizedValues['en']!['free_trial_ends_today']; - String get checkStatus => - _localizedValues[localeCode]['check_status'] ?? - _localizedValues['en']['check_status']; + String? get checkStatus => + _localizedValues[localeCode]!['check_status'] ?? + _localizedValues['en']!['check_status']; - String get reviewApp => - _localizedValues[localeCode]['review_app'] ?? - _localizedValues['en']['review_app']; + String? get reviewApp => + _localizedValues[localeCode]!['review_app'] ?? + _localizedValues['en']!['review_app']; - String get netSubtotal => - _localizedValues[localeCode]['net_subtotal'] ?? - _localizedValues['en']['net_subtotal']; + String? get netSubtotal => + _localizedValues[localeCode]!['net_subtotal'] ?? + _localizedValues['en']!['net_subtotal']; - String get sidebarActiveBackgroundColor => - _localizedValues[localeCode]['sidebar_active_background_color'] ?? - _localizedValues['en']['sidebar_active_background_color']; + String? get sidebarActiveBackgroundColor => + _localizedValues[localeCode]!['sidebar_active_background_color'] ?? + _localizedValues['en']!['sidebar_active_background_color']; - String get sidebarActiveFontColor => - _localizedValues[localeCode]['sidebar_active_font_color'] ?? - _localizedValues['en']['sidebar_active_font_color']; + String? get sidebarActiveFontColor => + _localizedValues[localeCode]!['sidebar_active_font_color'] ?? + _localizedValues['en']!['sidebar_active_font_color']; - String get sidebarInactiveBackgroundColor => - _localizedValues[localeCode]['sidebar_inactive_background_color'] ?? - _localizedValues['en']['sidebar_inactive_background_color']; + String? get sidebarInactiveBackgroundColor => + _localizedValues[localeCode]!['sidebar_inactive_background_color'] ?? + _localizedValues['en']!['sidebar_inactive_background_color']; - String get sidebarInactiveFontColor => - _localizedValues[localeCode]['sidebar_inactive_font_color'] ?? - _localizedValues['en']['sidebar_inactive_font_color']; + String? get sidebarInactiveFontColor => + _localizedValues[localeCode]!['sidebar_inactive_font_color'] ?? + _localizedValues['en']!['sidebar_inactive_font_color']; - String get tableAlternateRowBackgroundColor => - _localizedValues[localeCode]['table_alternate_row_background_color'] ?? - _localizedValues['en']['table_alternate_row_background_color']; + String? get tableAlternateRowBackgroundColor => + _localizedValues[localeCode]!['table_alternate_row_background_color'] ?? + _localizedValues['en']!['table_alternate_row_background_color']; - String get invoiceHeaderBackgroundColor => - _localizedValues[localeCode]['invoice_header_background_color'] ?? - _localizedValues['en']['invoice_header_background_color']; + String? get invoiceHeaderBackgroundColor => + _localizedValues[localeCode]!['invoice_header_background_color'] ?? + _localizedValues['en']!['invoice_header_background_color']; - String get invoiceHeaderFontColor => - _localizedValues[localeCode]['invoice_header_font_color'] ?? - _localizedValues['en']['invoice_header_font_color']; + String? get invoiceHeaderFontColor => + _localizedValues[localeCode]!['invoice_header_font_color'] ?? + _localizedValues['en']!['invoice_header_font_color']; - String get colors => - _localizedValues[localeCode]['colors'] ?? - _localizedValues['en']['colors']; + String? get colors => + _localizedValues[localeCode]!['colors'] ?? + _localizedValues['en']!['colors']; - String get customColors => - _localizedValues[localeCode]['custom_colors'] ?? - _localizedValues['en']['custom_colors']; + String? get customColors => + _localizedValues[localeCode]!['custom_colors'] ?? + _localizedValues['en']!['custom_colors']; - String get statusColorTheme => - _localizedValues[localeCode]['status_color_theme'] ?? - _localizedValues['en']['status_color_theme']; + String? get statusColorTheme => + _localizedValues[localeCode]!['status_color_theme'] ?? + _localizedValues['en']!['status_color_theme']; - String get loadColorTheme => - _localizedValues[localeCode]['load_color_theme'] ?? - _localizedValues['en']['load_color_theme']; + String? get loadColorTheme => + _localizedValues[localeCode]!['load_color_theme'] ?? + _localizedValues['en']!['load_color_theme']; - String get clearAll => - _localizedValues[localeCode]['clear_all'] ?? - _localizedValues['en']['clear_all']; + String? get clearAll => + _localizedValues[localeCode]!['clear_all'] ?? + _localizedValues['en']!['clear_all']; - String get contrast => - _localizedValues[localeCode]['contrast'] ?? - _localizedValues['en']['contrast']; + String? get contrast => + _localizedValues[localeCode]!['contrast'] ?? + _localizedValues['en']!['contrast']; - String get exportColors => - _localizedValues[localeCode]['export_colors'] ?? - _localizedValues['en']['export_colors']; + String? get exportColors => + _localizedValues[localeCode]!['export_colors'] ?? + _localizedValues['en']!['export_colors']; - String get importColors => - _localizedValues[localeCode]['import_colors'] ?? - _localizedValues['en']['import_colors']; + String? get importColors => + _localizedValues[localeCode]!['import_colors'] ?? + _localizedValues['en']!['import_colors']; - String get previousPage => - _localizedValues[localeCode]['previous_page'] ?? - _localizedValues['en']['previous_page']; + String? get previousPage => + _localizedValues[localeCode]!['previous_page'] ?? + _localizedValues['en']!['previous_page']; - String get nextPage => - _localizedValues[localeCode]['next_page'] ?? - _localizedValues['en']['next_page']; + String? get nextPage => + _localizedValues[localeCode]!['next_page'] ?? + _localizedValues['en']!['next_page']; - String get addSecondContact => - _localizedValues[localeCode]['add_second_contact'] ?? - _localizedValues['en']['add_second_contact']; + String? get addSecondContact => + _localizedValues[localeCode]!['add_second_contact'] ?? + _localizedValues['en']!['add_second_contact']; - String get userGuide => - _localizedValues[localeCode]['user_guide'] ?? - _localizedValues['en']['user_guide']; + String? get userGuide => + _localizedValues[localeCode]!['user_guide'] ?? + _localizedValues['en']!['user_guide']; - String get enableMarkdown => - _localizedValues[localeCode]['enable_markdown'] ?? - _localizedValues['en']['enable_markdown']; + String? get enableMarkdown => + _localizedValues[localeCode]!['enable_markdown'] ?? + _localizedValues['en']!['enable_markdown']; - String get enableMarkdownHelp => - _localizedValues[localeCode]['enable_markdown_help'] ?? - _localizedValues['en']['enable_markdown_help']; + String? get enableMarkdownHelp => + _localizedValues[localeCode]!['enable_markdown_help'] ?? + _localizedValues['en']!['enable_markdown_help']; - String get expenseTaxHelp => - _localizedValues[localeCode]['expense_tax_help'] ?? - _localizedValues['en']['expense_tax_help']; + String? get expenseTaxHelp => + _localizedValues[localeCode]!['expense_tax_help'] ?? + _localizedValues['en']!['expense_tax_help']; - String get useWebAppToConnectGmail => - _localizedValues[localeCode]['use_web_app_to_connect_gmail'] ?? - _localizedValues['en']['use_web_app_to_connect_gmail']; + String? get useWebAppToConnectGmail => + _localizedValues[localeCode]!['use_web_app_to_connect_gmail'] ?? + _localizedValues['en']!['use_web_app_to_connect_gmail']; - String get selectMethod => - _localizedValues[localeCode]['select_method'] ?? - _localizedValues['en']['select_method']; + String? get selectMethod => + _localizedValues[localeCode]!['select_method'] ?? + _localizedValues['en']!['select_method']; - String get selectPlatform => - _localizedValues[localeCode]['select_platform'] ?? - _localizedValues['en']['select_platform']; + String? get selectPlatform => + _localizedValues[localeCode]!['select_platform'] ?? + _localizedValues['en']!['select_platform']; - String get googleAnalyticsTrackingId => - _localizedValues[localeCode]['google_analytics_tracking_id'] ?? - _localizedValues['en']['google_analytics_tracking_id']; + String? get googleAnalyticsTrackingId => + _localizedValues[localeCode]!['google_analytics_tracking_id'] ?? + _localizedValues['en']!['google_analytics_tracking_id']; - String get googleAnalytics => - _localizedValues[localeCode]['google_analytics'] ?? - _localizedValues['en']['google_analytics']; + String? get googleAnalytics => + _localizedValues[localeCode]!['google_analytics'] ?? + _localizedValues['en']!['google_analytics']; - String get useCommaAsDecimalPlace => - _localizedValues[localeCode]['use_comma_as_decimal_place'] ?? - _localizedValues['en']['use_comma_as_decimal_place']; + String? get useCommaAsDecimalPlace => + _localizedValues[localeCode]!['use_comma_as_decimal_place'] ?? + _localizedValues['en']!['use_comma_as_decimal_place']; - String get decimalComma => - _localizedValues[localeCode]['decimal_comma'] ?? - _localizedValues['en']['decimal_comma']; + String? get decimalComma => + _localizedValues[localeCode]!['decimal_comma'] ?? + _localizedValues['en']!['decimal_comma']; - String get verifyCustomers => - _localizedValues[localeCode]['verify_customers'] ?? - _localizedValues['en']['verify_customers']; + String? get verifyCustomers => + _localizedValues[localeCode]!['verify_customers'] ?? + _localizedValues['en']!['verify_customers']; - String get customerCount => - _localizedValues[localeCode]['customer_count'] ?? - _localizedValues['en']['customer_count']; + String? get customerCount => + _localizedValues[localeCode]!['customer_count'] ?? + _localizedValues['en']!['customer_count']; - String get persistData => - _localizedValues[localeCode]['persist_data'] ?? - _localizedValues['en']['persist_data']; + String? get persistData => + _localizedValues[localeCode]!['persist_data'] ?? + _localizedValues['en']!['persist_data']; - String get changePlan => - _localizedValues[localeCode]['change_plan'] ?? - _localizedValues['en']['change_plan']; + String? get changePlan => + _localizedValues[localeCode]!['change_plan'] ?? + _localizedValues['en']!['change_plan']; - String get isInvoiced => - _localizedValues[localeCode]['is_invoiced'] ?? - _localizedValues['en']['is_invoiced']; + String? get isInvoiced => + _localizedValues[localeCode]!['is_invoiced'] ?? + _localizedValues['en']!['is_invoiced']; - String get includeDrafts => - _localizedValues[localeCode]['include_drafts'] ?? - _localizedValues['en']['include_drafts']; + String? get includeDrafts => + _localizedValues[localeCode]!['include_drafts'] ?? + _localizedValues['en']!['include_drafts']; - String get includeDraftsHelp => - _localizedValues[localeCode]['include_drafts_help'] ?? - _localizedValues['en']['include_drafts_help']; + String? get includeDraftsHelp => + _localizedValues[localeCode]!['include_drafts_help'] ?? + _localizedValues['en']!['include_drafts_help']; - String get lastSentDate => - _localizedValues[localeCode]['last_sent_date'] ?? - _localizedValues['en']['last_sent_date']; + String? get lastSentDate => + _localizedValues[localeCode]!['last_sent_date'] ?? + _localizedValues['en']!['last_sent_date']; - String get recurringExpense => - _localizedValues[localeCode]['recurring_expense'] ?? - _localizedValues['en']['recurring_expense']; + String? get recurringExpense => + _localizedValues[localeCode]!['recurring_expense'] ?? + _localizedValues['en']!['recurring_expense']; - String get newRecurringExpense => - _localizedValues[localeCode]['new_recurring_expense'] ?? - _localizedValues['en']['new_recurring_expense']; + String? get newRecurringExpense => + _localizedValues[localeCode]!['new_recurring_expense'] ?? + _localizedValues['en']!['new_recurring_expense']; - String get createdRecurringExpense => - _localizedValues[localeCode]['created_recurring_expense'] ?? - _localizedValues['en']['created_recurring_expense']; + String? get createdRecurringExpense => + _localizedValues[localeCode]!['created_recurring_expense'] ?? + _localizedValues['en']!['created_recurring_expense']; - String get updatedRecurringExpense => - _localizedValues[localeCode]['updated_recurring_expense'] ?? - _localizedValues['en']['updated_recurring_expense']; + String? get updatedRecurringExpense => + _localizedValues[localeCode]!['updated_recurring_expense'] ?? + _localizedValues['en']!['updated_recurring_expense']; - String get archivedRecurringExpense => - _localizedValues[localeCode]['archived_recurring_expense'] ?? - _localizedValues['en']['archived_recurring_expense']; + String? get archivedRecurringExpense => + _localizedValues[localeCode]!['archived_recurring_expense'] ?? + _localizedValues['en']!['archived_recurring_expense']; - String get deletedRecurringExpense => - _localizedValues[localeCode]['deleted_recurring_expense'] ?? - _localizedValues['en']['deleted_recurring_expense']; + String? get deletedRecurringExpense => + _localizedValues[localeCode]!['deleted_recurring_expense'] ?? + _localizedValues['en']!['deleted_recurring_expense']; - String get restoredRecurringExpense => - _localizedValues[localeCode]['restored_recurring_expense'] ?? - _localizedValues['en']['restored_recurring_expense']; + String? get restoredRecurringExpense => + _localizedValues[localeCode]!['restored_recurring_expense'] ?? + _localizedValues['en']!['restored_recurring_expense']; - String get searchRecurringExpense => - _localizedValues[localeCode]['search_recurring_expense'] ?? - _localizedValues['en']['search_recurring_expense']; + String? get searchRecurringExpense => + _localizedValues[localeCode]!['search_recurring_expense'] ?? + _localizedValues['en']!['search_recurring_expense']; - String get searchRecurringExpenses => - _localizedValues[localeCode]['search_recurring_expenses'] ?? - _localizedValues['en']['search_recurring_expenses']; + String? get searchRecurringExpenses => + _localizedValues[localeCode]!['search_recurring_expenses'] ?? + _localizedValues['en']!['search_recurring_expenses']; - String get cloneToExpense => - _localizedValues[localeCode]['clone_to_expense'] ?? - _localizedValues['en']['clone_to_expense']; + String? get cloneToExpense => + _localizedValues[localeCode]!['clone_to_expense'] ?? + _localizedValues['en']!['clone_to_expense']; - String get fromName => - _localizedValues[localeCode]['from_name'] ?? - _localizedValues['en']['from_name']; + String? get fromName => + _localizedValues[localeCode]!['from_name'] ?? + _localizedValues['en']!['from_name']; - String get bulkEmailInvoices => - _localizedValues[localeCode]['bulk_email_invoices'] ?? - _localizedValues['en']['bulk_email_invoices']; + String? get bulkEmailInvoices => + _localizedValues[localeCode]!['bulk_email_invoices'] ?? + _localizedValues['en']!['bulk_email_invoices']; - String get bulkEmailQuotes => - _localizedValues[localeCode]['bulk_email_quotes'] ?? - _localizedValues['en']['bulk_email_quotes']; + String? get bulkEmailQuotes => + _localizedValues[localeCode]!['bulk_email_quotes'] ?? + _localizedValues['en']!['bulk_email_quotes']; - String get bulkEmailCredits => - _localizedValues[localeCode]['bulk_email_credits'] ?? - _localizedValues['en']['bulk_email_credits']; + String? get bulkEmailCredits => + _localizedValues[localeCode]!['bulk_email_credits'] ?? + _localizedValues['en']!['bulk_email_credits']; - String get grossLineTotal => - _localizedValues[localeCode]['gross_line_total'] ?? - _localizedValues['en']['gross_line_total']; + String? get grossLineTotal => + _localizedValues[localeCode]!['gross_line_total'] ?? + _localizedValues['en']!['gross_line_total']; - String get forBestPerformance => - _localizedValues[localeCode]['for_best_performance'] ?? - _localizedValues['en']['for_best_performance']; + String? get forBestPerformance => + _localizedValues[localeCode]!['for_best_performance'] ?? + _localizedValues['en']!['for_best_performance']; - String get app => - _localizedValues[localeCode]['app'] ?? _localizedValues['en']['app']; + String? get app => + _localizedValues[localeCode]!['app'] ?? _localizedValues['en']!['app']; - String get errorCrossClientTasks => - _localizedValues[localeCode]['error_cross_client_tasks'] ?? - _localizedValues['en']['error_cross_client_tasks']; + String? get errorCrossClientTasks => + _localizedValues[localeCode]!['error_cross_client_tasks'] ?? + _localizedValues['en']!['error_cross_client_tasks']; - String get errorCrossClientExpenses => - _localizedValues[localeCode]['error_cross_client_expenses'] ?? - _localizedValues['en']['error_cross_client_expenses']; + String? get errorCrossClientExpenses => + _localizedValues[localeCode]!['error_cross_client_expenses'] ?? + _localizedValues['en']!['error_cross_client_expenses']; - String get webhookSuccess => - _localizedValues[localeCode]['webhook_success'] ?? - _localizedValues['en']['webhook_success']; + String? get webhookSuccess => + _localizedValues[localeCode]!['webhook_success'] ?? + _localizedValues['en']!['webhook_success']; - String get whyAreYouLeaving => - _localizedValues[localeCode]['why_are_you_leaving'] ?? - _localizedValues['en']['why_are_you_leaving']; + String? get whyAreYouLeaving => + _localizedValues[localeCode]!['why_are_you_leaving'] ?? + _localizedValues['en']!['why_are_you_leaving']; - String get updatedCompany => - _localizedValues[localeCode]['updated_company'] ?? - _localizedValues['en']['updated_company']; + String? get updatedCompany => + _localizedValues[localeCode]!['updated_company'] ?? + _localizedValues['en']!['updated_company']; - String get setDefaultCompany => - _localizedValues[localeCode]['set_default_company'] ?? - _localizedValues['en']['set_default_company']; + String? get setDefaultCompany => + _localizedValues[localeCode]!['set_default_company'] ?? + _localizedValues['en']!['set_default_company']; - String get system => - _localizedValues[localeCode]['system'] ?? - _localizedValues['en']['system']; + String? get system => + _localizedValues[localeCode]!['system'] ?? + _localizedValues['en']!['system']; - String get updateAllRecords => - _localizedValues[localeCode]['update_all_records'] ?? - _localizedValues['en']['update_all_records']; + String? get updateAllRecords => + _localizedValues[localeCode]!['update_all_records'] ?? + _localizedValues['en']!['update_all_records']; - String get ideal => - _localizedValues[localeCode]['ideal'] ?? _localizedValues['en']['ideal']; + String? get ideal => + _localizedValues[localeCode]!['ideal'] ?? _localizedValues['en']!['ideal']; - String get sepa => - _localizedValues[localeCode]['sepa'] ?? _localizedValues['en']['sepa']; + String? get sepa => + _localizedValues[localeCode]!['sepa'] ?? _localizedValues['en']!['sepa']; - String get giropay => - _localizedValues[localeCode]['giropay'] ?? - _localizedValues['en']['giropay']; + String? get giropay => + _localizedValues[localeCode]!['giropay'] ?? + _localizedValues['en']!['giropay']; - String get przelewy24 => - _localizedValues[localeCode]['przelewy24'] ?? - _localizedValues['en']['przelewy24']; + String? get przelewy24 => + _localizedValues[localeCode]!['przelewy24'] ?? + _localizedValues['en']!['przelewy24']; - String get eps => - _localizedValues[localeCode]['eps'] ?? _localizedValues['en']['eps']; + String? get eps => + _localizedValues[localeCode]!['eps'] ?? _localizedValues['en']!['eps']; - String get fpx => - _localizedValues[localeCode]['fpx'] ?? _localizedValues['en']['fpx']; + String? get fpx => + _localizedValues[localeCode]!['fpx'] ?? _localizedValues['en']!['fpx']; - String get bancontact => - _localizedValues[localeCode]['bancontact'] ?? - _localizedValues['en']['bancontact']; + String? get bancontact => + _localizedValues[localeCode]!['bancontact'] ?? + _localizedValues['en']!['bancontact']; - String get viewStatement => - _localizedValues[localeCode]['view_statement'] ?? - _localizedValues['en']['view_statement']; + String? get viewStatement => + _localizedValues[localeCode]!['view_statement'] ?? + _localizedValues['en']!['view_statement']; - String get viewExpense => - _localizedValues[localeCode]['view_expense'] ?? - _localizedValues['en']['view_expense']; + String? get viewExpense => + _localizedValues[localeCode]!['view_expense'] ?? + _localizedValues['en']!['view_expense']; - String get unauthorizedStripeWarning => - _localizedValues[localeCode]['unauthorized_stripe_warning'] ?? - _localizedValues['en']['unauthorized_stripe_warning']; + String? get unauthorizedStripeWarning => + _localizedValues[localeCode]!['unauthorized_stripe_warning'] ?? + _localizedValues['en']!['unauthorized_stripe_warning']; - String get registration => - _localizedValues[localeCode]['registration'] ?? - _localizedValues['en']['registration']; + String? get registration => + _localizedValues[localeCode]!['registration'] ?? + _localizedValues['en']!['registration']; - String get hasTasks => - _localizedValues[localeCode]['has_tasks'] ?? - _localizedValues['en']['has_tasks']; + String? get hasTasks => + _localizedValues[localeCode]!['has_tasks'] ?? + _localizedValues['en']!['has_tasks']; - String get clientPostalCode => - _localizedValues[localeCode]['client_postal_code'] ?? - _localizedValues['en']['client_postal_code']; + String? get clientPostalCode => + _localizedValues[localeCode]!['client_postal_code'] ?? + _localizedValues['en']!['client_postal_code']; - String get clientVatNumber => - _localizedValues[localeCode]['client_vat_number'] ?? - _localizedValues['en']['client_vat_number']; + String? get clientVatNumber => + _localizedValues[localeCode]!['client_vat_number'] ?? + _localizedValues['en']!['client_vat_number']; - String get persistDataHelp => - _localizedValues[localeCode]['persist_data_help'] ?? - _localizedValues['en']['persist_data_help']; + String? get persistDataHelp => + _localizedValues[localeCode]!['persist_data_help'] ?? + _localizedValues['en']!['persist_data_help']; - String get persistUiHelp => - _localizedValues[localeCode]['persist_ui_help'] ?? - _localizedValues['en']['persist_ui_help']; + String? get persistUiHelp => + _localizedValues[localeCode]!['persist_ui_help'] ?? + _localizedValues['en']!['persist_ui_help']; - String get persistUi => - _localizedValues[localeCode]['persist_ui'] ?? - _localizedValues['en']['persist_ui']; + String? get persistUi => + _localizedValues[localeCode]!['persist_ui'] ?? + _localizedValues['en']!['persist_ui']; - String get acss => - _localizedValues[localeCode]['acss'] ?? _localizedValues['en']['acss']; + String? get acss => + _localizedValues[localeCode]!['acss'] ?? _localizedValues['en']!['acss']; - String get becs => - _localizedValues[localeCode]['becs'] ?? _localizedValues['en']['becs']; + String? get becs => + _localizedValues[localeCode]!['becs'] ?? _localizedValues['en']!['becs']; - String get addToInvoices => - _localizedValues[localeCode]['add_to_invoices'] ?? - _localizedValues['en']['add_to_invoices']; + String? get addToInvoices => + _localizedValues[localeCode]!['add_to_invoices'] ?? + _localizedValues['en']!['add_to_invoices']; - String get disconnect => - _localizedValues[localeCode]['disconnect'] ?? - _localizedValues['en']['disconnect']; + String? get disconnect => + _localizedValues[localeCode]!['disconnect'] ?? + _localizedValues['en']!['disconnect']; - String get disconnectedGateway => - _localizedValues[localeCode]['disconnected_gateway'] ?? - _localizedValues['en']['disconnected_gateway']; + String? get disconnectedGateway => + _localizedValues[localeCode]!['disconnected_gateway'] ?? + _localizedValues['en']!['disconnected_gateway']; - String get recommendDesktop => - _localizedValues[localeCode]['recommend_desktop'] ?? - _localizedValues['en']['recommend_desktop']; + String? get recommendDesktop => + _localizedValues[localeCode]!['recommend_desktop'] ?? + _localizedValues['en']!['recommend_desktop']; - String get recommendMobile => - _localizedValues[localeCode]['recommend_mobile'] ?? - _localizedValues['en']['recommend_mobile']; + String? get recommendMobile => + _localizedValues[localeCode]!['recommend_mobile'] ?? + _localizedValues['en']!['recommend_mobile']; - String get pleaseSetAPassword => - _localizedValues[localeCode]['please_set_a_password'] ?? - _localizedValues['en']['please_set_a_password']; + String? get pleaseSetAPassword => + _localizedValues[localeCode]!['please_set_a_password'] ?? + _localizedValues['en']!['please_set_a_password']; - String get setPassword => - _localizedValues[localeCode]['set_password'] ?? - _localizedValues['en']['set_password']; + String? get setPassword => + _localizedValues[localeCode]!['set_password'] ?? + _localizedValues['en']!['set_password']; - String get directDebit => - _localizedValues[localeCode]['direct_debit'] ?? - _localizedValues['en']['direct_debit']; + String? get directDebit => + _localizedValues[localeCode]!['direct_debit'] ?? + _localizedValues['en']!['direct_debit']; - String get applyCredit => - _localizedValues[localeCode]['apply_credit'] ?? - _localizedValues['en']['apply_credit']; + String? get applyCredit => + _localizedValues[localeCode]!['apply_credit'] ?? + _localizedValues['en']!['apply_credit']; - String get creditIsMoreThanInvoice => - _localizedValues[localeCode]['credit_is_more_than_invoice'] ?? - _localizedValues['en']['credit_is_more_than_invoice']; + String? get creditIsMoreThanInvoice => + _localizedValues[localeCode]!['credit_is_more_than_invoice'] ?? + _localizedValues['en']!['credit_is_more_than_invoice']; - String get clickSelected => - _localizedValues[localeCode]['click_selected'] ?? - _localizedValues['en']['click_selected']; + String? get clickSelected => + _localizedValues[localeCode]!['click_selected'] ?? + _localizedValues['en']!['click_selected']; - String get editRecord => - _localizedValues[localeCode]['edit_record'] ?? - _localizedValues['en']['edit_record']; + String? get editRecord => + _localizedValues[localeCode]!['edit_record'] ?? + _localizedValues['en']!['edit_record']; - String get hidePreview => - _localizedValues[localeCode]['hide_preview'] ?? - _localizedValues['en']['hide_preview']; + String? get hidePreview => + _localizedValues[localeCode]!['hide_preview'] ?? + _localizedValues['en']!['hide_preview']; - String get instantBankPay => - _localizedValues[localeCode]['instant_bank_pay'] ?? - _localizedValues['en']['instant_bank_pay']; + String? get instantBankPay => + _localizedValues[localeCode]!['instant_bank_pay'] ?? + _localizedValues['en']!['instant_bank_pay']; - String get remindMe => - _localizedValues[localeCode]['remind_me'] ?? - _localizedValues['en']['remind_me']; + String? get remindMe => + _localizedValues[localeCode]!['remind_me'] ?? + _localizedValues['en']!['remind_me']; - String get printPdf => - _localizedValues[localeCode]['print_pdf'] ?? - _localizedValues['en']['print_pdf']; + String? get printPdf => + _localizedValues[localeCode]!['print_pdf'] ?? + _localizedValues['en']!['print_pdf']; - String get showPdfPreview => - _localizedValues[localeCode]['show_pdf_preview'] ?? - _localizedValues['en']['show_pdf_preview']; + String? get showPdfPreview => + _localizedValues[localeCode]!['show_pdf_preview'] ?? + _localizedValues['en']!['show_pdf_preview']; - String get showPdfPreviewHelp => - _localizedValues[localeCode]['show_pdf_preview_help'] ?? - _localizedValues['en']['show_pdf_preview_help']; + String? get showPdfPreviewHelp => + _localizedValues[localeCode]!['show_pdf_preview_help'] ?? + _localizedValues['en']!['show_pdf_preview_help']; - String get normal => - _localizedValues[localeCode]['normal'] ?? - _localizedValues['en']['normal']; + String? get normal => + _localizedValues[localeCode]!['normal'] ?? + _localizedValues['en']!['normal']; - String get large => - _localizedValues[localeCode]['large'] ?? _localizedValues['en']['large']; + String? get large => + _localizedValues[localeCode]!['large'] ?? _localizedValues['en']!['large']; - String get extraLarge => - _localizedValues[localeCode]['extra_large'] ?? - _localizedValues['en']['extra_large']; + String? get extraLarge => + _localizedValues[localeCode]!['extra_large'] ?? + _localizedValues['en']!['extra_large']; - String get invoicePaid => - _localizedValues[localeCode]['invoice_paid'] ?? - _localizedValues['en']['invoice_paid']; + String? get invoicePaid => + _localizedValues[localeCode]!['invoice_paid'] ?? + _localizedValues['en']!['invoice_paid']; - String get remaining => - _localizedValues[localeCode]['remaining'] ?? - _localizedValues['en']['remaining']; + String? get remaining => + _localizedValues[localeCode]!['remaining'] ?? + _localizedValues['en']!['remaining']; - String get htmlPreviewWarning => - _localizedValues[localeCode]['html_preview_warning'] ?? - _localizedValues['en']['html_preview_warning']; + String? get htmlPreviewWarning => + _localizedValues[localeCode]!['html_preview_warning'] ?? + _localizedValues['en']!['html_preview_warning']; - String get waitForLoading => - _localizedValues[localeCode]['wait_for_loading'] ?? - _localizedValues['en']['wait_for_loading']; + String? get waitForLoading => + _localizedValues[localeCode]!['wait_for_loading'] ?? + _localizedValues['en']!['wait_for_loading']; - String get waitForSaving => - _localizedValues[localeCode]['wait_for_saving'] ?? - _localizedValues['en']['wait_for_saving']; + String? get waitForSaving => + _localizedValues[localeCode]!['wait_for_saving'] ?? + _localizedValues['en']!['wait_for_saving']; - String get markedCreditAsPaid => - _localizedValues[localeCode]['marked_credit_as_paid'] ?? - _localizedValues['en']['marked_credit_as_paid']; + String? get markedCreditAsPaid => + _localizedValues[localeCode]!['marked_credit_as_paid'] ?? + _localizedValues['en']!['marked_credit_as_paid']; - String get markedCreditsAsPaid => - _localizedValues[localeCode]['marked_credits_as_paid'] ?? - _localizedValues['en']['marked_credits_as_paid']; + String? get markedCreditsAsPaid => + _localizedValues[localeCode]!['marked_credits_as_paid'] ?? + _localizedValues['en']!['marked_credits_as_paid']; - String get small => - _localizedValues[localeCode]['small'] ?? _localizedValues['en']['small']; + String? get small => + _localizedValues[localeCode]!['small'] ?? _localizedValues['en']!['small']; - String get upgradeToAddCompany => - _localizedValues[localeCode]['upgrade_to_add_company'] ?? - _localizedValues['en']['upgrade_to_add_company']; + String? get upgradeToAddCompany => + _localizedValues[localeCode]!['upgrade_to_add_company'] ?? + _localizedValues['en']!['upgrade_to_add_company']; - String get customEmailsDisabledHelp => - _localizedValues[localeCode]['custom_emails_disabled_help'] ?? - _localizedValues['en']['custom_emails_disabled_help']; + String? get customEmailsDisabledHelp => + _localizedValues[localeCode]!['custom_emails_disabled_help'] ?? + _localizedValues['en']!['custom_emails_disabled_help']; - String get purgedClient => - _localizedValues[localeCode]['purged_client'] ?? - _localizedValues['en']['purged_client']; + String? get purgedClient => + _localizedValues[localeCode]!['purged_client'] ?? + _localizedValues['en']!['purged_client']; - String get convertTo => - _localizedValues[localeCode]['convert_to'] ?? - _localizedValues['en']['convert_to']; + String? get convertTo => + _localizedValues[localeCode]!['convert_to'] ?? + _localizedValues['en']!['convert_to']; - String get clientCurrency => - _localizedValues[localeCode]['client_currency'] ?? - _localizedValues['en']['client_currency']; + String? get clientCurrency => + _localizedValues[localeCode]!['client_currency'] ?? + _localizedValues['en']!['client_currency']; - String get companyCurrency => - _localizedValues[localeCode]['company_currency'] ?? - _localizedValues['en']['company_currency']; + String? get companyCurrency => + _localizedValues[localeCode]!['company_currency'] ?? + _localizedValues['en']!['company_currency']; - String get ageGroupPaid => - _localizedValues[localeCode]['age_group_paid'] ?? - _localizedValues['en']['age_group_paid']; + String? get ageGroupPaid => + _localizedValues[localeCode]!['age_group_paid'] ?? + _localizedValues['en']!['age_group_paid']; - String get id => - _localizedValues[localeCode]['id'] ?? _localizedValues['en']['id']; + String? get id => + _localizedValues[localeCode]!['id'] ?? _localizedValues['en']!['id']; - String get isPaid => - _localizedValues[localeCode]['is_paid'] ?? - _localizedValues['en']['is_paid']; + String? get isPaid => + _localizedValues[localeCode]!['is_paid'] ?? + _localizedValues['en']!['is_paid']; - String get dueOnReceipt => - _localizedValues[localeCode]['due_on_receipt'] ?? - _localizedValues['en']['due_on_receipt']; + String? get dueOnReceipt => + _localizedValues[localeCode]!['due_on_receipt'] ?? + _localizedValues['en']!['due_on_receipt']; - String get startFreeTrialMessage => - _localizedValues[localeCode]['start_free_trial_message'] ?? - _localizedValues['en']['start_free_trial_message']; + String? get startFreeTrialMessage => + _localizedValues[localeCode]!['start_free_trial_message'] ?? + _localizedValues['en']!['start_free_trial_message']; - String get startFreeTrial => - _localizedValues[localeCode]['start_free_trial'] ?? - _localizedValues['en']['start_free_trial']; + String? get startFreeTrial => + _localizedValues[localeCode]!['start_free_trial'] ?? + _localizedValues['en']!['start_free_trial']; - String get loadPdf => - _localizedValues[localeCode]['load_pdf'] ?? - _localizedValues['en']['load_pdf']; + String? get loadPdf => + _localizedValues[localeCode]!['load_pdf'] ?? + _localizedValues['en']!['load_pdf']; - String get clientShippingCity => - _localizedValues[localeCode]['client_shipping_city'] ?? - _localizedValues['en']['client_shipping_city']; + String? get clientShippingCity => + _localizedValues[localeCode]!['client_shipping_city'] ?? + _localizedValues['en']!['client_shipping_city']; - String get clientShippingState => - _localizedValues[localeCode]['client_shipping_state'] ?? - _localizedValues['en']['client_shipping_state']; + String? get clientShippingState => + _localizedValues[localeCode]!['client_shipping_state'] ?? + _localizedValues['en']!['client_shipping_state']; - String get clientShippingPostalCode => - _localizedValues[localeCode]['client_shipping_postal_code'] ?? - _localizedValues['en']['client_shipping_postal_code']; + String? get clientShippingPostalCode => + _localizedValues[localeCode]!['client_shipping_postal_code'] ?? + _localizedValues['en']!['client_shipping_postal_code']; - String get clientShippingCountry => - _localizedValues[localeCode]['client_shipping_country'] ?? - _localizedValues['en']['client_shipping_country']; + String? get clientShippingCountry => + _localizedValues[localeCode]!['client_shipping_country'] ?? + _localizedValues['en']!['client_shipping_country']; - String get invalidTime => - _localizedValues[localeCode]['invalid_time'] ?? - _localizedValues['en']['invalid_time']; + String? get invalidTime => + _localizedValues[localeCode]!['invalid_time'] ?? + _localizedValues['en']!['invalid_time']; - String get clientWebsite => - _localizedValues[localeCode]['client_website'] ?? - _localizedValues['en']['client_website']; + String? get clientWebsite => + _localizedValues[localeCode]!['client_website'] ?? + _localizedValues['en']!['client_website']; - String get approve => - _localizedValues[localeCode]['approve'] ?? - _localizedValues['en']['approve']; + String? get approve => + _localizedValues[localeCode]!['approve'] ?? + _localizedValues['en']!['approve']; - String get approvedQuote => - _localizedValues[localeCode]['approved_quote'] ?? - _localizedValues['en']['approved_quote']; + String? get approvedQuote => + _localizedValues[localeCode]!['approved_quote'] ?? + _localizedValues['en']!['approved_quote']; - String get approvedQuotes => - _localizedValues[localeCode]['approved_quotes'] ?? - _localizedValues['en']['approved_quotes']; + String? get approvedQuotes => + _localizedValues[localeCode]!['approved_quotes'] ?? + _localizedValues['en']!['approved_quotes']; - String get startedTasks => - _localizedValues[localeCode]['started_tasks'] ?? - _localizedValues['en']['started_tasks']; + String? get startedTasks => + _localizedValues[localeCode]!['started_tasks'] ?? + _localizedValues['en']!['started_tasks']; - String get stoppedTasks => - _localizedValues[localeCode]['stopped_tasks'] ?? - _localizedValues['en']['stopped_tasks']; + String? get stoppedTasks => + _localizedValues[localeCode]!['stopped_tasks'] ?? + _localizedValues['en']!['stopped_tasks']; - String get upgradeToViewReports => - _localizedValues[localeCode]['upgrade_to_view_reports'] ?? - _localizedValues['en']['upgrade_to_view_reports']; + String? get upgradeToViewReports => + _localizedValues[localeCode]!['upgrade_to_view_reports'] ?? + _localizedValues['en']!['upgrade_to_view_reports']; - String get releaseNotes => - _localizedValues[localeCode]['release_notes'] ?? - _localizedValues['en']['release_notes']; + String? get releaseNotes => + _localizedValues[localeCode]!['release_notes'] ?? + _localizedValues['en']!['release_notes']; - String get jsonHelp => - _localizedValues[localeCode]['json_help'] ?? - _localizedValues['en']['json_help']; + String? get jsonHelp => + _localizedValues[localeCode]!['json_help'] ?? + _localizedValues['en']!['json_help']; - String get enableEmailMarkdown => - _localizedValues[localeCode]['enable_email_markdown'] ?? - _localizedValues['en']['enable_email_markdown']; + String? get enableEmailMarkdown => + _localizedValues[localeCode]!['enable_email_markdown'] ?? + _localizedValues['en']!['enable_email_markdown']; - String get enableEmailMarkdownHelp => - _localizedValues[localeCode]['enable_email_markdown_help'] ?? - _localizedValues['en']['enable_email_markdown_help']; + String? get enableEmailMarkdownHelp => + _localizedValues[localeCode]!['enable_email_markdown_help'] ?? + _localizedValues['en']!['enable_email_markdown_help']; - String get enablePdfMarkdown => - _localizedValues[localeCode]['enable_pdf_markdown'] ?? - _localizedValues['en']['enable_pdf_markdown']; + String? get enablePdfMarkdown => + _localizedValues[localeCode]!['enable_pdf_markdown'] ?? + _localizedValues['en']!['enable_pdf_markdown']; - String get afterSaving => - _localizedValues[localeCode]['after_saving'] ?? - _localizedValues['en']['after_saving']; + String? get afterSaving => + _localizedValues[localeCode]!['after_saving'] ?? + _localizedValues['en']!['after_saving']; - String get viewRecord => - _localizedValues[localeCode]['view_record'] ?? - _localizedValues['en']['view_record']; + String? get viewRecord => + _localizedValues[localeCode]!['view_record'] ?? + _localizedValues['en']!['view_record']; - String get enableTouchEvents => - _localizedValues[localeCode]['enable_touch_events'] ?? - _localizedValues['en']['enable_touch_events']; + String? get enableTouchEvents => + _localizedValues[localeCode]!['enable_touch_events'] ?? + _localizedValues['en']!['enable_touch_events']; - String get enableTouchEventsHelp => - _localizedValues[localeCode]['enable_touch_events_help'] ?? - _localizedValues['en']['enable_touch_events_help']; + String? get enableTouchEventsHelp => + _localizedValues[localeCode]!['enable_touch_events_help'] ?? + _localizedValues['en']!['enable_touch_events_help']; - String get feesSample => - _localizedValues[localeCode]['fees_sample'] ?? - _localizedValues['en']['fees_sample']; + String? get feesSample => + _localizedValues[localeCode]!['fees_sample'] ?? + _localizedValues['en']!['fees_sample']; - String get changeStatus => - _localizedValues[localeCode]['change_status'] ?? - _localizedValues['en']['change_status']; + String? get changeStatus => + _localizedValues[localeCode]!['change_status'] ?? + _localizedValues['en']!['change_status']; - String get changedStatus => - _localizedValues[localeCode]['changed_status'] ?? - _localizedValues['en']['changed_status']; + String? get changedStatus => + _localizedValues[localeCode]!['changed_status'] ?? + _localizedValues['en']!['changed_status']; - String get cancelInvoice => - _localizedValues[localeCode]['cancel_invoice'] ?? - _localizedValues['en']['cancel_invoice']; + String? get cancelInvoice => + _localizedValues[localeCode]!['cancel_invoice'] ?? + _localizedValues['en']!['cancel_invoice']; - String get viewTask => - _localizedValues[localeCode]['view_task'] ?? - _localizedValues['en']['view_task']; + String? get viewTask => + _localizedValues[localeCode]!['view_task'] ?? + _localizedValues['en']!['view_task']; - String get createProject => - _localizedValues[localeCode]['create_project'] ?? - _localizedValues['en']['create_project']; + String? get createProject => + _localizedValues[localeCode]!['create_project'] ?? + _localizedValues['en']!['create_project']; - String get updateProject => - _localizedValues[localeCode]['update_project'] ?? - _localizedValues['en']['update_project']; + String? get updateProject => + _localizedValues[localeCode]!['update_project'] ?? + _localizedValues['en']!['update_project']; - String get range => - _localizedValues[localeCode]['range'] ?? _localizedValues['en']['range']; + String? get range => + _localizedValues[localeCode]!['range'] ?? _localizedValues['en']!['range']; - String get invoiceCurrency => - _localizedValues[localeCode]['invoice_currency'] ?? - _localizedValues['en']['invoice_currency']; + String? get invoiceCurrency => + _localizedValues[localeCode]!['invoice_currency'] ?? + _localizedValues['en']!['invoice_currency']; - String get alternatePdfViewer => - _localizedValues[localeCode]['alternate_pdf_viewer'] ?? - _localizedValues['en']['alternate_pdf_viewer']; + String? get alternatePdfViewer => + _localizedValues[localeCode]!['alternate_pdf_viewer'] ?? + _localizedValues['en']!['alternate_pdf_viewer']; - String get alternatePdfViewerHelp => - _localizedValues[localeCode]['alternate_pdf_viewer_help'] ?? - _localizedValues['en']['alternate_pdf_viewer_help']; + String? get alternatePdfViewerHelp => + _localizedValues[localeCode]!['alternate_pdf_viewer_help'] ?? + _localizedValues['en']!['alternate_pdf_viewer_help']; - String get autoArchivePaidInvoices => - _localizedValues[localeCode]['auto_archive_paid_invoices'] ?? - _localizedValues['en']['auto_archive_paid_invoices']; + String? get autoArchivePaidInvoices => + _localizedValues[localeCode]!['auto_archive_paid_invoices'] ?? + _localizedValues['en']!['auto_archive_paid_invoices']; - String get autoArchivePaidInvoicesHelp => - _localizedValues[localeCode]['auto_archive_paid_invoices_help'] ?? - _localizedValues['en']['auto_archive_paid_invoices_help']; + String? get autoArchivePaidInvoicesHelp => + _localizedValues[localeCode]!['auto_archive_paid_invoices_help'] ?? + _localizedValues['en']!['auto_archive_paid_invoices_help']; - String get autoArchiveCancelledInvoices => - _localizedValues[localeCode]['auto_archive_cancelled_invoices'] ?? - _localizedValues['en']['auto_archive_cancelled_invoices']; + String? get autoArchiveCancelledInvoices => + _localizedValues[localeCode]!['auto_archive_cancelled_invoices'] ?? + _localizedValues['en']!['auto_archive_cancelled_invoices']; - String get autoArchiveCancelledInvoicesHelp => - _localizedValues[localeCode]['auto_archive_cancelled_invoices_help'] ?? - _localizedValues['en']['auto_archive_cancelled_invoices_help']; + String? get autoArchiveCancelledInvoicesHelp => + _localizedValues[localeCode]!['auto_archive_cancelled_invoices_help'] ?? + _localizedValues['en']!['auto_archive_cancelled_invoices_help']; - String get createdRecord => - _localizedValues[localeCode]['created_record'] ?? - _localizedValues['en']['created_record']; + String? get createdRecord => + _localizedValues[localeCode]!['created_record'] ?? + _localizedValues['en']!['created_record']; - String get week => - _localizedValues[localeCode]['week'] ?? _localizedValues['en']['week']; + String? get week => + _localizedValues[localeCode]!['week'] ?? _localizedValues['en']!['week']; - String get addToInvoice => - _localizedValues[localeCode]['add_to_invoice'] ?? - _localizedValues['en']['add_to_invoice']; + String? get addToInvoice => + _localizedValues[localeCode]!['add_to_invoice'] ?? + _localizedValues['en']!['add_to_invoice']; - String get noInvoicesFound => - _localizedValues[localeCode]['no_invoices_found'] ?? - _localizedValues['en']['no_invoices_found']; + String? get noInvoicesFound => + _localizedValues[localeCode]!['no_invoices_found'] ?? + _localizedValues['en']!['no_invoices_found']; - String get registerLabel => - _localizedValues[localeCode]['register_label'] ?? - _localizedValues['en']['register_label']; + String? get registerLabel => + _localizedValues[localeCode]!['register_label'] ?? + _localizedValues['en']!['register_label']; - String get loginLabel => - _localizedValues[localeCode]['login_label'] ?? - _localizedValues['en']['login_label']; + String? get loginLabel => + _localizedValues[localeCode]!['login_label'] ?? + _localizedValues['en']!['login_label']; - String get multipleClientError => - _localizedValues[localeCode]['multiple_client_error'] ?? - _localizedValues['en']['multiple_client_error']; + String? get multipleClientError => + _localizedValues[localeCode]!['multiple_client_error'] ?? + _localizedValues['en']!['multiple_client_error']; - String get enableTooltips => - _localizedValues[localeCode]['enable_tooltips'] ?? - _localizedValues['en']['enable_tooltips']; + String? get enableTooltips => + _localizedValues[localeCode]!['enable_tooltips'] ?? + _localizedValues['en']!['enable_tooltips']; - String get enableTooltipsHelp => - _localizedValues[localeCode]['enable_tooltips_help'] ?? - _localizedValues['en']['enable_tooltips_help']; + String? get enableTooltipsHelp => + _localizedValues[localeCode]!['enable_tooltips_help'] ?? + _localizedValues['en']!['enable_tooltips_help']; - String get addCountry => - _localizedValues[localeCode]['add_country'] ?? - _localizedValues['en']['add_country']; + String? get addCountry => + _localizedValues[localeCode]!['add_country'] ?? + _localizedValues['en']!['add_country']; - String get useQuoteTerms => - _localizedValues[localeCode]['use_quote_terms'] ?? - _localizedValues['en']['use_quote_terms']; + String? get useQuoteTerms => + _localizedValues[localeCode]!['use_quote_terms'] ?? + _localizedValues['en']!['use_quote_terms']; - String get useQuoteTermsHelp => - _localizedValues[localeCode]['use_quote_terms_help'] ?? - _localizedValues['en']['use_quote_terms_help']; + String? get useQuoteTermsHelp => + _localizedValues[localeCode]!['use_quote_terms_help'] ?? + _localizedValues['en']!['use_quote_terms_help']; - String get stopOnUnpaid => - _localizedValues[localeCode]['stop_on_unpaid'] ?? - _localizedValues['en']['stop_on_unpaid']; + String? get stopOnUnpaid => + _localizedValues[localeCode]!['stop_on_unpaid'] ?? + _localizedValues['en']!['stop_on_unpaid']; - String get stopOnUnpaidHelp => - _localizedValues[localeCode]['stop_on_unpaid_help'] ?? - _localizedValues['en']['stop_on_unpaid_help']; + String? get stopOnUnpaidHelp => + _localizedValues[localeCode]!['stop_on_unpaid_help'] ?? + _localizedValues['en']!['stop_on_unpaid_help']; - String get exportType => - _localizedValues[localeCode]['export_type'] ?? - _localizedValues['en']['export_type']; + String? get exportType => + _localizedValues[localeCode]!['export_type'] ?? + _localizedValues['en']!['export_type']; - String get importFormat => - _localizedValues[localeCode]['import_format'] ?? - _localizedValues['en']['import_format']; + String? get importFormat => + _localizedValues[localeCode]!['import_format'] ?? + _localizedValues['en']!['import_format']; - String get exportFormat => - _localizedValues[localeCode]['export_format'] ?? - _localizedValues['en']['export_format']; + String? get exportFormat => + _localizedValues[localeCode]!['export_format'] ?? + _localizedValues['en']!['export_format']; - String get invoiceItems => - _localizedValues[localeCode]['invoice_items'] ?? - _localizedValues['en']['invoice_items']; + String? get invoiceItems => + _localizedValues[localeCode]!['invoice_items'] ?? + _localizedValues['en']!['invoice_items']; - String get quoteItems => - _localizedValues[localeCode]['quote_items'] ?? - _localizedValues['en']['quote_items']; + String? get quoteItems => + _localizedValues[localeCode]!['quote_items'] ?? + _localizedValues['en']!['quote_items']; - String get profitloss => - _localizedValues[localeCode]['profitloss'] ?? - _localizedValues['en']['profitloss']; + String? get profitloss => + _localizedValues[localeCode]!['profitloss'] ?? + _localizedValues['en']!['profitloss']; - String get showProductDescription => - _localizedValues[localeCode]['show_product_description'] ?? - _localizedValues['en']['show_product_description']; + String? get showProductDescription => + _localizedValues[localeCode]!['show_product_description'] ?? + _localizedValues['en']!['show_product_description']; - String get showProductDescriptionHelp => - _localizedValues[localeCode]['show_product_description_help'] ?? - _localizedValues['en']['show_product_description_help']; + String? get showProductDescriptionHelp => + _localizedValues[localeCode]!['show_product_description_help'] ?? + _localizedValues['en']!['show_product_description_help']; - String get invoiceSentNotificationLabel => - _localizedValues[localeCode]['invoice_sent_notification_label'] ?? - _localizedValues['en']['invoice_sent_notification_label']; + String? get invoiceSentNotificationLabel => + _localizedValues[localeCode]!['invoice_sent_notification_label'] ?? + _localizedValues['en']!['invoice_sent_notification_label']; - String get pageNumbering => - _localizedValues[localeCode]['page_numbering'] ?? - _localizedValues['en']['page_numbering']; + String? get pageNumbering => + _localizedValues[localeCode]!['page_numbering'] ?? + _localizedValues['en']!['page_numbering']; - String get pageNumberingAlignment => - _localizedValues[localeCode]['page_numbering_alignment'] ?? - _localizedValues['en']['page_numbering_alignment']; + String? get pageNumberingAlignment => + _localizedValues[localeCode]!['page_numbering_alignment'] ?? + _localizedValues['en']!['page_numbering_alignment']; - String get left => - _localizedValues[localeCode]['left'] ?? _localizedValues['en']['left']; + String? get left => + _localizedValues[localeCode]!['left'] ?? _localizedValues['en']!['left']; - String get right => - _localizedValues[localeCode]['right'] ?? _localizedValues['en']['right']; + String? get right => + _localizedValues[localeCode]!['right'] ?? _localizedValues['en']!['right']; - String get center => - _localizedValues[localeCode]['center'] ?? - _localizedValues['en']['center']; + String? get center => + _localizedValues[localeCode]!['center'] ?? + _localizedValues['en']!['center']; - String get addGateway => - _localizedValues[localeCode]['add_gateway'] ?? - _localizedValues['en']['add_gateway']; + String? get addGateway => + _localizedValues[localeCode]!['add_gateway'] ?? + _localizedValues['en']!['add_gateway']; - String get viewMap => - _localizedValues[localeCode]['view_map'] ?? - _localizedValues['en']['view_map']; + String? get viewMap => + _localizedValues[localeCode]!['view_map'] ?? + _localizedValues['en']!['view_map']; - String get setDefaultDesign => - _localizedValues[localeCode]['set_default_design'] ?? - _localizedValues['en']['set_default_design']; + String? get setDefaultDesign => + _localizedValues[localeCode]!['set_default_design'] ?? + _localizedValues['en']!['set_default_design']; - String get addGatewayHelpMessage => - _localizedValues[localeCode]['add_gateway_help_message'] ?? - _localizedValues['en']['add_gateway_help_message']; + String? get addGatewayHelpMessage => + _localizedValues[localeCode]!['add_gateway_help_message'] ?? + _localizedValues['en']!['add_gateway_help_message']; - String get standing => - _localizedValues[localeCode]['standing'] ?? - _localizedValues['en']['standing']; + String? get standing => + _localizedValues[localeCode]!['standing'] ?? + _localizedValues['en']!['standing']; - String get vat => - _localizedValues[localeCode]['vat'] ?? _localizedValues['en']['vat']; + String? get vat => + _localizedValues[localeCode]!['vat'] ?? _localizedValues['en']!['vat']; - String get trackInventory => - _localizedValues[localeCode]['track_inventory'] ?? - _localizedValues['en']['track_inventory']; + String? get trackInventory => + _localizedValues[localeCode]!['track_inventory'] ?? + _localizedValues['en']!['track_inventory']; - String get trackInventoryHelp => - _localizedValues[localeCode]['track_inventory_help'] ?? - _localizedValues['en']['track_inventory_help']; + String? get trackInventoryHelp => + _localizedValues[localeCode]!['track_inventory_help'] ?? + _localizedValues['en']!['track_inventory_help']; - String get stockNotifications => - _localizedValues[localeCode]['stock_notifications'] ?? - _localizedValues['en']['stock_notifications']; + String? get stockNotifications => + _localizedValues[localeCode]!['stock_notifications'] ?? + _localizedValues['en']!['stock_notifications']; - String get stockNotificationsHelp => - _localizedValues[localeCode]['stock_notifications_help'] ?? - _localizedValues['en']['stock_notifications_help']; + String? get stockNotificationsHelp => + _localizedValues[localeCode]!['stock_notifications_help'] ?? + _localizedValues['en']!['stock_notifications_help']; - String get notificationThreshold => - _localizedValues[localeCode]['notification_threshold'] ?? - _localizedValues['en']['notification_threshold']; + String? get notificationThreshold => + _localizedValues[localeCode]!['notification_threshold'] ?? + _localizedValues['en']!['notification_threshold']; - String get stockQuantity => - _localizedValues[localeCode]['stock_quantity'] ?? - _localizedValues['en']['stock_quantity']; + String? get stockQuantity => + _localizedValues[localeCode]!['stock_quantity'] ?? + _localizedValues['en']!['stock_quantity']; - String get defaultWord => - _localizedValues[localeCode]['default'] ?? - _localizedValues['en']['default']; + String? get defaultWord => + _localizedValues[localeCode]!['default'] ?? + _localizedValues['en']!['default']; - String get paymentSettings => - _localizedValues[localeCode]['payment_settings'] ?? - _localizedValues['en']['payment_settings']; + String? get paymentSettings => + _localizedValues[localeCode]!['payment_settings'] ?? + _localizedValues['en']!['payment_settings']; - String get loginUrl => - _localizedValues[localeCode]['login_url'] ?? - _localizedValues['en']['login_url']; + String? get loginUrl => + _localizedValues[localeCode]!['login_url'] ?? + _localizedValues['en']!['login_url']; - String get purchaseOrder => - _localizedValues[localeCode]['purchase_order'] ?? - _localizedValues['en']['purchase_order']; + String? get purchaseOrder => + _localizedValues[localeCode]!['purchase_order'] ?? + _localizedValues['en']!['purchase_order']; - String get purchaseOrders => - _localizedValues[localeCode]['purchase_orders'] ?? - _localizedValues['en']['purchase_orders']; + String? get purchaseOrders => + _localizedValues[localeCode]!['purchase_orders'] ?? + _localizedValues['en']!['purchase_orders']; - String get newPurchaseOrder => - _localizedValues[localeCode]['new_purchase_order'] ?? - _localizedValues['en']['new_purchase_order']; + String? get newPurchaseOrder => + _localizedValues[localeCode]!['new_purchase_order'] ?? + _localizedValues['en']!['new_purchase_order']; - String get createdPurchaseOrder => - _localizedValues[localeCode]['created_purchase_order'] ?? - _localizedValues['en']['created_purchase_order']; + String? get createdPurchaseOrder => + _localizedValues[localeCode]!['created_purchase_order'] ?? + _localizedValues['en']!['created_purchase_order']; - String get updatedPurchaseOrder => - _localizedValues[localeCode]['updated_purchase_order'] ?? - _localizedValues['en']['updated_purchase_order']; + String? get updatedPurchaseOrder => + _localizedValues[localeCode]!['updated_purchase_order'] ?? + _localizedValues['en']!['updated_purchase_order']; - String get archivedPurchaseOrder => - _localizedValues[localeCode]['archived_purchase_order'] ?? - _localizedValues['en']['archived_purchase_order']; + String? get archivedPurchaseOrder => + _localizedValues[localeCode]!['archived_purchase_order'] ?? + _localizedValues['en']!['archived_purchase_order']; - String get deletedPurchaseOrder => - _localizedValues[localeCode]['deleted_purchase_order'] ?? - _localizedValues['en']['deleted_purchase_order']; + String? get deletedPurchaseOrder => + _localizedValues[localeCode]!['deleted_purchase_order'] ?? + _localizedValues['en']!['deleted_purchase_order']; - String get restoredPurchaseOrder => - _localizedValues[localeCode]['restored_purchase_order'] ?? - _localizedValues['en']['restored_purchase_order']; + String? get restoredPurchaseOrder => + _localizedValues[localeCode]!['restored_purchase_order'] ?? + _localizedValues['en']!['restored_purchase_order']; - String get editPurchaseOrder => - _localizedValues[localeCode]['edit_purchase_order'] ?? - _localizedValues['en']['edit_purchase_order']; + String? get editPurchaseOrder => + _localizedValues[localeCode]!['edit_purchase_order'] ?? + _localizedValues['en']!['edit_purchase_order']; - String get searchPurchaseOrder => - _localizedValues[localeCode]['search_purchase_order'] ?? - _localizedValues['en']['search_purchase_order']; + String? get searchPurchaseOrder => + _localizedValues[localeCode]!['search_purchase_order'] ?? + _localizedValues['en']!['search_purchase_order']; - String get requirePurchaseOrderSignature => - _localizedValues[localeCode]['require_purchase_order_signature'] ?? - _localizedValues['en']['require_purchase_order_signature']; + String? get requirePurchaseOrderSignature => + _localizedValues[localeCode]!['require_purchase_order_signature'] ?? + _localizedValues['en']!['require_purchase_order_signature']; - String get requirePurchaseOrderSignatureHelp => - _localizedValues[localeCode]['require_purchase_order_signature_help'] ?? - _localizedValues['en']['require_purchase_order_signature_help']; + String? get requirePurchaseOrderSignatureHelp => + _localizedValues[localeCode]!['require_purchase_order_signature_help'] ?? + _localizedValues['en']!['require_purchase_order_signature_help']; - String get purchaseOrderTerms => - _localizedValues[localeCode]['purchase_order_terms'] ?? - _localizedValues['en']['purchase_order_terms']; + String? get purchaseOrderTerms => + _localizedValues[localeCode]!['purchase_order_terms'] ?? + _localizedValues['en']!['purchase_order_terms']; - String get purchaseOrderFooter => - _localizedValues[localeCode]['purchase_order_footer'] ?? - _localizedValues['en']['purchase_order_footer']; + String? get purchaseOrderFooter => + _localizedValues[localeCode]!['purchase_order_footer'] ?? + _localizedValues['en']!['purchase_order_footer']; - String get purchaseOrderDesign => - _localizedValues[localeCode]['purchase_order_design'] ?? - _localizedValues['en']['purchase_order_design']; + String? get purchaseOrderDesign => + _localizedValues[localeCode]!['purchase_order_design'] ?? + _localizedValues['en']!['purchase_order_design']; - String get enableReactApp => - _localizedValues[localeCode]['enable_react_app'] ?? - _localizedValues['en']['enable_react_app']; + String? get enableReactApp => + _localizedValues[localeCode]!['enable_react_app'] ?? + _localizedValues['en']!['enable_react_app']; - String get emailedPurchaseOrder => - _localizedValues[localeCode]['emailed_purchase_orderk'] ?? - _localizedValues['en']['emailed_purchase_order']; + String? get emailedPurchaseOrder => + _localizedValues[localeCode]!['emailed_purchase_orderk'] ?? + _localizedValues['en']!['emailed_purchase_order']; - String get emailedPurchaseOrders => - _localizedValues[localeCode]['emailed_purchase_orders'] ?? - _localizedValues['en']['emailed_purchase_orders']; + String? get emailedPurchaseOrders => + _localizedValues[localeCode]!['emailed_purchase_orders'] ?? + _localizedValues['en']!['emailed_purchase_orders']; - String get microsoftSignUp => - _localizedValues[localeCode]['microsoft_sign_up'] ?? - _localizedValues['en']['microsoft_sign_up']; + String? get microsoftSignUp => + _localizedValues[localeCode]!['microsoft_sign_up'] ?? + _localizedValues['en']!['microsoft_sign_up']; - String get microsoftSignIn => - _localizedValues[localeCode]['microsoft_sign_in'] ?? - _localizedValues['en']['microsoft_sign_in']; + String? get microsoftSignIn => + _localizedValues[localeCode]!['microsoft_sign_in'] ?? + _localizedValues['en']!['microsoft_sign_in']; - String get disconnectedMicrosoft => - _localizedValues[localeCode]['disconnected_microsoft'] ?? - _localizedValues['en']['disconnected_microsoft']; + String? get disconnectedMicrosoft => + _localizedValues[localeCode]!['disconnected_microsoft'] ?? + _localizedValues['en']!['disconnected_microsoft']; - String get connectMicrosoft => - _localizedValues[localeCode]['connect_microsoft'] ?? - _localizedValues['en']['connect_microsoft']; + String? get connectMicrosoft => + _localizedValues[localeCode]!['connect_microsoft'] ?? + _localizedValues['en']!['connect_microsoft']; - String get disconnectMicrosoft => - _localizedValues[localeCode]['disconnect_microsoft'] ?? - _localizedValues['en']['disconnect_microsoft']; + String? get disconnectMicrosoft => + _localizedValues[localeCode]!['disconnect_microsoft'] ?? + _localizedValues['en']!['disconnect_microsoft']; - String get connectedMicrosoft => - _localizedValues[localeCode]['connected_microsoft'] ?? - _localizedValues['en']['connected_microsoft']; + String? get connectedMicrosoft => + _localizedValues[localeCode]!['connected_microsoft'] ?? + _localizedValues['en']!['connected_microsoft']; - String get emailProvider => - _localizedValues[localeCode]['email_provider'] ?? - _localizedValues['en']['email_provider']; + String? get emailProvider => + _localizedValues[localeCode]!['email_provider'] ?? + _localizedValues['en']!['email_provider']; - String get useWebAppToConnectMicrosoft => - _localizedValues[localeCode]['use_web_app_to_connect_microsoft'] ?? - _localizedValues['en']['use_web_app_to_connect_microsoft']; + String? get useWebAppToConnectMicrosoft => + _localizedValues[localeCode]!['use_web_app_to_connect_microsoft'] ?? + _localizedValues['en']!['use_web_app_to_connect_microsoft']; - String get connectEmail => - _localizedValues[localeCode]['connect_email'] ?? - _localizedValues['en']['connect_email']; + String? get connectEmail => + _localizedValues[localeCode]!['connect_email'] ?? + _localizedValues['en']!['connect_email']; - String get disconnectEmail => - _localizedValues[localeCode]['disconnect_email'] ?? - _localizedValues['en']['disconnect_email']; + String? get disconnectEmail => + _localizedValues[localeCode]!['disconnect_email'] ?? + _localizedValues['en']!['disconnect_email']; - String get disconnectedEmail => - _localizedValues[localeCode]['disconnected_email'] ?? - _localizedValues['en']['disconnected_email']; + String? get disconnectedEmail => + _localizedValues[localeCode]!['disconnected_email'] ?? + _localizedValues['en']!['disconnected_email']; - String get purchaseOrderTotal => - _localizedValues[localeCode]['purchase_order_total'] ?? - _localizedValues['en']['purchase_order_total']; + String? get purchaseOrderTotal => + _localizedValues[localeCode]!['purchase_order_total'] ?? + _localizedValues['en']!['purchase_order_total']; - String get pleaseSelectAVendor => - _localizedValues[localeCode]['please_select_a_vendor'] ?? - _localizedValues['en']['please_select_a_vendor']; + String? get pleaseSelectAVendor => + _localizedValues[localeCode]!['please_select_a_vendor'] ?? + _localizedValues['en']!['please_select_a_vendor']; - String get accepted => - _localizedValues[localeCode]['accepted'] ?? - _localizedValues['en']['accepted']; + String? get accepted => + _localizedValues[localeCode]!['accepted'] ?? + _localizedValues['en']!['accepted']; - String get markedPurchaseOrderAsSent => - _localizedValues[localeCode]['marked_purchase_order_as_sent'] ?? - _localizedValues['en']['marked_purchase_order_as_sent']; + String? get markedPurchaseOrderAsSent => + _localizedValues[localeCode]!['marked_purchase_order_as_sent'] ?? + _localizedValues['en']!['marked_purchase_order_as_sent']; - String get markedPurchaseOrdersAsSent => - _localizedValues[localeCode]['marked_purchase_orders_as_sent'] ?? - _localizedValues['en']['marked_purchase_orders_as_sent']; + String? get markedPurchaseOrdersAsSent => + _localizedValues[localeCode]!['marked_purchase_orders_as_sent'] ?? + _localizedValues['en']!['marked_purchase_orders_as_sent']; - String get acceptedPurchaseOrder => - _localizedValues[localeCode]['accepted_purchase_order'] ?? - _localizedValues['en']['accepted_purchase_order']; + String? get acceptedPurchaseOrder => + _localizedValues[localeCode]!['accepted_purchase_order'] ?? + _localizedValues['en']!['accepted_purchase_order']; - String get acceptedPurchaseOrders => - _localizedValues[localeCode]['accepted_purchase_orders'] ?? - _localizedValues['en']['accepted_purchase_orders']; + String? get acceptedPurchaseOrders => + _localizedValues[localeCode]!['accepted_purchase_orders'] ?? + _localizedValues['en']!['accepted_purchase_orders']; - String get cancelledPurchaseOrder => - _localizedValues[localeCode]['cancelled_purchase_order'] ?? - _localizedValues['en']['cancelled_purchase_order']; + String? get cancelledPurchaseOrder => + _localizedValues[localeCode]!['cancelled_purchase_order'] ?? + _localizedValues['en']!['cancelled_purchase_order']; - String get cancelledPurchaseOrders => - _localizedValues[localeCode]['cancelled_purchase_orders'] ?? - _localizedValues['en']['cancelled_purchase_orders']; + String? get cancelledPurchaseOrders => + _localizedValues[localeCode]!['cancelled_purchase_orders'] ?? + _localizedValues['en']!['cancelled_purchase_orders']; - String get vendorEmailNotSet => - _localizedValues[localeCode]['vendor_email_not_set'] ?? - _localizedValues['en']['vendor_email_not_set']; + String? get vendorEmailNotSet => + _localizedValues[localeCode]!['vendor_email_not_set'] ?? + _localizedValues['en']!['vendor_email_not_set']; - String get cloneToPurchaseOrder => - _localizedValues[localeCode]['clone_to_purchase_order'] ?? - _localizedValues['en']['clone_to_purchase_order']; + String? get cloneToPurchaseOrder => + _localizedValues[localeCode]!['clone_to_purchase_order'] ?? + _localizedValues['en']!['clone_to_purchase_order']; - String get accept => - _localizedValues[localeCode]['accept'] ?? - _localizedValues['en']['accept']; + String? get accept => + _localizedValues[localeCode]!['accept'] ?? + _localizedValues['en']!['accept']; - String get qrIban => - _localizedValues[localeCode]['qr_iban'] ?? - _localizedValues['en']['qr_iban']; + String? get qrIban => + _localizedValues[localeCode]!['qr_iban'] ?? + _localizedValues['en']!['qr_iban']; - String get besrId => - _localizedValues[localeCode]['besr_id'] ?? - _localizedValues['en']['besr_id']; + String? get besrId => + _localizedValues[localeCode]!['besr_id'] ?? + _localizedValues['en']!['besr_id']; - String get vendorDetails => - _localizedValues[localeCode]['vendor_details'] ?? - _localizedValues['en']['vendor_details']; + String? get vendorDetails => + _localizedValues[localeCode]!['vendor_details'] ?? + _localizedValues['en']!['vendor_details']; - String get purchaseOrderDetails => - _localizedValues[localeCode]['purchase_order_details'] ?? - _localizedValues['en']['purchase_order_details']; + String? get purchaseOrderDetails => + _localizedValues[localeCode]!['purchase_order_details'] ?? + _localizedValues['en']!['purchase_order_details']; - String get enableFlexibleSearch => - _localizedValues[localeCode]['enable_flexible_search'] ?? - _localizedValues['en']['enable_flexible_search']; + String? get enableFlexibleSearch => + _localizedValues[localeCode]!['enable_flexible_search'] ?? + _localizedValues['en']!['enable_flexible_search']; - String get enableFlexibleSearchHelp => - _localizedValues[localeCode]['enable_flexible_search_help'] ?? - _localizedValues['en']['enable_flexible_search_help']; + String? get enableFlexibleSearchHelp => + _localizedValues[localeCode]!['enable_flexible_search_help'] ?? + _localizedValues['en']!['enable_flexible_search_help']; - String get lastSentTemplate => - _localizedValues[localeCode]['last_sent_template'] ?? - _localizedValues['en']['last_sent_template']; + String? get lastSentTemplate => + _localizedValues[localeCode]!['last_sent_template'] ?? + _localizedValues['en']!['last_sent_template']; - String get add => - _localizedValues[localeCode]['add'] ?? _localizedValues['en']['add']; + String? get add => + _localizedValues[localeCode]!['add'] ?? _localizedValues['en']!['add']; - String get areYouEnjoyingTheApp => - _localizedValues[localeCode]['are_you_enjoying_the_app'] ?? - _localizedValues['en']['are_you_enjoying_the_app']; + String? get areYouEnjoyingTheApp => + _localizedValues[localeCode]!['are_you_enjoying_the_app'] ?? + _localizedValues['en']!['are_you_enjoying_the_app']; - String get wouldYouRateIt => - _localizedValues[localeCode]['would_you_rate_it'] ?? - _localizedValues['en']['would_you_rate_it']; + String? get wouldYouRateIt => + _localizedValues[localeCode]!['would_you_rate_it'] ?? + _localizedValues['en']!['would_you_rate_it']; - String get wouldYouTellUsMore => - _localizedValues[localeCode]['would_you_tell_us_more'] ?? - _localizedValues['en']['would_you_tell_us_more']; + String? get wouldYouTellUsMore => + _localizedValues[localeCode]!['would_you_tell_us_more'] ?? + _localizedValues['en']!['would_you_tell_us_more']; - String get yesItsGreat => - _localizedValues[localeCode]['yes_its_great'] ?? - _localizedValues['en']['yes_its_great']; + String? get yesItsGreat => + _localizedValues[localeCode]!['yes_its_great'] ?? + _localizedValues['en']!['yes_its_great']; - String get notSoMuch => - _localizedValues[localeCode]['not_so_much'] ?? - _localizedValues['en']['not_so_much']; + String? get notSoMuch => + _localizedValues[localeCode]!['not_so_much'] ?? + _localizedValues['en']!['not_so_much']; - String get sureHappyTo => - _localizedValues[localeCode]['sure_happy_to'] ?? - _localizedValues['en']['sure_happy_to']; + String? get sureHappyTo => + _localizedValues[localeCode]!['sure_happy_to'] ?? + _localizedValues['en']!['sure_happy_to']; - String get noNotNow => - _localizedValues[localeCode]['no_not_now'] ?? - _localizedValues['en']['no_not_now']; + String? get noNotNow => + _localizedValues[localeCode]!['no_not_now'] ?? + _localizedValues['en']!['no_not_now']; - String get vendorDocumentUploadHelp => - _localizedValues[localeCode]['vendor_document_upload_help'] ?? - _localizedValues['en']['vendor_document_upload_help']; + String? get vendorDocumentUploadHelp => + _localizedValues[localeCode]!['vendor_document_upload_help'] ?? + _localizedValues['en']!['vendor_document_upload_help']; - String get vendorDocumentUpload => - _localizedValues[localeCode]['vendor_document_upload'] ?? - _localizedValues['en']['vendor_document_upload']; + String? get vendorDocumentUpload => + _localizedValues[localeCode]!['vendor_document_upload'] ?? + _localizedValues['en']!['vendor_document_upload']; - String get clientDocumentUpload => - _localizedValues[localeCode]['client_document_upload'] ?? - _localizedValues['en']['client_document_upload']; + String? get clientDocumentUpload => + _localizedValues[localeCode]!['client_document_upload'] ?? + _localizedValues['en']!['client_document_upload']; - String get addedPurchaseOrderToInventory => - _localizedValues[localeCode]['added_purchase_order_to_inventory'] ?? - _localizedValues['en']['added_purchase_order_to_inventory']; + String? get addedPurchaseOrderToInventory => + _localizedValues[localeCode]!['added_purchase_order_to_inventory'] ?? + _localizedValues['en']!['added_purchase_order_to_inventory']; - String get addedPurchaseOrdersToInventory => - _localizedValues[localeCode]['added_purchase_orders_to_inventory'] ?? - _localizedValues['en']['added_purchase_orders_to_inventory']; + String? get addedPurchaseOrdersToInventory => + _localizedValues[localeCode]!['added_purchase_orders_to_inventory'] ?? + _localizedValues['en']!['added_purchase_orders_to_inventory']; - String get addToInventory => - _localizedValues[localeCode]['add_to_inventory'] ?? - _localizedValues['en']['add_to_inventory']; + String? get addToInventory => + _localizedValues[localeCode]!['add_to_inventory'] ?? + _localizedValues['en']!['add_to_inventory']; - String get convertedToExpense => - _localizedValues[localeCode]['converted_to_expense'] ?? - _localizedValues['en']['converted_to_expense']; + String? get convertedToExpense => + _localizedValues[localeCode]!['converted_to_expense'] ?? + _localizedValues['en']!['converted_to_expense']; - String get convertedToExpenses => - _localizedValues[localeCode]['converted_to_expenses'] ?? - _localizedValues['en']['converted_to_expenses']; + String? get convertedToExpenses => + _localizedValues[localeCode]!['converted_to_expenses'] ?? + _localizedValues['en']!['converted_to_expenses']; - String get purchaseOrderDate => - _localizedValues[localeCode]['purchase_order_date'] ?? - _localizedValues['en']['purchase_order_date']; + String? get purchaseOrderDate => + _localizedValues[localeCode]!['purchase_order_date'] ?? + _localizedValues['en']!['purchase_order_date']; - String get received => - _localizedValues[localeCode]['received'] ?? - _localizedValues['en']['received']; + String? get received => + _localizedValues[localeCode]!['received'] ?? + _localizedValues['en']!['received']; - String get sendNow => - _localizedValues[localeCode]['send_now'] ?? - _localizedValues['en']['send_now']; + String? get sendNow => + _localizedValues[localeCode]!['send_now'] ?? + _localizedValues['en']!['send_now']; - String get disconnectedApple => - _localizedValues[localeCode]['disconnected_apple'] ?? - _localizedValues['en']['disconnected_apple']; + String? get disconnectedApple => + _localizedValues[localeCode]!['disconnected_apple'] ?? + _localizedValues['en']!['disconnected_apple']; - String get connectApple => - _localizedValues[localeCode]['connect_apple'] ?? - _localizedValues['en']['connect_apple']; + String? get connectApple => + _localizedValues[localeCode]!['connect_apple'] ?? + _localizedValues['en']!['connect_apple']; - String get disconnectApple => - _localizedValues[localeCode]['disconnect_apple'] ?? - _localizedValues['en']['disconnect_apple']; + String? get disconnectApple => + _localizedValues[localeCode]!['disconnect_apple'] ?? + _localizedValues['en']!['disconnect_apple']; - String get activate => - _localizedValues[localeCode]['activate'] ?? - _localizedValues['en']['activate']; + String? get activate => + _localizedValues[localeCode]!['activate'] ?? + _localizedValues['en']!['activate']; - String get restorePurchases => - _localizedValues[localeCode]['restore_purchases'] ?? - _localizedValues['en']['restore_purchases']; + String? get restorePurchases => + _localizedValues[localeCode]!['restore_purchases'] ?? + _localizedValues['en']!['restore_purchases']; - String get priceChangeAccepted => - _localizedValues[localeCode]['price_change_accepted'] ?? - _localizedValues['en']['price_change_accepted']; + String? get priceChangeAccepted => + _localizedValues[localeCode]!['price_change_accepted'] ?? + _localizedValues['en']!['price_change_accepted']; - String get priceChangeFailed => - _localizedValues[localeCode]['price_change_failed'] ?? - _localizedValues['en']['price_change_failed']; + String? get priceChangeFailed => + _localizedValues[localeCode]!['price_change_failed'] ?? + _localizedValues['en']!['price_change_failed']; - String get merge => - _localizedValues[localeCode]['merge'] ?? _localizedValues['en']['merge']; + String? get merge => + _localizedValues[localeCode]!['merge'] ?? _localizedValues['en']!['merge']; - String get mergeInto => - _localizedValues[localeCode]['merge_into'] ?? - _localizedValues['en']['merge_into']; + String? get mergeInto => + _localizedValues[localeCode]!['merge_into'] ?? + _localizedValues['en']!['merge_into']; - String get mergedClients => - _localizedValues[localeCode]['merged_clients'] ?? - _localizedValues['en']['merged_clients']; + String? get mergedClients => + _localizedValues[localeCode]!['merged_clients'] ?? + _localizedValues['en']!['merged_clients']; - String get verifyPhoneNumber => - _localizedValues[localeCode]['verify_phone_number'] ?? - _localizedValues['en']['verify_phone_number']; + String? get verifyPhoneNumber => + _localizedValues[localeCode]!['verify_phone_number'] ?? + _localizedValues['en']!['verify_phone_number']; - String get verifyPhoneNumberHelp => - _localizedValues[localeCode]['verify_phone_number_help'] ?? - _localizedValues['en']['verify_phone_number_help']; + String? get verifyPhoneNumberHelp => + _localizedValues[localeCode]!['verify_phone_number_help'] ?? + _localizedValues['en']!['verify_phone_number_help']; - String get invalidPhoneNumber => - _localizedValues[localeCode]['invalid_phone_number'] ?? - _localizedValues['en']['invalid_phone_number']; + String? get invalidPhoneNumber => + _localizedValues[localeCode]!['invalid_phone_number'] ?? + _localizedValues['en']!['invalid_phone_number']; - String get enterPhoneNumber => - _localizedValues[localeCode]['enter_phone_number'] ?? - _localizedValues['en']['enter_phone_number']; + String? get enterPhoneNumber => + _localizedValues[localeCode]!['enter_phone_number'] ?? + _localizedValues['en']!['enter_phone_number']; - String get resend => - _localizedValues[localeCode]['resend'] ?? - _localizedValues['en']['resend']; + String? get resend => + _localizedValues[localeCode]!['resend'] ?? + _localizedValues['en']!['resend']; - String get verify => - _localizedValues[localeCode]['verify'] ?? - _localizedValues['en']['verify']; + String? get verify => + _localizedValues[localeCode]!['verify'] ?? + _localizedValues['en']!['verify']; - String get codeWasSent => - _localizedValues[localeCode]['code_was_sent'] ?? - _localizedValues['en']['code_was_sent']; + String? get codeWasSent => + _localizedValues[localeCode]!['code_was_sent'] ?? + _localizedValues['en']!['code_was_sent']; - String get pleaseEnterACode => - _localizedValues[localeCode]['please_enter_a_code'] ?? - _localizedValues['en']['please_enter_a_code']; + String? get pleaseEnterACode => + _localizedValues[localeCode]!['please_enter_a_code'] ?? + _localizedValues['en']!['please_enter_a_code']; - String get bulkEmailPurchaseOrders => - _localizedValues[localeCode]['bulk_email_purchase_orders'] ?? - _localizedValues['en']['bulk_email_purchase_orders']; + String? get bulkEmailPurchaseOrders => + _localizedValues[localeCode]!['bulk_email_purchase_orders'] ?? + _localizedValues['en']!['bulk_email_purchase_orders']; - String get verifiedPhoneNumber => - _localizedValues[localeCode]['verified_phone_number'] ?? - _localizedValues['en']['verified_phone_number']; + String? get verifiedPhoneNumber => + _localizedValues[localeCode]!['verified_phone_number'] ?? + _localizedValues['en']!['verified_phone_number']; - String get invoiceItemTaxRates => - _localizedValues[localeCode]['invoice_item_tax_rates'] ?? - _localizedValues['en']['invoice_item_tax_rates']; + String? get invoiceItemTaxRates => + _localizedValues[localeCode]!['invoice_item_tax_rates'] ?? + _localizedValues['en']!['invoice_item_tax_rates']; - String get expenseTaxRates => - _localizedValues[localeCode]['expense_tax_rates'] ?? - _localizedValues['en']['expense_tax_rates']; + String? get expenseTaxRates => + _localizedValues[localeCode]!['expense_tax_rates'] ?? + _localizedValues['en']!['expense_tax_rates']; - String get saveToUploadDocuments => - _localizedValues[localeCode]['save_to_upload_documents'] ?? - _localizedValues['en']['save_to_upload_documents']; + String? get saveToUploadDocuments => + _localizedValues[localeCode]!['save_to_upload_documents'] ?? + _localizedValues['en']!['save_to_upload_documents']; - String get sendCode => - _localizedValues[localeCode]['send_code'] ?? - _localizedValues['en']['send_code']; + String? get sendCode => + _localizedValues[localeCode]!['send_code'] ?? + _localizedValues['en']!['send_code']; - String get vendorPortal => - _localizedValues[localeCode]['vendor_portal'] ?? - _localizedValues['en']['vendor_portal']; + String? get vendorPortal => + _localizedValues[localeCode]!['vendor_portal'] ?? + _localizedValues['en']!['vendor_portal']; - String get totalActiveInvoices => - _localizedValues[localeCode]['total_active_invoices'] ?? - _localizedValues['en']['total_active_invoices']; + String? get totalActiveInvoices => + _localizedValues[localeCode]!['total_active_invoices'] ?? + _localizedValues['en']!['total_active_invoices']; - String get totalOutstandingInvoices => - _localizedValues[localeCode]['total_outstanding_invoices'] ?? - _localizedValues['en']['total_outstanding_invoices']; + String? get totalOutstandingInvoices => + _localizedValues[localeCode]!['total_outstanding_invoices'] ?? + _localizedValues['en']!['total_outstanding_invoices']; - String get totalCompletedPayments => - _localizedValues[localeCode]['total_completed_payments'] ?? - _localizedValues['en']['total_completed_payments']; + String? get totalCompletedPayments => + _localizedValues[localeCode]!['total_completed_payments'] ?? + _localizedValues['en']!['total_completed_payments']; - String get totalRefundedPayments => - _localizedValues[localeCode]['total_refunded_payments'] ?? - _localizedValues['en']['total_refunded_payments']; + String? get totalRefundedPayments => + _localizedValues[localeCode]!['total_refunded_payments'] ?? + _localizedValues['en']!['total_refunded_payments']; - String get totalActiveQuotes => - _localizedValues[localeCode]['total_active_quotes'] ?? - _localizedValues['en']['total_active_quotes']; + String? get totalActiveQuotes => + _localizedValues[localeCode]!['total_active_quotes'] ?? + _localizedValues['en']!['total_active_quotes']; - String get totalUnapprovedQuotes => - _localizedValues[localeCode]['total_unapproved_quotes'] ?? - _localizedValues['en']['total_unapproved_quotes']; + String? get totalUnapprovedQuotes => + _localizedValues[localeCode]!['total_unapproved_quotes'] ?? + _localizedValues['en']!['total_unapproved_quotes']; - String get totalApprovedQuotes => - _localizedValues[localeCode]['total_approved_quotes'] ?? - _localizedValues['en']['total_approved_quotes']; + String? get totalApprovedQuotes => + _localizedValues[localeCode]!['total_approved_quotes'] ?? + _localizedValues['en']!['total_approved_quotes']; - String get totalLoggedTasks => - _localizedValues[localeCode]['total_logged_tasks'] ?? - _localizedValues['en']['total_logged_tasks']; + String? get totalLoggedTasks => + _localizedValues[localeCode]!['total_logged_tasks'] ?? + _localizedValues['en']!['total_logged_tasks']; - String get totalInvoicedTasks => - _localizedValues[localeCode]['total_invoiced_tasks'] ?? - _localizedValues['en']['total_invoiced_tasks']; + String? get totalInvoicedTasks => + _localizedValues[localeCode]!['total_invoiced_tasks'] ?? + _localizedValues['en']!['total_invoiced_tasks']; - String get totalPaidTasks => - _localizedValues[localeCode]['total_paid_tasks'] ?? - _localizedValues['en']['total_paid_tasks']; + String? get totalPaidTasks => + _localizedValues[localeCode]!['total_paid_tasks'] ?? + _localizedValues['en']!['total_paid_tasks']; - String get totalLoggedExpenses => - _localizedValues[localeCode]['total_logged_expenses'] ?? - _localizedValues['en']['total_logged_expenses']; + String? get totalLoggedExpenses => + _localizedValues[localeCode]!['total_logged_expenses'] ?? + _localizedValues['en']!['total_logged_expenses']; - String get totalPendingExpenses => - _localizedValues[localeCode]['total_pending_expenses'] ?? - _localizedValues['en']['total_pending_expenses']; + String? get totalPendingExpenses => + _localizedValues[localeCode]!['total_pending_expenses'] ?? + _localizedValues['en']!['total_pending_expenses']; - String get totalInvoicedExpenses => - _localizedValues[localeCode]['total_invoiced_expenses'] ?? - _localizedValues['en']['total_invoiced_expenses']; + String? get totalInvoicedExpenses => + _localizedValues[localeCode]!['total_invoiced_expenses'] ?? + _localizedValues['en']!['total_invoiced_expenses']; - String get totalInvoicePaidExpenses => - _localizedValues[localeCode]['total_invoice_paid_expenses'] ?? - _localizedValues['en']['total_invoice_paid_expenses']; + String? get totalInvoicePaidExpenses => + _localizedValues[localeCode]!['total_invoice_paid_expenses'] ?? + _localizedValues['en']!['total_invoice_paid_expenses']; - String get fieldsPerRow => - _localizedValues[localeCode]['fields_per_row'] ?? - _localizedValues['en']['fields_per_row']; + String? get fieldsPerRow => + _localizedValues[localeCode]!['fields_per_row'] ?? + _localizedValues['en']!['fields_per_row']; - String get field => - _localizedValues[localeCode]['field'] ?? _localizedValues['en']['field']; + String? get field => + _localizedValues[localeCode]!['field'] ?? _localizedValues['en']!['field']; - String get period => - _localizedValues[localeCode]['period'] ?? - _localizedValues['en']['period']; + String? get period => + _localizedValues[localeCode]!['period'] ?? + _localizedValues['en']!['period']; - String get invoiceTaskProject => - _localizedValues[localeCode]['invoice_task_project'] ?? - _localizedValues['en']['invoice_task_project']; + String? get invoiceTaskProject => + _localizedValues[localeCode]!['invoice_task_project'] ?? + _localizedValues['en']!['invoice_task_project']; - String get invoiceTaskProjectHelp => - _localizedValues[localeCode]['invoice_task_project_help'] ?? - _localizedValues['en']['invoice_task_project_help']; + String? get invoiceTaskProjectHelp => + _localizedValues[localeCode]!['invoice_task_project_help'] ?? + _localizedValues['en']!['invoice_task_project_help']; - String get clientEmail => - _localizedValues[localeCode]['client_email'] ?? - _localizedValues['en']['client_email']; + String? get clientEmail => + _localizedValues[localeCode]!['client_email'] ?? + _localizedValues['en']!['client_email']; - String get convertToProject => - _localizedValues[localeCode]['convert_to_project'] ?? - _localizedValues['en']['convert_to_project']; + String? get convertToProject => + _localizedValues[localeCode]!['convert_to_project'] ?? + _localizedValues['en']!['convert_to_project']; - String get markPaidPaymentEmail => - _localizedValues[localeCode]['mark_paid_payment_email'] ?? - _localizedValues['en']['mark_paid_payment_email']; + String? get markPaidPaymentEmail => + _localizedValues[localeCode]!['mark_paid_payment_email'] ?? + _localizedValues['en']!['mark_paid_payment_email']; - String get bankAccounts => - _localizedValues[localeCode]['bank_accounts'] ?? - _localizedValues['en']['bank_accounts']; + String? get bankAccounts => + _localizedValues[localeCode]!['bank_accounts'] ?? + _localizedValues['en']!['bank_accounts']; - String get connect => - _localizedValues[localeCode]['connect'] ?? - _localizedValues['en']['connect']; + String? get connect => + _localizedValues[localeCode]!['connect'] ?? + _localizedValues['en']!['connect']; - String get bankAccount => - _localizedValues[localeCode]['bank_account'] ?? - _localizedValues['en']['bank_account']; + String? get bankAccount => + _localizedValues[localeCode]!['bank_account'] ?? + _localizedValues['en']!['bank_account']; - String get archivedBankAccount => - _localizedValues[localeCode]['archived_bank_account'] ?? - _localizedValues['en']['archived_bank_account']; + String? get archivedBankAccount => + _localizedValues[localeCode]!['archived_bank_account'] ?? + _localizedValues['en']!['archived_bank_account']; - String get deletedBankAccount => - _localizedValues[localeCode]['deleted_bank_account'] ?? - _localizedValues['en']['deleted_bank_account']; + String? get deletedBankAccount => + _localizedValues[localeCode]!['deleted_bank_account'] ?? + _localizedValues['en']!['deleted_bank_account']; - String get restoredBankAccount => - _localizedValues[localeCode]['restored_bank_account'] ?? - _localizedValues['en']['restored_bank_account']; + String? get restoredBankAccount => + _localizedValues[localeCode]!['restored_bank_account'] ?? + _localizedValues['en']!['restored_bank_account']; - String get searchBankAccount => - _localizedValues[localeCode]['search_bank_account'] ?? - _localizedValues['en']['search_bank_account']; + String? get searchBankAccount => + _localizedValues[localeCode]!['search_bank_account'] ?? + _localizedValues['en']!['search_bank_account']; - String get transaction => - _localizedValues[localeCode]['transaction'] ?? - _localizedValues['en']['transaction']; + String? get transaction => + _localizedValues[localeCode]!['transaction'] ?? + _localizedValues['en']!['transaction']; - String get transactions => - _localizedValues[localeCode]['transactions'] ?? - _localizedValues['en']['transactions']; + String? get transactions => + _localizedValues[localeCode]!['transactions'] ?? + _localizedValues['en']!['transactions']; - String get newTransaction => - _localizedValues[localeCode]['new_transaction'] ?? - _localizedValues['en']['new_transaction']; + String? get newTransaction => + _localizedValues[localeCode]!['new_transaction'] ?? + _localizedValues['en']!['new_transaction']; - String get createdTransaction => - _localizedValues[localeCode]['created_transaction'] ?? - _localizedValues['en']['created_transaction']; + String? get createdTransaction => + _localizedValues[localeCode]!['created_transaction'] ?? + _localizedValues['en']!['created_transaction']; - String get updatedTransaction => - _localizedValues[localeCode]['updated_transaction'] ?? - _localizedValues['en']['updated_transaction']; + String? get updatedTransaction => + _localizedValues[localeCode]!['updated_transaction'] ?? + _localizedValues['en']!['updated_transaction']; - String get archivedTransaction => - _localizedValues[localeCode]['archived_transaction'] ?? - _localizedValues['en']['archived_transaction']; + String? get archivedTransaction => + _localizedValues[localeCode]!['archived_transaction'] ?? + _localizedValues['en']!['archived_transaction']; - String get deletedTransaction => - _localizedValues[localeCode]['deleted_transaction'] ?? - _localizedValues['en']['deleted_transaction']; + String? get deletedTransaction => + _localizedValues[localeCode]!['deleted_transaction'] ?? + _localizedValues['en']!['deleted_transaction']; - String get restoredTransaction => - _localizedValues[localeCode]['restored_transaction'] ?? - _localizedValues['en']['restored_transaction']; + String? get restoredTransaction => + _localizedValues[localeCode]!['restored_transaction'] ?? + _localizedValues['en']!['restored_transaction']; - String get editTransaction => - _localizedValues[localeCode]['edit_transaction'] ?? - _localizedValues['en']['edit_transaction']; + String? get editTransaction => + _localizedValues[localeCode]!['edit_transaction'] ?? + _localizedValues['en']!['edit_transaction']; - String get searchTransaction => - _localizedValues[localeCode]['search_transaction'] ?? - _localizedValues['en']['search_transaction']; + String? get searchTransaction => + _localizedValues[localeCode]!['search_transaction'] ?? + _localizedValues['en']!['search_transaction']; - String get searchTransactions => - _localizedValues[localeCode]['search_transactions'] ?? - _localizedValues['en']['search_transactions']; + String? get searchTransactions => + _localizedValues[localeCode]!['search_transactions'] ?? + _localizedValues['en']!['search_transactions']; - String get createCredit => - _localizedValues[localeCode]['create_credit'] ?? - _localizedValues['en']['create_credit']; + String? get createCredit => + _localizedValues[localeCode]!['create_credit'] ?? + _localizedValues['en']!['create_credit']; - String get updateCredit => - _localizedValues[localeCode]['update_credit'] ?? - _localizedValues['en']['update_credit']; + String? get updateCredit => + _localizedValues[localeCode]!['update_credit'] ?? + _localizedValues['en']!['update_credit']; - String get deleteCredit => - _localizedValues[localeCode]['delete_credit'] ?? - _localizedValues['en']['delete_credit']; + String? get deleteCredit => + _localizedValues[localeCode]!['delete_credit'] ?? + _localizedValues['en']!['delete_credit']; - String get matched => - _localizedValues[localeCode]['matched'] ?? - _localizedValues['en']['matched']; + String? get matched => + _localizedValues[localeCode]!['matched'] ?? + _localizedValues['en']!['matched']; - String get unmatched => - _localizedValues[localeCode]['unmatched'] ?? - _localizedValues['en']['unmatched']; + String? get unmatched => + _localizedValues[localeCode]!['unmatched'] ?? + _localizedValues['en']!['unmatched']; - String get deposit => - _localizedValues[localeCode]['deposit'] ?? - _localizedValues['en']['deposit']; + String? get deposit => + _localizedValues[localeCode]!['deposit'] ?? + _localizedValues['en']!['deposit']; - String get withdrawal => - _localizedValues[localeCode]['withdrawal'] ?? - _localizedValues['en']['withdrawal']; + String? get withdrawal => + _localizedValues[localeCode]!['withdrawal'] ?? + _localizedValues['en']!['withdrawal']; - String get deposits => - _localizedValues[localeCode]['deposits'] ?? - _localizedValues['en']['deposits']; + String? get deposits => + _localizedValues[localeCode]!['deposits'] ?? + _localizedValues['en']!['deposits']; - String get withdrawals => - _localizedValues[localeCode]['withdrawals'] ?? - _localizedValues['en']['withdrawals']; + String? get withdrawals => + _localizedValues[localeCode]!['withdrawals'] ?? + _localizedValues['en']!['withdrawals']; - String get convertedTransaction => - _localizedValues[localeCode]['converted_transaction'] ?? - _localizedValues['en']['converted_transaction']; + String? get convertedTransaction => + _localizedValues[localeCode]!['converted_transaction'] ?? + _localizedValues['en']!['converted_transaction']; - String get convertedTransactions => - _localizedValues[localeCode]['converted_transactions'] ?? - _localizedValues['en']['converted_transactions']; + String? get convertedTransactions => + _localizedValues[localeCode]!['converted_transactions'] ?? + _localizedValues['en']!['converted_transactions']; - String get selected => - _localizedValues[localeCode]['selected'] ?? - _localizedValues['en']['selected']; + String? get selected => + _localizedValues[localeCode]!['selected'] ?? + _localizedValues['en']!['selected']; - String get minAmount => - _localizedValues[localeCode]['min_amount'] ?? - _localizedValues['en']['min_amount']; + String? get minAmount => + _localizedValues[localeCode]!['min_amount'] ?? + _localizedValues['en']!['min_amount']; - String get maxAmount => - _localizedValues[localeCode]['max_amount'] ?? - _localizedValues['en']['max_amount']; + String? get maxAmount => + _localizedValues[localeCode]!['max_amount'] ?? + _localizedValues['en']!['max_amount']; - String get searchCategory => - _localizedValues[localeCode]['search_category'] ?? - _localizedValues['en']['search_category']; + String? get searchCategory => + _localizedValues[localeCode]!['search_category'] ?? + _localizedValues['en']!['search_category']; - String get searchCategories => - _localizedValues[localeCode]['search_categories'] ?? - _localizedValues['en']['search_categories']; + String? get searchCategories => + _localizedValues[localeCode]!['search_categories'] ?? + _localizedValues['en']!['search_categories']; - String get connectAccounts => - _localizedValues[localeCode]['connect_accounts'] ?? - _localizedValues['en']['connect_accounts']; + String? get connectAccounts => + _localizedValues[localeCode]!['connect_accounts'] ?? + _localizedValues['en']!['connect_accounts']; - String get manageRules => - _localizedValues[localeCode]['manage_rules'] ?? - _localizedValues['en']['manage_rules']; + String? get manageRules => + _localizedValues[localeCode]!['manage_rules'] ?? + _localizedValues['en']!['manage_rules']; - String get newBankAccount => - _localizedValues[localeCode]['new_bank_account'] ?? - _localizedValues['en']['new_bank_account']; + String? get newBankAccount => + _localizedValues[localeCode]!['new_bank_account'] ?? + _localizedValues['en']!['new_bank_account']; - String get editBankAccount => - _localizedValues[localeCode]['edit_bank_account'] ?? - _localizedValues['en']['edit_bank_account']; + String? get editBankAccount => + _localizedValues[localeCode]!['edit_bank_account'] ?? + _localizedValues['en']!['edit_bank_account']; - String get accountType => - _localizedValues[localeCode]['account_type'] ?? - _localizedValues['en']['account_type']; + String? get accountType => + _localizedValues[localeCode]!['account_type'] ?? + _localizedValues['en']!['account_type']; - String get defaultCategory => - _localizedValues[localeCode]['default_category'] ?? - _localizedValues['en']['default_category']; + String? get defaultCategory => + _localizedValues[localeCode]!['default_category'] ?? + _localizedValues['en']!['default_category']; - String get createdBankAccount => - _localizedValues[localeCode]['created_bank_account'] ?? - _localizedValues['en']['created_bank_account']; + String? get createdBankAccount => + _localizedValues[localeCode]!['created_bank_account'] ?? + _localizedValues['en']!['created_bank_account']; - String get updatedBankAccount => - _localizedValues[localeCode]['updated_bank_account'] ?? - _localizedValues['en']['updated_bank_account']; + String? get updatedBankAccount => + _localizedValues[localeCode]!['updated_bank_account'] ?? + _localizedValues['en']!['updated_bank_account']; - String get dueOn => - _localizedValues[localeCode]['due_on'] ?? - _localizedValues['en']['due_on']; + String? get dueOn => + _localizedValues[localeCode]!['due_on'] ?? + _localizedValues['en']!['due_on']; - String get includeDeleted => - _localizedValues[localeCode]['include_deleted'] ?? - _localizedValues['en']['include_deleted']; + String? get includeDeleted => + _localizedValues[localeCode]!['include_deleted'] ?? + _localizedValues['en']!['include_deleted']; - String get includeDeletedHelp => - _localizedValues[localeCode]['include_deleted_help'] ?? - _localizedValues['en']['include_deleted_help']; + String? get includeDeletedHelp => + _localizedValues[localeCode]!['include_deleted_help'] ?? + _localizedValues['en']!['include_deleted_help']; - String get wouldYouRateTheApp => - _localizedValues[localeCode]['would_you_rate_the_app'] ?? - _localizedValues['en']['would_you_rate_the_app']; + String? get wouldYouRateTheApp => + _localizedValues[localeCode]!['would_you_rate_the_app'] ?? + _localizedValues['en']!['would_you_rate_the_app']; - String get purchaseOrderItem => - _localizedValues[localeCode]['purchase_order_item'] ?? - _localizedValues['en']['purchase_order_item']; + String? get purchaseOrderItem => + _localizedValues[localeCode]!['purchase_order_item'] ?? + _localizedValues['en']!['purchase_order_item']; - String get purchaseOrderNumber => - _localizedValues[localeCode]['purchase_order_number'] ?? - _localizedValues['en']['purchase_order_number']; + String? get purchaseOrderNumber => + _localizedValues[localeCode]!['purchase_order_number'] ?? + _localizedValues['en']!['purchase_order_number']; - String get longPressToSelect => - _localizedValues[localeCode]['long_press_to_select'] ?? - _localizedValues['en']['long_press_to_select']; + String? get longPressToSelect => + _localizedValues[localeCode]!['long_press_to_select'] ?? + _localizedValues['en']!['long_press_to_select']; - String get pdfPreview => - _localizedValues[localeCode]['pdf_preview'] ?? - _localizedValues['en']['pdf_preview']; + String? get pdfPreview => + _localizedValues[localeCode]!['pdf_preview'] ?? + _localizedValues['en']!['pdf_preview']; - String get previewLocation => - _localizedValues[localeCode]['preview_location'] ?? - _localizedValues['en']['preview_location']; + String? get previewLocation => + _localizedValues[localeCode]!['preview_location'] ?? + _localizedValues['en']!['preview_location']; - String get bottom => - _localizedValues[localeCode]['bottom'] ?? - _localizedValues['en']['bottom']; + String? get bottom => + _localizedValues[localeCode]!['bottom'] ?? + _localizedValues['en']!['bottom']; - String get side => - _localizedValues[localeCode]['side'] ?? _localizedValues['en']['side']; + String? get side => + _localizedValues[localeCode]!['side'] ?? _localizedValues['en']!['side']; - String get vendorPostalCode => - _localizedValues[localeCode]['vendor_postal_code'] ?? - _localizedValues['en']['vendor_postal_code']; + String? get vendorPostalCode => + _localizedValues[localeCode]!['vendor_postal_code'] ?? + _localizedValues['en']!['vendor_postal_code']; - String get bulkPrint => - _localizedValues[localeCode]['bulk_print'] ?? - _localizedValues['en']['bulk_print']; + String? get bulkPrint => + _localizedValues[localeCode]!['bulk_print'] ?? + _localizedValues['en']!['bulk_print']; - String get bankTransaction => - _localizedValues[localeCode]['bank_transaction'] ?? - _localizedValues['en']['bank_transaction']; + String? get bankTransaction => + _localizedValues[localeCode]!['bank_transaction'] ?? + _localizedValues['en']!['bank_transaction']; - String get baseType => - _localizedValues[localeCode]['base_type'] ?? - _localizedValues['en']['base_type']; + String? get baseType => + _localizedValues[localeCode]!['base_type'] ?? + _localizedValues['en']!['base_type']; - String get categoryType => - _localizedValues[localeCode]['category_type'] ?? - _localizedValues['en']['category_type']; + String? get categoryType => + _localizedValues[localeCode]!['category_type'] ?? + _localizedValues['en']!['category_type']; - String get resendCode => - _localizedValues[localeCode]['resend_code'] ?? - _localizedValues['en']['resend_code']; + String? get resendCode => + _localizedValues[localeCode]!['resend_code'] ?? + _localizedValues['en']!['resend_code']; - String get verifyPhoneNumber2faHelp => - _localizedValues[localeCode]['verify_phone_number_2fa_help'] ?? - _localizedValues['en']['verify_phone_number_2fa_help']; + String? get verifyPhoneNumber2faHelp => + _localizedValues[localeCode]!['verify_phone_number_2fa_help'] ?? + _localizedValues['en']!['verify_phone_number_2fa_help']; - String get codeWasSentTo => - _localizedValues[localeCode]['code_was_sent_to'] ?? - _localizedValues['en']['code_was_sent_to']; + String? get codeWasSentTo => + _localizedValues[localeCode]!['code_was_sent_to'] ?? + _localizedValues['en']!['code_was_sent_to']; - String get changeNumber => - _localizedValues[localeCode]['change_number'] ?? - _localizedValues['en']['change_number']; + String? get changeNumber => + _localizedValues[localeCode]!['change_number'] ?? + _localizedValues['en']!['change_number']; - String get disable2fa => - _localizedValues[localeCode]['disable_2fa'] ?? - _localizedValues['en']['disable_2fa']; + String? get disable2fa => + _localizedValues[localeCode]!['disable_2fa'] ?? + _localizedValues['en']!['disable_2fa']; - String get upgradeToConnectBankAccount => - _localizedValues[localeCode]['upgrade_to_connect_bank_account'] ?? - _localizedValues['en']['upgrade_to_connect_bank_account']; + String? get upgradeToConnectBankAccount => + _localizedValues[localeCode]!['upgrade_to_connect_bank_account'] ?? + _localizedValues['en']!['upgrade_to_connect_bank_account']; - String get clickHereToConnectBankAccount => - _localizedValues[localeCode]['click_here_to_connect_bank_account'] ?? - _localizedValues['en']['click_here_to_connect_bank_account']; + String? get clickHereToConnectBankAccount => + _localizedValues[localeCode]!['click_here_to_connect_bank_account'] ?? + _localizedValues['en']!['click_here_to_connect_bank_account']; - String get refreshAccounts => - _localizedValues[localeCode]['refresh_accounts'] ?? - _localizedValues['en']['refresh_accounts']; + String? get refreshAccounts => + _localizedValues[localeCode]!['refresh_accounts'] ?? + _localizedValues['en']!['refresh_accounts']; - String get autoSync => - _localizedValues[localeCode]['auto_sync'] ?? - _localizedValues['en']['auto_sync']; + String? get autoSync => + _localizedValues[localeCode]!['auto_sync'] ?? + _localizedValues['en']!['auto_sync']; - String get saveAsDefaultTerms => - _localizedValues[localeCode]['save_as_default_terms'] ?? - _localizedValues['en']['save_as_default_terms']; + String? get saveAsDefaultTerms => + _localizedValues[localeCode]!['save_as_default_terms'] ?? + _localizedValues['en']!['save_as_default_terms']; - String get saveAsDefaultFooter => - _localizedValues[localeCode]['save_as_default_footer'] ?? - _localizedValues['en']['save_as_default_footer']; + String? get saveAsDefaultFooter => + _localizedValues[localeCode]!['save_as_default_footer'] ?? + _localizedValues['en']!['save_as_default_footer']; - String get transactionRule => - _localizedValues[localeCode]['transaction_rule'] ?? - _localizedValues['en']['transaction_rule']; + String? get transactionRule => + _localizedValues[localeCode]!['transaction_rule'] ?? + _localizedValues['en']!['transaction_rule']; - String get transactionRules => - _localizedValues[localeCode]['transaction_rules'] ?? - _localizedValues['en']['transaction_rules']; + String? get transactionRules => + _localizedValues[localeCode]!['transaction_rules'] ?? + _localizedValues['en']!['transaction_rules']; - String get newTransactionRule => - _localizedValues[localeCode]['new_transaction_rule'] ?? - _localizedValues['en']['new_transaction_rule']; + String? get newTransactionRule => + _localizedValues[localeCode]!['new_transaction_rule'] ?? + _localizedValues['en']!['new_transaction_rule']; - String get createdTransactionRule => - _localizedValues[localeCode]['created_transaction_rule'] ?? - _localizedValues['en']['created_transaction_rule']; + String? get createdTransactionRule => + _localizedValues[localeCode]!['created_transaction_rule'] ?? + _localizedValues['en']!['created_transaction_rule']; - String get updatedTransactionRule => - _localizedValues[localeCode]['updated_transaction_rule'] ?? - _localizedValues['en']['updated_transaction_rule']; + String? get updatedTransactionRule => + _localizedValues[localeCode]!['updated_transaction_rule'] ?? + _localizedValues['en']!['updated_transaction_rule']; - String get archivedTransactionRule => - _localizedValues[localeCode]['archived_transaction_rule'] ?? - _localizedValues['en']['archived_transaction_rule']; + String? get archivedTransactionRule => + _localizedValues[localeCode]!['archived_transaction_rule'] ?? + _localizedValues['en']!['archived_transaction_rule']; - String get deletedTransactionRule => - _localizedValues[localeCode]['deleted_transaction_rule'] ?? - _localizedValues['en']['deleted_transaction_rule']; + String? get deletedTransactionRule => + _localizedValues[localeCode]!['deleted_transaction_rule'] ?? + _localizedValues['en']!['deleted_transaction_rule']; - String get restoredTransactionRule => - _localizedValues[localeCode]['restored_transaction_rule'] ?? - _localizedValues['en']['restored_transaction_rule']; + String? get restoredTransactionRule => + _localizedValues[localeCode]!['restored_transaction_rule'] ?? + _localizedValues['en']!['restored_transaction_rule']; - String get editTransactionRule => - _localizedValues[localeCode]['edit_transaction_rule'] ?? - _localizedValues['en']['edit_transaction_rule']; + String? get editTransactionRule => + _localizedValues[localeCode]!['edit_transaction_rule'] ?? + _localizedValues['en']!['edit_transaction_rule']; - String get searchTransactionRule => - _localizedValues[localeCode]['search_transaction_rule'] ?? - _localizedValues['en']['search_transaction_rule']; + String? get searchTransactionRule => + _localizedValues[localeCode]!['search_transaction_rule'] ?? + _localizedValues['en']!['search_transaction_rule']; - String get searchTransactionRules => - _localizedValues[localeCode]['search_transaction_rules'] ?? - _localizedValues['en']['search_transaction_rules']; + String? get searchTransactionRules => + _localizedValues[localeCode]!['search_transaction_rules'] ?? + _localizedValues['en']!['search_transaction_rules']; - String get rules => - _localizedValues[localeCode]['rules'] ?? _localizedValues['en']['rules']; + String? get rules => + _localizedValues[localeCode]!['rules'] ?? _localizedValues['en']!['rules']; - String get matchAllRulesHelp => - _localizedValues[localeCode]['match_all_rules_help'] ?? - _localizedValues['en']['match_all_rules_help']; + String? get matchAllRulesHelp => + _localizedValues[localeCode]!['match_all_rules_help'] ?? + _localizedValues['en']!['match_all_rules_help']; - String get matchAllRules => - _localizedValues[localeCode]['match_all_rules'] ?? - _localizedValues['en']['match_all_rules']; + String? get matchAllRules => + _localizedValues[localeCode]!['match_all_rules'] ?? + _localizedValues['en']!['match_all_rules']; - String get autoConvertHelp => - _localizedValues[localeCode]['auto_convert_help'] ?? - _localizedValues['en']['auto_convert_help']; + String? get autoConvertHelp => + _localizedValues[localeCode]!['auto_convert_help'] ?? + _localizedValues['en']!['auto_convert_help']; - String get addRule => - _localizedValues[localeCode]['add_rule'] ?? - _localizedValues['en']['add_rule']; + String? get addRule => + _localizedValues[localeCode]!['add_rule'] ?? + _localizedValues['en']!['add_rule']; - String get isWord => - _localizedValues[localeCode]['is'] ?? _localizedValues['en']['is']; + String? get isWord => + _localizedValues[localeCode]!['is'] ?? _localizedValues['en']!['is']; - String get contains => - _localizedValues[localeCode]['contains'] ?? - _localizedValues['en']['contains']; + String? get contains => + _localizedValues[localeCode]!['contains'] ?? + _localizedValues['en']!['contains']; - String get startsWith => - _localizedValues[localeCode]['starts_with'] ?? - _localizedValues['en']['starts_with']; + String? get startsWith => + _localizedValues[localeCode]!['starts_with'] ?? + _localizedValues['en']!['starts_with']; - String get isEmpty => - _localizedValues[localeCode]['is_empty'] ?? - _localizedValues['en']['is_empty']; + String? get isEmpty => + _localizedValues[localeCode]!['is_empty'] ?? + _localizedValues['en']!['is_empty']; - String get value => - _localizedValues[localeCode]['value'] ?? _localizedValues['en']['value']; + String? get value => + _localizedValues[localeCode]!['value'] ?? _localizedValues['en']!['value']; - String get operator => - _localizedValues[localeCode]['operator'] ?? - _localizedValues['en']['operator']; + String? get operator => + _localizedValues[localeCode]!['operator'] ?? + _localizedValues['en']!['operator']; - String get autoBilledInvoice => - _localizedValues[localeCode]['auto_billed_invoice'] ?? - _localizedValues['en']['auto_billed_invoice']; + String? get autoBilledInvoice => + _localizedValues[localeCode]!['auto_billed_invoice'] ?? + _localizedValues['en']!['auto_billed_invoice']; - String get autoBilledInvoices => - _localizedValues[localeCode]['auto_billed_invoices'] ?? - _localizedValues['en']['auto_billed_invoices']; + String? get autoBilledInvoices => + _localizedValues[localeCode]!['auto_billed_invoices'] ?? + _localizedValues['en']!['auto_billed_invoices']; - String get convertMatched => - _localizedValues[localeCode]['convert_matched'] ?? - _localizedValues['en']['convert_matched']; + String? get convertMatched => + _localizedValues[localeCode]!['convert_matched'] ?? + _localizedValues['en']!['convert_matched']; - String get optionalProducts => - _localizedValues[localeCode]['optional_products'] ?? - _localizedValues['en']['optional_products']; + String? get optionalProducts => + _localizedValues[localeCode]!['optional_products'] ?? + _localizedValues['en']!['optional_products']; - String get optionalRecurringProducts => - _localizedValues[localeCode]['optional_recurring_products'] ?? - _localizedValues['en']['optional_recurring_products']; + String? get optionalRecurringProducts => + _localizedValues[localeCode]!['optional_recurring_products'] ?? + _localizedValues['en']!['optional_recurring_products']; - String get registrationRequired => - _localizedValues[localeCode]['registration_required'] ?? - _localizedValues['en']['registration_required']; + String? get registrationRequired => + _localizedValues[localeCode]!['registration_required'] ?? + _localizedValues['en']!['registration_required']; - String get registrationRequiredHelp => - _localizedValues[localeCode]['registration_required_help'] ?? - _localizedValues['en']['registration_required_help']; + String? get registrationRequiredHelp => + _localizedValues[localeCode]!['registration_required_help'] ?? + _localizedValues['en']!['registration_required_help']; - String get useInventoryManagement => - _localizedValues[localeCode]['use_inventory_management'] ?? - _localizedValues['en']['use_inventory_management']; + String? get useInventoryManagement => + _localizedValues[localeCode]!['use_inventory_management'] ?? + _localizedValues['en']!['use_inventory_management']; - String get useInventoryManagementHelp => - _localizedValues[localeCode]['use_inventory_management_help'] ?? - _localizedValues['en']['use_inventory_management_help']; + String? get useInventoryManagementHelp => + _localizedValues[localeCode]!['use_inventory_management_help'] ?? + _localizedValues['en']!['use_inventory_management_help']; - String get lockInvoicedTasks => - _localizedValues[localeCode]['lock_invoiced_tasks'] ?? - _localizedValues['en']['lock_invoiced_tasks']; + String? get lockInvoicedTasks => + _localizedValues[localeCode]!['lock_invoiced_tasks'] ?? + _localizedValues['en']!['lock_invoiced_tasks']; - String get lockInvoicedTasksHelp => - _localizedValues[localeCode]['lock_invoiced_tasks_help'] ?? - _localizedValues['en']['lock_invoiced_tasks_help']; + String? get lockInvoicedTasksHelp => + _localizedValues[localeCode]!['lock_invoiced_tasks_help'] ?? + _localizedValues['en']!['lock_invoiced_tasks_help']; - String get linkPayment => - _localizedValues[localeCode]['link_payment'] ?? - _localizedValues['en']['link_payment']; + String? get linkPayment => + _localizedValues[localeCode]!['link_payment'] ?? + _localizedValues['en']!['link_payment']; - String get linkExpense => - _localizedValues[localeCode]['link_expense'] ?? - _localizedValues['en']['link_expense']; + String? get linkExpense => + _localizedValues[localeCode]!['link_expense'] ?? + _localizedValues['en']!['link_expense']; - String get linkExpenses => - _localizedValues[localeCode]['link_expenses'] ?? - _localizedValues['en']['link_expenses']; + String? get linkExpenses => + _localizedValues[localeCode]!['link_expenses'] ?? + _localizedValues['en']!['link_expenses']; - String get linkedTransaction => - _localizedValues[localeCode]['linked_transaction'] ?? - _localizedValues['en']['linked_transaction']; + String? get linkedTransaction => + _localizedValues[localeCode]!['linked_transaction'] ?? + _localizedValues['en']!['linked_transaction']; - String get deleteProject => - _localizedValues[localeCode]['delete_project'] ?? - _localizedValues['en']['delete_project']; + String? get deleteProject => + _localizedValues[localeCode]!['delete_project'] ?? + _localizedValues['en']!['delete_project']; - String get onlinePaymentEmailHelp => - _localizedValues[localeCode]['online_payment_email_help'] ?? - _localizedValues['en']['online_payment_email_help']; + String? get onlinePaymentEmailHelp => + _localizedValues[localeCode]!['online_payment_email_help'] ?? + _localizedValues['en']!['online_payment_email_help']; - String get manualPaymentEmailHelp => - _localizedValues[localeCode]['manual_payment_email_help'] ?? - _localizedValues['en']['manual_payment_email_help']; + String? get manualPaymentEmailHelp => + _localizedValues[localeCode]!['manual_payment_email_help'] ?? + _localizedValues['en']!['manual_payment_email_help']; - String get markPaidPaymentEmailHelp => - _localizedValues[localeCode]['mark_paid_payment_email_help'] ?? - _localizedValues['en']['mark_paid_payment_email_help']; + String? get markPaidPaymentEmailHelp => + _localizedValues[localeCode]!['mark_paid_payment_email_help'] ?? + _localizedValues['en']!['mark_paid_payment_email_help']; - String get matomoUrl => - _localizedValues[localeCode]['matomo_url'] ?? - _localizedValues['en']['matomo_url']; + String? get matomoUrl => + _localizedValues[localeCode]!['matomo_url'] ?? + _localizedValues['en']!['matomo_url']; - String get matomoId => - _localizedValues[localeCode]['matomo_id'] ?? - _localizedValues['en']['matomo_id']; + String? get matomoId => + _localizedValues[localeCode]!['matomo_id'] ?? + _localizedValues['en']!['matomo_id']; - String get convertPaymentCurrencyHelp => - _localizedValues[localeCode]['convert_payment_currency_help'] ?? - _localizedValues['en']['convert_payment_currency_help']; + String? get convertPaymentCurrencyHelp => + _localizedValues[localeCode]!['convert_payment_currency_help'] ?? + _localizedValues['en']!['convert_payment_currency_help']; - String get convertExpenseCurrencyHelp => - _localizedValues[localeCode]['convert_expense_currency_help'] ?? - _localizedValues['en']['convert_expense_currency_help']; + String? get convertExpenseCurrencyHelp => + _localizedValues[localeCode]!['convert_expense_currency_help'] ?? + _localizedValues['en']!['convert_expense_currency_help']; - String get creditPaymentError => - _localizedValues[localeCode]['credit_payment_error'] ?? - _localizedValues['en']['credit_payment_error']; + String? get creditPaymentError => + _localizedValues[localeCode]!['credit_payment_error'] ?? + _localizedValues['en']!['credit_payment_error']; - String get markup => - _localizedValues[localeCode]['markup'] ?? - _localizedValues['en']['markup']; + String? get markup => + _localizedValues[localeCode]!['markup'] ?? + _localizedValues['en']!['markup']; - String get updatePayment => - _localizedValues[localeCode]['update_payment'] ?? - _localizedValues['en']['update_payment']; + String? get updatePayment => + _localizedValues[localeCode]!['update_payment'] ?? + _localizedValues['en']!['update_payment']; - String get notifyVendorWhenPaid => - _localizedValues[localeCode]['notify_vendor_when_paid'] ?? - _localizedValues['en']['notify_vendor_when_paid']; + String? get notifyVendorWhenPaid => + _localizedValues[localeCode]!['notify_vendor_when_paid'] ?? + _localizedValues['en']!['notify_vendor_when_paid']; - String get notifyVendorWhenPaidHelp => - _localizedValues[localeCode]['notify_vendor_when_paid_help'] ?? - _localizedValues['en']['notify_vendor_when_paid_help']; + String? get notifyVendorWhenPaidHelp => + _localizedValues[localeCode]!['notify_vendor_when_paid_help'] ?? + _localizedValues['en']!['notify_vendor_when_paid_help']; - String get installedVersion => - _localizedValues[localeCode]['installed_version'] ?? - _localizedValues['en']['installed_version']; + String? get installedVersion => + _localizedValues[localeCode]!['installed_version'] ?? + _localizedValues['en']!['installed_version']; - String get setupWizardLogo => - _localizedValues[localeCode]['setup_wizard_logo'] ?? - _localizedValues['en']['setup_wizard_logo']; + String? get setupWizardLogo => + _localizedValues[localeCode]!['setup_wizard_logo'] ?? + _localizedValues['en']!['setup_wizard_logo']; - String get upload => - _localizedValues[localeCode]['upload'] ?? - _localizedValues['en']['upload']; + String? get upload => + _localizedValues[localeCode]!['upload'] ?? + _localizedValues['en']!['upload']; - String get importDesign => - _localizedValues[localeCode]['import_design'] ?? - _localizedValues['en']['import_design']; + String? get importDesign => + _localizedValues[localeCode]!['import_design'] ?? + _localizedValues['en']!['import_design']; - String get importedDesign => - _localizedValues[localeCode]['imported_design'] ?? - _localizedValues['en']['imported_design']; + String? get importedDesign => + _localizedValues[localeCode]!['imported_design'] ?? + _localizedValues['en']!['imported_design']; - String get invalidDesign => - _localizedValues[localeCode]['invalid_design'] ?? - _localizedValues['en']['invalid_design']; + String? get invalidDesign => + _localizedValues[localeCode]!['invalid_design'] ?? + _localizedValues['en']!['invalid_design']; - String get last365Days => - _localizedValues[localeCode]['last365_days'] ?? - _localizedValues['en']['last365_days']; + String? get last365Days => + _localizedValues[localeCode]!['last365_days'] ?? + _localizedValues['en']!['last365_days']; - String get clickPlusToCreateRecord => - _localizedValues[localeCode]['click_plus_to_create_record'] ?? - _localizedValues['en']['click_plus_to_create_record']; + String? get clickPlusToCreateRecord => + _localizedValues[localeCode]!['click_plus_to_create_record'] ?? + _localizedValues['en']!['click_plus_to_create_record']; - String get emailAlignment => - _localizedValues[localeCode]['email_alignment'] ?? - _localizedValues['en']['email_alignment']; + String? get emailAlignment => + _localizedValues[localeCode]!['email_alignment'] ?? + _localizedValues['en']!['email_alignment']; - String get autoBillStandardInvoices => - _localizedValues[localeCode]['auto_bill_standard_invoices'] ?? - _localizedValues['en']['auto_bill_standard_invoices']; + String? get autoBillStandardInvoices => + _localizedValues[localeCode]!['auto_bill_standard_invoices'] ?? + _localizedValues['en']!['auto_bill_standard_invoices']; - String get autoBillRecurringInvoices => - _localizedValues[localeCode]['auto_bill_recurring_invoices'] ?? - _localizedValues['en']['auto_bill_recurring_invoices']; + String? get autoBillRecurringInvoices => + _localizedValues[localeCode]!['auto_bill_recurring_invoices'] ?? + _localizedValues['en']!['auto_bill_recurring_invoices']; - String get invoiceTaskHours => - _localizedValues[localeCode]['invoice_task_hours'] ?? - _localizedValues['en']['invoice_task_hours']; + String? get invoiceTaskHours => + _localizedValues[localeCode]!['invoice_task_hours'] ?? + _localizedValues['en']!['invoice_task_hours']; - String get invoiceTaskHoursHelp => - _localizedValues[localeCode]['invoice_task_hours_help'] ?? - _localizedValues['en']['invoice_task_hours_help']; + String? get invoiceTaskHoursHelp => + _localizedValues[localeCode]!['invoice_task_hours_help'] ?? + _localizedValues['en']!['invoice_task_hours_help']; - String get showEmailFooter => - _localizedValues[localeCode]['show_email_footer'] ?? - _localizedValues['en']['show_email_footer']; + String? get showEmailFooter => + _localizedValues[localeCode]!['show_email_footer'] ?? + _localizedValues['en']!['show_email_footer']; - String get emailedStatement => - _localizedValues[localeCode]['emailed_statement'] ?? - _localizedValues['en']['emailed_statement']; + String? get emailedStatement => + _localizedValues[localeCode]!['emailed_statement'] ?? + _localizedValues['en']!['emailed_statement']; - String get hour => - _localizedValues[localeCode]['hour'] ?? _localizedValues['en']['hour']; + String? get hour => + _localizedValues[localeCode]!['hour'] ?? _localizedValues['en']!['hour']; - String get inventoryThreshold => - _localizedValues[localeCode]['inventory_threshold'] ?? - _localizedValues['en']['inventory_threshold']; + String? get inventoryThreshold => + _localizedValues[localeCode]!['inventory_threshold'] ?? + _localizedValues['en']!['inventory_threshold']; - String get syncFrom => - _localizedValues[localeCode]['sync_from'] ?? - _localizedValues['en']['sync_from']; + String? get syncFrom => + _localizedValues[localeCode]!['sync_from'] ?? + _localizedValues['en']!['sync_from']; - String get clientContacts => - _localizedValues[localeCode]['client_contacts'] ?? - _localizedValues['en']['client_contacts']; + String? get clientContacts => + _localizedValues[localeCode]!['client_contacts'] ?? + _localizedValues['en']!['client_contacts']; - String get failed => - _localizedValues[localeCode]['failed'] ?? - _localizedValues['en']['failed']; + String? get failed => + _localizedValues[localeCode]!['failed'] ?? + _localizedValues['en']!['failed']; - String get postalCity => - _localizedValues[localeCode]['postal_city'] ?? - _localizedValues['en']['postal_city']; + String? get postalCity => + _localizedValues[localeCode]!['postal_city'] ?? + _localizedValues['en']!['postal_city']; - String get logoSize => - _localizedValues[localeCode]['logo_size'] ?? - _localizedValues['en']['logo_size']; + String? get logoSize => + _localizedValues[localeCode]!['logo_size'] ?? + _localizedValues['en']!['logo_size']; - String get pixels => - _localizedValues[localeCode]['pixels'] ?? - _localizedValues['en']['pixels']; + String? get pixels => + _localizedValues[localeCode]!['pixels'] ?? + _localizedValues['en']!['pixels']; - String get noDocumentsToDownload => - _localizedValues[localeCode]['no_documents_to_download'] ?? - _localizedValues['en']['no_documents_to_download']; + String? get noDocumentsToDownload => + _localizedValues[localeCode]!['no_documents_to_download'] ?? + _localizedValues['en']!['no_documents_to_download']; - String get showPaidStamp => - _localizedValues[localeCode]['show_paid_stamp'] ?? - _localizedValues['en']['show_paid_stamp']; + String? get showPaidStamp => + _localizedValues[localeCode]!['show_paid_stamp'] ?? + _localizedValues['en']!['show_paid_stamp']; - String get showShippingAddress => - _localizedValues[localeCode]['show_shipping_address'] ?? - _localizedValues['en']['show_shipping_address']; + String? get showShippingAddress => + _localizedValues[localeCode]!['show_shipping_address'] ?? + _localizedValues['en']!['show_shipping_address']; - String get showPreview => - _localizedValues[localeCode]['show_preview'] ?? - _localizedValues['en']['show_preview']; + String? get showPreview => + _localizedValues[localeCode]!['show_preview'] ?? + _localizedValues['en']!['show_preview']; - String get fromEmail => - _localizedValues[localeCode]['from_email'] ?? - _localizedValues['en']['from_email']; + String? get fromEmail => + _localizedValues[localeCode]!['from_email'] ?? + _localizedValues['en']!['from_email']; - String get acceptPurchaseOrderNumber => - _localizedValues[localeCode]['accept_purchase_order_number'] ?? - _localizedValues['en']['accept_purchase_order_number']; + String? get acceptPurchaseOrderNumber => + _localizedValues[localeCode]!['accept_purchase_order_number'] ?? + _localizedValues['en']!['accept_purchase_order_number']; - String get acceptPurchaseOrderNumberHelp => - _localizedValues[localeCode]['accept_purchase_order_number_help'] ?? - _localizedValues['en']['accept_purchase_order_number_help']; + String? get acceptPurchaseOrderNumberHelp => + _localizedValues[localeCode]!['accept_purchase_order_number_help'] ?? + _localizedValues['en']!['accept_purchase_order_number_help']; - String get viewAll => - _localizedValues[localeCode]['view_all'] ?? - _localizedValues['en']['view_all']; + String? get viewAll => + _localizedValues[localeCode]!['view_all'] ?? + _localizedValues['en']!['view_all']; - String get editAll => - _localizedValues[localeCode]['edit_all'] ?? - _localizedValues['en']['edit_all']; + String? get editAll => + _localizedValues[localeCode]!['edit_all'] ?? + _localizedValues['en']!['edit_all']; - String get paymentMethods => - _localizedValues[localeCode]['payment_methods'] ?? - _localizedValues['en']['payment_methods']; + String? get paymentMethods => + _localizedValues[localeCode]!['payment_methods'] ?? + _localizedValues['en']!['payment_methods']; - String get testUrl => - _localizedValues[localeCode]['test_url'] ?? - _localizedValues['en']['test_url']; + String? get testUrl => + _localizedValues[localeCode]!['test_url'] ?? + _localizedValues['en']!['test_url']; - String get maxQuantity => - _localizedValues[localeCode]['max_quantity'] ?? - _localizedValues['en']['max_quantity']; + String? get maxQuantity => + _localizedValues[localeCode]!['max_quantity'] ?? + _localizedValues['en']!['max_quantity']; - String get imageUrl => - _localizedValues[localeCode]['image_url'] ?? - _localizedValues['en']['image_url']; + String? get imageUrl => + _localizedValues[localeCode]!['image_url'] ?? + _localizedValues['en']!['image_url']; - String get schedules => - _localizedValues[localeCode]['schedules'] ?? - _localizedValues['en']['schedules']; + String? get schedules => + _localizedValues[localeCode]!['schedules'] ?? + _localizedValues['en']!['schedules']; - String get newSchedule => - _localizedValues[localeCode]['new_schedule'] ?? - _localizedValues['en']['new_schedule']; + String? get newSchedule => + _localizedValues[localeCode]!['new_schedule'] ?? + _localizedValues['en']!['new_schedule']; - String get createdSchedule => - _localizedValues[localeCode]['created_schedule'] ?? - _localizedValues['en']['created_schedule']; + String? get createdSchedule => + _localizedValues[localeCode]!['created_schedule'] ?? + _localizedValues['en']!['created_schedule']; - String get updatedSchedule => - _localizedValues[localeCode]['updated_schedule'] ?? - _localizedValues['en']['updated_schedule']; + String? get updatedSchedule => + _localizedValues[localeCode]!['updated_schedule'] ?? + _localizedValues['en']!['updated_schedule']; - String get archivedSchedule => - _localizedValues[localeCode]['archived_schedule'] ?? - _localizedValues['en']['archived_schedule']; + String? get archivedSchedule => + _localizedValues[localeCode]!['archived_schedule'] ?? + _localizedValues['en']!['archived_schedule']; - String get deletedSchedule => - _localizedValues[localeCode]['deleted_schedule'] ?? - _localizedValues['en']['deleted_schedule']; + String? get deletedSchedule => + _localizedValues[localeCode]!['deleted_schedule'] ?? + _localizedValues['en']!['deleted_schedule']; - String get restoredSchedule => - _localizedValues[localeCode]['restored_schedule'] ?? - _localizedValues['en']['restored_schedule']; + String? get restoredSchedule => + _localizedValues[localeCode]!['restored_schedule'] ?? + _localizedValues['en']!['restored_schedule']; - String get editSchedule => - _localizedValues[localeCode]['edit_schedule'] ?? - _localizedValues['en']['edit_schedule']; + String? get editSchedule => + _localizedValues[localeCode]!['edit_schedule'] ?? + _localizedValues['en']!['edit_schedule']; - String get searchSchedule => - _localizedValues[localeCode]['search_schedule'] ?? - _localizedValues['en']['search_schedule']; + String? get searchSchedule => + _localizedValues[localeCode]!['search_schedule'] ?? + _localizedValues['en']!['search_schedule']; - String get searchSchedules => - _localizedValues[localeCode]['search_schedules'] ?? - _localizedValues['en']['search_schedules']; + String? get searchSchedules => + _localizedValues[localeCode]!['search_schedules'] ?? + _localizedValues['en']!['search_schedules']; - String get once => - _localizedValues[localeCode]['once'] ?? _localizedValues['en']['once']; + String? get once => + _localizedValues[localeCode]!['once'] ?? _localizedValues['en']!['once']; - String get emailStatement => - _localizedValues[localeCode]['email_statement'] ?? - _localizedValues['en']['email_statement']; + String? get emailStatement => + _localizedValues[localeCode]!['email_statement'] ?? + _localizedValues['en']!['email_statement']; - String get showAgingTable => - _localizedValues[localeCode]['show_aging_table'] ?? - _localizedValues['en']['show_aging_table']; + String? get showAgingTable => + _localizedValues[localeCode]!['show_aging_table'] ?? + _localizedValues['en']!['show_aging_table']; - String get showPaymentsTable => - _localizedValues[localeCode]['show_payments_table'] ?? - _localizedValues['en']['show_payments_table']; + String? get showPaymentsTable => + _localizedValues[localeCode]!['show_payments_table'] ?? + _localizedValues['en']!['show_payments_table']; - String get onlyClientsWithInvoices => - _localizedValues[localeCode]['only_clients_with_invoices'] ?? - _localizedValues['en']['only_clients_with_invoices']; + String? get onlyClientsWithInvoices => + _localizedValues[localeCode]!['only_clients_with_invoices'] ?? + _localizedValues['en']!['only_clients_with_invoices']; - String get allClients => - _localizedValues[localeCode]['all_clients'] ?? - _localizedValues['en']['all_clients']; + String? get allClients => + _localizedValues[localeCode]!['all_clients'] ?? + _localizedValues['en']!['all_clients']; - String get nextRun => - _localizedValues[localeCode]['next_run'] ?? - _localizedValues['en']['next_run']; + String? get nextRun => + _localizedValues[localeCode]!['next_run'] ?? + _localizedValues['en']!['next_run']; - String get upgradeToPaidPlanToSchedule => - _localizedValues[localeCode]['upgrade_to_paid_plan_to_schedule'] ?? - _localizedValues['en']['upgrade_to_paid_plan_to_schedule']; + String? get upgradeToPaidPlanToSchedule => + _localizedValues[localeCode]!['upgrade_to_paid_plan_to_schedule'] ?? + _localizedValues['en']!['upgrade_to_paid_plan_to_schedule']; - String get action => - _localizedValues[localeCode]['action'] ?? - _localizedValues['en']['action']; + String? get action => + _localizedValues[localeCode]!['action'] ?? + _localizedValues['en']!['action']; - String get hidden => - _localizedValues[localeCode]['hidden'] ?? - _localizedValues['en']['hidden']; + String? get hidden => + _localizedValues[localeCode]!['hidden'] ?? + _localizedValues['en']!['hidden']; - String get requiredWord => - _localizedValues[localeCode]['required'] ?? - _localizedValues['en']['required']; + String? get requiredWord => + _localizedValues[localeCode]!['required'] ?? + _localizedValues['en']!['required']; - String get oneTimeProducts => - _localizedValues[localeCode]['one_time_products'] ?? - _localizedValues['en']['one_time_products']; + String? get oneTimeProducts => + _localizedValues[localeCode]!['one_time_products'] ?? + _localizedValues['en']!['one_time_products']; - String get optionalOneTimeProducts => - _localizedValues[localeCode]['optional_one_time_products'] ?? - _localizedValues['en']['optional_one_time_products']; + String? get optionalOneTimeProducts => + _localizedValues[localeCode]!['optional_one_time_products'] ?? + _localizedValues['en']!['optional_one_time_products']; - String get viewReportPermission => - _localizedValues[localeCode]['view_report_permission'] ?? - _localizedValues['en']['view_report_permission']; + String? get viewReportPermission => + _localizedValues[localeCode]!['view_report_permission'] ?? + _localizedValues['en']!['view_report_permission']; - String get paymentBalance => - _localizedValues[localeCode]['payment_balance'] ?? - _localizedValues['en']['payment_balance']; + String? get paymentBalance => + _localizedValues[localeCode]!['payment_balance'] ?? + _localizedValues['en']!['payment_balance']; - String get clientInitiatedPayments => - _localizedValues[localeCode]['client_initiated_payments'] ?? - _localizedValues['en']['client_initiated_payments']; + String? get clientInitiatedPayments => + _localizedValues[localeCode]!['client_initiated_payments'] ?? + _localizedValues['en']!['client_initiated_payments']; - String get clientInitiatedPaymentsHelp => - _localizedValues[localeCode]['client_initiated_payments_help'] ?? - _localizedValues['en']['client_initiated_payments_help']; + String? get clientInitiatedPaymentsHelp => + _localizedValues[localeCode]!['client_initiated_payments_help'] ?? + _localizedValues['en']!['client_initiated_payments_help']; - String get shareInvoiceQuoteColumns => - _localizedValues[localeCode]['share_invoice_quote_columns'] ?? - _localizedValues['en']['share_invoice_quote_columns']; + String? get shareInvoiceQuoteColumns => + _localizedValues[localeCode]!['share_invoice_quote_columns'] ?? + _localizedValues['en']!['share_invoice_quote_columns']; - String get minimumPaymentAmount => - _localizedValues[localeCode]['minimum_payment_amount'] ?? - _localizedValues['en']['minimum_payment_amount']; + String? get minimumPaymentAmount => + _localizedValues[localeCode]!['minimum_payment_amount'] ?? + _localizedValues['en']!['minimum_payment_amount']; - String get ccEmail => - _localizedValues[localeCode]['cc_email'] ?? - _localizedValues['en']['cc_email']; + String? get ccEmail => + _localizedValues[localeCode]!['cc_email'] ?? + _localizedValues['en']!['cc_email']; - String get invoiceProductColumns => - _localizedValues[localeCode]['invoice_product_columns'] ?? - _localizedValues['en']['invoice_product_columns']; + String? get invoiceProductColumns => + _localizedValues[localeCode]!['invoice_product_columns'] ?? + _localizedValues['en']!['invoice_product_columns']; - String get quoteProductColumns => - _localizedValues[localeCode]['quote_product_columns'] ?? - _localizedValues['en']['quote_product_columns']; + String? get quoteProductColumns => + _localizedValues[localeCode]!['quote_product_columns'] ?? + _localizedValues['en']!['quote_product_columns']; - String get emailRecord => - _localizedValues[localeCode]['email_record'] ?? - _localizedValues['en']['email_record']; + String? get emailRecord => + _localizedValues[localeCode]!['email_record'] ?? + _localizedValues['en']!['email_record']; - String get allowBillableTaskItems => - _localizedValues[localeCode]['allow_billable_task_items'] ?? - _localizedValues['en']['allow_billable_task_items']; + String? get allowBillableTaskItems => + _localizedValues[localeCode]!['allow_billable_task_items'] ?? + _localizedValues['en']!['allow_billable_task_items']; - String get allowBillableTaskItemsHelp => - _localizedValues[localeCode]['allow_billable_task_items_help'] ?? - _localizedValues['en']['allow_billable_task_items_help']; + String? get allowBillableTaskItemsHelp => + _localizedValues[localeCode]!['allow_billable_task_items_help'] ?? + _localizedValues['en']!['allow_billable_task_items_help']; - String get showTaskItemDescription => - _localizedValues[localeCode]['show_task_item_description'] ?? - _localizedValues['en']['show_task_item_description']; + String? get showTaskItemDescription => + _localizedValues[localeCode]!['show_task_item_description'] ?? + _localizedValues['en']!['show_task_item_description']; - String get showTaskItemDescriptionHelp => - _localizedValues[localeCode]['show_task_item_description_help'] ?? - _localizedValues['en']['show_task_item_description_help']; + String? get showTaskItemDescriptionHelp => + _localizedValues[localeCode]!['show_task_item_description_help'] ?? + _localizedValues['en']!['show_task_item_description_help']; - String get billable => - _localizedValues[localeCode]['billable'] ?? - _localizedValues['en']['billable']; + String? get billable => + _localizedValues[localeCode]!['billable'] ?? + _localizedValues['en']!['billable']; - String get notBillable => - _localizedValues[localeCode]['not_billable'] ?? - _localizedValues['en']['not_billable']; + String? get notBillable => + _localizedValues[localeCode]!['not_billable'] ?? + _localizedValues['en']!['not_billable']; - String get endpoint => - _localizedValues[localeCode]['endpoint'] ?? - _localizedValues['en']['endpoint']; + String? get endpoint => + _localizedValues[localeCode]!['endpoint'] ?? + _localizedValues['en']!['endpoint']; - String get apiKey => - _localizedValues[localeCode]['api_key'] ?? - _localizedValues['en']['api_key']; + String? get apiKey => + _localizedValues[localeCode]!['api_key'] ?? + _localizedValues['en']!['api_key']; - String get apiToken => - _localizedValues[localeCode]['api_token'] ?? - _localizedValues['en']['api_token']; + String? get apiToken => + _localizedValues[localeCode]!['api_token'] ?? + _localizedValues['en']!['api_token']; - String get increasePrices => - _localizedValues[localeCode]['increase_prices'] ?? - _localizedValues['en']['increase_prices']; + String? get increasePrices => + _localizedValues[localeCode]!['increase_prices'] ?? + _localizedValues['en']!['increase_prices']; - String get updatePrices => - _localizedValues[localeCode]['update_prices'] ?? - _localizedValues['en']['update_prices']; + String? get updatePrices => + _localizedValues[localeCode]!['update_prices'] ?? + _localizedValues['en']!['update_prices']; - String get incresedPrices => - _localizedValues[localeCode]['incresed_prices'] ?? - _localizedValues['en']['incresed_prices']; + String? get incresedPrices => + _localizedValues[localeCode]!['incresed_prices'] ?? + _localizedValues['en']!['incresed_prices']; - String get updatedPrices => - _localizedValues[localeCode]['updated_prices'] ?? - _localizedValues['en']['updated_prices']; + String? get updatedPrices => + _localizedValues[localeCode]!['updated_prices'] ?? + _localizedValues['en']!['updated_prices']; - String get browserPdfViewer => - _localizedValues[localeCode]['browser_pdf_viewer'] ?? - _localizedValues['en']['browser_pdf_viewer']; + String? get browserPdfViewer => + _localizedValues[localeCode]!['browser_pdf_viewer'] ?? + _localizedValues['en']!['browser_pdf_viewer']; - String get browserPdfViewerHelp => - _localizedValues[localeCode]['browser_pdf_viewer_help'] ?? - _localizedValues['en']['browser_pdf_viewer_help']; + String? get browserPdfViewerHelp => + _localizedValues[localeCode]!['browser_pdf_viewer_help'] ?? + _localizedValues['en']!['browser_pdf_viewer_help']; - String get datePickerHint => - _localizedValues[localeCode]['date_picker_hint'] ?? - _localizedValues['en']['date_picker_hint']; + String? get datePickerHint => + _localizedValues[localeCode]!['date_picker_hint'] ?? + _localizedValues['en']!['date_picker_hint']; - String get totalHours => - _localizedValues[localeCode]['total_hours'] ?? - _localizedValues['en']['total_hours']; + String? get totalHours => + _localizedValues[localeCode]!['total_hours'] ?? + _localizedValues['en']!['total_hours']; - String get owner => - _localizedValues[localeCode]['owner'] ?? _localizedValues['en']['owner']; + String? get owner => + _localizedValues[localeCode]!['owner'] ?? _localizedValues['en']!['owner']; - String get admin => - _localizedValues[localeCode]['admin'] ?? _localizedValues['en']['admin']; + String? get admin => + _localizedValues[localeCode]!['admin'] ?? _localizedValues['en']!['admin']; - String get calculateTaxes => - _localizedValues[localeCode]['calculate_taxes'] ?? - _localizedValues['en']['calculate_taxes']; + String? get calculateTaxes => + _localizedValues[localeCode]!['calculate_taxes'] ?? + _localizedValues['en']!['calculate_taxes']; - String get calculateTaxesHelp => - _localizedValues[localeCode]['calculate_taxes_help'] ?? - _localizedValues['en']['calculate_taxes_help']; + String? get calculateTaxesHelp => + _localizedValues[localeCode]!['calculate_taxes_help'] ?? + _localizedValues['en']!['calculate_taxes_help']; - String get sellerSubregion => - _localizedValues[localeCode]['seller_subregion'] ?? - _localizedValues['en']['seller_subregion']; + String? get sellerSubregion => + _localizedValues[localeCode]!['seller_subregion'] ?? + _localizedValues['en']!['seller_subregion']; - String get version => - _localizedValues[localeCode]['version'] ?? - _localizedValues['en']['version']; + String? get version => + _localizedValues[localeCode]!['version'] ?? + _localizedValues['en']!['version']; - String get taxAll => - _localizedValues[localeCode]['tax_all'] ?? - _localizedValues['en']['tax_all']; + String? get taxAll => + _localizedValues[localeCode]!['tax_all'] ?? + _localizedValues['en']!['tax_all']; - String get taxSelected => - _localizedValues[localeCode]['tax_selected'] ?? - _localizedValues['en']['tax_selected']; + String? get taxSelected => + _localizedValues[localeCode]!['tax_selected'] ?? + _localizedValues['en']!['tax_selected']; - String get reducedRate => - _localizedValues[localeCode]['reduced_rate'] ?? - _localizedValues['en']['reduced_rate']; + String? get reducedRate => + _localizedValues[localeCode]!['reduced_rate'] ?? + _localizedValues['en']!['reduced_rate']; - String get physicalGoods => - _localizedValues[localeCode]['physical_goods'] ?? - _localizedValues['en']['physical_goods']; + String? get physicalGoods => + _localizedValues[localeCode]!['physical_goods'] ?? + _localizedValues['en']!['physical_goods']; - String get digitalProducts => - _localizedValues[localeCode]['digital_products'] ?? - _localizedValues['en']['digital_products']; + String? get digitalProducts => + _localizedValues[localeCode]!['digital_products'] ?? + _localizedValues['en']!['digital_products']; - String get services => - _localizedValues[localeCode]['services'] ?? - _localizedValues['en']['services']; + String? get services => + _localizedValues[localeCode]!['services'] ?? + _localizedValues['en']!['services']; - String get shipping => - _localizedValues[localeCode]['shipping'] ?? - _localizedValues['en']['shipping']; + String? get shipping => + _localizedValues[localeCode]!['shipping'] ?? + _localizedValues['en']!['shipping']; - String get taxExempt => - _localizedValues[localeCode]['tax_exempt'] ?? - _localizedValues['en']['tax_exempt']; + String? get taxExempt => + _localizedValues[localeCode]!['tax_exempt'] ?? + _localizedValues['en']!['tax_exempt']; - String get taxCategory => - _localizedValues[localeCode]['tax_category'] ?? - _localizedValues['en']['tax_category']; + String? get taxCategory => + _localizedValues[localeCode]!['tax_category'] ?? + _localizedValues['en']!['tax_category']; - String get paymentManual => - _localizedValues[localeCode]['payment_manual'] ?? - _localizedValues['en']['payment_manual']; + String? get paymentManual => + _localizedValues[localeCode]!['payment_manual'] ?? + _localizedValues['en']!['payment_manual']; - String get setTaxCategory => - _localizedValues[localeCode]['set_tax_category'] ?? - _localizedValues['en']['set_tax_category']; + String? get setTaxCategory => + _localizedValues[localeCode]!['set_tax_category'] ?? + _localizedValues['en']!['set_tax_category']; - String get updatedTaxCategory => - _localizedValues[localeCode]['updated_tax_category'] ?? - _localizedValues['en']['updated_tax_category']; + String? get updatedTaxCategory => + _localizedValues[localeCode]!['updated_tax_category'] ?? + _localizedValues['en']!['updated_tax_category']; - String get updatedTaxCategories => - _localizedValues[localeCode]['updated_tax_categories'] ?? - _localizedValues['en']['updated_tax_categories']; + String? get updatedTaxCategories => + _localizedValues[localeCode]!['updated_tax_categories'] ?? + _localizedValues['en']!['updated_tax_categories']; - String get reducedTax => - _localizedValues[localeCode]['reduced_tax'] ?? - _localizedValues['en']['reduced_tax']; + String? get reducedTax => + _localizedValues[localeCode]!['reduced_tax'] ?? + _localizedValues['en']!['reduced_tax']; - String get overrideTax => - _localizedValues[localeCode]['override_tax'] ?? - _localizedValues['en']['override_tax']; + String? get overrideTax => + _localizedValues[localeCode]!['override_tax'] ?? + _localizedValues['en']!['override_tax']; - String get zeroRated => - _localizedValues[localeCode]['zero_rated'] ?? - _localizedValues['en']['zero_rated']; + String? get zeroRated => + _localizedValues[localeCode]!['zero_rated'] ?? + _localizedValues['en']!['zero_rated']; - String get reverseTax => - _localizedValues[localeCode]['reverse_tax'] ?? - _localizedValues['en']['reverse_tax']; + String? get reverseTax => + _localizedValues[localeCode]!['reverse_tax'] ?? + _localizedValues['en']!['reverse_tax']; - String get enableEInvoice => - _localizedValues[localeCode]['enable_e_invoice'] ?? - _localizedValues['en']['enable_e_invoice']; + String? get enableEInvoice => + _localizedValues[localeCode]!['enable_e_invoice'] ?? + _localizedValues['en']!['enable_e_invoice']; - String get eInvoiceType => - _localizedValues[localeCode]['e_invoice_type'] ?? - _localizedValues['en']['e_invoice_type']; + String? get eInvoiceType => + _localizedValues[localeCode]!['e_invoice_type'] ?? + _localizedValues['en']!['e_invoice_type']; - String get routingId => - _localizedValues[localeCode]['routing_id'] ?? - _localizedValues['en']['routing_id']; + String? get routingId => + _localizedValues[localeCode]!['routing_id'] ?? + _localizedValues['en']!['routing_id']; - String get lightDarkMode => - _localizedValues[localeCode]['light_dark_mode'] ?? - _localizedValues['en']['light_dark_mode']; + String? get lightDarkMode => + _localizedValues[localeCode]!['light_dark_mode'] ?? + _localizedValues['en']!['light_dark_mode']; - String get rename => - _localizedValues[localeCode]['rename'] ?? - _localizedValues['en']['rename']; + String? get rename => + _localizedValues[localeCode]!['rename'] ?? + _localizedValues['en']!['rename']; - String get renamedDocument => - _localizedValues[localeCode]['renamed_document'] ?? - _localizedValues['en']['renamed_document']; + String? get renamedDocument => + _localizedValues[localeCode]!['renamed_document'] ?? + _localizedValues['en']!['renamed_document']; - String get certificatePassphrase => - _localizedValues[localeCode]['certificate_passphrase'] ?? - _localizedValues['en']['certificate_passphrase']; + String? get certificatePassphrase => + _localizedValues[localeCode]!['certificate_passphrase'] ?? + _localizedValues['en']!['certificate_passphrase']; - String get uploadCertificate => - _localizedValues[localeCode]['upload_certificate'] ?? - _localizedValues['en']['upload_certificate']; + String? get uploadCertificate => + _localizedValues[localeCode]!['upload_certificate'] ?? + _localizedValues['en']!['upload_certificate']; - String get certificateSet => - _localizedValues[localeCode]['certificate_set'] ?? - _localizedValues['en']['certificate_set']; + String? get certificateSet => + _localizedValues[localeCode]!['certificate_set'] ?? + _localizedValues['en']!['certificate_set']; - String get certificateNotSet => - _localizedValues[localeCode]['certificate_not_set'] ?? - _localizedValues['en']['certificate_not_set']; + String? get certificateNotSet => + _localizedValues[localeCode]!['certificate_not_set'] ?? + _localizedValues['en']!['certificate_not_set']; - String get passphraseSet => - _localizedValues[localeCode]['passphrase_set'] ?? - _localizedValues['en']['passphrase_set']; + String? get passphraseSet => + _localizedValues[localeCode]!['passphrase_set'] ?? + _localizedValues['en']!['passphrase_set']; - String get passphraseNotSet => - _localizedValues[localeCode]['passphrase_not_set'] ?? - _localizedValues['en']['passphrase_not_set']; + String? get passphraseNotSet => + _localizedValues[localeCode]!['passphrase_not_set'] ?? + _localizedValues['en']!['passphrase_not_set']; - String get uploadedCertificate => - _localizedValues[localeCode]['uploaded_certificate'] ?? - _localizedValues['en']['uploaded_certificate']; + String? get uploadedCertificate => + _localizedValues[localeCode]!['uploaded_certificate'] ?? + _localizedValues['en']!['uploaded_certificate']; - String get nextSendTime => - _localizedValues[localeCode]['next_send_time'] ?? - _localizedValues['en']['next_send_time']; + String? get nextSendTime => + _localizedValues[localeCode]!['next_send_time'] ?? + _localizedValues['en']!['next_send_time']; - String get invoiceTaskItemDescription => - _localizedValues[localeCode]['invoice_task_item_description'] ?? - _localizedValues['en']['invoice_task_item_description']; + String? get invoiceTaskItemDescription => + _localizedValues[localeCode]!['invoice_task_item_description'] ?? + _localizedValues['en']!['invoice_task_item_description']; - String get invoiceTaskItemDescriptionHelp => - _localizedValues[localeCode]['invoice_task_item_description_help'] ?? - _localizedValues['en']['invoice_task_item_description_help']; + String? get invoiceTaskItemDescriptionHelp => + _localizedValues[localeCode]!['invoice_task_item_description_help'] ?? + _localizedValues['en']!['invoice_task_item_description_help']; - String get projectLocation => - _localizedValues[localeCode]['project_location'] ?? - _localizedValues['en']['project_location']; + String? get projectLocation => + _localizedValues[localeCode]!['project_location'] ?? + _localizedValues['en']!['project_location']; - String get emailCountInvoices => - _localizedValues[localeCode]['email_count_invoices'] ?? - _localizedValues['en']['email_count_invoices']; + String? get emailCountInvoices => + _localizedValues[localeCode]!['email_count_invoices'] ?? + _localizedValues['en']!['email_count_invoices']; - String get gallery => - _localizedValues[localeCode]['gallery'] ?? - _localizedValues['en']['gallery']; + String? get gallery => + _localizedValues[localeCode]!['gallery'] ?? + _localizedValues['en']!['gallery']; - String get files => - _localizedValues[localeCode]['files'] ?? _localizedValues['en']['files']; + String? get files => + _localizedValues[localeCode]!['files'] ?? _localizedValues['en']!['files']; - String get camera => - _localizedValues[localeCode]['camera'] ?? - _localizedValues['en']['camera']; + String? get camera => + _localizedValues[localeCode]!['camera'] ?? + _localizedValues['en']!['camera']; - String get creditItem => - _localizedValues[localeCode]['credit_item'] ?? - _localizedValues['en']['credit_item']; + String? get creditItem => + _localizedValues[localeCode]!['credit_item'] ?? + _localizedValues['en']!['credit_item']; - String get showTaskBillable => - _localizedValues[localeCode]['show_task_billable'] ?? - _localizedValues['en']['show_task_billable']; + String? get showTaskBillable => + _localizedValues[localeCode]!['show_task_billable'] ?? + _localizedValues['en']!['show_task_billable']; - String get useMobileToManagePlan => - _localizedValues[localeCode]['use_mobile_to_manage_plan'] ?? - _localizedValues['en']['use_mobile_to_manage_plan']; + String? get useMobileToManagePlan => + _localizedValues[localeCode]!['use_mobile_to_manage_plan'] ?? + _localizedValues['en']!['use_mobile_to_manage_plan']; - String get adminInitiatedPayments => - _localizedValues[localeCode]['admin_initiated_payments'] ?? - _localizedValues['en']['admin_initiated_payments']; + String? get adminInitiatedPayments => + _localizedValues[localeCode]!['admin_initiated_payments'] ?? + _localizedValues['en']!['admin_initiated_payments']; - String get adminInitiatedPaymentsHelp => - _localizedValues[localeCode]['admin_initiated_payments_help'] ?? - _localizedValues['en']['admin_initiated_payments_help']; + String? get adminInitiatedPaymentsHelp => + _localizedValues[localeCode]!['admin_initiated_payments_help'] ?? + _localizedValues['en']!['admin_initiated_payments_help']; - String get defaultPaymentType => - _localizedValues[localeCode]['default_payment_type'] ?? - _localizedValues['en']['default_payment_type']; + String? get defaultPaymentType => + _localizedValues[localeCode]!['default_payment_type'] ?? + _localizedValues['en']!['default_payment_type']; - String get taxDetails => - _localizedValues[localeCode]['tax_details'] ?? - _localizedValues['en']['tax_details']; + String? get taxDetails => + _localizedValues[localeCode]!['tax_details'] ?? + _localizedValues['en']!['tax_details']; - String get county => - _localizedValues[localeCode]['county'] ?? - _localizedValues['en']['county']; + String? get county => + _localizedValues[localeCode]!['county'] ?? + _localizedValues['en']!['county']; - String get region => - _localizedValues[localeCode]['region'] ?? - _localizedValues['en']['region']; + String? get region => + _localizedValues[localeCode]!['region'] ?? + _localizedValues['en']!['region']; - String get district => - _localizedValues[localeCode]['district'] ?? - _localizedValues['en']['district']; + String? get district => + _localizedValues[localeCode]!['district'] ?? + _localizedValues['en']!['district']; - String get isTaxExempt => - _localizedValues[localeCode]['is_tax_exempt'] ?? - _localizedValues['en']['is_tax_exempt']; + String? get isTaxExempt => + _localizedValues[localeCode]!['is_tax_exempt'] ?? + _localizedValues['en']!['is_tax_exempt']; - String get viewDashboardPermission => - _localizedValues[localeCode]['view_dashboard_permission'] ?? - _localizedValues['en']['view_dashboard_permission']; + String? get viewDashboardPermission => + _localizedValues[localeCode]!['view_dashboard_permission'] ?? + _localizedValues['en']!['view_dashboard_permission']; - String get unlink => - _localizedValues[localeCode]['unlink'] ?? - _localizedValues['en']['unlink']; + String? get unlink => + _localizedValues[localeCode]!['unlink'] ?? + _localizedValues['en']!['unlink']; - String get unlinkedTransactions => - _localizedValues[localeCode]['unlinked_transactions'] ?? - _localizedValues['en']['unlinked_transactions']; + String? get unlinkedTransactions => + _localizedValues[localeCode]!['unlinked_transactions'] ?? + _localizedValues['en']!['unlinked_transactions']; - String get unlinkedTransaction => - _localizedValues[localeCode]['unlinked_transaction'] ?? - _localizedValues['en']['unlinked_transaction']; + String? get unlinkedTransaction => + _localizedValues[localeCode]!['unlinked_transaction'] ?? + _localizedValues['en']!['unlinked_transaction']; - String get fileSavedInPath => - _localizedValues[localeCode]['file_saved_in_path'] ?? - _localizedValues['en']['file_saved_in_path']; + String? get fileSavedInPath => + _localizedValues[localeCode]!['file_saved_in_path'] ?? + _localizedValues['en']!['file_saved_in_path']; - String get linkedTo => - _localizedValues[localeCode]['linked_to'] ?? - _localizedValues['en']['linked_to']; + String? get linkedTo => + _localizedValues[localeCode]!['linked_to'] ?? + _localizedValues['en']!['linked_to']; - String get public => - _localizedValues[localeCode]['public'] ?? - _localizedValues['en']['public']; + String? get public => + _localizedValues[localeCode]!['public'] ?? + _localizedValues['en']!['public']; - String get private => - _localizedValues[localeCode]['private'] ?? - _localizedValues['en']['private']; + String? get private => + _localizedValues[localeCode]!['private'] ?? + _localizedValues['en']!['private']; - String get image => - _localizedValues[localeCode]['image'] ?? _localizedValues['en']['image']; + String? get image => + _localizedValues[localeCode]!['image'] ?? _localizedValues['en']!['image']; - String get other => - _localizedValues[localeCode]['other'] ?? _localizedValues['en']['other']; + String? get other => + _localizedValues[localeCode]!['other'] ?? _localizedValues['en']!['other']; - String get clickOrDropFilesHere => - _localizedValues[localeCode]['click_or_drop_files_here'] ?? - _localizedValues['en']['click_or_drop_files_here']; + String? get clickOrDropFilesHere => + _localizedValues[localeCode]!['click_or_drop_files_here'] ?? + _localizedValues['en']!['click_or_drop_files_here']; - String get classification => - _localizedValues[localeCode]['classification'] ?? - _localizedValues['en']['classification']; + String? get classification => + _localizedValues[localeCode]!['classification'] ?? + _localizedValues['en']!['classification']; - String get individual => - _localizedValues[localeCode]['individual'] ?? - _localizedValues['en']['individual']; + String? get individual => + _localizedValues[localeCode]!['individual'] ?? + _localizedValues['en']!['individual']; - String get partnership => - _localizedValues[localeCode]['partnership'] ?? - _localizedValues['en']['partnership']; + String? get partnership => + _localizedValues[localeCode]!['partnership'] ?? + _localizedValues['en']!['partnership']; - String get trust => - _localizedValues[localeCode]['trust'] ?? _localizedValues['en']['trust']; + String? get trust => + _localizedValues[localeCode]!['trust'] ?? _localizedValues['en']!['trust']; - String get charity => - _localizedValues[localeCode]['charity'] ?? - _localizedValues['en']['charity']; + String? get charity => + _localizedValues[localeCode]!['charity'] ?? + _localizedValues['en']!['charity']; - String get government => - _localizedValues[localeCode]['government'] ?? - _localizedValues['en']['government']; + String? get government => + _localizedValues[localeCode]!['government'] ?? + _localizedValues['en']!['government']; - String get cacheData => - _localizedValues[localeCode]['cache_data'] ?? - _localizedValues['en']['cache_data']; + String? get cacheData => + _localizedValues[localeCode]!['cache_data'] ?? + _localizedValues['en']!['cache_data']; - String get ziptaxHelp => - _localizedValues[localeCode]['ziptax_help'] ?? - _localizedValues['en']['ziptax_help']; + String? get ziptaxHelp => + _localizedValues[localeCode]!['ziptax_help'] ?? + _localizedValues['en']!['ziptax_help']; - String get recurring => - _localizedValues[localeCode]['recurring'] ?? - _localizedValues['en']['recurring']; + String? get recurring => + _localizedValues[localeCode]!['recurring'] ?? + _localizedValues['en']!['recurring']; // STARTER: lang field - do not remove comment - String lookup(String key) { + String? lookup(String? key) { final lookupKey = toSnakeCase(key); if ((key ?? '').isEmpty) { @@ -109463,14 +109463,14 @@ mixin LocalizationsProvider on LocaleCodeAware { return key; } - final value = _localizedValues[localeCode][lookupKey] ?? - _localizedValues[localeCode][lookupKey.replaceFirst('_id', '')] ?? + final value = _localizedValues[localeCode]![lookupKey] ?? + _localizedValues[localeCode]![lookupKey.replaceFirst('_id', '')] ?? ''; if (value.isEmpty) { print('## ERROR: localization key not found - $key'); - final englishValue = _localizedValues['en'][lookupKey] ?? ''; + final englishValue = _localizedValues['en']![lookupKey] ?? ''; return englishValue.isEmpty ? key : englishValue; } diff --git a/lib/utils/icons.dart b/lib/utils/icons.dart index acb4a81fe..728f62348 100644 --- a/lib/utils/icons.dart +++ b/lib/utils/icons.dart @@ -9,7 +9,7 @@ import 'package:invoiceninja_flutter/constants.dart'; import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/data/models/system_log_model.dart'; -IconData getEntityActionIcon(EntityAction entityAction) { +IconData? getEntityActionIcon(EntityAction? entityAction) { switch (entityAction) { case EntityAction.edit: return MdiIcons.circleEditOutline; @@ -134,7 +134,7 @@ IconData getEntityActionIcon(EntityAction entityAction) { } } -IconData getEntityIcon(EntityType entityType) { +IconData getEntityIcon(EntityType? entityType) { switch (entityType) { case EntityType.dashboard: return MdiIcons.viewDashboard; @@ -204,7 +204,7 @@ IconData getEntityIcon(EntityType entityType) { } } -IconData getFileTypeIcon(String type) { +IconData? getFileTypeIcon(String type) { switch (type) { case 'pdf': return MdiIcons.filePdfBox; @@ -226,7 +226,7 @@ IconData getFileTypeIcon(String type) { } } -IconData getSettingIcon(String section) { +IconData? getSettingIcon(String section) { switch (section) { case kSettingsCompanyDetails: return Icons.business; diff --git a/lib/utils/localization.dart b/lib/utils/localization.dart index b14f231f2..944f1d559 100644 --- a/lib/utils/localization.dart +++ b/lib/utils/localization.dart @@ -14,16 +14,16 @@ class AppLocalization extends LocaleCodeAware with LocalizationsProvider { final Locale locale; - static Locale createLocale(String locale) { + static Locale createLocale(String? locale) { if (!kLanguages.contains(locale)) { return Locale('en'); } - final parts = locale.split('_'); + final parts = locale!.split('_'); return Locale(parts[0], parts.length > 1 ? parts[1] : null); } - static AppLocalization of(BuildContext context) { + static AppLocalization? of(BuildContext context) { return Localizations.of(context, AppLocalization); } } diff --git a/lib/utils/markdown.dart b/lib/utils/markdown.dart index b7cd54023..75a8128e5 100644 --- a/lib/utils/markdown.dart +++ b/lib/utils/markdown.dart @@ -61,7 +61,7 @@ String serializeDocumentToMarkdown(Document doc) { buffer.writeln(''); } } else if (node is ParagraphNode) { - final Attribution blockType = node.getMetadataValue('blockType'); + final Attribution? blockType = node.getMetadataValue('blockType'); if (blockType == header1Attribution) { buffer.write('# ${node.text.toMarkdown()}'); @@ -145,8 +145,8 @@ class _MarkdownToDocument implements md.NodeVisitor { if (inlineVisitor.isImage) { _addImage( // TODO: handle null image URL - imageUrl: inlineVisitor.imageUrl, - altText: inlineVisitor.imageAltText, + imageUrl: inlineVisitor.imageUrl!, + altText: inlineVisitor.imageAltText!, ); } else { _addParagraph(inlineVisitor.attributedText); @@ -205,8 +205,8 @@ class _MarkdownToDocument implements md.NodeVisitor { // no-op: this visitor is block-level only } - void _addHeader(md.Element element, {int level}) { - Attribution headerAttribution; + void _addHeader(md.Element element, {int? level}) { + Attribution? headerAttribution; switch (level) { case 1: headerAttribution = header1Attribution; @@ -283,8 +283,8 @@ class _MarkdownToDocument implements md.NodeVisitor { } void _addImage({ - String imageUrl, - String altText, + required String imageUrl, + required String altText, }) { _content.add( ImageNode( @@ -303,8 +303,8 @@ class _MarkdownToDocument implements md.NodeVisitor { void _addListItem( md.Element element, { - ListItemType listItemType, - int indent, + required ListItemType listItemType, + required int indent, }) { _content.add( ListItemNode( @@ -353,11 +353,11 @@ class _InlineMarkdownToDocument implements md.NodeVisitor { // and we ignore the image. bool get isImage => _imageUrl != null && attributedText.text.isEmpty; - String _imageUrl; - String get imageUrl => _imageUrl; + String? _imageUrl; + String? get imageUrl => _imageUrl; - String _imageAltText; - String get imageAltText => _imageAltText; + String? _imageAltText; + String? get imageAltText => _imageAltText; AttributedText get attributedText => _textStack.first; @@ -408,7 +408,7 @@ class _InlineMarkdownToDocument implements md.NodeVisitor { ); } else if (element.tag == 'a') { styledText.addAttribution( - LinkAttribution(url: Uri.parse(element.attributes['href'])), + LinkAttribution(url: Uri.parse(element.attributes['href']!)), SpanRange( start: 0, end: styledText.text.length - 1, @@ -434,9 +434,9 @@ extension Markdown on AttributedText { /// Serializes an [AttributedText] into markdown format class AttributedTextMarkdownSerializer extends AttributionVisitor { - String _fullText; - StringBuffer _buffer; - int _bufferCursor; + late String _fullText; + StringBuffer? _buffer; + late int _bufferCursor; String serialize(AttributedText attributedText) { _fullText = attributedText.text; @@ -454,7 +454,7 @@ class AttributedTextMarkdownSerializer extends AttributionVisitor { Set endingAttributions, ) { // Write out the text between the end of the last markers, and these new markers. - _buffer.write( + _buffer!.write( fullText.text.substring(_bufferCursor, index), ); @@ -473,7 +473,7 @@ class AttributedTextMarkdownSerializer extends AttributionVisitor { } // Write out the character at this index. - _buffer.write(_fullText[index]); + _buffer!.write(_fullText[index]); _bufferCursor = index + 1; // Add end markers. @@ -497,7 +497,7 @@ class AttributedTextMarkdownSerializer extends AttributionVisitor { void onVisitEnd() { // When the last span has no attributions, we still have text that wasn't added to the buffer yet. if (_bufferCursor <= _fullText.length - 1) { - _buffer.write(_fullText.substring(_bufferCursor)); + _buffer!.write(_fullText.substring(_bufferCursor)); } } @@ -570,7 +570,7 @@ class _EmptyParagraphSyntax extends md.BlockSyntax { RegExp get pattern => _emptyParagraphPattern; @override - md.Node parse(md.BlockParser parser) { + md.Node? parse(md.BlockParser parser) { parser.encounteredBlankLine = true; parser.advance(); diff --git a/lib/utils/money.dart b/lib/utils/money.dart index 3459cf8e8..555bffa5b 100644 --- a/lib/utils/money.dart +++ b/lib/utils/money.dart @@ -5,12 +5,12 @@ import 'package:built_collection/built_collection.dart'; import 'package:invoiceninja_flutter/constants.dart'; import 'package:invoiceninja_flutter/data/models/static/currency_model.dart'; -double getExchangeRate(BuiltMap currencyMap, - {String fromCurrencyId, String toCurrencyId}) { +double getExchangeRate(BuiltMap? currencyMap, + {String? fromCurrencyId, String? toCurrencyId}) { if ((fromCurrencyId ?? '').isEmpty || (toCurrencyId ?? '').isEmpty) { return 1; } - final fromCurrency = currencyMap[fromCurrencyId]; + final fromCurrency = currencyMap![fromCurrencyId]; final toCurrency = currencyMap[toCurrencyId]; // TODO replace with data from server final baseCurrency = currencyMap[kCurrencyUSDollar]; @@ -26,12 +26,12 @@ double getExchangeRate(BuiltMap currencyMap, } if (fromCurrency == baseCurrency) { - return toCurrency.exchangeRate; + return toCurrency!.exchangeRate; } if (toCurrency == baseCurrency) { return 1 / (fromCurrency?.exchangeRate ?? 1); } - return toCurrency.exchangeRate * (1 / fromCurrency.exchangeRate); + return toCurrency!.exchangeRate * (1 / fromCurrency!.exchangeRate); } diff --git a/lib/utils/oauth.dart b/lib/utils/oauth.dart index a8a3c33b8..2c6168559 100644 --- a/lib/utils/oauth.dart +++ b/lib/utils/oauth.dart @@ -15,7 +15,7 @@ class GoogleOAuth { static Future signIn(Function(String, String) callback, {bool isSilent = false}) async { - GoogleSignInAccount account; + GoogleSignInAccount? account; if (isSilent) { account = await _googleSignIn.signInSilently(); @@ -79,11 +79,11 @@ class GoogleOAuth { } */ - static Future signOut() async { + static Future signOut() async { return await _googleSignIn.signOut(); } - static Future disconnect() async { + static Future disconnect() async { return await _googleSignIn.disconnect(); } } diff --git a/lib/utils/platforms.dart b/lib/utils/platforms.dart index cbba7452e..07aca25a6 100644 --- a/lib/utils/platforms.dart +++ b/lib/utils/platforms.dart @@ -27,10 +27,10 @@ bool supportsInlineBrowser() { } if (kIsWeb) { - final store = StoreProvider.of(navigatorKey.currentContext); + final store = StoreProvider.of(navigatorKey.currentContext!); final state = store.state; - if (state.isHosted && !state.account.accountSmsVerified) { + if (state.isHosted && !state.account!.accountSmsVerified) { return false; } } @@ -48,7 +48,7 @@ bool supportsAppleOAuth() => kIsWeb || isApple(); bool supportsMicrosoftOAuth() => kIsWeb; bool supportsLatestFeatures(String version) { - final store = StoreProvider.of(navigatorKey.currentContext); + final store = StoreProvider.of(navigatorKey.currentContext!); final state = store.state; if (!kReleaseMode || state.isStaging) { @@ -63,11 +63,11 @@ bool supportsLatestFeatures(String version) { return false; } - return Version.parse(state.account.currentVersion) >= Version.parse(version); + return Version.parse(state.account!.currentVersion) >= Version.parse(version); } bool supportsInAppPurchase() { - final store = StoreProvider.of(navigatorKey.currentContext); + final store = StoreProvider.of(navigatorKey.currentContext!); if (store.state.isSelfHosted) { return false; } @@ -139,7 +139,7 @@ String getPdfRequirements(BuildContext context) { final localization = AppLocalization.of(context); if (isMobile(context)) { final version = isAndroid() ? 'Android 5.0+' : 'iOS 11.0+'; - return localization.pdfMinRequirements.replaceFirst(':version', version); + return localization!.pdfMinRequirements.replaceFirst(':version', version); } else { return ''; } @@ -227,7 +227,7 @@ String getNativeAppUrl(String platform) { return ''; } -IconData getNativeAppIcon(String platform) { +IconData? getNativeAppIcon(String platform) { switch (platform) { case kPlatformAndroid: return Icons.android; diff --git a/lib/utils/strings.dart b/lib/utils/strings.dart index de48a7c71..e0cfd295d 100644 --- a/lib/utils/strings.dart +++ b/lib/utils/strings.dart @@ -8,13 +8,13 @@ String getOnlyDigits(String value) => value.replaceAll(RegExp('[^\\d]'), ''); bool isAllDigits(String value) => getOnlyDigits(value) == value; -String toSnakeCase(String value) { +String toSnakeCase(String? value) { if ((value ?? '').isEmpty) { return ''; } - return value.replaceAllMapped( - RegExp(r'[A-Z]'), (Match match) => '_' + match[0].toLowerCase()); + return value!.replaceAllMapped( + RegExp(r'[A-Z]'), (Match match) => '_' + match[0]!.toLowerCase()); } String toCamelCase(String subject) { @@ -39,7 +39,7 @@ String toSpaceCase(String value) { } return value.replaceAllMapped( - RegExp(r'[A-Z]'), (Match match) => ' ' + match[0].toLowerCase()); + RegExp(r'[A-Z]'), (Match match) => ' ' + match[0]!.toLowerCase()); } String toTitleCase(String text) { @@ -116,15 +116,15 @@ void printWrapped(String text) { } bool matchesStrings({ - List haystacks, - String needle, + List? haystacks, + String? needle, }) { if (needle == null || needle.isEmpty) { return true; } bool isMatch = false; - haystacks.forEach((haystack) { + haystacks!.forEach((haystack) { if (matchesString( haystack: haystack, needle: needle, @@ -135,12 +135,12 @@ bool matchesStrings({ return isMatch; } -bool matchesString({String haystack, String needle}) { +bool matchesString({String? haystack, String? needle}) { if (needle == null || needle.isEmpty) { return true; } - final store = StoreProvider.of(navigatorKey.currentContext); + final store = StoreProvider.of(navigatorKey.currentContext!); final state = store.state; if (state.prefState.enableFlexibleSearch) { @@ -149,31 +149,31 @@ bool matchesString({String haystack, String needle}) { final character = RegExp.escape(String.fromCharCode(rune)); regExp += character + '.*?'; }); - return RegExp(regExp).hasMatch(haystack.toLowerCase()); + return RegExp(regExp).hasMatch(haystack!.toLowerCase()); } else if (needle.contains(' ')) { final parts = needle.toLowerCase().split(' '); bool isMatch = true; parts.forEach((needle) { - if (!haystack.toLowerCase().contains(needle)) { + if (!haystack!.toLowerCase().contains(needle)) { isMatch = false; } }); return isMatch; } else { - return haystack.toLowerCase().contains(needle.toLowerCase()); + return haystack!.toLowerCase().contains(needle.toLowerCase()); } } -String matchesStringsValue({ - List haystacks, - String needle, +String? matchesStringsValue({ + List? haystacks, + String? needle, }) { if (needle == null || needle.isEmpty) { return null; } - String match; - haystacks.forEach((haystack) { + String? match; + haystacks!.forEach((haystack) { final value = matchesStringValue( haystack: haystack, needle: needle, @@ -185,12 +185,12 @@ String matchesStringsValue({ return match; } -String matchesStringValue({String haystack, String needle}) { +String? matchesStringValue({String? haystack, String? needle}) { if (needle == null || needle.isEmpty) { return null; } - if (haystack.toLowerCase().contains(needle.toLowerCase())) { + if (haystack!.toLowerCase().contains(needle.toLowerCase())) { return haystack; } else { return null; diff --git a/lib/utils/super_editor/super_editor.dart b/lib/utils/super_editor/super_editor.dart index 037af017b..950d64f9d 100644 --- a/lib/utils/super_editor/super_editor.dart +++ b/lib/utils/super_editor/super_editor.dart @@ -10,13 +10,13 @@ import 'package:super_editor/super_editor.dart'; /// capabilities expand. class ExampleEditor extends StatefulWidget { const ExampleEditor({ - Key key, - @required this.value, + Key? key, + required this.value, this.onChanged, }) : super(key: key); final String value; - final Function(String) onChanged; + final Function(String)? onChanged; @override _ExampleEditorState createState() => _ExampleEditorState(); @@ -25,26 +25,26 @@ class ExampleEditor extends StatefulWidget { class _ExampleEditorState extends State { final GlobalKey _docLayoutKey = GlobalKey(); - Document _doc; - DocumentEditor _docEditor; - DocumentComposer _composer; - CommonEditorOperations _docOps; + late Document _doc; + DocumentEditor? _docEditor; + DocumentComposer? _composer; + late CommonEditorOperations _docOps; - FocusNode _editorFocusNode; + FocusNode? _editorFocusNode; - ScrollController _scrollController; + ScrollController? _scrollController; final _darkBackground = const Color(0xFF222222); final _lightBackground = Colors.white; //Brightness _brightness = Brightness.light; - SuperEditorDebugVisualsConfig _debugConfig; + SuperEditorDebugVisualsConfig? _debugConfig; - OverlayEntry _textFormatBarOverlayEntry; - final _textSelectionAnchor = ValueNotifier(null); + OverlayEntry? _textFormatBarOverlayEntry; + final _textSelectionAnchor = ValueNotifier(null); - OverlayEntry _imageFormatBarOverlayEntry; - final _imageSelectionAnchor = ValueNotifier(null); + OverlayEntry? _imageFormatBarOverlayEntry; + final _imageSelectionAnchor = ValueNotifier(null); final _overlayController = MagnifierAndToolbarController(); @@ -66,10 +66,10 @@ class _ExampleEditorState extends State { _docEditor = DocumentEditor(document: _doc as MutableDocument); _composer = DocumentComposer(); - _composer.selectionNotifier.addListener(_hideOrShowToolbar); + _composer!.selectionNotifier.addListener(_hideOrShowToolbar); _docOps = CommonEditorOperations( - editor: _docEditor, - composer: _composer, + editor: _docEditor!, + composer: _composer!, documentLayoutResolver: () => _docLayoutKey.currentState as DocumentLayout, ); @@ -99,24 +99,24 @@ class _ExampleEditorState extends State { @override void dispose() { if (_textFormatBarOverlayEntry != null) { - _textFormatBarOverlayEntry.remove(); + _textFormatBarOverlayEntry!.remove(); } _doc.removeListener(_hideOrShowToolbar); _doc.removeListener(_onChanged); - _scrollController.removeListener(_hideOrShowToolbar); - _composer.removeListener(_hideOrShowToolbar); + _scrollController!.removeListener(_hideOrShowToolbar); + _composer!.removeListener(_hideOrShowToolbar); - _scrollController.dispose(); - _editorFocusNode.dispose(); - _composer.dispose(); + _scrollController!.dispose(); + _editorFocusNode!.dispose(); + _composer!.dispose(); super.dispose(); } void _onChanged() { if (widget.onChanged != null) { - final value = serializeDocumentToMarkdown(_docEditor.document); - widget.onChanged(value); + final value = serializeDocumentToMarkdown(_docEditor!.document); + widget.onChanged!(value); } } @@ -127,7 +127,7 @@ class _ExampleEditorState extends State { return; } - final selection = _composer.selection; + final selection = _composer!.selection; if (selection == null) { // Nothing is selected. We don't want to show a toolbar // in this case. @@ -194,7 +194,7 @@ class _ExampleEditorState extends State { // Display the toolbar in the application overlay. final overlay = Overlay.of(context); - overlay.insert(_textFormatBarOverlayEntry); + overlay.insert(_textFormatBarOverlayEntry!); } // Schedule a callback after this frame to locate the selection @@ -207,9 +207,9 @@ class _ExampleEditorState extends State { final docBoundingBox = (_docLayoutKey.currentState as DocumentLayout) .getRectForSelection( - _composer.selection.base, _composer.selection.extent); + _composer!.selection!.base, _composer!.selection!.extent)!; final docBox = - _docLayoutKey.currentContext.findRenderObject() as RenderBox; + _docLayoutKey.currentContext!.findRenderObject() as RenderBox; final overlayBoundingBox = Rect.fromPoints( docBox.localToGlobal(docBoundingBox.topLeft), docBox.localToGlobal(docBoundingBox.bottomRight), @@ -230,7 +230,7 @@ class _ExampleEditorState extends State { // or not the entry exists in the overlay, so in our // case, null implies the entry is not in the overlay, // and non-null implies the entry is in the overlay. - _textFormatBarOverlayEntry.remove(); + _textFormatBarOverlayEntry!.remove(); _textFormatBarOverlayEntry = null; // Ensure that focus returns to the editor. @@ -238,7 +238,7 @@ class _ExampleEditorState extends State { // I tried explicitly unfocus()'ing the URL textfield // in the toolbar but it didn't return focus to the // editor. I'm not sure why. - _editorFocusNode.requestFocus(); + _editorFocusNode!.requestFocus(); } } @@ -300,7 +300,7 @@ class _ExampleEditorState extends State { anchor: _imageSelectionAnchor, composer: _composer, setWidth: (nodeId, width) { - final node = _doc.getNodeById(nodeId); + final node = _doc.getNodeById(nodeId)!; final currentStyles = SingleColumnLayoutComponentStyles.fromMetadata(node); SingleColumnLayoutComponentStyles( @@ -314,7 +314,7 @@ class _ExampleEditorState extends State { // Display the toolbar in the application overlay. final overlay = Overlay.of(context); - overlay.insert(_imageFormatBarOverlayEntry); + overlay.insert(_imageFormatBarOverlayEntry!); } // Schedule a callback after this frame to locate the selection @@ -327,9 +327,9 @@ class _ExampleEditorState extends State { final docBoundingBox = (_docLayoutKey.currentState as DocumentLayout) .getRectForSelection( - _composer.selection.base, _composer.selection.extent); + _composer!.selection!.base, _composer!.selection!.extent)!; final docBox = - _docLayoutKey.currentContext.findRenderObject() as RenderBox; + _docLayoutKey.currentContext!.findRenderObject() as RenderBox; final overlayBoundingBox = Rect.fromPoints( docBox.localToGlobal(docBoundingBox.topLeft), docBox.localToGlobal(docBoundingBox.bottomRight), @@ -350,11 +350,11 @@ class _ExampleEditorState extends State { // or not the entry exists in the overlay, so in our // case, null implies the entry is not in the overlay, // and non-null implies the entry is in the overlay. - _imageFormatBarOverlayEntry.remove(); + _imageFormatBarOverlayEntry!.remove(); _imageFormatBarOverlayEntry = null; // Ensure that focus returns to the editor. - _editorFocusNode.requestFocus(); + _editorFocusNode!.requestFocus(); } } @@ -460,7 +460,7 @@ class _ExampleEditorState extends State { child: SuperEditorDebugVisuals( config: _debugConfig ?? const SuperEditorDebugVisualsConfig(), child: SuperEditor( - editor: _docEditor, + editor: _docEditor!, composer: _composer, focusNode: _editorFocusNode, scrollController: _scrollController, @@ -483,7 +483,7 @@ class _ExampleEditorState extends State { ], ), componentBuilders: [ - TaskComponentBuilder(_docEditor), + TaskComponentBuilder(_docEditor!), ...defaultComponentBuilders, ], gestureMode: _gestureMode, @@ -512,10 +512,10 @@ class _ExampleEditorState extends State { return MultiListenableBuilder( listenables: { _doc, - _composer.selectionNotifier, + _composer!.selectionNotifier, }, builder: (_) { - final selection = _composer.selection; + final selection = _composer!.selection; if (selection == null) { return const SizedBox(); @@ -523,7 +523,7 @@ class _ExampleEditorState extends State { return KeyboardEditingToolbar( document: _doc, - composer: _composer, + composer: _composer!, commonOps: _docOps, ); }, diff --git a/lib/utils/super_editor/toolbar.dart b/lib/utils/super_editor/toolbar.dart index 17a4a7d82..56bfdb1e5 100644 --- a/lib/utils/super_editor/toolbar.dart +++ b/lib/utils/super_editor/toolbar.dart @@ -12,12 +12,12 @@ import 'package:super_editor/super_editor.dart'; /// application [Overlay]. Any other [Stack] should work, too. class EditorToolbar extends StatefulWidget { const EditorToolbar({ - Key key, - @required this.anchor, - @required this.editorFocusNode, - @required this.editor, - @required this.composer, - @required this.closeToolbar, + Key? key, + required this.anchor, + required this.editorFocusNode, + required this.editor, + required this.composer, + required this.closeToolbar, }) : super(key: key); /// [EditorToolbar] displays itself horizontally centered and @@ -25,21 +25,21 @@ class EditorToolbar extends StatefulWidget { /// /// [anchor] is a [ValueNotifier] so that [EditorToolbar] can /// reposition itself as the [Offset] value changes. - final ValueNotifier anchor; + final ValueNotifier anchor; /// The [FocusNode] attached to the editor to which this toolbar applies. - final FocusNode editorFocusNode; + final FocusNode? editorFocusNode; /// The [editor] is used to alter document content, such as /// when the user selects a different block format for a /// text blob, e.g., paragraph, header, blockquote, or /// to apply styles to text. - final DocumentEditor editor; + final DocumentEditor? editor; /// The [composer] provides access to the user's current /// selection within the document, which dictates the /// content that is altered by the toolbar's options. - final DocumentComposer composer; + final DocumentComposer? composer; /// Delegate that instructs the owner of this [EditorToolbar] /// to close the toolbar, such as after submitting a URL @@ -52,8 +52,8 @@ class EditorToolbar extends StatefulWidget { class _EditorToolbarState extends State { bool _showUrlField = false; - FocusNode _urlFocusNode; - AttributedTextEditingController _urlController; + FocusNode? _urlFocusNode; + AttributedTextEditingController? _urlController; @override void initState() { @@ -64,8 +64,8 @@ class _EditorToolbarState extends State { @override void dispose() { - _urlFocusNode.dispose(); - _urlController.dispose(); + _urlFocusNode!.dispose(); + _urlController!.dispose(); super.dispose(); } @@ -232,9 +232,9 @@ class _EditorToolbarState extends State { /// Toggles bold styling for the current selected text. void _toggleBold() { - widget.editor.executeCommand( + widget.editor!.executeCommand( ToggleTextAttributionsCommand( - documentSelection: widget.composer.selection, + documentSelection: widget.composer!.selection!, attributions: {boldAttribution}, ), ); @@ -242,9 +242,9 @@ class _EditorToolbarState extends State { /// Toggles italic styling for the current selected text. void _toggleItalics() { - widget.editor.executeCommand( + widget.editor!.executeCommand( ToggleTextAttributionsCommand( - documentSelection: widget.composer.selection, + documentSelection: widget.composer!.selection!, attributions: {italicsAttribution}, ), ); @@ -252,9 +252,9 @@ class _EditorToolbarState extends State { /// Toggles strikethrough styling for the current selected text. void _toggleStrikethrough() { - widget.editor.executeCommand( + widget.editor!.executeCommand( ToggleTextAttributionsCommand( - documentSelection: widget.composer.selection, + documentSelection: widget.composer!.selection!, attributions: {strikethroughAttribution}, ), ); @@ -276,7 +276,7 @@ class _EditorToolbarState extends State { /// Returns any link-based [AttributionSpan]s that appear partially /// or wholly within the current text selection. Set _getSelectedLinkSpans() { - final selection = widget.composer.selection; + final selection = widget.composer!.selection!; final baseOffset = (selection.base.nodePosition as TextPosition).offset; final extentOffset = (selection.extent.nodePosition as TextPosition).offset; final selectionStart = min(baseOffset, extentOffset); @@ -285,7 +285,7 @@ class _EditorToolbarState extends State { SpanRange(start: selectionStart, end: selectionEnd - 1); final textNode = - widget.editor.document.getNodeById(selection.extent.nodeId) as TextNode; + widget.editor!.document.getNodeById(selection.extent.nodeId) as TextNode; final text = textNode.text; final overlappingLinkAttributions = text.getAttributionSpansInRange( @@ -300,7 +300,7 @@ class _EditorToolbarState extends State { /// Takes appropriate action when the toolbar's link button is /// pressed. void _onLinkPressed() { - final selection = widget.composer.selection; + final selection = widget.composer!.selection!; final baseOffset = (selection.base.nodePosition as TextPosition).offset; final extentOffset = (selection.extent.nodePosition as TextPosition).offset; final selectionStart = min(baseOffset, extentOffset); @@ -309,7 +309,7 @@ class _EditorToolbarState extends State { SpanRange(start: selectionStart, end: selectionEnd - 1); final textNode = - widget.editor.document.getNodeById(selection.extent.nodeId) as TextNode; + widget.editor!.document.getNodeById(selection.extent.nodeId) as TextNode; final text = textNode.text; final overlappingLinkAttributions = text.getAttributionSpansInRange( @@ -349,7 +349,7 @@ class _EditorToolbarState extends State { // There are no other links in the selection. Show the URL text field. setState(() { _showUrlField = true; - _urlFocusNode.requestFocus(); + _urlFocusNode!.requestFocus(); }); } } @@ -357,9 +357,9 @@ class _EditorToolbarState extends State { /// Takes the text from the [urlController] and applies it as a link /// attribution to the currently selected text. void _applyLink() { - final url = _urlController.text.text; + final url = _urlController!.text.text; - final selection = widget.composer.selection; + final selection = widget.composer!.selection!; final baseOffset = (selection.base.nodePosition as TextPosition).offset; final extentOffset = (selection.extent.nodePosition as TextPosition).offset; final selectionStart = min(baseOffset, extentOffset); @@ -368,7 +368,7 @@ class _EditorToolbarState extends State { TextRange(start: selectionStart, end: selectionEnd - 1); final textNode = - widget.editor.document.getNodeById(selection.extent.nodeId) as TextNode; + widget.editor!.document.getNodeById(selection.extent.nodeId) as TextNode; final text = textNode.text; final trimmedRange = _trimTextRangeWhitespace(text, selectionRange); @@ -380,10 +380,10 @@ class _EditorToolbarState extends State { ); // Clear the field and hide the URL bar - _urlController.clear(); + _urlController!.clear(); setState(() { _showUrlField = false; - _urlFocusNode.unfocus( + _urlFocusNode!.unfocus( disposition: UnfocusDisposition.previouslyFocusedChild); widget.closeToolbar(); }); @@ -468,8 +468,8 @@ class _EditorToolbarState extends State { // the standard toolbar. if (_showUrlField) Positioned( - left: widget.anchor.value.dx, - top: widget.anchor.value.dy, + left: widget.anchor.value!.dx, + top: widget.anchor.value!.dy, child: FractionalTranslation( translation: const Offset(-0.5, 0.0), child: _buildUrlField(), @@ -478,8 +478,8 @@ class _EditorToolbarState extends State { _PositionedToolbar( anchor: widget.anchor, composer: widget.composer, - child: ValueListenableBuilder( - valueListenable: widget.composer.selectionNotifier, + child: ValueListenableBuilder( + valueListenable: widget.composer!.selectionNotifier, builder: (context, selection, child) { if (selection == null) { return const SizedBox(); @@ -682,9 +682,9 @@ class _EditorToolbarState extends State { padding: EdgeInsets.zero, onPressed: () { setState(() { - _urlFocusNode.unfocus(); + _urlFocusNode!.unfocus(); _showUrlField = false; - _urlController.clear(); + _urlController!.clear(); }); }, ), @@ -743,11 +743,11 @@ enum _TextType { /// application [Overlay]. Any other [Stack] should work, too. class ImageFormatToolbar extends StatefulWidget { const ImageFormatToolbar({ - Key key, - @required this.anchor, - @required this.composer, - @required this.setWidth, - @required this.closeToolbar, + Key? key, + required this.anchor, + required this.composer, + required this.setWidth, + required this.closeToolbar, }) : super(key: key); /// [ImageFormatToolbar] displays itself horizontally centered and @@ -755,16 +755,16 @@ class ImageFormatToolbar extends StatefulWidget { /// /// [anchor] is a [ValueNotifier] so that [ImageFormatToolbar] can /// reposition itself as the [Offset] value changes. - final ValueNotifier anchor; + final ValueNotifier anchor; /// The [composer] provides access to the user's current /// selection within the document, which dictates the /// content that is altered by the toolbar's options. - final DocumentComposer composer; + final DocumentComposer? composer; /// Callback that should update the width of the component with /// the given [nodeId] to match the given [width]. - final void Function(String nodeId, double width) setWidth; + final void Function(String nodeId, double? width) setWidth; /// Delegate that instructs the owner of this [ImageFormatToolbar] /// to close the toolbar. @@ -776,11 +776,11 @@ class ImageFormatToolbar extends StatefulWidget { class _ImageFormatToolbarState extends State { void _makeImageConfined() { - widget.setWidth(widget.composer.selection.extent.nodeId, null); + widget.setWidth(widget.composer!.selection!.extent.nodeId, null); } void _makeImageFullBleed() { - widget.setWidth(widget.composer.selection.extent.nodeId, double.infinity); + widget.setWidth(widget.composer!.selection!.extent.nodeId, double.infinity); } @override @@ -788,8 +788,8 @@ class _ImageFormatToolbarState extends State { return _PositionedToolbar( anchor: widget.anchor, composer: widget.composer, - child: ValueListenableBuilder( - valueListenable: widget.composer.selectionNotifier, + child: ValueListenableBuilder( + valueListenable: widget.composer!.selectionNotifier, builder: (context, selection, child) { if (selection == null) { return const SizedBox(); @@ -846,22 +846,22 @@ class _ImageFormatToolbarState extends State { class _PositionedToolbar extends StatelessWidget { const _PositionedToolbar({ - Key key, - @required this.anchor, - @required this.composer, - @required this.child, + Key? key, + required this.anchor, + required this.composer, + required this.child, }) : super(key: key); - final ValueNotifier anchor; - final DocumentComposer composer; + final ValueNotifier anchor; + final DocumentComposer? composer; final Widget child; @override Widget build(BuildContext context) { - return ValueListenableBuilder( + return ValueListenableBuilder( valueListenable: anchor, builder: (context, offset, _) { - if (offset == null || composer.selection == null) { + if (offset == null || composer!.selection == null) { // When no anchor position is available, or the user hasn't // selected any text, show nothing. return const SizedBox(); diff --git a/lib/utils/templates.dart b/lib/utils/templates.dart index 53a1a536d..9798479c3 100644 --- a/lib/utils/templates.dart +++ b/lib/utils/templates.dart @@ -15,12 +15,12 @@ import 'package:invoiceninja_flutter/redux/app/app_state.dart'; import 'dialogs.dart'; void loadEmailTemplate({ - @required BuildContext context, - @required Function(String, String, String, String, String) onComplete, - String template, - String subject, - String body, - InvoiceEntity invoice, + required BuildContext context, + required Function(String?, String?, String?, String?, String?) onComplete, + String? template, + String? subject, + String? body, + InvoiceEntity? invoice, }) { if (Config.DEMO_MODE) { onComplete(subject, body, '', '', ''); diff --git a/lib/utils/web.dart b/lib/utils/web.dart index 757686821..5099b79e1 100644 --- a/lib/utils/web.dart +++ b/lib/utils/web.dart @@ -32,8 +32,8 @@ class WebUtils { static String get browserRoute => window.location.hash.replaceFirst('#', ''); - static String getHtmlValue(String field) => - window.document.documentElement.dataset[field]; + static String? getHtmlValue(String field) => + window.document.documentElement!.dataset[field]; static void downloadTextFile(String filename, String data) { final encodedFileContents = Uri.encodeComponent(data); diff --git a/lib/utils/web_stub.dart b/lib/utils/web_stub.dart index 2cd5fc7eb..b06953b12 100644 --- a/lib/utils/web_stub.dart +++ b/lib/utils/web_stub.dart @@ -8,23 +8,23 @@ import 'package:redux/redux.dart'; import 'package:invoiceninja_flutter/redux/app/app_state.dart'; class WebUtils { - static String get apiUrl => null; + static String? get apiUrl => null; - static String get browserUrl => null; + static String? get browserUrl => null; - static String get browserRoute => null; + static String? get browserRoute => null; - static String getHtmlValue(String field) => null; + static String? getHtmlValue(String field) => null; static void downloadTextFile(String filename, String data) {} - static void downloadBinaryFile(String filename, Uint8List data) {} + static void downloadBinaryFile(String filename, Uint8List? data) {} static void reloadBrowser() {} - static void registerWebView(String html) {} + static void registerWebView(String? html) {} - static void warnChanges(Store store) {} + static void warnChanges(Store? store) {} static void microsoftLogin( Function(String, String) successCallback, diff --git a/lib/utils/widgets.dart b/lib/utils/widgets.dart index fddfe59e7..e8fa19747 100644 --- a/lib/utils/widgets.dart +++ b/lib/utils/widgets.dart @@ -19,7 +19,7 @@ class WidgetUtils { } WidgetsBinding.instance.addPostFrameCallback((duration) async { - final context = navigatorKey.currentContext; + final context = navigatorKey.currentContext!; final localization = AppLocalization.of(context); final store = StoreProvider.of(context); final state = store.state; diff --git a/pubspec.lock b/pubspec.lock index cbbbee813..43658f96e 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -226,7 +226,7 @@ packages: source: hosted version: "4.4.0" collection: - dependency: transitive + dependency: "direct main" description: name: collection sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 diff --git a/pubspec.yaml b/pubspec.yaml index 2c3acaa8d..ea728c467 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -6,7 +6,7 @@ documentation: https://invoiceninja.github.io publish_to: none environment: - sdk: ">=2.9.0 <3.0.0" + sdk: '>=2.12.0 <3.0.0' flutter_icons: android: true @@ -89,6 +89,7 @@ dependencies: pinch_zoom: ^1.0.0 # quick_actions: ^0.2.1 # idb_shim: ^1.11.1+1 + collection: ^1.15.0-nullsafety.4 dev_dependencies: flutter_driver: diff --git a/samples/form_keys.dart b/samples/form_keys.dart index 80b3b84d8..e9dd02b0a 100644 --- a/samples/form_keys.dart +++ b/samples/form_keys.dart @@ -7,13 +7,13 @@ import 'package:invoiceninja_flutter/utils/platforms.dart'; // Sample entity classes class ClientEntity { ClientEntity({this.name, this.contacts}); - String name; - List contacts; + String? name; + List? contacts; } class ContactEntity { ContactEntity({this.email}); - String email; + String? email; } void main() => runApp(MyApp()); @@ -32,7 +32,7 @@ class _MyAppState extends State with SingleTickerProviderStateMixin { static final GlobalKey _contactsKey = GlobalKey(); - TabController _controller; + TabController? _controller; @override void initState() { @@ -42,7 +42,7 @@ class _MyAppState extends State with SingleTickerProviderStateMixin { @override void dispose() { - _controller.dispose(); + _controller!.dispose(); super.dispose(); } @@ -63,11 +63,11 @@ class _MyAppState extends State with SingleTickerProviderStateMixin { IconButton( icon: Icon(Icons.cloud_upload), onPressed: () { - if (!_formKey.currentState.validate()) { + if (!_formKey.currentState!.validate()) { return; } - _formKey.currentState.save(); + _formKey.currentState!.save(); final clientState = _clientKey.currentState; final contactsState = _contactsKey.currentState; @@ -114,8 +114,8 @@ class _MyAppState extends State with SingleTickerProviderStateMixin { // Display the client's details, currently just their name class ClientPage extends StatefulWidget { const ClientPage({ - Key key, - @required this.client, + Key? key, + required this.client, }) : super(key: key); final ClientEntity client; @@ -127,12 +127,12 @@ class ClientPage extends StatefulWidget { class ClientPageState extends State with AutomaticKeepAliveClientMixin { ClientPageState({this.client}); - final ClientEntity client; + final ClientEntity? client; @override bool get wantKeepAlive => true; - String name; + String? name; @override Widget build(BuildContext context) { @@ -141,7 +141,7 @@ class ClientPageState extends State children: [ TextFormField( initialValue: widget.client.name, - onSaved: (value) => name = value.trim(), + onSaved: (value) => name = value!.trim(), decoration: InputDecoration( labelText: 'Name', ), @@ -154,8 +154,8 @@ class ClientPageState extends State // Displays the list of contacts with a button to add more class ContactsPage extends StatefulWidget { const ContactsPage({ - Key key, - @required this.client, + Key? key, + required this.client, }) : super(key: key); final ClientEntity client; @@ -169,15 +169,15 @@ class ContactsPageState extends State @override bool get wantKeepAlive => true; - List _contacts; - List> _contactKeys; + late List _contacts; + late List> _contactKeys; @override void initState() { super.initState(); final client = widget.client; - _contacts = client.contacts.toList(); - _contactKeys = client.contacts + _contacts = client.contacts!.toList(); + _contactKeys = client.contacts! .map((contact) => GlobalKey()) .toList(); } @@ -185,7 +185,7 @@ class ContactsPageState extends State List getContacts() { final List contacts = []; _contactKeys.forEach((contactKey) { - contacts.add(contactKey.currentState.getContact()); + contacts.add(contactKey.currentState!.getContact()); }); return contacts; } @@ -237,20 +237,20 @@ class ContactsPageState extends State // Displays an individual contact class ContactForm extends StatefulWidget { const ContactForm({ - Key key, - @required this.contact, - @required this.onRemovePressed, + Key? key, + required this.contact, + required this.onRemovePressed, }) : super(key: key); final ContactEntity contact; - final Function(GlobalKey) onRemovePressed; + final Function(GlobalKey?) onRemovePressed; @override ContactFormState createState() => ContactFormState(); } class ContactFormState extends State { - String _email; + String? _email; ContactEntity getContact() { return ContactEntity(email: _email); @@ -262,7 +262,7 @@ class ContactFormState extends State { children: [ TextFormField( initialValue: widget.contact.email, - onSaved: (value) => _email = value.trim(), + onSaved: (value) => _email = value!.trim(), decoration: InputDecoration( labelText: 'Email', ), @@ -274,7 +274,7 @@ class ContactFormState extends State { Padding( padding: const EdgeInsets.only(top: 12.0), child: TextButton( - onPressed: () => widget.onRemovePressed(widget.key), + onPressed: () => widget.onRemovePressed(widget.key as GlobalKey?), child: Text( 'Delete', style: TextStyle( @@ -293,7 +293,7 @@ class ContactFormState extends State { // Helper widget to make the form look a bit nicer class FormCard extends StatelessWidget { const FormCard({this.children}); - final List children; + final List? children; @override Widget build(BuildContext context) { @@ -305,7 +305,7 @@ class FormCard extends StatelessWidget { padding: const EdgeInsets.only( left: 12.0, right: 12.0, top: 12.0, bottom: 18.0), child: Column( - children: children, + children: children!, ), ), ), diff --git a/samples/form_redux.dart b/samples/form_redux.dart index 5393922ba..ebd4066db 100644 --- a/samples/form_redux.dart +++ b/samples/form_redux.dart @@ -11,19 +11,19 @@ import 'package:redux_logging/redux_logging.dart'; class ClientEntity { ClientEntity({this.name, this.contacts}); - String name; - List contacts; + String? name; + List? contacts; @override String toString() { - return (name ?? '') + ': ' + contacts.join(', '); + return (name ?? '') + ': ' + contacts!.join(', '); } } class ContactEntity { ContactEntity({this.email}); - String email; + String? email; @override String toString() { @@ -59,8 +59,8 @@ class AddContact {} class UpdateContact { UpdateContact({this.index, this.email}); - final int index; - final String email; + final int? index; + final String? email; } class DeleteContact { @@ -81,20 +81,20 @@ AppState reducer(AppState state, dynamic action) { return AppState(ClientEntity( name: state.client.name, contacts: [] - ..addAll(state.client.contacts) + ..addAll(state.client.contacts!) ..add(ContactEntity()))); } else if (action is UpdateContact) { return AppState(ClientEntity( name: state.client.name, contacts: [] - ..addAll(state.client.contacts) - ..removeAt(action.index) - ..insert(action.index, ContactEntity(email: action.email)))); + ..addAll(state.client.contacts!) + ..removeAt(action.index!) + ..insert(action.index!, ContactEntity(email: action.email)))); } else if (action is DeleteContact) { return AppState(ClientEntity( name: state.client.name, contacts: [] - ..addAll(state.client.contacts) + ..addAll(state.client.contacts!) ..removeAt(action.index))); } @@ -111,9 +111,9 @@ void main() { } class MyApp extends StatefulWidget { - const MyApp({Key key, this.store}) : super(key: key); + const MyApp({Key? key, this.store}) : super(key: key); - final Store store; + final Store? store; @override _MyAppState createState() => _MyAppState(); @@ -123,7 +123,7 @@ class _MyAppState extends State with SingleTickerProviderStateMixin { static final GlobalKey _formKey = GlobalKey(debugLabel: '_appState'); - TabController _controller; + TabController? _controller; @override void initState() { @@ -133,14 +133,14 @@ class _MyAppState extends State with SingleTickerProviderStateMixin { @override void dispose() { - _controller.dispose(); + _controller!.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return StoreProvider( - store: widget.store, + store: widget.store!, child: MaterialApp( home: Scaffold( appBar: AppBar( @@ -152,12 +152,12 @@ class _MyAppState extends State with SingleTickerProviderStateMixin { return IconButton( icon: Icon(Icons.cloud_upload), onPressed: () { - if (!_formKey.currentState.validate()) { + if (!_formKey.currentState!.validate()) { return; } // Do something with the client... - print('Client name: ' + store.state.client.name); + print('Client name: ' + store.state.client.name!); }, ); }), @@ -203,7 +203,7 @@ class _ClientPageState extends State { void didChangeDependencies() { final store = StoreProvider.of(context); _nameController.removeListener(_onChanged); - _nameController.text = store.state.client.name; + _nameController.text = store.state.client.name!; _nameController.addListener(_onChanged); super.didChangeDependencies(); } @@ -247,10 +247,10 @@ class ContactsPage extends StatelessWidget { Widget build(BuildContext context) { return StoreBuilder(builder: (BuildContext context, Store store) { final client = store.state.client; - final contacts = client.contacts.map((contact) => ContactForm( + final contacts = client.contacts!.map((contact) => ContactForm( contact: contact, //key: Key('__contact_${contact.id}__'), - index: store.state.client.contacts.indexOf(contact))); + index: store.state.client.contacts!.indexOf(contact))); return ScrollableListView( children: [] @@ -270,7 +270,7 @@ class ContactsPage extends StatelessWidget { } class ContactForm extends StatefulWidget { - const ContactForm({Key key, @required this.contact, @required this.index}) + const ContactForm({Key? key, required this.contact, required this.index}) : super(key: key); final int index; @@ -287,7 +287,7 @@ class _ContactFormState extends State { @override void didChangeDependencies() { _emailController.removeListener(_onChanged); - _emailController.text = widget.contact.email; + _emailController.text = widget.contact.email!; _emailController.addListener(_onChanged); super.didChangeDependencies(); } @@ -347,8 +347,8 @@ class _ContactFormState extends State { // Helper widget to make the form look a bit nicer class FormCard extends StatelessWidget { const FormCard({ - Key key, - @required this.children, + Key? key, + required this.children, }) : super(key: key); final List children; diff --git a/test_driver/clients_it_test.dart b/test_driver/clients_it_test.dart index b193638cc..b7ff1c838 100644 --- a/test_driver/clients_it_test.dart +++ b/test_driver/clients_it_test.dart @@ -13,8 +13,8 @@ void main() { void runTestSuite({bool batchMode = false}) { group('Client Tests', () { - TestLocalization localization; - FlutterDriver driver; + late TestLocalization localization; + FlutterDriver? driver; final name = makeUnique(faker.company.name()); @@ -25,73 +25,73 @@ void runTestSuite({bool batchMode = false}) { driver = await FlutterDriver.connect(); print('Login to app'); - await login(driver, retype: batchMode); + await login(driver!, retype: batchMode); print('View clients'); - await viewSection(driver: driver, name: localization.clients); + await viewSection(driver: driver!, name: localization.clients); }); tearDownAll(() async { - await logout(driver, localization); + await logout(driver!, localization); if (driver != null) { - driver.close(); + driver!.close(); } }); // Create an empty client test('Try to add an empty client', () async { print('Tap new client'); - await driver.tap(find.byTooltip(localization.newClient)); + await driver!.tap(find.byTooltip(localization.newClient)); print('Tap save'); - await driver.tap(find.text(localization.save)); + await driver!.tap(find.text(localization.save)); print('Check for error'); - await driver + await driver! .waitFor(find.text(localization.pleaseEnterAClientOrContactName)); - if (await isMobile(driver)) { + if (await isMobile(driver!)) { print('Click back'); - await driver.tap(find.pageBack()); - await driver.waitFor(find.byTooltip(localization.newClient)); + await driver!.tap(find.pageBack()); + await driver!.waitFor(find.byTooltip(localization.newClient)); } else { print('Click cancel'); - await driver.tap(find.text(localization.cancel)); + await driver!.tap(find.text(localization.cancel)); } }); // Create a new client test('Add a new client', () async { print('Tap new client'); - await driver.tap(find.byTooltip(localization.newClient)); + await driver!.tap(find.byTooltip(localization.newClient)); print('Fill form: $name'); - await fillAndSaveForm(driver, { + await fillAndSaveForm(driver!, { localization.name: name, }); - if (await isMobile(driver)) { + if (await isMobile(driver!)) { print('Click back'); - await driver.tap(find.pageBack()); - await driver.waitFor(find.byTooltip(localization.newClient)); + await driver!.tap(find.pageBack()); + await driver!.waitFor(find.byTooltip(localization.newClient)); } }); // Edit the newly created client test('Edit an existing client', () async { - if (await isMobile(driver)) { + if (await isMobile(driver!)) { print('Select client: $name'); - await driver.scrollUntilVisible( + await driver!.scrollUntilVisible( find.byType('ListView'), find.text(name), dyScroll: -300); - await driver.tap(find.text(name)); + await driver!.tap(find.text(name)); } print('Tap edit'); - await driver.tap(find.text(localization.edit)); + await driver!.tap(find.text(localization.edit)); - await fillAndSaveForm(driver, { + await fillAndSaveForm(driver!, { localization.name: updatedName, }); }); @@ -99,14 +99,14 @@ void runTestSuite({bool batchMode = false}) { // Archive the edited client test('Archive/delete client test', () async { await testArchiveAndDelete( - driver: driver, + driver: driver!, rowText: updatedName, archivedMessage: localization.archivedClient, deletedMessage: localization.deletedClient, restoredMessage: localization.restoredClient); - if (await isMobile(driver)) { - await driver.tap(find.pageBack()); + if (await isMobile(driver!)) { + await driver!.tap(find.pageBack()); } }); }); diff --git a/test_driver/invoices_it_test.dart b/test_driver/invoices_it_test.dart index 947e28d96..8b92a9802 100644 --- a/test_driver/invoices_it_test.dart +++ b/test_driver/invoices_it_test.dart @@ -13,8 +13,8 @@ void main() { void runTestSuite({bool batchMode = false}) { group('Invoice Tests', () { - TestLocalization localization; - FlutterDriver driver; + late TestLocalization localization; + FlutterDriver? driver; final clientName = makeUnique(faker.company.name()); final poNumber = @@ -34,51 +34,51 @@ void runTestSuite({bool batchMode = false}) { driver = await FlutterDriver.connect(); print('Login to app'); - await login(driver, retype: batchMode); + await login(driver!, retype: batchMode); print('View invoices'); - await viewSection(driver: driver, name: localization.invoices); + await viewSection(driver: driver!, name: localization.invoices); }); tearDownAll(() async { - await logout(driver, localization); + await logout(driver!, localization); if (driver != null) { - driver.close(); + driver!.close(); } }); // Create an empty invoice test('Try to add an empty invoice', () async { print('Tap new invoice'); - await driver.tap(find.byTooltip(localization.newInvoice)); + await driver!.tap(find.byTooltip(localization.newInvoice)); print('Tap save'); - await driver.tap(find.text(localization.save)); + await driver!.tap(find.text(localization.save)); print('Check for error'); - await driver.waitFor(find.text(localization.pleaseSelectAClient)); + await driver!.waitFor(find.text(localization.pleaseSelectAClient)); - if (await isMobile(driver)) { + if (await isMobile(driver!)) { print('Click back'); - await driver.tap(find.pageBack()); - await driver.waitFor(find.byTooltip(localization.newInvoice)); + await driver!.tap(find.pageBack()); + await driver!.waitFor(find.byTooltip(localization.newInvoice)); } else { print('Click cancel'); - await driver.tap(find.text(localization.cancel)); + await driver!.tap(find.text(localization.cancel)); } }); // Create a new invoice test('Add a new invoice', () async { print('Tap new invoice'); - await driver.tap(find.byTooltip(localization.newInvoice)); + await driver!.tap(find.byTooltip(localization.newInvoice)); print('Create new client: $clientName'); - if (await isMobile(driver)) { - await driver.tap(find.byValueKey(Keys.clientPickerEmptyKey)); + if (await isMobile(driver!)) { + await driver!.tap(find.byValueKey(Keys.clientPickerEmptyKey)); } - await driver.tap(find.byTooltip(localization.createNew)); + await driver!.tap(find.byTooltip(localization.createNew)); print('Fill the client form'); await fillTextFields(driver, { @@ -87,15 +87,15 @@ void runTestSuite({bool batchMode = false}) { }); // Await for Debouncer await Future.delayed(Duration(milliseconds: 500)); - await driver.tap(find.text(localization.save)); + await driver!.tap(find.text(localization.save)); // Await for Screen change - await driver.waitFor(find.text(localization.newInvoice)); + await driver!.waitFor(find.text(localization.newInvoice)); print('Fill the invoice form'); - if (await isMobile(driver)) { - await driver.tap(find.byTooltip(localization.addItem)); - await driver.tap(find.byTooltip(localization.createNew)); + if (await isMobile(driver!)) { + await driver!.tap(find.byTooltip(localization.addItem)); + await driver!.tap(find.byTooltip(localization.createNew)); await fillTextFields(driver, { localization.product: productKey, @@ -106,8 +106,8 @@ void runTestSuite({bool batchMode = false}) { // Await for Debouncer await Future.delayed(Duration(milliseconds: 500)); - await driver.tap(find.text(localization.done.toUpperCase())); - await driver.tap(find.text(localization.details)); + await driver!.tap(find.text(localization.done.toUpperCase())); + await driver!.tap(find.text(localization.details)); } else { await fillTextFields(driver, { getLineItemKey('name', 0): productKey, @@ -117,31 +117,31 @@ void runTestSuite({bool batchMode = false}) { }); } - await fillAndSaveForm(driver, { + await fillAndSaveForm(driver!, { localization.poNumber: poNumber, }); - if (await isMobile(driver)) { + if (await isMobile(driver!)) { print('Click back'); - await driver.tap(find.pageBack()); - await driver.waitFor(find.byTooltip(localization.newInvoice)); + await driver!.tap(find.pageBack()); + await driver!.waitFor(find.byTooltip(localization.newInvoice)); } }); // Edit the newly created invoice test('Edit an existing invoice', () async { - if (await isMobile(driver)) { + if (await isMobile(driver!)) { print('Select invoice: $clientName'); - await driver.scrollUntilVisible( + await driver!.scrollUntilVisible( find.byType('ListView'), find.text(clientName), dyScroll: -300); - await driver.tap(find.text(clientName)); + await driver!.tap(find.text(clientName)); } print('Tap edit'); - await driver.tap(find.text(localization.edit)); + await driver!.tap(find.text(localization.edit)); - await fillAndSaveForm(driver, { + await fillAndSaveForm(driver!, { localization.poNumber: updatedPoNumber, }); }); @@ -149,7 +149,7 @@ void runTestSuite({bool batchMode = false}) { // Archive the edited invoice test('Archive/delete invoice test', () async { await testArchiveAndDelete( - driver: driver, + driver: driver!, rowText: clientName, archivedMessage: localization.archivedInvoice, deletedMessage: localization.deletedInvoice, @@ -158,15 +158,15 @@ void runTestSuite({bool batchMode = false}) { // Mark the invoice as paid test('Mark invoice as paid', () async { - await selectAction(driver, localization.enterPayment); - await driver.tap(find.text(localization.save)); + await selectAction(driver!, localization.enterPayment); + await driver!.tap(find.text(localization.save)); // "Completed" status - await driver + await driver! .waitFor(find.text(localization.paymentStatus4.toUpperCase())); - if (await isMobile(driver)) { - await driver.tap(find.pageBack()); - await driver.tap(find.pageBack()); + if (await isMobile(driver!)) { + await driver!.tap(find.pageBack()); + await driver!.tap(find.pageBack()); } }); }); diff --git a/test_driver/login_it_test.dart b/test_driver/login_it_test.dart index efe1d5cc7..5a959ae68 100644 --- a/test_driver/login_it_test.dart +++ b/test_driver/login_it_test.dart @@ -13,9 +13,9 @@ import 'utils/localizations.dart'; void main() { group('LOGIN TEST', () { - TestLocalization localization; - FlutterDriver driver; - StreamSubscription streamSubscription; + late TestLocalization localization; + FlutterDriver? driver; + StreamSubscription? streamSubscription; setUpAll(() async { localization = TestLocalization('en'); @@ -33,7 +33,7 @@ void main() { tearDownAll(() async { if (driver != null) { - driver.close(); + driver!.close(); } if (streamSubscription != null) { streamSubscription.cancel(); @@ -42,20 +42,20 @@ void main() { group('SELF-HOSTED', () { test('No input provided by user', () async { - await login(driver, + await login(driver!, loginEmail: '', loginPassword: '', loginUrl: '', loginSecret: ''); - await driver.waitFor(find.text(localization.pleaseEnterYourEmail)); - await driver.waitFor(find.text(localization.pleaseEnterYourPassword)); - await driver.waitFor(find.text(localization.pleaseEnterYourUrl)); + await driver!.waitFor(find.text(localization.pleaseEnterYourEmail)); + await driver!.waitFor(find.text(localization.pleaseEnterYourPassword)); + await driver!.waitFor(find.text(localization.pleaseEnterYourUrl)); }); test('Details filled by user and login', () async { - await login(driver, retype: true); + await login(driver!, retype: true); }); test('Logout from a logged in user', () async { - await logout(driver, localization); + await logout(driver!, localization); }); }); }); diff --git a/test_driver/products_it_test.dart b/test_driver/products_it_test.dart index 7c7f1cf56..06ccbbd89 100644 --- a/test_driver/products_it_test.dart +++ b/test_driver/products_it_test.dart @@ -13,8 +13,8 @@ void main() { void runTestSuite({bool batchMode = false}) { group('Product Tests', () { - TestLocalization localization; - FlutterDriver driver; + late TestLocalization localization; + FlutterDriver? driver; final productKey = makeUnique(faker.food.cuisine()); final description = faker.food.dish(); @@ -29,48 +29,48 @@ void runTestSuite({bool batchMode = false}) { driver = await FlutterDriver.connect(); print('Login to app'); - await login(driver, retype: batchMode); + await login(driver!, retype: batchMode); print('View products'); - await viewSection(driver: driver, name: localization.products); + await viewSection(driver: driver!, name: localization.products); }); tearDownAll(() async { - await logout(driver, localization); + await logout(driver!, localization); if (driver != null) { - driver.close(); + driver!.close(); } }); // Create an empty product test('Try to add an empty product', () async { print('Tap new product'); - await driver.tap(find.byTooltip(localization.newProduct)); + await driver!.tap(find.byTooltip(localization.newProduct)); print('Tap save'); - await driver.tap(find.text(localization.save)); + await driver!.tap(find.text(localization.save)); print('Check for error'); - await driver.waitFor(find.text(localization.pleaseEnterAProductKey)); + await driver!.waitFor(find.text(localization.pleaseEnterAProductKey)); - if (await isMobile(driver)) { + if (await isMobile(driver!)) { print('Click back'); - await driver.tap(find.pageBack()); - await driver.waitFor(find.byTooltip(localization.newProduct)); + await driver!.tap(find.pageBack()); + await driver!.waitFor(find.byTooltip(localization.newProduct)); } else { print('Click cancel'); - await driver.tap(find.text(localization.cancel)); + await driver!.tap(find.text(localization.cancel)); } }); // Create a new product test('Add a new product', () async { print('Tap new product'); - await driver.tap(find.byTooltip(localization.newProduct)); + await driver!.tap(find.byTooltip(localization.newProduct)); print('Fill form: $productKey'); - await fillAndSaveForm(driver, { + await fillAndSaveForm(driver!, { localization.product: productKey, localization.description: description, //localization.cost: cost, @@ -80,27 +80,27 @@ void runTestSuite({bool batchMode = false}) { //localization.cost ]); - if (await isMobile(driver)) { + if (await isMobile(driver!)) { print('Click back'); - await driver.tap(find.pageBack()); - await driver.waitFor(find.byTooltip(localization.newProduct)); + await driver!.tap(find.pageBack()); + await driver!.waitFor(find.byTooltip(localization.newProduct)); } }); // Edit the newly created product test('Edit an existing product', () async { - if (await isMobile(driver)) { + if (await isMobile(driver!)) { print('Select product: $productKey'); - await driver.scrollUntilVisible( + await driver!.scrollUntilVisible( find.byType('ListView'), find.text(productKey), dyScroll: -300); - await driver.tap(find.text(productKey)); + await driver!.tap(find.text(productKey)); } print('Tap edit'); - await driver.tap(find.text(localization.edit)); + await driver!.tap(find.text(localization.edit)); - await fillAndSaveForm(driver, { + await fillAndSaveForm(driver!, { localization.product: updatedProductKey, localization.description: updatedDescription, //localization.cost: updatedCost, @@ -113,14 +113,14 @@ void runTestSuite({bool batchMode = false}) { // Archive the edited product test('Archive/delete product test', () async { await testArchiveAndDelete( - driver: driver, + driver: driver!, rowText: updatedProductKey, archivedMessage: localization.archivedProduct, deletedMessage: localization.deletedProduct, restoredMessage: localization.restoredProduct); - if (await isMobile(driver)) { - await driver.tap(find.pageBack()); + if (await isMobile(driver!)) { + await driver!.tap(find.pageBack()); } }); }); diff --git a/test_driver/quotes_it_test.dart b/test_driver/quotes_it_test.dart index 87c71ec17..52181bf54 100644 --- a/test_driver/quotes_it_test.dart +++ b/test_driver/quotes_it_test.dart @@ -13,8 +13,8 @@ void main() { void runTestSuite({bool batchMode = false}) { group('Quote Tests', () { - TestLocalization localization; - FlutterDriver driver; + late TestLocalization localization; + FlutterDriver? driver; final clientName = makeUnique(faker.company.name()); final poNumber = @@ -34,51 +34,51 @@ void runTestSuite({bool batchMode = false}) { driver = await FlutterDriver.connect(); print('Login to app'); - await login(driver, retype: batchMode); + await login(driver!, retype: batchMode); print('View quotes'); - await viewSection(driver: driver, name: localization.quotes); + await viewSection(driver: driver!, name: localization.quotes); }); tearDownAll(() async { - await logout(driver, localization); + await logout(driver!, localization); if (driver != null) { - driver.close(); + driver!.close(); } }); // Create an empty quote test('Try to add an empty quote', () async { print('Tap new quote'); - await driver.tap(find.byTooltip(localization.newQuote)); + await driver!.tap(find.byTooltip(localization.newQuote)); print('Tap save'); - await driver.tap(find.text(localization.save)); + await driver!.tap(find.text(localization.save)); print('Check for error'); - await driver.waitFor(find.text(localization.pleaseSelectAClient)); + await driver!.waitFor(find.text(localization.pleaseSelectAClient)); - if (await isMobile(driver)) { + if (await isMobile(driver!)) { print('Click back'); - await driver.tap(find.pageBack()); - await driver.waitFor(find.byTooltip(localization.newQuote)); + await driver!.tap(find.pageBack()); + await driver!.waitFor(find.byTooltip(localization.newQuote)); } else { print('Click cancel'); - await driver.tap(find.text(localization.cancel)); + await driver!.tap(find.text(localization.cancel)); } }); // Create a new quote test('Add a new quote', () async { print('Tap new quote'); - await driver.tap(find.byTooltip(localization.newQuote)); + await driver!.tap(find.byTooltip(localization.newQuote)); print('Create new client: $clientName'); - if (await isMobile(driver)) { - await driver.tap(find.byValueKey(Keys.clientPickerEmptyKey)); + if (await isMobile(driver!)) { + await driver!.tap(find.byValueKey(Keys.clientPickerEmptyKey)); } - await driver.tap(find.byTooltip(localization.createNew)); + await driver!.tap(find.byTooltip(localization.createNew)); print('Fill the client form'); await fillTextFields(driver, { @@ -87,15 +87,15 @@ void runTestSuite({bool batchMode = false}) { }); // Await for Debouncer await Future.delayed(Duration(milliseconds: 500)); - await driver.tap(find.text(localization.save)); + await driver!.tap(find.text(localization.save)); // Await for Screen change - await driver.waitFor(find.text(localization.newQuote)); + await driver!.waitFor(find.text(localization.newQuote)); print('Fill the quote form'); - if (await isMobile(driver)) { - await driver.tap(find.byTooltip(localization.addItem)); - await driver.tap(find.byTooltip(localization.createNew)); + if (await isMobile(driver!)) { + await driver!.tap(find.byTooltip(localization.addItem)); + await driver!.tap(find.byTooltip(localization.createNew)); await fillTextFields(driver, { localization.product: productKey, @@ -106,8 +106,8 @@ void runTestSuite({bool batchMode = false}) { // Await for Debouncer await Future.delayed(Duration(milliseconds: 500)); - await driver.tap(find.text(localization.done.toUpperCase())); - await driver.tap(find.text(localization.details)); + await driver!.tap(find.text(localization.done.toUpperCase())); + await driver!.tap(find.text(localization.details)); } else { await fillTextFields(driver, { getLineItemKey('name', 0): productKey, @@ -117,31 +117,31 @@ void runTestSuite({bool batchMode = false}) { }); } - await fillAndSaveForm(driver, { + await fillAndSaveForm(driver!, { localization.poNumber: poNumber, }); - if (await isMobile(driver)) { + if (await isMobile(driver!)) { print('Click back'); - await driver.tap(find.pageBack()); - await driver.waitFor(find.byTooltip(localization.newQuote)); + await driver!.tap(find.pageBack()); + await driver!.waitFor(find.byTooltip(localization.newQuote)); } }); // Edit the newly created quote test('Edit an existing quote', () async { - if (await isMobile(driver)) { + if (await isMobile(driver!)) { print('Select quote: $clientName'); - await driver.scrollUntilVisible( + await driver!.scrollUntilVisible( find.byType('ListView'), find.text(clientName), dyScroll: -300); - await driver.tap(find.text(clientName)); + await driver!.tap(find.text(clientName)); } print('Tap edit'); - await driver.tap(find.text(localization.edit)); + await driver!.tap(find.text(localization.edit)); - await fillAndSaveForm(driver, { + await fillAndSaveForm(driver!, { localization.poNumber: updatedPoNumber, }); }); @@ -149,7 +149,7 @@ void runTestSuite({bool batchMode = false}) { // Archive the edited quote test('Archive/delete quote test', () async { await testArchiveAndDelete( - driver: driver, + driver: driver!, rowText: clientName, archivedMessage: localization.archivedQuote, deletedMessage: localization.deletedQuote, diff --git a/test_driver/utils/common_actions.dart b/test_driver/utils/common_actions.dart index ecabaef68..1f90580f2 100644 --- a/test_driver/utils/common_actions.dart +++ b/test_driver/utils/common_actions.dart @@ -20,10 +20,10 @@ Future isTablet(FlutterDriver driver) async { await driver.getRenderObjectDiagnostics(find.byType('MaterialApp')); final regExp = new RegExp(r'Size\(([\d\.]*), ([\d\.]*)'); - final match = regExp.firstMatch(info.toString()); + final match = regExp.firstMatch(info.toString())!; - final width = double.parse(match.group(1)); - final height = double.parse(match.group(2)); + final width = double.parse(match.group(1)!); + final height = double.parse(match.group(2)!); return min(width, height) > 600; } @@ -103,7 +103,7 @@ Future logout(FlutterDriver driver, TestLocalization localization) async { } Future viewSection( - {FlutterDriver driver, String name, TestLocalization localization}) async { + {required FlutterDriver driver, required String name, TestLocalization? localization}) async { if (await isMobile(driver)) { await driver.tap(find.byTooltip('Menu Sidebar')); } @@ -112,15 +112,15 @@ Future viewSection( } Future fillTextField( - {FlutterDriver driver, String field, String value}) async { + {required FlutterDriver driver, String? field, required String value}) async { await driver.tap(find.byValueKey(field)); await driver.enterText(value); } Future fillTextFields( - FlutterDriver driver, Map values) async { + FlutterDriver? driver, Map values) async { for (var entry in values.entries) { - await fillTextField(driver: driver, field: entry.key, value: entry.value); + await fillTextField(driver: driver!, field: entry.key, value: entry.value); } } @@ -157,11 +157,11 @@ Future fillAndSaveForm(FlutterDriver driver, Map values, } Future testArchiveAndDelete( - {FlutterDriver driver, - String archivedMessage, - String rowText, - String deletedMessage, - String restoredMessage}) async { + {required FlutterDriver driver, + required String archivedMessage, + String? rowText, + required String deletedMessage, + required String restoredMessage}) async { final localization = TestLocalization('en'); final mobile = await isMobile(driver); @@ -178,7 +178,7 @@ Future testArchiveAndDelete( print('Restore record'); if (mobile) - await driver.scrollUntilVisible(find.byType('ListView'), find.text(rowText), + await driver.scrollUntilVisible(find.byType('ListView'), find.text(rowText!), dyScroll: -300); //await driver.tap(find.text(rowText)); @@ -193,7 +193,7 @@ Future testArchiveAndDelete( print('Restore record'); if (mobile) - await driver.scrollUntilVisible(find.byType('ListView'), find.text(rowText), + await driver.scrollUntilVisible(find.byType('ListView'), find.text(rowText!), dyScroll: -300); //await driver.tap(find.text(rowText)); await selectAction(driver, localization.restore); diff --git a/test_driver/vendors_it_test.dart b/test_driver/vendors_it_test.dart index 177ff0d7f..389995ab5 100644 --- a/test_driver/vendors_it_test.dart +++ b/test_driver/vendors_it_test.dart @@ -13,8 +13,8 @@ void main() { void runTestSuite({bool batchMode = false}) { group('Vendor Tests', () { - TestLocalization localization; - FlutterDriver driver; + late TestLocalization localization; + FlutterDriver? driver; final name = makeUnique(faker.company.name()); @@ -25,72 +25,72 @@ void runTestSuite({bool batchMode = false}) { driver = await FlutterDriver.connect(); print('Login to app'); - await login(driver, retype: batchMode); + await login(driver!, retype: batchMode); print('View vendors'); - await viewSection(driver: driver, name: localization.vendors); + await viewSection(driver: driver!, name: localization.vendors); }); tearDownAll(() async { - await logout(driver, localization); + await logout(driver!, localization); if (driver != null) { - driver.close(); + driver!.close(); } }); // Create an empty vendor test('Try to add an empty vendor', () async { print('Tap new vendor'); - await driver.tap(find.byTooltip(localization.newVendor)); + await driver!.tap(find.byTooltip(localization.newVendor)); print('Tap save'); - await driver.tap(find.text(localization.save)); + await driver!.tap(find.text(localization.save)); print('Check for error'); - await driver.waitFor(find.text(localization.pleaseEnterAName)); + await driver!.waitFor(find.text(localization.pleaseEnterAName)); - if (await isMobile(driver)) { + if (await isMobile(driver!)) { print('Click back'); - await driver.tap(find.pageBack()); - await driver.waitFor(find.byTooltip(localization.newVendor)); + await driver!.tap(find.pageBack()); + await driver!.waitFor(find.byTooltip(localization.newVendor)); } else { print('Click cancel'); - await driver.tap(find.text(localization.cancel)); + await driver!.tap(find.text(localization.cancel)); } }); // Create a new vendor test('Add a new vendor', () async { print('Tap new vendor'); - await driver.tap(find.byTooltip(localization.newVendor)); + await driver!.tap(find.byTooltip(localization.newVendor)); print('Fill form: $name'); - await fillAndSaveForm(driver, { + await fillAndSaveForm(driver!, { localization.name: name, }); - if (await isMobile(driver)) { + if (await isMobile(driver!)) { print('Click back'); - await driver.tap(find.pageBack()); - await driver.waitFor(find.byTooltip(localization.newVendor)); + await driver!.tap(find.pageBack()); + await driver!.waitFor(find.byTooltip(localization.newVendor)); } }); // Edit the newly created vendor test('Edit an existing vendor', () async { - if (await isMobile(driver)) { + if (await isMobile(driver!)) { print('Select vendor: $name'); - await driver.scrollUntilVisible( + await driver!.scrollUntilVisible( find.byType('ListView'), find.text(name), dyScroll: -300); - await driver.tap(find.text(name)); + await driver!.tap(find.text(name)); } print('Tap edit'); - await driver.tap(find.text(localization.edit)); + await driver!.tap(find.text(localization.edit)); - await fillAndSaveForm(driver, { + await fillAndSaveForm(driver!, { localization.name: updatedName, }); }); @@ -98,14 +98,14 @@ void runTestSuite({bool batchMode = false}) { // Archive the edited vendor test('Archieve/delete vendor test', () async { await testArchiveAndDelete( - driver: driver, + driver: driver!, rowText: updatedName, archivedMessage: localization.archivedVendor, deletedMessage: localization.deletedVendor, restoredMessage: localization.restoredVendor); - if (await isMobile(driver)) { - await driver.tap(find.pageBack()); + if (await isMobile(driver!)) { + await driver!.tap(find.pageBack()); } }); });