当用户在flutter应用程序中按下后退按钮时,我需要调用一个函数,在具有Java的android中,我可以使用以下代码来实现该功能
@Override
public void onBackPressed() {
//some function
}
颤动中有类似的东西吗?
答案 0 :(得分:4)
您正在寻找WillPopScope小部件。
用法:
@override
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: () async {
onBackPressed(); // Action to perform on back pressed
return false;
},
child: Scaffold(),
);
}
答案 1 :(得分:1)
编辑:如@Augustin所指出的,在弹出第二个屏幕并且仅当按下后退按钮时,以下方式适用于所有情况。
简而言之-您可以在 Navigator.push()
上使用 .then()为什么?以及如何?
主屏幕-从您正在导航的屏幕
第二屏幕-到您正在导航的屏幕
主屏幕上的Navigator返回一个将来,当页面弹出时,即Navigator.pop()在第二个屏幕上运行时,该将来会得到“ 完成”
因此,当您的页面(第二个屏幕)弹出时,Navigator.push()(主屏幕)上的.then()方法将运行。
类似这样的东西- 主页画面
floatingActionButton: FloatingActionButton(
onPressed: () {
Navigator.of(context).push(MaterialPageRoute(
builder: (ctx) => SecondPage()
)).then(
(context) {
isAppleRed();
}
);
},
tooltip: 'Increment',
child: Icon(Icons.add),
),
isAppleRed()-只是为了使事情更清晰:p
bool isAppleRed() {
print('Yes!');
return true;
}
一旦按下SECOND SCREEN上的后退按钮,.then块内的代码就会运行。
希望对您有任何帮助:)