【发布时间】:2020-05-02 07:57:18
【问题描述】:
当用户在我的flutter应用程序中按下后退按钮时我需要调用一个函数,在带有java的android中我可以使用以下代码来实现它
@Override
public void onBackPressed() {
//some function
}
flutter中有类似的东西吗?
【问题讨论】:
标签: flutter
当用户在我的flutter应用程序中按下后退按钮时我需要调用一个函数,在带有java的android中我可以使用以下代码来实现它
@Override
public void onBackPressed() {
//some function
}
flutter中有类似的东西吗?
【问题讨论】:
标签: flutter
您正在寻找WillPopScope 小部件。
用法:
@override
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: () async {
onBackPressed(); // Action to perform on back pressed
return false;
},
child: Scaffold(),
);
}
【讨论】:
编辑:正如@Augustin 所指出的,当第二个屏幕被弹出并且不仅仅在按下后退按钮时,以下方式适用于所有情况。
简而言之 - 您可以在 Navigator.push()
上使用 .then()为什么?以及如何?
主屏幕 - 从您正在导航的屏幕
第二屏幕 - 到您正在导航的屏幕
主屏幕上的导航器返回一个未来,当页面被弹出时,即当 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 块内的代码就会运行。
希望对你有任何帮助:)
【讨论】:
AppBar 按钮进行导航时,它也会运行。这与 android 硬件后退按钮没有严格的关系。