Flutter 使用onWillPop时,“后退”按钮将被禁用,并在应用程序的第一次构建中发生

Flutter 使用onWillPop时,“后退”按钮将被禁用,并在应用程序的第一次构建中发生,flutter,dart,navigation,navigator,Flutter,Dart,Navigation,Navigator,当用户从手机上单击后退按钮时,我使用onWillPop将用户导航到我的主屏幕,以下是部分代码: @override Widget build(BuildContext context) { return WillPopScope( onWillPop: () { Navigator.of(context).pushReplacement( MaterialPageRoute( builder: (BuildCon

当用户从手机上单击后退按钮时,我使用
onWillPop
将用户导航到我的主屏幕,以下是部分代码:

@override
  Widget build(BuildContext context) {
    return WillPopScope(
      onWillPop: () {
        Navigator.of(context).pushReplacement(
          MaterialPageRoute(
            builder: (BuildContext context) {
              return HomeAssesmentScreen();
            },
          ),
        );
        return Future.value(true);
      },
      child: Scaffold(
然而,问题是我不能点击我的后退按钮。后退按钮被禁用,我无法将用户导航到其他屏幕。有没有办法重新激活“后退”按钮?

您可以使用Navigator.of(context).pushReplacement()方法。 此方法仅将页面堆栈上的当前页面替换为推送的MaterialPage()

如果需要后退按钮,请使用方法push()而不是pushReplacement()。

您可以使用Navigator.of(context).pushReplacement()方法。 此方法仅将页面堆栈上的当前页面替换为推送的MaterialPage()

如果需要后退按钮,请使用方法push()而不是pushReplacement() 可能您错过了异步/等待

Future<bool> _onWillPop() async {
    await Navigator.of(context).pushReplacement(
          MaterialPageRoute(
            builder: (BuildContext context) {
              return HomeAssesmentScreen();
            },
          ),
        );
    return true;
  }


Widget build(BuildContext context) {
    return WillPopScope(
        onWillPop: _onWillPop,
        child: Scaffold(
Future\u onWillPop()异步{
等待Navigator.of(context.pushReplacement)(
材料路线(
生成器:(BuildContext上下文){
返回HomeAssessmentScreen();
},
),
);
返回true;
}
小部件构建(构建上下文){
返回式示波器(
onWillPop:_onWillPop,
孩子:脚手架(
这应该可以: 可能您错过了异步/等待

Future<bool> _onWillPop() async {
    await Navigator.of(context).pushReplacement(
          MaterialPageRoute(
            builder: (BuildContext context) {
              return HomeAssesmentScreen();
            },
          ),
        );
    return true;
  }


Widget build(BuildContext context) {
    return WillPopScope(
        onWillPop: _onWillPop,
        child: Scaffold(
Future\u onWillPop()异步{
等待Navigator.of(context.pushReplacement)(
材料路线(
生成器:(BuildContext上下文){
返回HomeAssessmentScreen();
},
),
);
返回true;
}
小部件构建(构建上下文){
返回式示波器(
onWillPop:_onWillPop,
孩子:脚手架(

这应该行得通,我在上面的代码中没有发现任何应该禁用back button的问题back button是禁用的,因为您的堆栈中没有任何屏幕…当您按下屏幕时,您可以将其弹出,并且在弹出之前调用您的函数。Hi@jitsm555,Mohandsr…我不知道当时发生了什么,但当我从我的屏幕上一直单击back按钮时手机…之前它不会引导我进入屏幕…这只发生在我的应用程序的第一次构建中,在我关闭应用程序并重新打开应用程序后,我可以使用手机上的“后退”按钮这应该可以工作,我在上面的代码中没有发现任何问题,应该禁用“后退”按钮“后退”按钮是禁用的,因为堆栈中没有任何屏幕…当你按下一个屏幕,你可以弹出它,在弹出之前调用你的函数。嗨@jitsm555,mohandesR…我不知道当时发生了什么,但当我一直从手机上单击后退按钮时…它不会引导我进入屏幕…这只会发生在我的应用程序的第一个版本中,在我关闭应用程序并重新打开应用程序后,我可以使用back butt从我的手机上