flutter ios原生自带中文输入法TextField无法正常输入中文问题解决

问题描述:

  • 用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无法正常输入中文问题解决)