如您所知,这是一项基本要求:在用户在自动完成字段中进行输入(通过输入新值或从下拉列表中选择现有值),然后按下“提交”按钮或“删除”按钮(例如,更新数据库)之后; TextFormField中的旧条目应自动清除以用于下一条目。如何在Flutter中以简单的编程方式(例如,像Autocomplete.TextFormField.clear)完成这一操作?我已经尝试了几种方法,但无法从外部函数访问/修改TextEditingController。提前感谢您的任何建议,请!
ux6nzvsh1#
我张贴这是为了谁读这篇文章的利益,有一个类似的要求。一个解决方案是flutter_typeahead小部件,可在以下位置找到:https://pub.dev/packages/flutter_typeahead它可以用来代替RawAutocomplete或Autocomplete小部件。
t8e9dugd2#
可以使用RawAutocomplete从Autocomplete外部访问文本编辑控制器。RawAutocomplete与Autocomplete类似,但它还提供textEditingController和focusNode属性。请注意,如果传入textEditingController,则还必须提供非空的focusNode和fieldViewBuilder。下面是一个从Autocomplete外部修改textEditingController的示例。
RawAutocomplete
textEditingController
focusNode
fieldViewBuilder
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(); };
2条答案
按热度按时间ux6nzvsh1#
我张贴这是为了谁读这篇文章的利益,有一个类似的要求。
一个解决方案是flutter_typeahead小部件,可在以下位置找到:https://pub.dev/packages/flutter_typeahead
它可以用来代替RawAutocomplete或Autocomplete小部件。
t8e9dugd2#
可以使用
RawAutocomplete
从Autocomplete外部访问文本编辑控制器。RawAutocomplete与Autocomplete类似,但它还提供textEditingController
和focusNode
属性。请注意,如果传入
textEditingController
,则还必须提供非空的focusNode
和fieldViewBuilder
。下面是一个从Autocomplete外部修改textEditingController的示例。