flutter - 颤振清除搜索文本保持搜索
问题描述
我有一个带有 _searchController 的文本字段和一个用于清除 _searchController 的单独 IconButton:
_placesList 是搜索结果。
我还有一个方法 _onSearchChanged,它是 _searchController 的侦听器:
如果搜索控制器不为空,_onSearchChanged 方法会调用另一个进行 API 调用的方法:
当按下取消图标按钮时,我发现(通过调试)在清除搜索控制器文本之前触发了搜索控制器侦听器,因此进行了 API 调用,然后实际清除了搜索控制器文本。
这会在屏幕上留下不需要的搜索结果列表。
第二次点击取消图标按钮会导致清除搜索结果的预期结果。但显然我不希望用户必须按两次取消图标按钮。
我想要取消图标按钮来清除搜索文本和搜索结果。
解决方案
我相信您在这里缺少 setState 。只需_searchController.clear();
像 tihs 一样将其包裹起来:
setState( () {_searchController.clear();} );
否则颤振不会用新数据重建。这是人们忘记的常见错误。
推荐阅读
- c# - 如何动态添加日期从星期一开始的星期名称作为表头?
- haskell - Haskell 映射直到满足第一个条件
- x509certificate - X509 证书 KVStore 的主键
- python - 美丽的汤,两个列表的交集(一个带有一对字符串)
- sharepoint-2013 - 网站集之间搜索结果的隐私
- php - 将 startDatetime 和 endDatetime 与 DB 表的 startDatetime 和 endDatetime 进行比较
- python - 如何使用 Python 读取多个文件夹中的文件
- apache-camel - Camel:从另一个路由调用一个路由并同步返回响应
- c++ - 无限循环中的返回值
- java - POJO for rest获取调用以在java中返回嵌套的复杂json