diff --git a/lib/ui/app/entities/entity_list_tile.dart b/lib/ui/app/entities/entity_list_tile.dart index 24c6a0ad8..60e0d5c40 100644 --- a/lib/ui/app/entities/entity_list_tile.dart +++ b/lib/ui/app/entities/entity_list_tile.dart @@ -34,7 +34,8 @@ class EntityListTile extends StatefulWidget { final BaseEntity? entity; final bool isFilter; final ClientEntity? client; - final Function(BuildContext, BaseEntity?, EntityAction)? onEntityActionSelected; + final Function(BuildContext, BaseEntity?, EntityAction)? + onEntityActionSelected; @override _EntityListTileState createState() => _EntityListTileState(); @@ -64,8 +65,9 @@ class _EntityListTileState extends State { _isHovered; final leading = ActionMenuButton( - iconData: - isHovered ? Icons.more_vert : getEntityIcon(widget.entity!.entityType), + iconData: isHovered + ? Icons.more_vert + : getEntityIcon(widget.entity!.entityType), iconSize: isHovered ? null : 18, entityActions: widget.entity!.getActions( userCompany: state.userCompany, @@ -146,7 +148,7 @@ class _EntityListTileState extends State { 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, ), @@ -166,8 +168,8 @@ class _EntityListTileState extends State { : null, leading: leading, trailing: trailing, - isThreeLine: - (widget.subtitle ?? '').isNotEmpty && !widget.entity!.isActive, + isThreeLine: (widget.subtitle ?? '').isNotEmpty && + !widget.entity!.isActive, ), ), ListDivider(), diff --git a/lib/ui/app/entity_top_filter.dart b/lib/ui/app/entity_top_filter.dart index b23333fa4..d21dc8216 100644 --- a/lib/ui/app/entity_top_filter.dart +++ b/lib/ui/app/entity_top_filter.dart @@ -115,7 +115,8 @@ class EntityTopFilter extends StatelessWidget { constraints: BoxConstraints(maxWidth: 220), child: Text( EntityPresenter() - .initialize(filterEntity as BaseEntity?, context) + .initialize( + filterEntity as BaseEntity, context) .title()!, style: TextStyle( fontSize: 17, @@ -153,7 +154,8 @@ class EntityTopFilter extends StatelessWidget { onPressed: () { viewEntitiesByType( entityType: relatedTypes[i], - filterEntity: filterEntity as BaseEntity?, + filterEntity: + filterEntity as BaseEntity?, ); }, onLongPress: () { @@ -206,7 +208,8 @@ class EntityTopFilter extends StatelessWidget { } else { viewEntitiesByType( entityType: value, - filterEntity: filterEntity as BaseEntity?, + filterEntity: + filterEntity as BaseEntity?, ); } }, diff --git a/lib/ui/app/invoice/tax_rate_dropdown.dart b/lib/ui/app/invoice/tax_rate_dropdown.dart index 0c4e7376c..1b2ade8e6 100644 --- a/lib/ui/app/invoice/tax_rate_dropdown.dart +++ b/lib/ui/app/invoice/tax_rate_dropdown.dart @@ -91,7 +91,7 @@ class _TaxRateDropdownState extends State { value: taxRate, isExpanded: true, isDense: true, - onChanged: widget.onSelected, + onChanged: (rate) => widget.onSelected(rate!), items: [ if (!taxRate.isEmpty) DropdownMenuItem( diff --git a/lib/ui/app/presenters/entity_presenter.dart b/lib/ui/app/presenters/entity_presenter.dart index ce89c2ada..29c16c04d 100644 --- a/lib/ui/app/presenters/entity_presenter.dart +++ b/lib/ui/app/presenters/entity_presenter.dart @@ -12,7 +12,10 @@ 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; diff --git a/lib/ui/app/tables/entity_datatable.dart b/lib/ui/app/tables/entity_datatable.dart index e2a0ea5dd..648e50aa6 100644 --- a/lib/ui/app/tables/entity_datatable.dart +++ b/lib/ui/app/tables/entity_datatable.dart @@ -54,7 +54,7 @@ class EntityDataTableSource extends AppDataTableSource { DataRow getRow(int index) { final state = StoreProvider.of(context).state; final prefState = state.prefState; - final entity = entityMap![entityList[index]]; + final entity = entityMap![entityList[index]]!; entityPresenter!.initialize(entity, context); final listState = state.getListState(entityType); diff --git a/lib/ui/app/view_scaffold.dart b/lib/ui/app/view_scaffold.dart index 0a983ee22..48de9f9e5 100644 --- a/lib/ui/app/view_scaffold.dart +++ b/lib/ui/app/view_scaffold.dart @@ -30,7 +30,7 @@ class ViewScaffold extends StatelessWidget { }); final bool isFilter; - final BaseEntity? entity; + final BaseEntity entity; final Widget body; final Function? onBackPressed; final Widget? appBarBottom; @@ -105,7 +105,7 @@ class ViewScaffold extends StatelessWidget { child: Text(appBarTitle!), ), bottom: appBarBottom as PreferredSizeWidget?, - actions: entity!.isNew + actions: entity.isNew ? [] : [ if (isSettings && isDesktop(context) && !isFilter) 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 eef660de1..81f4b4a18 100644 --- a/lib/ui/company_gateway/edit/company_gateway_edit_vm.dart +++ b/lib/ui/company_gateway/edit/company_gateway_edit_vm.dart @@ -101,8 +101,10 @@ class CompanyGatewayEditVM { store.dispatch(SaveCompanyRequest( completer: Completer(), company: company.rebuild((b) => b - ..settings.companyGatewayIds += - ',' + savedCompanyGateway.id))); + ..settings.companyGatewayIds = + company.settings.companyGatewayIds! + + ',' + + savedCompanyGateway.id))); } if (state.prefState.isMobile) { diff --git a/lib/ui/credit/edit/credit_edit_details_vm.dart b/lib/ui/credit/edit/credit_edit_details_vm.dart index ac2e4b6aa..94297e2f2 100644 --- a/lib/ui/credit/edit/credit_edit_details_vm.dart +++ b/lib/ui/credit/edit/credit_edit_details_vm.dart @@ -57,8 +57,8 @@ class CreditEditDetailsVM extends EntityEditDetailsVM { CompanyEntity? company, InvoiceEntity? invoice, Function(InvoiceEntity)? onChanged, - Function(BuildContext, InvoiceEntity, ClientEntity)? onClientChanged, - Function(BuildContext, InvoiceEntity, VendorEntity)? onVendorChanged, + Function(BuildContext, InvoiceEntity, ClientEntity?)? onClientChanged, + Function(BuildContext, InvoiceEntity, VendorEntity?)? onVendorChanged, BuiltMap? clientMap, BuiltList? clientList, Function(BuildContext context, Completer completer)? @@ -91,7 +91,9 @@ class CreditEditDetailsVM extends EntityEditDetailsVM { clientMap: state.clientState.map, clientList: state.clientState.list, onClientChanged: (context, credit, client) { - store.dispatch(UpdateCredit(credit.applyClient(state, client))); + if (client != null) { + store.dispatch(UpdateCredit(credit.applyClient(state, client))); + } store.dispatch(UpdateCreditClient(client: client)); }, onAddClientPressed: (context, completer) { diff --git a/lib/ui/credit/edit/credit_edit_vm.dart b/lib/ui/credit/edit/credit_edit_vm.dart index 35fa14e20..848cf2c0a 100644 --- a/lib/ui/credit/edit/credit_edit_vm.dart +++ b/lib/ui/credit/edit/credit_edit_vm.dart @@ -52,8 +52,8 @@ class CreditEditVM extends AbstractInvoiceEditVM { InvoiceEntity? invoice, int? invoiceItemIndex, InvoiceEntity? origInvoice, - Function(BuildContext, [EntityAction])? onSavePressed, - Function(List, String, String)? onItemsAdded, + Function(BuildContext, [EntityAction?])? onSavePressed, + Function(List, String?, String?)? onItemsAdded, bool? isSaving, Function(BuildContext)? onCancelPressed, Function(BuildContext, List, bool?)? onUploadDocuments, diff --git a/lib/ui/expense/view/expense_view_vm.dart b/lib/ui/expense/view/expense_view_vm.dart index 6c365fc3d..0d5aad960 100644 --- a/lib/ui/expense/view/expense_view_vm.dart +++ b/lib/ui/expense/view/expense_view_vm.dart @@ -61,7 +61,7 @@ class AbstractExpenseViewVM { }); final AppState? state; - final ExpenseEntity? expense; + final ExpenseEntity expense; final CompanyEntity? company; final Function(BuildContext, EntityAction)? onEntityAction; final Function(BuildContext)? onRefreshed; @@ -73,8 +73,8 @@ class AbstractExpenseViewVM { class ExpenseViewVM extends AbstractExpenseViewVM { ExpenseViewVM({ + required ExpenseEntity expense, AppState? state, - ExpenseEntity? expense, CompanyEntity? company, Function(BuildContext, EntityAction)? onEntityAction, Function(BuildContext)? onRefreshed, diff --git a/lib/ui/invoice/edit/invoice_edit_desktop.dart b/lib/ui/invoice/edit/invoice_edit_desktop.dart index 79088d60f..0b5ddac4e 100644 --- a/lib/ui/invoice/edit/invoice_edit_desktop.dart +++ b/lib/ui/invoice/edit/invoice_edit_desktop.dart @@ -330,7 +330,7 @@ class InvoiceEditDesktopState extends State EntityPresenter() .initialize( invoice.isPurchaseOrder - ? vendor + ? vendor! : client, context) .title()!, diff --git a/lib/ui/invoice/edit/invoice_edit_items.dart b/lib/ui/invoice/edit/invoice_edit_items.dart index 358cfcb9f..2222fd2c9 100644 --- a/lib/ui/invoice/edit/invoice_edit_items.dart +++ b/lib/ui/invoice/edit/invoice_edit_items.dart @@ -46,7 +46,7 @@ class _InvoiceEditItemsState extends State { viewModel: viewModel, entityViewModel: widget.entityViewModel, key: ValueKey('__${lineItemIndex}__'), - invoiceItem: invoice.lineItems[lineItemIndex!], + invoiceItem: invoice.lineItems[lineItemIndex!]!, index: lineItemIndex, ); }); @@ -97,8 +97,8 @@ class ItemEditDetails extends StatefulWidget { required this.entityViewModel, }) : super(key: key); - final int? index; - final InvoiceItemEntity? invoiceItem; + final int index; + final InvoiceItemEntity invoiceItem; final EntityEditItemsVM viewModel; final AbstractInvoiceEditVM entityViewModel; diff --git a/lib/ui/invoice/edit/invoice_edit_items_desktop.dart b/lib/ui/invoice/edit/invoice_edit_items_desktop.dart index 88d67f34f..0aeb0b65e 100644 --- a/lib/ui/invoice/edit/invoice_edit_items_desktop.dart +++ b/lib/ui/invoice/edit/invoice_edit_items_desktop.dart @@ -1,4 +1,6 @@ // Flutter imports: +import 'dart:async'; + import 'package:flutter/material.dart'; // Package imports: @@ -676,8 +678,10 @@ class _InvoiceEditItemsDesktopState extends State { return []; } - return options as FutureOr>; - } as FutureOr> Function(TextEditingValue), + return options + as FutureOr>; + } as FutureOr> Function( + TextEditingValue), displayStringForOption: (product) => product.productKey, onSelected: (product) { @@ -818,8 +822,8 @@ class _InvoiceEditItemsDesktopState extends State { .cardColor, child: EntityAutocompleteListTile( - onTap: (entity) => - onSelected(entity as ProductEntity), + onTap: (entity) => onSelected( + entity as ProductEntity), overrideSuggestedAmount: (entity) { final product = @@ -1162,6 +1166,8 @@ class _InvoiceEditItemsDesktopState extends State { ), ), ); + } else { + return SizedBox(); } }).toList(), Padding( diff --git a/lib/ui/invoice/edit/invoice_edit_vm.dart b/lib/ui/invoice/edit/invoice_edit_vm.dart index eb574692e..d97c9ec54 100644 --- a/lib/ui/invoice/edit/invoice_edit_vm.dart +++ b/lib/ui/invoice/edit/invoice_edit_vm.dart @@ -78,8 +78,8 @@ class InvoiceEditVM extends AbstractInvoiceEditVM { InvoiceEntity? invoice, int? invoiceItemIndex, InvoiceEntity? origInvoice, - Function(BuildContext, [EntityAction])? onSavePressed, - Function(List, String, String)? onItemsAdded, + Function(BuildContext, [EntityAction?])? onSavePressed, + Function(List, String?, String?)? onItemsAdded, bool? isSaving, Function(BuildContext)? onCancelPressed, Function(BuildContext, List, bool?)? onUploadDocuments, @@ -202,7 +202,7 @@ class InvoiceEditVM extends AbstractInvoiceEditVM { }, onItemsAdded: (items, clientId, projectId) { if ((clientId ?? '').isNotEmpty || (projectId ?? '').isNotEmpty) { - final client = state.clientState.get(clientId); + final client = state.clientState.get(clientId!); store.dispatch(UpdateInvoice(invoice.rebuild((b) => b ..clientId = clientId ?? '' ..projectId = projectId ?? '' diff --git a/lib/ui/invoice/invoice_email_vm.dart b/lib/ui/invoice/invoice_email_vm.dart index ce11b6ef5..b26f43986 100644 --- a/lib/ui/invoice/invoice_email_vm.dart +++ b/lib/ui/invoice/invoice_email_vm.dart @@ -1,4 +1,6 @@ // Flutter imports: +import 'dart:async'; + import 'package:flutter/material.dart'; // Package imports: @@ -111,7 +113,7 @@ class EmailInvoiceVM extends EmailEntityVM { context, AppLocalization.of(context)!.emailedInvoice, shouldPop: isMobile(context)); if (!isMobile(context)) { - completer.future.then((value) { + completer.future.then(() { viewEntity(entity: invoice); } as FutureOr Function(Null)); } diff --git a/lib/ui/project/view/project_view_vm.dart b/lib/ui/project/view/project_view_vm.dart index dd665003b..acbd0fb56 100644 --- a/lib/ui/project/view/project_view_vm.dart +++ b/lib/ui/project/view/project_view_vm.dart @@ -85,8 +85,8 @@ class ProjectViewVM { client: client, onRefreshed: (context) => _handleRefresh(context), onEntityPressed: (BuildContext context, EntityType entityType, - {bool longPress = false}) { - if (longPress && project.isActive && client.isActive) { + {bool? longPress = false}) { + if (longPress == true && project.isActive && client.isActive) { handleProjectAction( context, [project], EntityAction.newEntityType(entityType)); } else { 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 32e0ef014..92c983ef6 100644 --- a/lib/ui/purchase_order/edit/purchase_order_edit_vm.dart +++ b/lib/ui/purchase_order/edit/purchase_order_edit_vm.dart @@ -52,8 +52,8 @@ class PurchaseOrderEditVM extends AbstractInvoiceEditVM { InvoiceEntity? purchaseOrder, int? invoiceItemIndex, InvoiceEntity? origInvoice, - Function(BuildContext, [EntityAction])? onSavePressed, - Function(List, String, String)? onItemsAdded, + Function(BuildContext, [EntityAction?])? onSavePressed, + Function(List, String?, String?)? onItemsAdded, bool? isSaving, Function(BuildContext)? onCancelPressed, Function(BuildContext, List, bool?)? onUploadDocuments, @@ -116,7 +116,8 @@ class PurchaseOrderEditVM extends AbstractInvoiceEditVM { store.dispatch( UpdateCurrentRoute(PurchaseOrderViewScreen.route)); if (purchaseOrder.isNew) { - navigator!.pushReplacementNamed(PurchaseOrderViewScreen.route); + navigator! + .pushReplacementNamed(PurchaseOrderViewScreen.route); } else { navigator!.pop(savedPurchaseOrder); } diff --git a/lib/ui/quote/edit/quote_edit_details_vm.dart b/lib/ui/quote/edit/quote_edit_details_vm.dart index d6b824f24..c0213fa18 100644 --- a/lib/ui/quote/edit/quote_edit_details_vm.dart +++ b/lib/ui/quote/edit/quote_edit_details_vm.dart @@ -90,7 +90,9 @@ class QuoteEditDetailsVM extends EntityEditDetailsVM { clientMap: state.clientState.map, clientList: state.clientState.list, onClientChanged: (context, quote, client) { - store.dispatch(UpdateQuote(quote.applyClient(state, client))); + if (client != null) { + store.dispatch(UpdateQuote(quote.applyClient(state, client))); + } store.dispatch(UpdateQuoteClient(client: client)); }, onAddClientPressed: (context, completer) { diff --git a/lib/ui/quote/edit/quote_edit_vm.dart b/lib/ui/quote/edit/quote_edit_vm.dart index 124cf3ab8..b75dae8f2 100644 --- a/lib/ui/quote/edit/quote_edit_vm.dart +++ b/lib/ui/quote/edit/quote_edit_vm.dart @@ -52,8 +52,8 @@ class QuoteEditVM extends AbstractInvoiceEditVM { InvoiceEntity? invoice, int? invoiceItemIndex, InvoiceEntity? origInvoice, - Function(BuildContext, [EntityAction])? onSavePressed, - Function(List, String, String)? onItemsAdded, + Function(BuildContext, [EntityAction?])? onSavePressed, + Function(List, String?, String?)? onItemsAdded, bool? isSaving, Function(BuildContext)? onCancelPressed, Function(BuildContext, List, bool?)? onUploadDocument, 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 2db5cbf7b..c0326b0e8 100644 --- a/lib/ui/recurring_expense/edit/recurring_expense_edit_vm.dart +++ b/lib/ui/recurring_expense/edit/recurring_expense_edit_vm.dart @@ -93,7 +93,7 @@ class RecurringExpenseEditVM extends AbstractExpenseEditVM { ..future.then(() { store.dispatch( UpdateCurrentRoute(RecurringExpenseEditScreen.route)); - } as FutureOr<_> Function(Null))); + } as FutureOr Function(Null))); completer.future.then((SelectableEntity client) { store.dispatch(UpdateCurrentRoute(RecurringExpenseEditScreen.route)); }); 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 c73d60bc6..f323cf5bb 100644 --- a/lib/ui/recurring_expense/view/recurring_expense_view_vm.dart +++ b/lib/ui/recurring_expense/view/recurring_expense_view_vm.dart @@ -49,8 +49,8 @@ class RecurringExpenseViewScreen extends StatelessWidget { class RecurringExpenseViewVM extends AbstractExpenseViewVM { RecurringExpenseViewVM({ + required ExpenseEntity expense, AppState? state, - ExpenseEntity? expense, CompanyEntity? company, Function(BuildContext, EntityAction)? onEntityAction, Function(BuildContext)? onRefreshed, 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 7d1b144ad..433685a00 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 @@ -92,8 +92,10 @@ class RecurringInvoiceEditDetailsVM extends EntityEditDetailsVM { clientMap: state.clientState.map, clientList: state.clientState.list, onClientChanged: (context, invoice, client) { - store.dispatch( - UpdateRecurringInvoice(invoice.applyClient(state, client))); + if (client != null) { + store.dispatch( + UpdateRecurringInvoice(invoice.applyClient(state, client))); + } store.dispatch(UpdateRecurringInvoiceClient(client: client)); }, onAddClientPressed: (context, completer) { 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 dfec0d1af..3fc34d7e0 100644 --- a/lib/ui/recurring_invoice/edit/recurring_invoice_edit_vm.dart +++ b/lib/ui/recurring_invoice/edit/recurring_invoice_edit_vm.dart @@ -53,7 +53,7 @@ class RecurringInvoiceEditVM extends AbstractInvoiceEditVM { int? invoiceItemIndex, InvoiceEntity? origInvoice, Function(BuildContext, [EntityAction?])? onSavePressed, - Function(List, String, String)? onItemsAdded, + Function(List, String?, String?)? onItemsAdded, bool? isSaving, Function(BuildContext)? onCancelPressed, Function(BuildContext, List, bool)? onUploadDocuments, diff --git a/lib/ui/reports/document_report.dart b/lib/ui/reports/document_report.dart index 28863205e..f5ed4fa1b 100644 --- a/lib/ui/reports/document_report.dart +++ b/lib/ui/reports/document_report.dart @@ -46,7 +46,7 @@ ReportResult documentReport( BuiltMap userMap, ) { final List> data = []; - final List entities = []; + final List entities = []; BuiltList columns; final localization = @@ -144,13 +144,13 @@ ReportResult documentReport( if (!skip) { data.add(row); - entities.add(document); + entities.add(document!); } }); final selectedColumns = columns.map((item) => EnumUtils.parse(item)).toList(); - data.sort((rowA, rowB) => - sortReportTableRows(rowA, rowB, documentReportSettings, selectedColumns)!); + data.sort((rowA, rowB) => sortReportTableRows( + rowA, rowB, documentReportSettings, selectedColumns)!); return ReportResult( allColumns: diff --git a/lib/ui/reports/report_charts.dart b/lib/ui/reports/report_charts.dart index da32fea5d..fc385e105 100644 --- a/lib/ui/reports/report_charts.dart +++ b/lib/ui/reports/report_charts.dart @@ -1,4 +1,5 @@ // Flutter imports: +import 'package:charts_flutter/flutter.dart'; import 'package:flutter/material.dart'; // Package imports: @@ -71,8 +72,8 @@ class ReportCharts extends StatelessWidget { data: viewModel.groupTotals.rows!.map((key) { return { 'name': key, - 'value': viewModel.groupTotals.totals![key]! - [reportState.chart] + 'value': + viewModel.groupTotals.totals![key]![reportState.chart] }; }).toList()) as Series ], @@ -98,8 +99,8 @@ class ReportCharts extends StatelessWidget { data: keys.map((key) { return { 'name': key, - 'value': viewModel.groupTotals.totals![key]! - [reportState.chart] + 'value': + viewModel.groupTotals.totals![key]![reportState.chart] }; }).toList()) as Series ], diff --git a/lib/ui/reports/reports_screen.dart b/lib/ui/reports/reports_screen.dart index f30e5f143..849c7174e 100644 --- a/lib/ui/reports/reports_screen.dart +++ b/lib/ui/reports/reports_screen.dart @@ -1,4 +1,6 @@ // Flutter imports: +import 'dart:async'; + import 'package:collection/collection.dart' show IterableNullableExtension; import 'package:flutter/material.dart' hide DataRow, DataCell, DataColumn; import 'package:flutter/material.dart' as mt; @@ -961,7 +963,7 @@ class ReportResult { } static bool matchDateTime({ - String? filter, + required String filter, required String value, required UserCompanyEntity userCompany, required ReportsUIState reportsUIState, @@ -1165,7 +1167,7 @@ class ReportResult { showBlank: true, blankValue: null, value: (reportState.filters[column] ?? '').isNotEmpty - ? DateRange.valueOf(reportState.filters[column]) + ? DateRange.valueOf(reportState.filters[column]!) : null, onChanged: (dynamic value) { if (value == null) { @@ -1213,7 +1215,7 @@ class ReportResult { focusNode: textEditingFocusNodes![column], optionsBuilder: (TextEditingValue textEditingValue) { final filter = textEditingValue.text.toLowerCase(); - final index = columns.indexOf(column); + final index = columns.indexOf(column!); final options = data .where((row) => row[index] @@ -1327,7 +1329,7 @@ class ReportResult { final row = data[index - 1]; final cells = []; for (var j = 0; j < row.length; j++) { - final index = columns.indexOf(sorted[j]); + final index = columns.indexOf(sorted[j]!); final cell = row[index]; final column = sorted[j]; cells.add( @@ -1534,13 +1536,14 @@ class ReportResult { totals[currencyId] = {'count': 0}; } if (!countedRow) { - totals[currencyId]!['count']++; + totals[currencyId]!['count'] = totals[currencyId]!['count']! + 1; countedRow = true; } if (!totals[currencyId]!.containsKey(column)) { totals[currencyId]![column] = 0; } - totals[currencyId]![column] += cell.doubleValue!; + totals[currencyId]![column] = + totals[currencyId]![column]! + cell.doubleValue!; } } } diff --git a/lib/ui/transaction/view/transaction_view_vm.dart b/lib/ui/transaction/view/transaction_view_vm.dart index c844cee98..b92749972 100644 --- a/lib/ui/transaction/view/transaction_view_vm.dart +++ b/lib/ui/transaction/view/transaction_view_vm.dart @@ -61,7 +61,7 @@ class TransactionViewVM { transactionIds = [state.transactionUIState.selectedId]; } - transactionIds.forEach((transactionId) { + transactionIds.forEach((String transactionId) { transactions.add(state.transactionState.map[transactionId] ?? TransactionEntity(id: transactionId)); } as void Function(String?)); @@ -118,14 +118,14 @@ class TransactionViewVM { ConvertTransactionsToExpensesRequest( snackBarCompleter( context, AppLocalization.of(context)!.convertedTransaction) - ..future.then((value) { + ..future.then(() { if (state.transactionListState.isInMultiselect()) { store.dispatch(ClearTransactionMultiselect()); if (store.state.prefState.isPreviewVisible) { store.dispatch(TogglePreviewSidebar()); } } - } as FutureOr<_> Function(Null)), + } as FutureOr Function(Null)), transactionIds, vendorId, categoryId, diff --git a/lib/utils/super_editor/super_editor.dart b/lib/utils/super_editor/super_editor.dart index 5a21d4930..07aa27792 100644 --- a/lib/utils/super_editor/super_editor.dart +++ b/lib/utils/super_editor/super_editor.dart @@ -502,6 +502,7 @@ class _ExampleEditorState extends State { onCutPressed: _cut, onCopyPressed: _copy, onPastePressed: _paste, + focalPoint: _overlayController.toolbarTopAnchor!, ), overlayController: _overlayController, ), diff --git a/lib/utils/web.dart b/lib/utils/web.dart index 5099b79e1..521a43aa2 100644 --- a/lib/utils/web.dart +++ b/lib/utils/web.dart @@ -84,7 +84,7 @@ class WebUtils { final loginRequest = PopupRequest()..scopes = ['user.read']; publicClientApp.loginPopup(loginRequest).then((result) { - succesCallback(result?.idToken, result?.accessToken); + succesCallback(result?.idToken ?? '', result?.accessToken ?? ''); }).catchError((dynamic error) { failureCallback(error); }); diff --git a/samples/form_keys.dart b/samples/form_keys.dart index e9dd02b0a..08e7b3d25 100644 --- a/samples/form_keys.dart +++ b/samples/form_keys.dart @@ -243,7 +243,7 @@ class ContactForm extends StatefulWidget { }) : super(key: key); final ContactEntity contact; - final Function(GlobalKey?) onRemovePressed; + final Function(GlobalKey) onRemovePressed; @override ContactFormState createState() => ContactFormState(); @@ -274,7 +274,8 @@ class ContactFormState extends State { Padding( padding: const EdgeInsets.only(top: 12.0), child: TextButton( - onPressed: () => widget.onRemovePressed(widget.key as GlobalKey?), + onPressed: () => widget + .onRemovePressed(widget.key as GlobalKey), child: Text( 'Delete', style: TextStyle(