【问题标题】:How to go back to Landing Screen in this scenario described in description?在描述中描述的这种情况下如何返回登陆屏幕?
【发布时间】:2021-08-14 21:11:09
【问题描述】:

我是 Flutter 的新手,我有一个登录屏幕,在单击登录按钮时,我使用 pushReplacement 推送了一条路线(登录屏幕)(因为我不想让用户点击返回按钮并再次进入登录屏幕) ,我的登陆页面由bottomNavigationBar组成,我希望我的bottomNavigtionBar一直存在于应用程序中,所以我决定使用persistent_bottom_nav_bar libaray。 我的导航栏项目是(主页、搜索和设置),在我的 home navBarItem 子小部件上,我有一个名为“goToNextScreen”的按钮,当我按下“goToNextScreen”按钮时,我按下了一条新路线,现在在这个下一个屏幕我只想在 appbar 上有一个后退按钮,这样我就可以再次回到我的主页 navbarItem 子小部件(登陆屏幕)。

【问题讨论】:

    标签: flutter flutter-bottomnavigation


    【解决方案1】:

    要向 AppBar 添加后退按钮,您必须定义前导属性

    一个小例子

    AppBar(
            backgroundColor: Colors.transparent,
            elevation: 0,
            bottomOpacity: 0,
            shadowColor: Colors.transparent,
            leading: IconButton(
                icon: SvgPicture.asset(
                    "assets/icons/arrow_back.svg",
                    color: AppColors.currentAppTheme.boxBackgroundTextColor,
                ),
                onPressed: () {
                    Navigator.pop(context);
                },
            ),
        );
    

    【讨论】:

    • AppBar 对于两个屏幕都是通用的。为了更好地理解,我还添加了 NextScreen Image。
    • 您可以将 AppBar 全局定义为您的应用,然后从您想要的任何页面访问它。您可以创建一个扩展或包装 AppBar 的类,然后添加像“showBackButton”这样的自定义属性,然后在构建方法中您可以检查该属性并决定要做什么..
    【解决方案2】:

    goToNextScreen里面你用的是Navigator.pushReplacement吗?

    如果是,请将其更改为Navigator.push

    Navigator.pushReplacement 在导航到下一个屏幕之前从堆栈中删除当前屏幕。

    由于您只剩下一个屏幕并且该屏幕也被NextScreen 取代,因此您无处可退。

    【讨论】:

    • 我使用了 Navigator.push。当我从登录屏幕导航到登录屏幕时,我使用了 Navigator.pushReplacement,这就是为什么在我的登录屏幕上没有出现后退按钮,当我单击“goToNextScreen”按钮时,我使用 Navigator.push 导航到我的 NextScreen,同样的 appbar 也是共享的用我的 NextScreen。
    • 分享你的代码!如果两个屏幕共享同一个容器并因此共享同一个 appBar,那么您需要检查更改的值并自行添加返回按钮并编写特殊逻辑以向上导航。
    猜你喜欢
    • 2022-01-17
    • 2011-03-09
    • 2021-07-17
    • 2011-07-24
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多