首页 > 解决方案 > 颤振清除搜索文本保持搜索

问题描述

我有一个带有 _searchController 的文本字段和一个用于清除 _searchController 的单独 IconButton: 在此处输入图像描述

_placesList 是搜索结果。

我还有一个方法 _onSearchChanged,它是 _searchController 的侦听器: 在此处输入图像描述

如果搜索控制器不为空,_onSearchChanged 方法会调用另一个进行 API 调用的方法: 在此处输入图像描述

当按下取消图标按钮时,我发现(通过调试)在清除搜索控制器文本之前触发了搜索控制器侦听器,因此进行了 API 调用,然后实际清除了搜索控制器文本。

这会在屏幕上留下不需要的搜索结果列表。

第二次点击取消图标按钮会导致清除搜索结果的预期结果。但显然我不希望用户必须按两次取消图标按钮。

我想要取消图标按钮来清除搜索文本和搜索结果。

标签: fluttergoogle-mapssearchtexteditingcontroller

解决方案


我相信您在这里缺少 setState 。只需_searchController.clear();像 tihs 一样将其包裹起来:

setState( () {_searchController.clear();} );

否则颤振不会用新数据重建。这是人们忘记的常见错误。


推荐阅读