颤振如何在按下后执行功能

时间:2020-01-15 14:19:25

标签: flutter

当用户在flutter应用程序中按下后退按钮时,我需要调用一个函数,在具有Java的android中,我可以使用以下代码来实现该功能

@Override
public void onBackPressed() {
//some function
}

颤动中有类似的东西吗?

2 个答案:

答案 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块内的代码就会运行。

希望对您有任何帮助:)