Merge pull request #792 from cake-tech/add-keyboard-control

Add keyboard control for desktop
This commit is contained in:
Omar Hatem 2023-02-20 14:48:22 +02:00 committed by GitHub
commit 17aa72e460
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 25 additions and 13 deletions

View file

@ -66,6 +66,7 @@ class IoniaCreateAccountPage extends BasePage {
validator: EmailValidator(), validator: EmailValidator(),
keyboardType: TextInputType.emailAddress, keyboardType: TextInputType.emailAddress,
controller: _emailController, controller: _emailController,
onSubmit: (_) => _createAccount(),
), ),
), ),
bottomSectionPadding: EdgeInsets.symmetric(vertical: 36, horizontal: 24), bottomSectionPadding: EdgeInsets.symmetric(vertical: 36, horizontal: 24),
@ -77,12 +78,7 @@ class IoniaCreateAccountPage extends BasePage {
Observer( Observer(
builder: (_) => LoadingPrimaryButton( builder: (_) => LoadingPrimaryButton(
text: S.of(context).create_account, text: S.of(context).create_account,
onPressed: () async { onPressed: _createAccount,
if (_formKey.currentState != null && !_formKey.currentState!.validate()) {
return;
}
await _authViewModel.createUser(_emailController.text);
},
isLoading: _authViewModel.createUserState is IoniaCreateStateLoading, isLoading: _authViewModel.createUserState is IoniaCreateStateLoading,
color: Theme.of(context).accentTextTheme!.bodyText1!.color!, color: Theme.of(context).accentTextTheme!.bodyText1!.color!,
textColor: Colors.white, textColor: Colors.white,
@ -151,4 +147,11 @@ class IoniaCreateAccountPage extends BasePage {
Routes.ioniaVerifyIoniaOtpPage, Routes.ioniaVerifyIoniaOtpPage,
arguments: [authViewModel.email, false], arguments: [authViewModel.email, false],
); );
void _createAccount() async {
if (_formKey.currentState != null && !_formKey.currentState!.validate()) {
return;
}
await _authViewModel.createUser(_emailController.text);
}
} }

View file

@ -57,6 +57,7 @@ class IoniaLoginPage extends BasePage {
keyboardType: TextInputType.emailAddress, keyboardType: TextInputType.emailAddress,
validator: EmailValidator(), validator: EmailValidator(),
controller: _emailController, controller: _emailController,
onSubmit: (text) => _login(),
), ),
), ),
bottomSectionPadding: EdgeInsets.symmetric(vertical: 36, horizontal: 24), bottomSectionPadding: EdgeInsets.symmetric(vertical: 36, horizontal: 24),
@ -68,12 +69,7 @@ class IoniaLoginPage extends BasePage {
Observer( Observer(
builder: (_) => LoadingPrimaryButton( builder: (_) => LoadingPrimaryButton(
text: S.of(context).login, text: S.of(context).login,
onPressed: () async { onPressed: _login,
if (_formKey.currentState != null && !_formKey.currentState!.validate()) {
return;
}
await _authViewModel.signIn(_emailController.text);
},
isLoading: _authViewModel.signInState is IoniaCreateStateLoading, isLoading: _authViewModel.signInState is IoniaCreateStateLoading,
color: Theme.of(context).accentTextTheme!.bodyText1!.color!, color: Theme.of(context).accentTextTheme!.bodyText1!.color!,
textColor: Colors.white, textColor: Colors.white,
@ -106,4 +102,11 @@ class IoniaLoginPage extends BasePage {
Routes.ioniaVerifyIoniaOtpPage, Routes.ioniaVerifyIoniaOtpPage,
arguments: [authViewModel.email, true], arguments: [authViewModel.email, true],
); );
void _login() async {
if (_formKey.currentState != null && !_formKey.currentState!.validate()) {
return;
}
await _authViewModel.signIn(_emailController.text);
}
} }

View file

@ -82,6 +82,7 @@ class IoniaVerifyIoniaOtp extends BasePage {
keyboardType: TextInputType.numberWithOptions(signed: false, decimal: true), keyboardType: TextInputType.numberWithOptions(signed: false, decimal: true),
focusNode: _codeFocus, focusNode: _codeFocus,
controller: _codeController, controller: _codeController,
onSubmit: (_) => _verify(),
), ),
SizedBox(height: 14), SizedBox(height: 14),
Text( Text(
@ -116,7 +117,7 @@ class IoniaVerifyIoniaOtp extends BasePage {
Observer( Observer(
builder: (_) => LoadingPrimaryButton( builder: (_) => LoadingPrimaryButton(
text: S.of(context).continue_text, text: S.of(context).continue_text,
onPressed: () async => await _authViewModel.verifyEmail(_codeController.text), onPressed: _verify,
isDisabled: _authViewModel.otpState is IoniaOtpSendDisabled, isDisabled: _authViewModel.otpState is IoniaOtpSendDisabled,
isLoading: _authViewModel.otpState is IoniaOtpValidating, isLoading: _authViewModel.otpState is IoniaOtpValidating,
color: Theme.of(context).accentTextTheme!.bodyText1!.color!, color: Theme.of(context).accentTextTheme!.bodyText1!.color!,
@ -148,4 +149,6 @@ class IoniaVerifyIoniaOtp extends BasePage {
void _onOtpSuccessful(BuildContext context) => void _onOtpSuccessful(BuildContext context) =>
Navigator.of(context) Navigator.of(context)
.pushNamedAndRemoveUntil(Routes.ioniaManageCardsPage, (route) => route.isFirst); .pushNamedAndRemoveUntil(Routes.ioniaManageCardsPage, (route) => route.isFirst);
void _verify() async => await _authViewModel.verifyEmail(_codeController.text);
} }

View file

@ -27,6 +27,7 @@ class BaseTextFormField extends StatelessWidget {
this.maxLength, this.maxLength,
this.focusNode, this.focusNode,
this.initialValue, this.initialValue,
this.onSubmit,
this.borderWidth = 1.0}); this.borderWidth = 1.0});
final TextEditingController? controller; final TextEditingController? controller;
@ -54,6 +55,7 @@ class BaseTextFormField extends StatelessWidget {
final bool? enableInteractiveSelection; final bool? enableInteractiveSelection;
final String? initialValue; final String? initialValue;
final double borderWidth; final double borderWidth;
final void Function(String)? onSubmit;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -71,6 +73,7 @@ class BaseTextFormField extends StatelessWidget {
inputFormatters: inputFormatters, inputFormatters: inputFormatters,
enabled: enabled, enabled: enabled,
maxLength: maxLength, maxLength: maxLength,
onFieldSubmitted: onSubmit,
style: textStyle ?? style: textStyle ??
TextStyle( TextStyle(
fontSize: 16.0, fontSize: 16.0,