Null safety
This commit is contained in:
parent
63e3efc406
commit
3b3dd7c91d
|
|
@ -135,7 +135,8 @@ class _HistoryListTileState extends State<HistoryListTile> {
|
|||
} else if (history.id == null) {
|
||||
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();
|
||||
|
|
@ -260,9 +261,9 @@ class _HistoryListTileState extends State<HistoryListTile> {
|
|||
entities: [entity],
|
||||
completer: state.prefState.isHistoryFloated
|
||||
? (Completer<Null>()
|
||||
..future.then((value) {
|
||||
..future.then<Null>(() {
|
||||
Navigator.pop(context);
|
||||
} as FutureOr<_> Function(Null)))
|
||||
} as FutureOr<Null> Function(Null)))
|
||||
: null,
|
||||
);
|
||||
},
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ class IconMessage extends StatelessWidget {
|
|||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(vertical: 16, horizontal: 20),
|
||||
child: Row(
|
||||
children: <Widget?>[
|
||||
children: <Widget>[
|
||||
Icon(
|
||||
iconData ?? Icons.info_outline,
|
||||
size: 18.0,
|
||||
|
|
@ -53,7 +53,7 @@ class IconMessage extends StatelessWidget {
|
|||
),
|
||||
if (trailing != null) ...[
|
||||
SizedBox(width: 16),
|
||||
trailing,
|
||||
trailing!,
|
||||
]
|
||||
],
|
||||
),
|
||||
|
|
|
|||
|
|
@ -258,8 +258,8 @@ class _MenuDrawerState extends State<MenuDrawer> {
|
|||
} else if (companyId == 'company') {
|
||||
widget.viewModel.onAddCompany(context);
|
||||
} else {
|
||||
final company =
|
||||
state.companies.firstWhere((company) => company!.id == companyId);
|
||||
final company = state.companies
|
||||
.firstWhere((company) => company!.id == companyId)!;
|
||||
final index = state.companies.indexOf(company);
|
||||
widget.viewModel.onCompanyChanged(context, index, company);
|
||||
}
|
||||
|
|
@ -332,8 +332,8 @@ class _MenuDrawerState extends State<MenuDrawer> {
|
|||
widget.viewModel.onAddCompany(context);
|
||||
} else {
|
||||
final index = int.parse(value);
|
||||
widget.viewModel
|
||||
.onCompanyChanged(context, index, state.companies[index]);
|
||||
widget.viewModel.onCompanyChanged(
|
||||
context, index, state.companies[index]!);
|
||||
}
|
||||
},
|
||||
),
|
||||
|
|
@ -486,7 +486,8 @@ class _MenuDrawerState extends State<MenuDrawer> {
|
|||
child: ListTile(
|
||||
tileColor: Colors.orange.shade800,
|
||||
subtitle: Text(
|
||||
localization.verifyPhoneNumber2faHelp!,
|
||||
localization
|
||||
.verifyPhoneNumber2faHelp!,
|
||||
style: TextStyle(color: Colors.white),
|
||||
),
|
||||
onTap: () {
|
||||
|
|
@ -1314,8 +1315,9 @@ class SidebarFooterCollapsed extends StatelessWidget {
|
|||
Icons.chevron_right,
|
||||
color: state.isUpdateAvailable ? state.accentColor : null,
|
||||
),
|
||||
tooltip:
|
||||
state.prefState.enableTooltips ? localization!.showMenu : null,
|
||||
tooltip: state.prefState.enableTooltips
|
||||
? localization!.showMenu
|
||||
: null,
|
||||
onPressed: () {
|
||||
store.dispatch(UpdateUserPreferences(sidebar: AppSidebar.menu));
|
||||
},
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ class MenuDrawerVM {
|
|||
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;
|
||||
|
||||
|
|
@ -140,7 +140,7 @@ class MenuDrawerVM {
|
|||
shouldPop: true)
|
||||
..future.then((value) {
|
||||
AppBuilder.of(navigatorKey.currentContext!)!.rebuild();
|
||||
} as FutureOr<_> Function(Null));
|
||||
} as FutureOr<Null> Function(Null));
|
||||
|
||||
store
|
||||
.dispatch(AddCompany(context: context, completer: completer));
|
||||
|
|
|
|||
|
|
@ -184,11 +184,13 @@ class _LoginState extends State<LoginView> {
|
|||
}
|
||||
|
||||
final Completer<Null> completer = Completer<Null>();
|
||||
completer.future.then((_) {
|
||||
completer.future
|
||||
.then((_) {
|
||||
setState(() {
|
||||
_loginError = '';
|
||||
});
|
||||
} as FutureOr<_> Function(Null)).catchError((Object error) {
|
||||
} as FutureOr<_> Function(Null))
|
||||
.catchError((Object error) {
|
||||
setState(() {
|
||||
_buttonController.reset();
|
||||
_loginError = error.toString();
|
||||
|
|
@ -225,7 +227,8 @@ class _LoginState extends State<LoginView> {
|
|||
}
|
||||
|
||||
final Completer<Null> completer = Completer<Null>();
|
||||
completer.future.then((_) {
|
||||
completer.future
|
||||
.then<Null>(() {
|
||||
setState(() {
|
||||
_loginError = '';
|
||||
if (_recoverPassword) {
|
||||
|
|
@ -240,7 +243,8 @@ class _LoginState extends State<LoginView> {
|
|||
});
|
||||
}
|
||||
});
|
||||
} as FutureOr<_> Function(Null)).catchError((Object error) {
|
||||
} as FutureOr<Null> Function(Null))
|
||||
.catchError((Object error) {
|
||||
setState(() {
|
||||
_buttonController.reset();
|
||||
_loginError = error.toString();
|
||||
|
|
@ -512,8 +516,9 @@ class _LoginState extends State<LoginView> {
|
|||
children: <TextSpan>[
|
||||
TextSpan(
|
||||
style: aboutTextStyle,
|
||||
text: localization!.iAgreeToThe +
|
||||
' ',
|
||||
text:
|
||||
localization!.iAgreeToThe +
|
||||
' ',
|
||||
),
|
||||
LinkTextSpan(
|
||||
style: linkStyle,
|
||||
|
|
|
|||
|
|
@ -115,7 +115,9 @@ class LoginVM {
|
|||
onMicrosoftSignUpPressed;
|
||||
|
||||
final Function(BuildContext, Completer<Null> completer,
|
||||
{String url, String? secret, String? oneTimePassword}) onAppleLoginPressed;
|
||||
{String url,
|
||||
String? secret,
|
||||
String? oneTimePassword}) onAppleLoginPressed;
|
||||
final Function(BuildContext, Completer<Null> completer, String? url)
|
||||
onAppleSignUpPressed;
|
||||
|
||||
|
|
@ -184,7 +186,8 @@ class LoginVM {
|
|||
provider: UserEntity.OAUTH_PROVIDER_GOOGLE,
|
||||
oneTimePassword: oneTimePassword,
|
||||
));
|
||||
completer.future.then(((_) => _handleLogin(context: context)) as FutureOr<_> Function(Null));
|
||||
completer.future.then<Null>((() => _handleLogin(context: context))
|
||||
as FutureOr<Null> Function(Null));
|
||||
}
|
||||
});
|
||||
if (!signedIn) {
|
||||
|
|
@ -214,8 +217,9 @@ class LoginVM {
|
|||
accessToken: accessToken,
|
||||
provider: UserEntity.OAUTH_PROVIDER_GOOGLE,
|
||||
));
|
||||
completer.future
|
||||
.then(((_) => _handleLogin(context: context, isSignUp: true)) as FutureOr<_> Function(Null));
|
||||
completer.future.then<Null>((() =>
|
||||
_handleLogin(context: context, isSignUp: true))
|
||||
as FutureOr<Null> Function(Null));
|
||||
}
|
||||
});
|
||||
if (!signedIn) {
|
||||
|
|
@ -231,9 +235,9 @@ class LoginVM {
|
|||
onMicrosoftLoginPressed: (
|
||||
BuildContext context,
|
||||
Completer<Null> completer, {
|
||||
required String url,
|
||||
required String secret,
|
||||
required String oneTimePassword,
|
||||
String url = '',
|
||||
String secret = '',
|
||||
String oneTimePassword = '',
|
||||
}) async {
|
||||
try {
|
||||
WebUtils.microsoftLogin((idToken, accessToken) {
|
||||
|
|
@ -247,7 +251,8 @@ class LoginVM {
|
|||
provider: UserEntity.OAUTH_PROVIDER_MICROSOFT,
|
||||
oneTimePassword: oneTimePassword,
|
||||
));
|
||||
completer.future.then(((_) => _handleLogin(context: context)) as FutureOr<_> Function(Null));
|
||||
completer.future.then<Null>((() => _handleLogin(context: context))
|
||||
as FutureOr<Null> Function(Null));
|
||||
}, (dynamic error) {
|
||||
completer.completeError(error);
|
||||
});
|
||||
|
|
@ -267,8 +272,9 @@ class LoginVM {
|
|||
provider: UserEntity.OAUTH_PROVIDER_MICROSOFT,
|
||||
accessToken: accessToken,
|
||||
));
|
||||
completer.future
|
||||
.then(((_) => _handleLogin(context: context, isSignUp: true)) as FutureOr<_> Function(Null));
|
||||
completer.future.then<Null>((() =>
|
||||
_handleLogin(context: context, isSignUp: true))
|
||||
as FutureOr<Null> Function(Null));
|
||||
}, (dynamic error) {
|
||||
completer.completeError(error);
|
||||
});
|
||||
|
|
@ -307,7 +313,8 @@ class LoginVM {
|
|||
authCode: credentials.authorizationCode,
|
||||
idToken: credentials.identityToken,
|
||||
));
|
||||
completer.future.then(((_) => _handleLogin(context: context)) as FutureOr<_> Function(Null));
|
||||
completer.future.then<Null>((() => _handleLogin(context: context))
|
||||
as FutureOr<Null> Function(Null));
|
||||
} catch (error) {
|
||||
completer.completeError(error);
|
||||
print('## onAppleLoginPressed: $error');
|
||||
|
|
@ -335,8 +342,9 @@ class LoginVM {
|
|||
firstName: credentials.givenName,
|
||||
lastName: credentials.familyName,
|
||||
));
|
||||
completer.future
|
||||
.then(((_) => _handleLogin(context: context, isSignUp: true)) as FutureOr<_> Function(Null));
|
||||
completer.future.then<Null>((() =>
|
||||
_handleLogin(context: context, isSignUp: true))
|
||||
as FutureOr<Null> Function(Null));
|
||||
} catch (error) {
|
||||
completer.completeError(error);
|
||||
print('## onAppleSignUpPressed: $error');
|
||||
|
|
@ -357,8 +365,9 @@ class LoginVM {
|
|||
email: email.trim(),
|
||||
password: password.trim(),
|
||||
));
|
||||
completer.future
|
||||
.then(((_) => _handleLogin(context: context, isSignUp: true)) as FutureOr<_> Function(Null));
|
||||
completer.future.then<Null>((() =>
|
||||
_handleLogin(context: context, isSignUp: true))
|
||||
as FutureOr<Null> Function(Null));
|
||||
},
|
||||
onRecoverPressed: (
|
||||
BuildContext context,
|
||||
|
|
@ -400,7 +409,8 @@ class LoginVM {
|
|||
platform: getPlatform(context),
|
||||
oneTimePassword: oneTimePassword.trim(),
|
||||
));
|
||||
completer.future.then(((_) => _handleLogin(context: context)) as FutureOr<_> Function(Null));
|
||||
completer.future.then<Null>((() => _handleLogin(context: context))
|
||||
as FutureOr<Null> Function(Null));
|
||||
},
|
||||
onTokenLoginPressed: (BuildContext context, Completer<Null> completer,
|
||||
{required String token}) async {
|
||||
|
|
|
|||
|
|
@ -59,7 +59,8 @@ class EmailCreditVM extends EmailEntityVM {
|
|||
ClientEntity? client,
|
||||
VendorEntity? vendor,
|
||||
Function? loadClient,
|
||||
Function(BuildContext, EmailTemplate, String, String, String)? onSendPressed,
|
||||
Function(BuildContext, EmailTemplate, String, String, String)?
|
||||
onSendPressed,
|
||||
}) : super(
|
||||
state: state,
|
||||
isLoading: isLoading,
|
||||
|
|
@ -91,7 +92,7 @@ class EmailCreditVM extends EmailEntityVM {
|
|||
if (!isMobile(context)) {
|
||||
completer.future.then((value) {
|
||||
viewEntity(entity: credit);
|
||||
} as FutureOr<_> Function(Null));
|
||||
} as FutureOr<Null> Function(Null));
|
||||
}
|
||||
store.dispatch(EmailCreditRequest(
|
||||
completer: completer,
|
||||
|
|
|
|||
|
|
@ -103,7 +103,7 @@ class CreditEditDetailsVM extends EntityEditDetailsVM {
|
|||
cancelCompleter: Completer<Null>()
|
||||
..future.then((_) {
|
||||
store.dispatch(UpdateCurrentRoute(CreditEditScreen.route));
|
||||
} as FutureOr<_> Function(Null)));
|
||||
} as FutureOr<Null> Function(Null)));
|
||||
completer.future.then((SelectableEntity client) {
|
||||
store.dispatch(UpdateCurrentRoute(CreditEditScreen.route));
|
||||
});
|
||||
|
|
|
|||
|
|
@ -131,7 +131,7 @@ class InvoiceEditDetailsVM extends EntityEditDetailsVM {
|
|||
cancelCompleter: Completer<Null>()
|
||||
..future.then((_) {
|
||||
store.dispatch(UpdateCurrentRoute(InvoiceEditScreen.route));
|
||||
} as FutureOr<_> Function(Null)));
|
||||
} as FutureOr<Null> Function(Null)));
|
||||
completer.future.then((SelectableEntity client) {
|
||||
store.dispatch(UpdateCurrentRoute(InvoiceEditScreen.route));
|
||||
});
|
||||
|
|
|
|||
|
|
@ -81,7 +81,8 @@ class EmailInvoiceVM extends EmailEntityVM {
|
|||
InvoiceEntity? invoice,
|
||||
ClientEntity? client,
|
||||
VendorEntity? vendor,
|
||||
Function(BuildContext, EmailTemplate, String, String, String)? onSendPressed,
|
||||
Function(BuildContext, EmailTemplate, String, String, String)?
|
||||
onSendPressed,
|
||||
}) : super(
|
||||
state: state,
|
||||
isLoading: isLoading,
|
||||
|
|
@ -112,7 +113,7 @@ class EmailInvoiceVM extends EmailEntityVM {
|
|||
if (!isMobile(context)) {
|
||||
completer.future.then((value) {
|
||||
viewEntity(entity: invoice);
|
||||
} as FutureOr<_> Function(Null));
|
||||
} as FutureOr<Null> Function(Null));
|
||||
}
|
||||
store.dispatch(EmailInvoiceRequest(
|
||||
completer: completer,
|
||||
|
|
|
|||
|
|
@ -90,7 +90,7 @@ class ProjectEditVM {
|
|||
cancelCompleter: Completer<Null>()
|
||||
..future.then((_) {
|
||||
store.dispatch(UpdateCurrentRoute(ProjectEditScreen.route));
|
||||
} as FutureOr<_> Function(Null)));
|
||||
} as FutureOr<Null> Function(Null)));
|
||||
completer.future.then((SelectableEntity client) {
|
||||
store.dispatch(UpdateCurrentRoute(ProjectEditScreen.route));
|
||||
});
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@ class PurchaseOrderEditDetailsVM extends EntityEditDetailsVM {
|
|||
..future.then((_) {
|
||||
store.dispatch(
|
||||
UpdateCurrentRoute(PurchaseOrderEditScreen.route));
|
||||
} as FutureOr<_> Function(Null)));
|
||||
} as FutureOr<Null> Function(Null)));
|
||||
completer.future.then((SelectableEntity client) {
|
||||
store.dispatch(UpdateCurrentRoute(PurchaseOrderEditScreen.route));
|
||||
});
|
||||
|
|
|
|||
|
|
@ -58,9 +58,8 @@ class EmailPurchaseOrderVM extends EmailEntityVM {
|
|||
required InvoiceEntity invoice,
|
||||
required ClientEntity? client,
|
||||
required VendorEntity? vendor,
|
||||
required
|
||||
Function(BuildContext, EmailTemplate, String, String, String)
|
||||
onSendPressed,
|
||||
required Function(BuildContext, EmailTemplate, String, String, String)
|
||||
onSendPressed,
|
||||
}) : super(
|
||||
state: state,
|
||||
isLoading: isLoading,
|
||||
|
|
@ -91,7 +90,7 @@ class EmailPurchaseOrderVM extends EmailEntityVM {
|
|||
if (!isMobile(context)) {
|
||||
completer.future.then((value) {
|
||||
viewEntity(entity: purchaseOrder);
|
||||
} as FutureOr<_> Function(Null));
|
||||
} as FutureOr<Null> Function(Null));
|
||||
}
|
||||
store.dispatch(EmailPurchaseOrderRequest(
|
||||
completer: completer,
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@ class QuoteEditDetailsVM extends EntityEditDetailsVM {
|
|||
cancelCompleter: Completer<Null>()
|
||||
..future.then((_) {
|
||||
store.dispatch(UpdateCurrentRoute(QuoteEditScreen.route));
|
||||
} as FutureOr<_> Function(Null)));
|
||||
} as FutureOr<Null> Function(Null)));
|
||||
completer.future.then((SelectableEntity client) {
|
||||
store.dispatch(UpdateCurrentRoute(QuoteEditScreen.route));
|
||||
});
|
||||
|
|
|
|||
|
|
@ -58,9 +58,8 @@ class EmailQuoteVM extends EmailEntityVM {
|
|||
required InvoiceEntity invoice,
|
||||
required ClientEntity? client,
|
||||
required VendorEntity? vendor,
|
||||
required
|
||||
Function(BuildContext, EmailTemplate, String, String, String)
|
||||
onSendPressed,
|
||||
required Function(BuildContext, EmailTemplate, String, String, String)
|
||||
onSendPressed,
|
||||
}) : super(
|
||||
state: state,
|
||||
isLoading: isLoading,
|
||||
|
|
@ -90,7 +89,7 @@ class EmailQuoteVM extends EmailEntityVM {
|
|||
if (!isMobile(context)) {
|
||||
completer.future.then((value) {
|
||||
viewEntity(entity: quote);
|
||||
} as FutureOr<_> Function(Null));
|
||||
} as FutureOr<Null> Function(Null));
|
||||
}
|
||||
store.dispatch(EmailQuoteRequest(
|
||||
completer: completer,
|
||||
|
|
|
|||
|
|
@ -62,7 +62,8 @@ class RecurringExpenseEditVM extends AbstractExpenseEditVM {
|
|||
state: state,
|
||||
expense: expense,
|
||||
onChanged: onChanged,
|
||||
onSavePressed: onSavePressed as dynamic Function(BuildContext, [EntityAction])?,
|
||||
onSavePressed:
|
||||
onSavePressed as dynamic Function(BuildContext, [EntityAction])?,
|
||||
onCancelPressed: onCancelPressed,
|
||||
origExpense: origExpense,
|
||||
onAddClientPressed: onAddClientPressed,
|
||||
|
|
@ -93,7 +94,7 @@ class RecurringExpenseEditVM extends AbstractExpenseEditVM {
|
|||
..future.then((_) {
|
||||
store.dispatch(
|
||||
UpdateCurrentRoute(RecurringExpenseEditScreen.route));
|
||||
} as FutureOr<_> Function(Null)));
|
||||
} as FutureOr<Null> Function(Null)));
|
||||
completer.future.then((SelectableEntity client) {
|
||||
store.dispatch(UpdateCurrentRoute(RecurringExpenseEditScreen.route));
|
||||
});
|
||||
|
|
@ -108,7 +109,7 @@ class RecurringExpenseEditVM extends AbstractExpenseEditVM {
|
|||
..future.then((_) {
|
||||
store.dispatch(
|
||||
UpdateCurrentRoute(RecurringExpenseEditScreen.route));
|
||||
} as FutureOr<_> Function(Null)));
|
||||
} as FutureOr<Null> Function(Null)));
|
||||
completer.future.then((SelectableEntity expense) {
|
||||
store.dispatch(UpdateCurrentRoute(RecurringExpenseEditScreen.route));
|
||||
});
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@ class RecurringInvoiceEditDetailsVM extends EntityEditDetailsVM {
|
|||
..future.then((_) {
|
||||
store.dispatch(
|
||||
UpdateCurrentRoute(RecurringInvoiceEditScreen.route));
|
||||
} as FutureOr<_> Function(Null)));
|
||||
} as FutureOr<Null> Function(Null)));
|
||||
completer.future.then((SelectableEntity client) {
|
||||
store.dispatch(UpdateCurrentRoute(RecurringInvoiceEditScreen.route));
|
||||
});
|
||||
|
|
|
|||
|
|
@ -73,7 +73,8 @@ class AccountManagementVM {
|
|||
|
||||
final companyLength = state.companies.length;
|
||||
final deleteCompleter = Completer<Null>()
|
||||
..future.then((value) {
|
||||
..future
|
||||
.then((value) {
|
||||
final context = navigatorKey.currentContext;
|
||||
final state = store.state;
|
||||
if (companyLength == 1) {
|
||||
|
|
@ -94,11 +95,12 @@ class AccountManagementVM {
|
|||
if (Navigator.of(context!).canPop()) {
|
||||
Navigator.of(context).pop();
|
||||
}
|
||||
} as FutureOr<_> Function(Null));
|
||||
} as FutureOr<Null> Function(Null));
|
||||
store.dispatch(
|
||||
RefreshData(clearData: true, completer: refreshCompleter));
|
||||
}
|
||||
} as FutureOr<_> Function(Null)).catchError((Object error) {
|
||||
} as FutureOr<_> Function(Null))
|
||||
.catchError((Object error) {
|
||||
if (Navigator.of(navigatorKey.currentContext!).canPop()) {
|
||||
Navigator.of(navigatorKey.currentContext!).pop();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ class ClientPortalVM {
|
|||
completer.future.then((value) {
|
||||
showRefreshDataDialog(
|
||||
context: navigatorKey.currentContext!);
|
||||
} as FutureOr<_> Function(Null));
|
||||
} as FutureOr<Null> Function(Null));
|
||||
}
|
||||
|
||||
store.dispatch(SaveCompanyRequest(
|
||||
|
|
|
|||
|
|
@ -105,7 +105,7 @@ class InvoiceDesignVM {
|
|||
showErrorDialog(message: '$error');
|
||||
});
|
||||
});
|
||||
} as FutureOr<_> Function(Null));
|
||||
} as FutureOr<Null> Function(Null));
|
||||
store.dispatch(SaveCompanyRequest(
|
||||
completer: completer, company: settingsUIState.company));
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -96,7 +96,8 @@ class TemplatesAndRemindersVM {
|
|||
case EntityType.company:
|
||||
final completer = snackBarCompleter<Null>(
|
||||
context, AppLocalization.of(context)!.savedSettings);
|
||||
completer.future.then(((value) => callback()) as FutureOr<_> Function(Null));
|
||||
completer.future.then(
|
||||
((value) => callback()) as FutureOr<Null> Function(Null));
|
||||
store.dispatch(SaveCompanyRequest(
|
||||
completer: completer, company: settingsUIState.company));
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -109,8 +109,8 @@ class UserDetailsVM {
|
|||
passwordCallback(
|
||||
context: context,
|
||||
callback: (password, idToken) {
|
||||
final completer = snackBarCompleter<Null>(
|
||||
context, AppLocalization.of(context)!.disconnectedEmail);
|
||||
final completer = snackBarCompleter<Null>(context,
|
||||
AppLocalization.of(context)!.disconnectedEmail);
|
||||
store.dispatch(
|
||||
DisconnectOAuthMailerRequest(
|
||||
user: state.user,
|
||||
|
|
@ -128,8 +128,8 @@ class UserDetailsVM {
|
|||
passwordCallback(
|
||||
context: context,
|
||||
callback: (password, idToken) {
|
||||
final completer = snackBarCompleter<Null>(
|
||||
context, AppLocalization.of(context)!.disconnectedGmail);
|
||||
final completer = snackBarCompleter<Null>(context,
|
||||
AppLocalization.of(context)!.disconnectedGmail);
|
||||
store.dispatch(
|
||||
DisconnectOAuthMailerRequest(
|
||||
user: state.user,
|
||||
|
|
@ -178,7 +178,7 @@ class UserDetailsVM {
|
|||
AppLocalization.of(context)!.disconnectedGoogle);
|
||||
completer.future.then((value) {
|
||||
GoogleOAuth.disconnect();
|
||||
} as FutureOr<_> Function(Null));
|
||||
} as FutureOr<Null> Function(Null));
|
||||
store.dispatch(
|
||||
DisconnecOAuthUserRequest(
|
||||
user: state.user,
|
||||
|
|
@ -268,8 +268,8 @@ class UserDetailsVM {
|
|||
context: context,
|
||||
skipOAuth: true,
|
||||
callback: (password, idToken) {
|
||||
final completer = snackBarCompleter<Null>(
|
||||
context, AppLocalization.of(context)!.disconnectedApple);
|
||||
final completer = snackBarCompleter<Null>(context,
|
||||
AppLocalization.of(context)!.disconnectedApple);
|
||||
store.dispatch(
|
||||
DisconnecOAuthUserRequest(
|
||||
user: state.user,
|
||||
|
|
@ -338,7 +338,7 @@ class UserDetailsVM {
|
|||
}
|
||||
|
||||
appBuilder!.rebuild();
|
||||
} as FutureOr<_> Function(Null));
|
||||
} as FutureOr<Null> Function(Null));
|
||||
|
||||
confirmCallback(
|
||||
context: context,
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ class TaskEditDetailsVM {
|
|||
cancelCompleter: Completer<Null>()
|
||||
..future.then((_) {
|
||||
store.dispatch(UpdateCurrentRoute(TaskEditDetailsScreen.route));
|
||||
} as FutureOr<_> Function(Null)));
|
||||
} as FutureOr<Null> Function(Null)));
|
||||
completer.future.then((SelectableEntity client) {
|
||||
store.dispatch(UpdateCurrentRoute(TaskEditDetailsScreen.route));
|
||||
});
|
||||
|
|
@ -109,7 +109,7 @@ class TaskEditDetailsVM {
|
|||
cancelCompleter: Completer<Null>()
|
||||
..future.then((_) {
|
||||
store.dispatch(UpdateCurrentRoute(TaskEditDetailsScreen.route));
|
||||
} as FutureOr<_> Function(Null)));
|
||||
} as FutureOr<Null> Function(Null)));
|
||||
completer.future.then((SelectableEntity client) {
|
||||
store.dispatch(UpdateCurrentRoute(TaskEditDetailsScreen.route));
|
||||
});
|
||||
|
|
|
|||
|
|
@ -112,7 +112,7 @@ class TransactionEditVM {
|
|||
cancelCompleter: Completer<Null>()
|
||||
..future.then((_) {
|
||||
store.dispatch(UpdateCurrentRoute(TransactionEditScreen.route));
|
||||
} as FutureOr<_> Function(Null)));
|
||||
} as FutureOr<Null> Function(Null)));
|
||||
completer.future.then((SelectableEntity client) {
|
||||
store.dispatch(UpdateCurrentRoute(TransactionEditScreen.route));
|
||||
});
|
||||
|
|
|
|||
|
|
@ -943,8 +943,8 @@ class _MatchWithdrawalsState extends State<_MatchWithdrawals> {
|
|||
updateExpenseList();
|
||||
});
|
||||
},
|
||||
placeholder:
|
||||
localization!.searchExpenses.replaceFirst(':count ', ''),
|
||||
placeholder: localization!.searchExpenses
|
||||
.replaceFirst(':count ', ''),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
|
@ -1112,7 +1112,7 @@ class _MatchWithdrawalsState extends State<_MatchWithdrawals> {
|
|||
..future.then((_) {
|
||||
store.dispatch(UpdateCurrentRoute(
|
||||
TransactionScreen.route));
|
||||
} as FutureOr<_> Function(Null)));
|
||||
} as FutureOr<Null> Function(Null)));
|
||||
completer.future.then((SelectableEntity vendor) {
|
||||
store.dispatch(SaveTransactionSuccess(transaction
|
||||
.rebuild((b) => b..pendingVendorId = vendor.id)));
|
||||
|
|
@ -1196,7 +1196,7 @@ class _MatchWithdrawalsState extends State<_MatchWithdrawals> {
|
|||
..future.then((_) {
|
||||
store.dispatch(UpdateCurrentRoute(
|
||||
TransactionScreen.route));
|
||||
} as FutureOr<_> Function(Null)));
|
||||
} as FutureOr<Null> Function(Null)));
|
||||
completer.future.then((SelectableEntity category) {
|
||||
store.dispatch(SaveTransactionSuccess(
|
||||
transaction.rebuild(
|
||||
|
|
|
|||
Loading…
Reference in New Issue