onListen method
Implementation
@override
void onListen(
BuildContext context, IPhoneVerificationViewModel viewModel) async {
super.onListen(context, viewModel);
switch (viewModel.state) {
case PhoneVerificationState.requestingResendingCode:
case PhoneVerificationState.verifyingCode:
case PhoneVerificationState.verifiedCode:
case PhoneVerificationState.waitingCodeReceive:
if (_codeInputFocus.hasFocus) {
_codeInputFocus.unfocus();
}
if (PhoneVerificationState.verifiedCode == viewModel.state) {
this.onVerified(viewModel.phoneNumber.phoneNumber!);
}
break;
case PhoneVerificationState.requestingSendCode:
case PhoneVerificationState.errorRequestingSendCode:
if (_phoneNumberInputFocus.hasFocus) {
_phoneNumberInputFocus.unfocus();
}
break;
case PhoneVerificationState.inputCode:
case PhoneVerificationState.readyToVerify:
case PhoneVerificationState.timeoutWaitingCodeReceive:
case PhoneVerificationState.errorVerifyingCodeExpired:
case PhoneVerificationState.errorVerifyingCodeInvalid:
if (viewModel.state ==
PhoneVerificationState.errorVerifyingCodeInvalid ||
viewModel.state ==
PhoneVerificationState.errorVerifyingCodeExpired) {
_inputCodeController.text = "";
}
if (!_codeInputFocus.hasFocus) {
// to show keyboard
// TODO need to improve.
await Future.delayed(Duration(seconds: 1));
_codeInputFocus.requestFocus();
dev.log("_codeInputFocus.requestFocus()",
name: 'PhoneVerificationPage');
}
break;
case PhoneVerificationState.inputPhoneNumber:
case PhoneVerificationState.readyToSendCode:
if (!_phoneNumberInputFocus.hasFocus) {
_phoneNumberInputFocus.requestFocus();
}
break;
}
}