【问题标题】:Navigator PushReplacementName gives back button in flutterNavigator PushReplacementName 在颤动中给出返回按钮
【发布时间】:2020-02-20 12:13:54
【问题描述】:

这很奇怪,但下面的代码对我不起作用。使用以下代码时,我在主屏幕上看到一个返回箭头。

下面的第一行用于关闭对话框。第二个是转到主屏幕。

 Navigator.of(context, rootNavigator: true).pop();
 Navigator.of(context).pushReplacementNamed(HomeScreen.id);

这是我第一次面对pushReplacementNamed 的这种情况。这是怎么回事?

【问题讨论】:

    标签: android flutter navigation runtime-error back


    【解决方案1】:

    这可能是因为堆栈中有另一个屏幕。当您调用pushReplacementNamed 时,它不会用您提供的堆栈替换整个堆栈。可以试试下面的代码吗?

    // true 不基于上述查询条件 Navigator.of(context).pushNamedAndRemoveUntil(HomeScreen.id, (Route<dynamic> route) => true);

    // 错误的作品 Navigator.of(context).pushNamedAndRemoveUntil(HomeScreen.id, (Route&lt;dynamic&gt; route) =&gt; false);

    【讨论】:

      【解决方案2】:

      这不会给出所需的结果,因为您甚至在调用另一个 Navigator 类之前已经将上下文弹出。我尝试了函数Navigator.of(context).pushNamedAndRemoveUntil(),但仍然使用屏幕1上的后退按钮两次将我的HomeScreen推入堆栈。因此,我终于通过内置函数Navigator.of(context).popUntil()得到了这个。您可以运行这个 dartpad 代码https://dartpad.dev/a10ed43452736b5c6b3d1abe6a7eda45 来查看想要的效果或查看下面的代码。以下是 gist 中的部分代码:

      ...
      class ThirdPage extends StatelessWidget{
        static const routeName = '/third';
        @override
        Widget build(BuildContext context){
          void _nextPage(){
            //Logic here - ***************************
         Navigator.of(context).popUntil((Route<dynamic> route) => route.isFirst);
        }
          return Scaffold(
            appBar: AppBar(
              title: Text('Third Page'),
            ),
            body: Center(
              child: Text('Third Page'),
            ),
            floatingActionButton: FloatingActionButton(
              onPressed: _nextPage,
              child: Icon(Icons.add),
            ),
          );
        }
      }
      

      愉快的编码 D:)

      【讨论】:

      • 当用户登录时,我的屏幕与第三屏幕相同,它在主屏幕之前。所以在这种情况下,这将有什么帮助。我想完全替换之前访问过的堆栈。
      猜你喜欢
      • 2021-12-24
      • 2022-01-01
      • 2019-10-17
      • 2019-04-08
      • 2021-05-10
      • 1970-01-01
      • 2019-11-10
      • 2011-05-17
      • 2019-11-24
      相关资源
      最近更新 更多