Flutter 实时搜索 键盘问题解决方案

653 阅读1分钟

问题描述:如下写法会导致IOS拼音输入发输入汉字时,点击选中汉字时前面的拼音不会被替代成汉字,例如输拼音ceshi选中'测试'汉字时,输入框里的文本是ceshi测试,不符合要求。

SearchBar(

    text: _keyword ,

    placeholder: "请输入",

    showCleanButton: true,

    onCleanEvent: () {

        _keyword = '';

        //请求
        setState(){}
    },

    onChanged: (text) {

        _keyword=text;

        //请求
        setState(){}
     }

)

解决方案:

// 1.创建TextEditingController
TextEditingController textEditingController = TextEditingController();

@override

void initState() {

    super.initState();

    //监听文本变化

    textEditingController.addListener(() {

        //发起请求

        _keyword = textEditingController.text;

    });

}

@override

void dispose() {

    //释放

    textEditingController.dispose();

    super.dispose();

}

//2. SearchBar设置textEditingController

SearchBar(

    textEditingController: textEditingController,

    placeholder: "请输入",

    showCleanButton: true,

    onCleanEvent: () {

        textEditingController.text = '';

    },

    onEndEditing: (text) {

    }

    ),