美文网首页FlutterFlutterFlutter
flutter ios原生自带中文输入法TextField无法正

flutter ios原生自带中文输入法TextField无法正

作者: HawkFlying | 来源:发表于2021-03-11 15:18 被阅读0次

    问题描述:

    • 用ios原生自带中文输入法,输入时,中文无法正常输入,输入时会重复好多次,并且显示是中文的拼音字母,用中文全键盘效果更明显;
    • 英文输入法不会有这种问题;
    • 其它第三方输入法,如百度输入法没有这种问题;
    • 安卓没发现这种问题;

    验证代码:

                String value;
    
                 TextField(
                    controller: TextEditingController.fromValue(TextEditingValue(
                        text: value ?? '',
                        selection: TextSelection.fromPosition(TextPosition(
                            affinity: TextAffinity.downstream,
                            offset: (value ?? '').length)))),
                    onChanged: (v) {
                      setState(() {
                        value = v;
                      });
                    },
                  ),
    

    原因分析:

    • ios自带中文输入法,在输入拼音字母时,字母会先显示在输入框,输入一个字母,就会回调一次onChanged方法,这时调用setState刷新,就会把输入的字母显示有输入框上,这时输入的就不是中文,而是中文的拼音字母了。
    • 第三方输入法,是把整个中文输入完成后,再显示在输入框上,也就是输入一个完整中文后才回调onChanged方法;

    解决方式:

    方式1:

    TextField的onChanged方法里不要用setState刷新;

    方式2:

    参考解决Flutter拼音输入过程回调问题

    相关文章

      网友评论

        本文标题:flutter ios原生自带中文输入法TextField无法正

        本文链接:https://www.haomeiwen.com/subject/rcxoqltx.html