flutter Textfield在iOS设备上输入中文时的问题

业务问题日常记录
需求:在输入文字时,实时调接口搜索对应内容
问题:输入中文时,在输入字母拼音时onChanged:方法在iOS上会实时回调,拼音也会被搜索。如果输入过快,由于接口异步回调导致内容展示异常。
解决思路:
1,在请求时取消上次的请求,只进行最后一次搜索。参考CancelToken 配合dio使用。需进行各种临界判断。
2,后端接口返回数据时带上搜索的关键字,比对当前输入框内容和关键字,不匹配则舍弃不显示。保证显示最后一次搜索内容。
3,输入中文时限制字母拼音在输入框内的显示,待选择中文后再显示,此时回调onChanged:方法保证搜索一次,参考https://juejin.cn/post/6844904096407765005。有点麻烦。
4,使用dart自带属性isComposingRangeValid。方法:

onChanged: (value) {
    if (_textFieldController.value.isComposingRangeValid) {
         return;
     }
     doSearch(str);
 }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容