我遵循此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
方法,有没有办法使它像普通的后退按钮一样停用?
答案 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;
},