Null safety

This commit is contained in:
Hillel Coren 2023-09-22 13:53:19 +03:00
parent b17162ef25
commit a88f96e1f1
37 changed files with 131 additions and 165 deletions

View File

@ -234,10 +234,10 @@ Middleware<AppState> _createLoadState(
store.dispatch(LoadStateSuccess(appState));
store.dispatch(RefreshData(
completer: Completer<Null>()
..future.then<Null>(() {
..future.then<Null>((_) {
AppBuilder.of(navigatorKey.currentContext!)!.rebuild();
store.dispatch(UpdatedSetting());
} as FutureOr<Null> Function(Null))));
})));
if (uiState!.currentRoute != LoginScreen.route &&
uiState!.currentRoute.isNotEmpty) {

View File

@ -379,12 +379,12 @@ Middleware<AppState> _createCompany(AuthRepository repository) {
store.dispatch(RefreshData(
allCompanies: true,
completer: Completer<Null>()
..future.then<Null>(() {
..future.then<Null>((_) {
store.dispatch(SelectCompany(companyIndex: state.companies.length));
store.dispatch(ViewDashboard(force: true));
action!.completer!.complete();
} as FutureOr<Null> Function(Null)),
}),
));
});
@ -459,9 +459,9 @@ Middleware<AppState> _purgeData(AuthRepository repository) {
store.dispatch(RefreshData(
clearData: true,
completer: Completer<Null>()
..future.then<Null>(() {
..future.then<Null>((_) {
action.completer.complete(null);
} as FutureOr<Null> Function(Null))));
})));
}).catchError((Object error) {
store.dispatch(PurgeDataFailure(error));
action.completer.completeError(error);

View File

@ -309,9 +309,9 @@ void handleCompanyGatewayAction(BuildContext? context,
case EntityAction.disconnect:
final completer =
snackBarCompleter<Null>(context, localization!.disconnectedGateway);
completer.future.then<Null>(() {
completer.future.then<Null>((_) {
store.dispatch(RefreshData());
} as FutureOr<Null> Function(Null));
});
confirmCallback(
context: context,
callback: (_) {

View File

@ -483,82 +483,67 @@ void handleDocumentAction(
context, AppLocalization.of(context)!.deletedDocument);
switch (document!.parentType) {
case EntityType.client:
completer.future.then<Null>((() => store.dispatch(
LoadClient(clientId: document.parentId)))
as FutureOr<Null> Function(Null));
completer.future.then<Null>(((_) => store
.dispatch(LoadClient(clientId: document.parentId))));
break;
case EntityType.credit:
completer.future.then<Null>((() => store.dispatch(
LoadCredit(creditId: document.parentId)))
as FutureOr<Null> Function(Null));
completer.future.then<Null>(((_) => store
.dispatch(LoadCredit(creditId: document.parentId))));
break;
case EntityType.expense:
completer.future.then<Null>((() => store.dispatch(
LoadExpense(expenseId: document.parentId)))
as FutureOr<Null> Function(Null));
completer.future.then<Null>(((_) => store.dispatch(
LoadExpense(expenseId: document.parentId))));
break;
case EntityType.group:
completer.future.then<Null>((() => store
.dispatch(LoadGroup(groupId: document.parentId)))
as FutureOr<Null> Function(Null));
completer.future.then<Null>(((_) => store
.dispatch(LoadGroup(groupId: document.parentId))));
break;
case EntityType.invoice:
completer.future.then<Null>((() => store.dispatch(
LoadInvoice(invoiceId: document.parentId)))
as FutureOr<Null> Function(Null));
completer.future.then<Null>(((_) => store.dispatch(
LoadInvoice(invoiceId: document.parentId))));
break;
case EntityType.product:
completer.future.then<Null>((() => store.dispatch(
LoadProduct(productId: document.parentId)))
as FutureOr<Null> Function(Null));
completer.future.then<Null>(((_) => store.dispatch(
LoadProduct(productId: document.parentId))));
break;
case EntityType.project:
completer.future.then<Null>((() => store.dispatch(
LoadProject(projectId: document.parentId)))
as FutureOr<Null> Function(Null));
completer.future.then<Null>(((_) => store.dispatch(
LoadProject(projectId: document.parentId))));
break;
case EntityType.purchaseOrder:
completer.future.then<Null>((() => store.dispatch(
completer.future.then<Null>(((_) => store.dispatch(
LoadPurchaseOrder(
purchaseOrderId: document.parentId)))
as FutureOr<Null> Function(Null));
purchaseOrderId: document.parentId))));
break;
case EntityType.quote:
completer.future.then<Null>((() => store
.dispatch(LoadQuote(quoteId: document.parentId)))
as FutureOr<Null> Function(Null));
completer.future.then<Null>(((_) => store
.dispatch(LoadQuote(quoteId: document.parentId))));
break;
case EntityType.recurringExpense:
completer.future.then<Null>((() => store.dispatch(
completer.future.then<Null>(((_) => store.dispatch(
LoadRecurringExpense(
recurringExpenseId: document.parentId)))
as FutureOr<Null> Function(Null));
recurringExpenseId: document.parentId))));
break;
case EntityType.recurringInvoice:
completer.future.then<Null>((() => store.dispatch(
completer.future.then<Null>(((_) => store.dispatch(
LoadRecurringInvoice(
recurringInvoiceId: document.parentId)))
as FutureOr<Null> Function(Null));
recurringInvoiceId: document.parentId))));
break;
case EntityType.task:
completer.future.then<Null>((() => store
.dispatch(LoadTask(taskId: document.parentId)))
as FutureOr<Null> Function(Null));
completer.future.then<Null>(((_) =>
store.dispatch(LoadTask(taskId: document.parentId))));
break;
case EntityType.vendor:
completer.future.then<Null>((() => store.dispatch(
LoadVendor(vendorId: document.parentId)))
as FutureOr<Null> Function(Null));
completer.future.then<Null>(((_) => store
.dispatch(LoadVendor(vendorId: document.parentId))));
break;
default:
completer.future.then<Null>((() =>
store.dispatch(RefreshData()))
as FutureOr<Null> Function(Null));
completer.future
.then<Null>(((_) => store.dispatch(RefreshData())));
}
completer.future.then<Null>((() =>
store.dispatch(RefreshData()))
as FutureOr<Null> Function(Null));
completer.future
.then<Null>(((_) => store.dispatch(RefreshData())));
store.dispatch(DeleteDocumentRequest(
completer: completer,
documentIds: [document.id],

View File

@ -90,11 +90,11 @@ class _DesktopSessionTimeoutState extends State<DesktopSessionTimeout> {
onPressed: () {
final store = StoreProvider.of<AppState>(context);
final completer = Completer<Null>();
completer.future.then(() {
completer.future.then<Null>((_) {
setState(() {
_isWarned = false;
});
} as FutureOr<Null> Function(Null));
});
store.dispatch(RefreshData(completer: completer));
},
child: Text(

View File

@ -88,9 +88,9 @@ class _HealthCheckDialogState extends State<HealthCheckDialog> {
webClient.get(url, credentials.token).then((dynamic response) {
store.dispatch(RefreshData(
completer: Completer<Null>()
..future.then<Null>(() {
..future.then<Null>((_) {
runCheck();
} as FutureOr<Null> Function(Null))));
})));
}).catchError((dynamic error) {
showErrorDialog(message: error);
});

View File

@ -261,9 +261,9 @@ class _HistoryListTileState extends State<HistoryListTile> {
entities: [entity],
completer: state.prefState.isHistoryFloated
? (Completer<Null>()
..future.then<Null>(() {
..future.then<Null>((_) {
Navigator.pop(context);
} as FutureOr<Null> Function(Null)))
}))
: null,
);
},

View File

@ -140,9 +140,9 @@ class MenuDrawerVM {
final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context)!.addedCompany,
shouldPop: true)
..future.then<Null>(() {
..future.then<Null>((_) {
AppBuilder.of(navigatorKey.currentContext!)!.rebuild();
} as FutureOr<Null> Function(Null));
});
store
.dispatch(AddCompany(context: context, completer: completer));

View File

@ -470,9 +470,8 @@ class _EntityListState extends State<EntityList> {
entities: entities,
multiselect: true,
completer: Completer<Null>()
..future.then<Null>((() =>
widget.onClearMultiselect())
as FutureOr<Null> Function(Null)),
..future.then<Null>(
((_) => widget.onClearMultiselect())),
);
},
onCancelPressed: (_) => widget.onClearMultiselect(),

View File

@ -184,13 +184,11 @@ class _LoginState extends State<LoginView> {
}
final Completer<Null> completer = Completer<Null>();
completer.future
.then<Null>(() {
completer.future.then<Null>((_) {
setState(() {
_loginError = '';
});
} as FutureOr<Null> Function(Null))
.catchError((Object error) {
}).catchError((Object error) {
setState(() {
_buttonController.reset();
_loginError = error.toString();

View File

@ -184,8 +184,8 @@ class LoginVM {
provider: UserEntity.OAUTH_PROVIDER_GOOGLE,
oneTimePassword: oneTimePassword,
));
completer.future.then<Null>((() => _handleLogin(context: context))
as FutureOr<Null> Function(Null));
completer.future
.then<Null>(((_) => _handleLogin(context: context)));
}
});
if (!signedIn) {
@ -215,9 +215,8 @@ class LoginVM {
accessToken: accessToken,
provider: UserEntity.OAUTH_PROVIDER_GOOGLE,
));
completer.future.then<Null>((() =>
_handleLogin(context: context, isSignUp: true))
as FutureOr<Null> Function(Null));
completer.future.then<Null>(
((_) => _handleLogin(context: context, isSignUp: true)));
}
});
if (!signedIn) {
@ -249,8 +248,8 @@ class LoginVM {
provider: UserEntity.OAUTH_PROVIDER_MICROSOFT,
oneTimePassword: oneTimePassword,
));
completer.future.then<Null>((() => _handleLogin(context: context))
as FutureOr<Null> Function(Null));
completer.future
.then<Null>(((_) => _handleLogin(context: context)));
}, (dynamic error) {
completer.completeError(error);
});
@ -270,9 +269,8 @@ class LoginVM {
provider: UserEntity.OAUTH_PROVIDER_MICROSOFT,
accessToken: accessToken,
));
completer.future.then<Null>((() =>
_handleLogin(context: context, isSignUp: true))
as FutureOr<Null> Function(Null));
completer.future.then<Null>(
((_) => _handleLogin(context: context, isSignUp: true)));
}, (dynamic error) {
completer.completeError(error);
});
@ -311,8 +309,7 @@ class LoginVM {
authCode: credentials.authorizationCode,
idToken: credentials.identityToken,
));
completer.future.then<Null>((() => _handleLogin(context: context))
as FutureOr<Null> Function(Null));
completer.future.then<Null>(((_) => _handleLogin(context: context)));
} catch (error) {
completer.completeError(error);
print('## onAppleLoginPressed: $error');
@ -340,9 +337,8 @@ class LoginVM {
firstName: credentials.givenName,
lastName: credentials.familyName,
));
completer.future.then<Null>((() =>
_handleLogin(context: context, isSignUp: true))
as FutureOr<Null> Function(Null));
completer.future.then<Null>(
((_) => _handleLogin(context: context, isSignUp: true)));
} catch (error) {
completer.completeError(error);
print('## onAppleSignUpPressed: $error');
@ -363,9 +359,8 @@ class LoginVM {
email: email.trim(),
password: password.trim(),
));
completer.future.then<Null>((() =>
_handleLogin(context: context, isSignUp: true))
as FutureOr<Null> Function(Null));
completer.future.then<Null>(
((_) => _handleLogin(context: context, isSignUp: true)));
},
onRecoverPressed: (
BuildContext context,

View File

@ -72,9 +72,8 @@ class CompanyGatewayScreen extends StatelessWidget {
entities: companyGateways,
multiselect: true,
completer: Completer<Null>()
..future.then<Null>((() => store
.dispatch(ClearCompanyGatewayMultiselect()))
as FutureOr<Null> Function(Null)),
..future.then<Null>(((_) =>
store.dispatch(ClearCompanyGatewayMultiselect()))),
);
},
onCancelPressed: (context) =>

View File

@ -92,9 +92,9 @@ class EmailCreditVM extends EmailEntityVM {
context, AppLocalization.of(context)!.emailedCredit,
shouldPop: isMobile(context));
if (!isMobile(context)) {
completer.future.then<Null>(() {
completer.future.then<Null>((_) {
viewEntity(entity: credit);
} as FutureOr<Null> Function(Null));
});
}
store.dispatch(EmailCreditRequest(
completer: completer,

View File

@ -103,9 +103,9 @@ class CreditEditDetailsVM extends EntityEditDetailsVM {
force: true,
completer: completer,
cancelCompleter: Completer<Null>()
..future.then<Null>(() {
..future.then<Null>((_) {
store.dispatch(UpdateCurrentRoute(CreditEditScreen.route));
} as FutureOr<Null> Function(Null)));
}));
completer.future.then((SelectableEntity client) {
store.dispatch(UpdateCurrentRoute(CreditEditScreen.route));
});

View File

@ -120,9 +120,9 @@ class ExpenseEditVM extends AbstractExpenseEditVM {
force: true,
completer: completer,
cancelCompleter: Completer<Null>()
..future.then<Null>(() {
..future.then<Null>((_) {
store.dispatch(UpdateCurrentRoute(ExpenseEditScreen.route));
} as FutureOr<Null> Function(Null)));
}));
completer.future.then((SelectableEntity client) {
store.dispatch(UpdateCurrentRoute(ExpenseEditScreen.route));
});
@ -134,9 +134,9 @@ class ExpenseEditVM extends AbstractExpenseEditVM {
force: true,
completer: completer,
cancelCompleter: Completer<Null>()
..future.then<Null>(() {
..future.then<Null>((_) {
store.dispatch(UpdateCurrentRoute(ExpenseEditScreen.route));
} as FutureOr<Null> Function(Null)));
}));
completer.future.then((SelectableEntity expense) {
store.dispatch(UpdateCurrentRoute(ExpenseEditScreen.route));
});

View File

@ -131,9 +131,9 @@ class InvoiceEditDetailsVM extends EntityEditDetailsVM {
force: true,
completer: completer,
cancelCompleter: Completer<Null>()
..future.then<Null>(() {
..future.then<Null>((_) {
store.dispatch(UpdateCurrentRoute(InvoiceEditScreen.route));
} as FutureOr<Null> Function(Null)));
}));
completer.future.then((SelectableEntity client) {
store.dispatch(UpdateCurrentRoute(InvoiceEditScreen.route));
});

View File

@ -113,9 +113,9 @@ class EmailInvoiceVM extends EmailEntityVM {
context, AppLocalization.of(context)!.emailedInvoice,
shouldPop: isMobile(context));
if (!isMobile(context)) {
completer.future.then<Null>(() {
completer.future.then<Null>((_) {
viewEntity(entity: invoice);
} as FutureOr<Null> Function(Null));
});
}
store.dispatch(EmailInvoiceRequest(
completer: completer,

View File

@ -88,9 +88,9 @@ class ProjectEditVM {
force: true,
completer: completer,
cancelCompleter: Completer<Null>()
..future.then<Null>(() {
..future.then<Null>((_) {
store.dispatch(UpdateCurrentRoute(ProjectEditScreen.route));
} as FutureOr<Null> Function(Null)));
}));
completer.future.then((SelectableEntity client) {
store.dispatch(UpdateCurrentRoute(ProjectEditScreen.route));
});

View File

@ -102,10 +102,10 @@ class PurchaseOrderEditDetailsVM extends EntityEditDetailsVM {
force: true,
completer: completer,
cancelCompleter: Completer<Null>()
..future.then<Null>(() {
..future.then<Null>((_) {
store.dispatch(
UpdateCurrentRoute(PurchaseOrderEditScreen.route));
} as FutureOr<Null> Function(Null)));
}));
completer.future.then((SelectableEntity client) {
store.dispatch(UpdateCurrentRoute(PurchaseOrderEditScreen.route));
});

View File

@ -90,9 +90,9 @@ class EmailPurchaseOrderVM extends EmailEntityVM {
context, AppLocalization.of(context)!.emailedPurchaseOrder,
shouldPop: isMobile(context));
if (!isMobile(context)) {
completer.future.then<Null>(() {
completer.future.then<Null>((_) {
viewEntity(entity: purchaseOrder);
} as FutureOr<Null> Function(Null));
});
}
store.dispatch(EmailPurchaseOrderRequest(
completer: completer,

View File

@ -102,9 +102,9 @@ class QuoteEditDetailsVM extends EntityEditDetailsVM {
force: true,
completer: completer,
cancelCompleter: Completer<Null>()
..future.then<Null>(() {
..future.then<Null>((_) {
store.dispatch(UpdateCurrentRoute(QuoteEditScreen.route));
} as FutureOr<Null> Function(Null)));
}));
completer.future.then((SelectableEntity client) {
store.dispatch(UpdateCurrentRoute(QuoteEditScreen.route));
});

View File

@ -89,9 +89,9 @@ class EmailQuoteVM extends EmailEntityVM {
context, AppLocalization.of(context)!.emailedQuote,
shouldPop: isMobile(context));
if (!isMobile(context)) {
completer.future.then<Null>(() {
completer.future.then<Null>((_) {
viewEntity(entity: quote);
} as FutureOr<Null> Function(Null));
});
}
store.dispatch(EmailQuoteRequest(
completer: completer,

View File

@ -90,10 +90,10 @@ class RecurringExpenseEditVM extends AbstractExpenseEditVM {
force: true,
completer: completer,
cancelCompleter: Completer<Null>()
..future.then<Null>(() {
..future.then<Null>((_) {
store.dispatch(
UpdateCurrentRoute(RecurringExpenseEditScreen.route));
} as FutureOr<Null> Function(Null)));
}));
completer.future.then((SelectableEntity client) {
store.dispatch(UpdateCurrentRoute(RecurringExpenseEditScreen.route));
});
@ -105,10 +105,10 @@ class RecurringExpenseEditVM extends AbstractExpenseEditVM {
force: true,
completer: completer,
cancelCompleter: Completer<Null>()
..future.then<Null>(() {
..future.then<Null>((_) {
store.dispatch(
UpdateCurrentRoute(RecurringExpenseEditScreen.route));
} as FutureOr<Null> Function(Null)));
}));
completer.future.then((SelectableEntity expense) {
store.dispatch(UpdateCurrentRoute(RecurringExpenseEditScreen.route));
});

View File

@ -105,10 +105,10 @@ class RecurringInvoiceEditDetailsVM extends EntityEditDetailsVM {
force: true,
completer: completer,
cancelCompleter: Completer<Null>()
..future.then<Null>(() {
..future.then<Null>((_) {
store.dispatch(
UpdateCurrentRoute(RecurringInvoiceEditScreen.route));
} as FutureOr<Null> Function(Null)));
}));
completer.future.then((SelectableEntity client) {
store.dispatch(UpdateCurrentRoute(RecurringInvoiceEditScreen.route));
});

View File

@ -73,8 +73,7 @@ class AccountManagementVM {
final companyLength = state.companies.length;
final deleteCompleter = Completer<Null>()
..future
.then<Null>(() {
..future.then<Null>((_) {
final context = navigatorKey.currentContext;
final state = store.state;
if (companyLength == 1) {
@ -87,7 +86,7 @@ class AccountManagementVM {
final index = selectedCompanyIndex == 0 ? 1 : 0;
store.dispatch(SelectCompany(companyIndex: index));
final refreshCompleter = Completer<Null>()
..future.then<Null>(() {
..future.then<Null>((_) {
store.dispatch(SelectCompany(companyIndex: 0));
store.dispatch(ViewDashboard());
AppBuilder.of(navigatorKey.currentContext!)!.rebuild();
@ -95,12 +94,11 @@ class AccountManagementVM {
if (Navigator.of(context!).canPop()) {
Navigator.of(context).pop();
}
} as FutureOr<Null> Function(Null));
});
store.dispatch(
RefreshData(clearData: true, completer: refreshCompleter));
}
} as FutureOr<Null> Function(Null))
.catchError((Object error) {
}).catchError((Object error) {
if (Navigator.of(navigatorKey.currentContext!).canPop()) {
Navigator.of(navigatorKey.currentContext!).pop();
}

View File

@ -82,10 +82,10 @@ class ClientPortalVM {
final oldSubdomain = state.company!.subdomain;
final newSubdomain = settingsUIState.company.subdomain;
if (oldSubdomain != newSubdomain) {
completer.future.then<Null>(() {
completer.future.then<Null>((_) {
showRefreshDataDialog(
context: navigatorKey.currentContext!);
} as FutureOr<Null> Function(Null));
});
}
store.dispatch(SaveCompanyRequest(

View File

@ -83,7 +83,7 @@ class InvoiceDesignVM {
case EntityType.company:
final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context)!.savedSettings)
..future.then<Null>(() {
..future.then<Null>((_) {
final webClient = WebClient();
final credentials = state.credentials;
final url = '${credentials.url}/designs/set/default';
@ -106,7 +106,7 @@ class InvoiceDesignVM {
showErrorDialog(message: '$error');
});
});
} as FutureOr<Null> Function(Null));
});
store.dispatch(SaveCompanyRequest(
completer: completer, company: settingsUIState.company));
break;

View File

@ -75,14 +75,14 @@ class LocalizationSettingsVM {
final appBuilder = AppBuilder.of(context);
final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context)!.savedSettings)
..future.then<Null>(() {
..future.then<Null>((_) {
appBuilder!.rebuild();
store.dispatch(RefreshData(
includeStatic: true,
completer: Completer<dynamic>()
..future
.then((dynamic value) => appBuilder.rebuild())));
} as FutureOr<Null> Function(Null));
});
store.dispatch(SaveCompanyRequest(
completer: completer, company: settingsUIState.company));
break;

View File

@ -146,18 +146,15 @@ class _SettingsWizardState extends State<SettingsWizard> {
callback: (password, idToken) {
final localization = AppLocalization.of(context);
final completer = Completer<Null>();
completer.future
.then<Null>(() {
completer.future.then<Null>((_) {
final toastCompleter =
snackBarCompleter<Null>(context, localization!.savedSettings);
toastCompleter.future
.then<Null>(() {
toastCompleter.future.then<Null>((_) {
setState(() {
_isSaving = false;
_showLogo = true;
});
} as FutureOr<Null> Function(Null))
.catchError((Object error) {
}).catchError((Object error) {
setState(() {
_isSaving = false;
});
@ -174,8 +171,7 @@ class _SettingsWizardState extends State<SettingsWizard> {
),
),
);
} as FutureOr<Null> Function(Null))
.catchError((Object error) {
}).catchError((Object error) {
setState(() => _isSaving = false);
});

View File

@ -96,8 +96,7 @@ class TemplatesAndRemindersVM {
case EntityType.company:
final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context)!.savedSettings);
completer.future.then<Null>(
(() => callback()) as FutureOr<Null> Function(Null));
completer.future.then<Null>(((_) => callback()));
store.dispatch(SaveCompanyRequest(
completer: completer, company: settingsUIState.company));
break;

View File

@ -176,9 +176,9 @@ class UserDetailsVM {
callback: (password, idToken) {
final completer = snackBarCompleter<Null>(context,
AppLocalization.of(context)!.disconnectedGoogle);
completer.future.then<Null>(() {
completer.future.then<Null>((_) {
GoogleOAuth.disconnect();
} as FutureOr<Null> Function(Null));
});
store.dispatch(
DisconnecOAuthUserRequest(
user: state.user,
@ -315,7 +315,7 @@ class UserDetailsVM {
final appBuilder = AppBuilder.of(context);
final origUserSettings = state.userCompany!.settings;
completer.future.then<Null>(() async {
completer.future.then<Null>((_) async {
final newUserSettings = store.state.userCompany!.settings!;
if (origUserSettings!.includeDeletedClients !=
newUserSettings.includeDeletedClients ||
@ -338,7 +338,7 @@ class UserDetailsVM {
}
appBuilder!.rebuild();
} as FutureOr<Null> Function(Null));
});
confirmCallback(
context: context,

View File

@ -82,9 +82,9 @@ class TaskEditDetailsVM {
force: true,
completer: completer,
cancelCompleter: Completer<Null>()
..future.then<Null>(() {
..future.then<Null>((_) {
store.dispatch(UpdateCurrentRoute(TaskEditDetailsScreen.route));
} as FutureOr<Null> Function(Null)));
}));
completer.future.then((SelectableEntity client) {
store.dispatch(UpdateCurrentRoute(TaskEditDetailsScreen.route));
});
@ -107,9 +107,9 @@ class TaskEditDetailsVM {
force: true,
completer: completer,
cancelCompleter: Completer<Null>()
..future.then<Null>(() {
..future.then<Null>((_) {
store.dispatch(UpdateCurrentRoute(TaskEditDetailsScreen.route));
} as FutureOr<Null> Function(Null)));
}));
completer.future.then((SelectableEntity client) {
store.dispatch(UpdateCurrentRoute(TaskEditDetailsScreen.route));
});

View File

@ -78,9 +78,8 @@ class TaskStatusScreen extends StatelessWidget {
entities: taskStatusIds,
multiselect: true,
completer: Completer<Null>()
..future.then<Null>((() =>
store.dispatch(ClearTaskStatusMultiselect()))
as FutureOr<Null> Function(Null)),
..future.then<Null>(
((_) => store.dispatch(ClearTaskStatusMultiselect()))),
);
},
label: localization!.actions,

View File

@ -110,9 +110,9 @@ class TransactionEditVM {
force: true,
completer: completer,
cancelCompleter: Completer<Null>()
..future.then<Null>(() {
..future.then<Null>((_) {
store.dispatch(UpdateCurrentRoute(TransactionEditScreen.route));
} as FutureOr<Null> Function(Null)));
}));
completer.future.then((SelectableEntity client) {
store.dispatch(UpdateCurrentRoute(TransactionEditScreen.route));
});

View File

@ -1109,10 +1109,10 @@ class _MatchWithdrawalsState extends State<_MatchWithdrawals> {
force: true,
completer: completer,
cancelCompleter: Completer<Null>()
..future.then<Null>(() {
..future.then<Null>((_) {
store.dispatch(UpdateCurrentRoute(
TransactionScreen.route));
} as FutureOr<Null> Function(Null)));
}));
completer.future.then((SelectableEntity vendor) {
store.dispatch(SaveTransactionSuccess(transaction
.rebuild((b) => b..pendingVendorId = vendor.id)));
@ -1193,10 +1193,10 @@ class _MatchWithdrawalsState extends State<_MatchWithdrawals> {
force: true,
completer: completer,
cancelCompleter: Completer<Null>()
..future.then<Null>(() {
..future.then<Null>((_) {
store.dispatch(UpdateCurrentRoute(
TransactionScreen.route));
} as FutureOr<Null> Function(Null)));
}));
completer.future.then((SelectableEntity category) {
store.dispatch(SaveTransactionSuccess(
transaction.rebuild(

View File

@ -118,14 +118,14 @@ class TransactionViewVM {
ConvertTransactionsToExpensesRequest(
snackBarCompleter<Null>(
context, AppLocalization.of(context)!.convertedTransaction)
..future.then<Null>(() {
..future.then<Null>((_) {
if (state.transactionListState.isInMultiselect()) {
store.dispatch(ClearTransactionMultiselect());
if (store.state.prefState.isPreviewVisible) {
store.dispatch(TogglePreviewSidebar());
}
}
} as FutureOr<Null> Function(Null)),
}),
transactionIds,
vendorId,
categoryId,

View File

@ -46,11 +46,9 @@ Completer<T> snackBarCompleter<T>(
Completer<Null> popCompleter(BuildContext context, dynamic result) {
final Completer<Null> completer = Completer<Null>();
completer.future
.then<Null>(() {
completer.future.then<Null>((_) {
Navigator.of(context).pop<dynamic>(result);
} as FutureOr<Null> Function(Null))
.catchError((Object error) {
}).catchError((Object error) {
showDialog<ErrorDialog>(
context: navigatorKey.currentContext!,
builder: (BuildContext context) {