2021-12-07 Flutter iOS快捷键入短信重复2次

2021-12-07  本文已影响0人  耀木i

问题场景: 在登录界面获取验证码短信时点击 键盘上方点击快捷输入短信验证码 会输入两次验证码.

解决方案1:
限制输入框输入的长度 ,短信验证几位就限制成几位.
快捷有效.但如果后期更换短信模板位数变化会有影响.
maxLength:[验证码位数]

解决方案2:
判断重复的验证码
定义 TextEditingController
TextEditingController _controller = TextEditingController();

TextField(
  controller: _controller,
  onChanged: (value) {
    if ('$_authCode$_authCode' == value) {       //键入重复的情况
        setState(() {
            _controller.value = TextEditingValue(
            text: _authCode,//不赋值新的 用旧的;
            selection: TextSelection.fromPosition(
                TextPosition(
                    affinity: TextAffinity.downstream,
                    offset: _authCode.length),
                ),//  此处是将光标移动到最后,
            );
        });
    } else {
        //第一次输入验证码
        setState(() {
            _controller.value = TextEditingValue(
            text: value,
            selection: TextSelection.fromPosition(
                TextPosition(
                    affinity: TextAffinity.downstream,
                    offset: value.length),
                ),//  此处是将光标移动到最后,
            );
            _authCode = value;
        });
      }
    },
  ),

造成原因: ??? 网上说出发了原生 UITextFieldTextDidChangeNotification 的问题导致的.

上一篇下一篇

猜你喜欢

热点阅读