我有一个带有搜索按钮的 appBar,按下该按钮时会返回一个扩展 SearchDelegate 的自定义 DataSearch 类。
当我关闭搜索页面(从设备的返回按钮或小部件)时,我需要首先执行某个功能。但是,该功能仅从以下小部件执行,而不是在按下设备的“BACK”按钮时执行。
(下图)
这是我的代码:
class DataSearch extends SearchDelegate<String> {
@override
List<Widget> buildActions(BuildContext context) {
// ...
}
@override
Widget buildLeading(BuildContext context) {
return IconButton(
icon: Icon(Icons.arrow_back),
onPressed: () {
function_I_need_to_execute();
close(context, null);
},
);
}
@override
Widget buildResults(BuildContext context) {
// ...
}
@override
Widget buildSuggestions(BuildContext context) {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试过这个,但没有改变:
@override
void close(BuildContext context, String result) {
super.close(context, result);
function_I_need_to_execute();
}
Run Code Online (Sandbox Code Playgroud)
我正在考虑使用WillPopScope小部件,但我不确定它适合委托中的位置。
图像:
似乎使用 close 方法这是不可能的。
但是,您可以使用 showSearch 上的 .then 方法来执行此操作,因为 showSearch 是 Future。
then方法注册在该future 完成时要调用的回调。
showSearch(context: context, delegate: SearchDelegate()).then((value) async {
await doSomething();
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
669 次 |
| 最近记录: |