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拼音輸入過程回調問題

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容