WillPopScope:使Android后退按钮弹出实际视图

时间:2019-09-01 11:57:40

标签: flutter dart navigation

我遵循此clean navigation in flutter来实现实际导航,因为我不得不用

做更多的事情
MaterialApp(
   home: Home(), 
   routes:{...}
) 

不会很好的解决。 因此,在我的材质应用中,我只定义了房屋,例如:

MaterialApp(home: Home()) 

现在是我的Home的构建者:

return WillPopScope(
                  onWillPop: () async {
                    return false;
                  },
                  child: Navigator(onGenerateRoute: Router.generateRoute));
            }

Router.generateRoute来自哪里:

class Router {
  static Route<dynamic> generateRoute(RouteSettings settings) {
    switch (settings.name) {
      case '/':
        return MaterialPageRoute(
            builder: (_) => Splash());
      case ...
  }
}

通过这种方式,由于仅关闭了应用程序,因此取消激活了Android后退按钮。我的问题是:通过这种WillPopScope方法,有没有办法使它像普通的后退按钮一样停用?

1 个答案:

答案 0 :(得分:1)

我不是100%地确定您要实现的目标,但这就是我在其中一个应用程序中使用的功能,目的是将应用程序发送到后台而不是关闭应用程序。如果无法弹出路线,则该应用程序将被发送到后台,否则它将弹出路线。

WillPopScope(
      onWillPop: () async {
        if (!Keys.navigatorKey.currentState.canPop()) {
          // Only move to background when there are
          // no routes to pop
          MoveToBackground.moveTaskToBack();
          return false;
        }
        // There is a route, so we pop it
        return true;
      },