问题场景: 在登录界面获取验证码短信时点击 键盘上方点击快捷输入短信验证码 会输入两次验证码.
解决方案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 的问题导致的.