flutter 如何从外部清除自动完成小部件中的TextFormField?

6yoyoihd  于 2022-11-17  发布在  Flutter
关注(0)|答案(2)|浏览(260)

如您所知,这是一项基本要求:在用户在自动完成字段中进行输入(通过输入新值或从下拉列表中选择现有值),然后按下“提交”按钮或“删除”按钮(例如,更新数据库)之后; TextFormField中的旧条目应自动清除以用于下一条目。
如何在Flutter中以简单的编程方式(例如,像Autocomplete.TextFormField.clear)完成这一操作?
我已经尝试了几种方法,但无法从外部函数访问/修改TextEditingController。
提前感谢您的任何建议,请!

ux6nzvsh

ux6nzvsh1#

我张贴这是为了谁读这篇文章的利益,有一个类似的要求。
一个解决方案是flutter_typeahead小部件,可在以下位置找到:https://pub.dev/packages/flutter_typeahead
它可以用来代替RawAutocomplete或Autocomplete小部件。

t8e9dugd

t8e9dugd2#

可以使用RawAutocomplete从Autocomplete外部访问文本编辑控制器。RawAutocomplete与Autocomplete类似,但它还提供textEditingControllerfocusNode属性。
请注意,如果传入textEditingController,则还必须提供非空的focusNodefieldViewBuilder
下面是一个从Autocomplete外部修改textEditingController的示例。

final _controller = TextEditingController();
final _focusNode = FocusNode();

Widget build(BuildContext context) {
    return RawAutocomplete<String>(
        textEditingController: _controller,
        focusNode: _focusNode,
        fieldViewBuilder: (context, textEditingController, focusNode, onFieldSubmitted) =>
                  TextFormField(controller: _controller),
...
)};

//Then in your outside function
setState(() {
    _controller.clear();
};

相关问题