Flutter 如何使willPopScope返回应用程序之外,颤振

Flutter 如何使willPopScope返回应用程序之外,颤振,flutter,searchbar,Flutter,Searchbar,我将此文本字段用作搜索,除了用户单击“后退”按钮,并且由于onWillPopScope退出应用程序外,其他一切都很正常。如何修复此问题以返回菜单 这是我的文本字段 这就是我搜索时发生的情况 TextEditingController searchController=新的TextEditingController() StreamSubscription\u RecipeDedSub 列出所有配方=[] 列出searchRecipes=[] 布尔乌正在研究 食谱 var recipeRef

我将此文本字段用作搜索,除了用户单击“后退”按钮,并且由于
onWillPopScope
退出应用程序外,其他一切都很正常。如何修复此问题以返回菜单

这是我的文本字段

这就是我搜索时发生的情况


TextEditingController searchController=新的TextEditingController()

StreamSubscription\u RecipeDedSub

列出所有配方=[]

列出searchRecipes=[]

布尔乌正在研究

食谱

var recipeRef=FirebaseDatabase.instance.reference();
void initState(){
super.initState();
_RecipeEdedSub=recipeRef.child('recipes').onChildAdded.listen(recipesEvent);
}
DatabaseReference getRecipeRef(){
recipeRef=recipeRef.root();
返回收件人f;
}
无效配方事件(事件){
//从firebase收听
Recipes Recipes=新Recipes.fromSnapShot(event.snapshot);
设置状态(){
所有配方。添加(配方);
});
}
Future\u onBackPressed()异步{
如果(_isSearching==true){
设置状态(){
搜索配方(“”);
_isSearching=假;
所有配方。添加(配方);
}); 
返回false;
}
否则{
返回true;
}
}
我的搜索方法:

void searchRecipe(字符串searchVal){
_isSearching=true;
searchRecipes.clear();
设置状态(){
allRecipes=搜索配方;
});
字符串名称、关于、图像、ingred、说明;
Query Query=recipeRef.child(“recipes”).orderByChild(“name”).equalTo(searchVal.trim());
query.once().then((快照){
snapshot.value.forEach((键,值){
名称=值[“名称”].toString().trim();
image=值[“image”].toString().trim();
about=值[“about”].toString().trim();
指令=值[“指令”].toString().trim();
ingred=值[“ingred”].toString().trim();
添加(新配方(键、名称、ingred、说明、关于、图像));
});
});

任何帮助都将不胜感激!谢谢!

将您的
脚手架
包装在
Willposcope
小部件中。将
\u onBackPressed()
传递到小部件的
onWillPop
参数

更新

Future<bool> _onBackPressed() async {
    if(_isSearching == true){
      setState(() {
        _isSearching = false;
        // maybe clear search text, update recipe list, etc.
      });
      return false;
   }else {
     return true; 
   } 
}
Future\u onBackPressed()异步{
如果(_isSearching==true){
设置状态(){
_isSearching=假;
//可能清除搜索文本、更新配方列表等。
});
返回false;
}否则{
返回true;
} 
}

I allready这样做了,但不起作用,它只是卡住了,在返回false之前什么都不做,调用搜索文本,设置_isSearching=false,并将与视图相关的任何变量设置回非搜索值(即配方列表)。很抱歉,我没有得到它,我应该在哪里执行此操作?我应该在onBack方法中执行此操作吗?应该在WillPopScope小部件中调用onWillPop()时调用此方法。