flutter ios原生自帶中文輸入法TextField無法正常輸入中文問題解決

問題描述:

  • 用ios原生自帶中文輸入法,輸入時(shí),中文無法正常輸入,輸入時(shí)會重復(fù)好多次,并且顯示是中文的拼音字母,用中文全鍵盤效果更明顯;
  • 英文輸入法不會有這種問題;
  • 其它第三方輸入法,如百度輸入法沒有這種問題;
  • 安卓沒發(fā)現(xiàn)這種問題;

驗(yàn)證代碼:

            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自帶中文輸入法,在輸入拼音字母時(shí),字母會先顯示在輸入框,輸入一個(gè)字母,就會回調(diào)一次onChanged方法,這時(shí)調(diào)用setState刷新,就會把輸入的字母顯示有輸入框上,這時(shí)輸入的就不是中文,而是中文的拼音字母了。
  • 第三方輸入法,是把整個(gè)中文輸入完成后,再顯示在輸入框上,也就是輸入一個(gè)完整中文后才回調(diào)onChanged方法;

解決方式:

方式1:

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

方式2:

參考解決Flutter拼音輸入過程回調(diào)問題

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容