如何在我的 Flutter 应用程序中重置基本路线 - 即弹出任何路线并使用 Navigator 将其替换为新路线

2024-07-03

对于 Flutter 新手来说,如果这是显而易见的,请原谅我,但我已经阅读了文档并尝试了一堆导航器选项,但它们都没有按照我想要的方式工作。问题集:我们有一系列复杂(半复杂)的屏幕等,用于处理登录/授权/注册过程。路由堆栈上的层级可以减少到 3 或 4 层。这一切都很好——不用担心。

当我们获得成功的登录事件(来自几个不同的路径)并想要转到“主页”页面时,问题就出现了。一旦我们进入主页,它就应该是路由树的新“根”(我确信这不是正确的术语——但我认为这个想法是可靠的)。

因此,考虑到我们可能向下 1/2/3 甚至 4 级,并且想要“弹出”并将整个堆栈(请使用任何转换事件)替换为新的顶级根 - 什么神奇的导航器集或方法将干得干净吗?

我当前的(可怕的)方法是传递“pop()”级别并执行 Navigator.pushReplacementNamed() 调用(它们都是此处的命名路由),但这不是通用解决方案(必须确切知道有多少级别)更糟糕的是,它会导致屏幕上的每个 pop() 瞬间从“动画”过渡到“pop”,这看起来......不太好。

TIA!


导航器揭露的不仅仅是pop。您可以执行以下操作:

Navigator.pushNamedAndRemoveUntil(context, '/', (_) => false);

这基本上会推动一个 home 并删除all新路线背后的路线

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在我的 Flutter 应用程序中重置基本路线 - 即弹出任何路线并使用 Navigator 将其替换为新路线 的相关文章

  • 如何在flutter中使用firestore更新所有集合

    我有两个收藏 一个集合 User 包含用户信息 用户名 一个集合 Post 包含我的 flutter 应用程序的所有帖子 帖子文档包含 文本帖子 和作者的 用户名 我在应用程序中添加了一个选项 允许用户每 6 个月更改一次昵称 但我必须更改
  • 在 Flutter 应用程序中下载大型 pdf 文件

    我正在寻找一种使用 Flutter 应用程序从外部服务器下载大型 pdf 文件以进行离线存储的方法 但下载大文件 有时 100mb 以上 需要一些时间 我不希望应用程序陷入等待下载的状态 我正在寻找的是一个下载函数 它具有带有进度报告的回调
  • Flutter 中桌面的条件包导入

    我知道的可用性dart library html可以作为网页的条件 但是桌面呢 尽管我认为如果您创建并使用一个新包 其中为不同平台指定了不同的包 您可以为桌面导入特定的包 而不是为移动设备导入特定的包 pubspec yaml如中所解释的该
  • 如何在颤动中设置容器的不透明度

    我想为包含十六进制颜色代码的容器设置不透明度 如何做呢 这是我当前的代码 final body Container width MediaQuery of context size width margin const EdgeInsets
  • Android 模拟器在截屏时不断退出

    我不记得我是否曾经修改过 Android 模拟器的设置 但我一直在使用 Android Studio 在 Android 模拟器上测试我的应用程序 每次我截屏时 它都会崩溃 我尝试删除 擦除并创建一个新的模拟器 这些都不起作用 我还尝试使用
  • Flutter中如何获取当前路由路径?

    在实施的同时持久底部栏 https stackoverflow com questions 45511549 permanent view with navigation bar in flutter 以前的路线需要恢复 https git
  • Dart / flutter:下载或读取 Google Drive 文件的内容

    我的 Google 云端硬盘上有一个公共 任何知道链接的人都可以查看 文件 我想在我的 Android 应用程序中使用它的内容 据我目前收集到的信息 我需要 fileID OAuth 令牌和客户端 ID 这些我已经得到了 但我无法弄清楚授权
  • 即使在 Scaffold 中定义了 BottomModalSheet 小部件,Flutter 中也未找到 Scaffold 错误

    我试图为测试应用程序实现 BottomModalSheet 但每次都会弹出同样的错误 说找不到脚手架 该应用程序的代码如下 该错误表明 Scaffold 是由 MaterialApp Widget 实现的 因此我删除了 MaterialAp
  • 错误:未找到 Flutter SDK。在 local.properties 文件中使用 flutter.sdk 定义位置

    ERROR Flutter SDK not found Define location with flutter sdk in the local properties file 我已经导入了 Flutter 示例应用程序mahtab al
  • Flutter 错误:无法下载 bcprov-jdk15on.jar (org.bouncycastle:bcprov-jdk15on:1.56)

    我无法运行我的第一个 Flutter 应用程序 出现以下错误 Launching lib main dart on Android SDK built for x86 in debug mode Initializing gradle Re
  • 错误:没有名称为“onRatingChanged”的命名参数

    我尝试运行该应用程序 但收到以下错误 Compiler message Developer flutter pub cache hosted pub dartlang org rate my app 0 6 0 2 lib src dial
  • 未处理的异常:NoSuchMethodError:在颤振上对 null 调用了方法“[]”

    I want to show data in list view like in the below that one is hard coded 当我将其更改为列表时 出现以下错误 E flutter 6925 ERROR flutter
  • 在 Flutter 中本地干净地覆盖部分主题

    我有一个小部件 有两个TextField作为后代 我想对这些应用相同的样式TextFields 我的理解是 执行此操作的正确方法是将本地化主题应用到我的小部件树 以下是我的尝试 这是我的根小部件的代码片段build功能 难道没有更干净的方法
  • Dart 中的会话

    通常 dart 文档在几乎任何主题上都有很多有用的示例 不幸的是我在 Dart 中找不到任何关于会话的内容 任何人都可以验证这种方法是否是进行会议的正确方法 浏览器向服务器发送 GET 请求 服务器通过网络客户端响应 Web 客户端发送用户
  • 在 Dart 中如何监听 keyUp 事件?

    如何在 Dart 中监听或注册 DOM 元素上的 keyUp 事件 似乎这个线程有点过时了 在最新版本的 Dart 中 您可以监听这样的按键事件 import dart html main querySelector some elemen
  • 验证器错误消息更改 TextFormField 的高度

    当错误消息出现时 它会降低高度TextFormField 如果我理解正确 那是因为错误消息的高度正在考虑到指定的高度 这是之前的屏幕 之后 试图把conterText 到 BoxDecoration 正如我在另一个主题中看到的那样 但它没有
  • 验证器错误消息更改 TextFormField 的高度

    当错误消息出现时 它会降低高度TextFormField 如果我理解正确 那是因为错误消息的高度正在考虑到指定的高度 这是之前的屏幕 之后 试图把conterText 到 BoxDecoration 正如我在另一个主题中看到的那样 但它没有
  • Flutter - 在容器中显示相机/条形码扫描仪

    我想将相机功能存储在一个单独的容器中 如标题所示 这意味着 如果相机启动 它仅显示在红色容器中 此时我该如何实现这一点 我的屏幕图片 https i stack imgur com R5INL jpg https i stack imgur
  • 如何在flutter中创建没有应用栏的选项卡栏?

    我希望在主屏幕上添加选项卡应用程序而不是应用程序栏 如何创建它 目前 我的选项卡栏添加在应用程序栏的底部 并且我删除了标题和标高 同时我也不能说appBar null因为我需要在标签栏顶部留出一些空间 Widget HomeTap new
  • 将带有参数的函数传递给 VoidCallback

    是否可以将带参数的函数传递给 VoidCallback 例如这样的事情 class MyClass void doSomething int i MyOtherClass myOtherClass new MyOtherClass doSo

随机推荐