问题标签 [flutter-navigation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
159 浏览

flutter - Flutter Navigation 将路线显示为 /

我有一张带有 PopupMenuButton 的卡片,我可以点击它来执行“复制”操作。我也可以从卡详细信息页面执行相同的操作。我遇到的问题是返回主页,我必须同时满足两条路径。所以如果动作是从详情页执行的,我需要弹两次才能回到首页。

来自主页的操作:

首页 > 添加卡片页面

  • navigator.pop() 带我回到主页

详细信息页面中的操作:

首页 > 卡片详情页面 > 添加卡片页面

  • 不得不在这里弹出两次。

我知道我必须pop至少做一次,然后我用popUntil来检查路线的当前状态。由于某种原因,它总是弹出两次。

调试后,它显示当前路线为/

0 投票
1 回答
54 浏览

flutter - Navigation.pop() 和 Navigation.push() 行为奇怪

我正在使用 Flutter 在我的应用程序中创建一个注册部分,我正在尝试执行以下操作:

  1. 用户点击注册

  2. 用户在注册期间的任何阶段按下后退按钮

  3. 然后会弹出一个警告对话框,询问用户是否真的想离开注册过程

  4. 用户按

  5. 然后用户被带回应用程序的第一个(主)页面。

这适用于我单击注册后的第一页,但是当我到达第二页时,第 4 步让我保持在同一页面上,然后当我再次尝试时,它可以工作。但这不应该是这样。

经过一番调试,我发现了问题,但我不知道为什么会这样。

我在我的第二个代码片段中将问题作为注释写在函数末尾,onBackPressed()因此很清楚它在哪里中断:)。

这是我从main.dart导航到注册过程页面的代码:

然后对于注册过程中的每个页面,每当我进入下一页时,我都会执行 aNavigation.pop(context)将当前注册页面从堆栈中弹出Navigation.push(),然后执行 a以推送下一页。

以下是每个注册页面中后退按钮功能的代码:

最后是类yesOrNoAlert()中的函数Tools

希望我解释得很好。

0 投票
1 回答
477 浏览

flutter - 实现始终具有 AppBar 和 BottomNavigationBar 的屏幕的最佳方法是什么?

我有 3 个屏幕-home和. 我想要一个and总是出现在我所有的屏幕上。现在,我在文件中定义了and 。每当点击一个选项时,正文就会替换为所选屏幕的内容。friendsprofileAppBarBottomNavigationBarAppBarBottomNavigationBarScaffoldmain.dartBottomNavigationBarScaffold

主要飞镖:

现在,我有一个在屏幕avatar中重复使用的自定义小部件。home单击 时avatar,我想显示friends屏幕。onTap我在以下方法中尝试了此代码avatar

朋友飞镖:

在点击avatar时,我正在获取friends屏幕,但其他所有内容都丢失了(AppBarBottomNavigationBar)。

我如何实现这一目标?我应该从我的所有 3 个屏幕返回一个带有 等AppBar的脚手架吗?BottomNavigationBar这会对性能产生负面影响吗?Scaffold或者有没有办法通过替换in的主体来做到这一点main.dart

0 投票
2 回答
2842 浏览

flutter - 如何使用 pushNamed 传递的参数?

假设我有两条路线/firstRoute/secondRoute,分别用于小部件FirstRouteSecondRoute。我正在使用一些参数将命名路由推入堆栈,就像这样......

我现在如何在SecondRoute中使用这个值?查看了文档,但没有提及。

0 投票
2 回答
314 浏览

flutter - 嵌套导航器 pushNamedAndRemoveUntil 谓词路由为空

我正在尝试 pushNamedAndRemoveUntil 但我注意到我的谓词不断返回 null 作为路由。

我的代码:

这打印:

当我这样做时,我可以推到我以前的路线,但从那里弹出只会给我一个空白屏幕。这是因为谓词一直返回 null,所以之前的所有路由都从树中删除。知道发生了什么吗?

请记住,我使用的是嵌套导航器设置,与我在此处的其他问题相同:(带有嵌套导航器的 .popUntil

谢谢

0 投票
1 回答
1051 浏览

flutter - 如果用户按下后退按钮,则阻止 Navigator.push

在我的应用程序中,我需要在 call 之前执行代码Navigator.push。但问题是如果用户在执行代码之前按下后退按钮,则会出现错误:

E/flutter(8415):[错误:flutter/lib/ui/ui_dart_state.cc(148)]未处理的异常:查找已停用小部件的祖先是不安全的。E/flutter (8415):此时小部件的元素树的状态不再稳定。E/flutter (8415):要在其 dispose() 方法中安全地引用小部件的祖先,请通过在小部件的 didChangeDependencies() 方法中调用 inheritFromWidgetOfExactType() 来保存对祖先的引用。

Navigator.push问题是即使用户按下后退按钮(在 中) ,代码仍在执行并且正在调用Widget2

这是mwe:

0 投票
1 回答
608 浏览

flutter - 如何从 MaterialPageRoute 中的构建器对象中获取 Widget 类名称

我想要一个自定义的 MaterialPageRoute,其中 RouteSettings 对象将被分配一个默认名称,该名称应该是构建器,即小部件类名称。

我已经覆盖了下面的方法并且不明白如何从构建器对象中获取类名。

在上面的代码中,我试图从构建器获取小部件并将短名称设置为 RouteSettings 名称,但问题是 Casting 并且收到以下错误表示无法进行强制转换

type '(dynamic) => CitySelectionScreen' 不是类型转换中类型 'Widget' 的子类型

我这样做的原因是作为 Firebase 分析集成的一部分,我需要更改我的整个导航代码以添加以前不存在的新 RouteSettings,我试图解决这个问题,改为设置默认名称在整个项目级别进行的更改。

请在这方面帮助我。

0 投票
1 回答
178 浏览

flutter - 在 Flutter 中如何处理返回上一页?

在 Flutter 中如何处理返回上一页?如果我这样做了,当第二页关闭时Navigator.push如何执行一些操作?

0 投票
0 回答
454 浏览

flutter - 使用导航器时保持活动页面状态

我有一个有两个页面的应用程序,第一个有一个按钮可以导航到第二个页面,然后选择一个位置列表,保存时会弹出第二个页面并返回所选位置显示在芯片中的第一页,但是如果返回第二页编辑我的选择 现在重新构建了状态并且我的列表消失了 如何将列表状态保留在第二页中?

0 投票
0 回答
327 浏览

firebase - Flutter Navigator 从 firebase 推送数据

我们正在尝试从我们当前在网格视图中呈现的 firebase 获取数据,但我希望能够单击网格视图中的项目并阅读有关它的更多信息。

这是我到目前为止所拥有的,也是我在 VS 中遇到的错误

主屏幕