【问题标题】:Flutter -> Persistent Bottom Navigation Bar How to get outFlutter -> Persistent 底部导航栏如何退出
【发布时间】:2021-04-06 00:19:51
【问题描述】:

我正在寻找一种摆脱持久底部导航栏的方法。一旦我们进入它,我几乎每一次都试图摆脱它。但它不适用于其中任何一个。只是一个简单的后退按钮,整个事情就消失了,离开了我称之为底部导航栏的地方。 请帮我解决这个问题。

问候。

【问题讨论】:

  • 您能分享一些上下文吗?你在说什么persistent bottom navigation bar?你是自己实现的还是使用了包?
  • 一旦我从登录进入到当前导航栏,然后尝试几乎所有导航路线通过点击返回登录,但我无法。碰巧当我从设备按下后退按钮时,它会关闭整个导航栏并返回到导航栏调用的登录屏幕。我正在寻找的是关闭/处置整个导航栏并返回的解决方案调用它的登录,但在单击时我可以添加一些注销逻辑,如屏障令牌、谷歌地图重定向或其他东西..
  • 好的,我明白了。 :) 你使用的是哪个持久的底部导航栏?像这样的东西:medium.com/coding-with-flutter/… 还是你使用了一个包?为了获得帮助,您需要分享一些上下文/代码。
  • 是的,你有什么解决办法吗?

标签: android ios flutter dart mobile


【解决方案1】:

您可以通过存储根页面buildContext来获得预期的结果。这允许您稍后基于该context 进行导航。

可以通过以下方式存储context

import 'package:flutter/cupertino.dart';

class ContextKeeper {
  static BuildContext buildContext;

  void init(BuildContext context) {
    buildContext = context;
  }
}

现在在包含navigation bar 的根页面中调用init 函数:

@override
void initState() {
  super.initState();
  ContextKeeper().init(context);
}

您现在可以根据保存的context 调用Navigator

Navigator.pushNamedAndRemoveUntil(
                ContextKeeper.buildContext, 'screen_without_your_nav_bar', (_) => false);

我在文章的comment 中找到了该解决方案。

【讨论】:

    【解决方案2】:

    使用这个

    Navigator.of(context, rootNavigator: true).pushAndRemoveUntil(
              MaterialPageRoute(
                builder: (BuildContext context) {
                  return LoginScreen();
                },
              ),
              (_) => false,
            ));
    

    我从issue here 找到了这个解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-07
      • 1970-01-01
      • 2020-11-13
      • 2023-02-25
      • 2020-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多