问题标签 [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 回答
69 浏览

flutter - Flutter:有导航和路由备忘单吗?

当我正在编写一些应用程序时,我想知道是否有任何备忘单解释我拥有的选项navigation以及routing我应该何时使用特定的选项(对于哪个用例,它是最好的解决方案)?

例如,我正在创建一个form,当我按下时button我需要加载一个list( ) itemsListview从中我将选择一个项目并返回到form. 此列表应涵盖所有屏幕(我猜类似于全屏模式)

我不确定我应该使用什么,是否MaterialPageRouteModalRoute或者可能是一些不同的对话框?

除了阅读文档之外,还有什么好的学习资源吗?

0 投票
1 回答
369 浏览

flutter - 基于身份验证状态的 Flutter Navigation

我正在构建一个带有用户身份验证的 Flutter 应用程序(firebase 等等),并希望为经过身份验证和未经身份验证的用户提供两组路由:

  • 未经身份验证的用户: /login /register ...

  • 经过身份验证的用户:/home ...

我试图在顶部小部件上有一个类似这样的开关:

(我在树的顶部得到了_usera 的值ChangeNotifierProvider)但显然不可能有 2 个顶级导航器。

其次,我尝试在_generateRoute函数中按下开关,但有一些缓存:重建树时(例如_user.status更改时),_generateRoute不会再次调用函数,因此不起作用。

你如何解决这个问题?

0 投票
1 回答
1802 浏览

flutter - 在执行 Widget 状态构建时导航

我正在构建一个简单的 Flutter 应用程序。它的启动屏幕确定用户是否登录,并根据它重定向到登录或主/主屏幕之后。

我的启动屏幕是一个StatefulWidget,它的状态如下图所示。它使用扩展的 ViewModel 类ChangeNotifier(它的代码无关紧要,所以我没有包含它)。

ViewModel 发出以下三种状态之一:

  • LaunchInitial:默认状态。
  • LaunchLoginPage:表示应该显示登录页面。
  • LaunchMainPage:指示应显示主页面。

LaunchInitial 状态处理得很好,屏幕上会显示一个进度条。但是其他 2 个状态会导致应用程序崩溃。抛出以下错误:

似乎在build执行消费者方法时尝试重定向到另一个屏幕会导致此问题。这样做的正确方法是什么?

谢谢!

0 投票
1 回答
3599 浏览

flutter - Flutter:动态初始路由

亲爱的,

我正在使用提供者dart 包,它允许侦听器收到有关模型本身更改的通知。

我能够检测到我的主应用程序根树中的更改,并且还能够更改初始路由的字符串值,但是我的屏幕没有更新。请参阅下面的代码片段和注释行:

请注意以下事项:

我缺少动态的东西initialRoute工作?

非常感谢

0 投票
4 回答
2657 浏览

flutter - 在 Flutter 应用程序中以向后滑动手势关闭键盘

当用户从边缘滑动到弹出路径时,我试图关闭键盘。

目前,在路线完全弹出之前,键盘不会关闭,从而弄乱了其他一些页面布局,直到它关闭

我确实尝试使用 aWillPopScope来确定用户何时要弹出路由,但不幸的是,这会禁用 iOS 或CupertinoPageRoute.

我只是想知道是否有任何方法可以确定用户何时从边缘滑动弹出或点击 appBar 上的后退按钮并在他们这样做时关闭键盘。

如果可能的话,我会尝试在键盘开始滑动弹出时立即关闭键盘,就像在许多应用程序中一样。

我附上了一个 gif,显示了我想要达到的效果。

滑动弹出隐藏键盘

0 投票
1 回答
673 浏览

flutter - 如何从 ChangeNotifier 导航?

我正在学习关于状态管理的provider+ChangeNotifier,但我找不到任何关于如何从ChangeNotifier.

假设我们改进了此处provider_shopper的示例,因此当用户单击“购买”时,会执行一些购买逻辑,然后导航到“订单审核”页面。这个导航应该如何实现?CartModel

我们是否为 提供了回调CartModel,所以它会调用它并触发 UI 上的导航?

0 投票
0 回答
81 浏览

flutter - 如何根据下一条路线自定义传出动画?

我想要的是:

我的场景分为两部分:按钮栏和内容。我想要类似于 Android ViewPager 行为的东西:当我点击一个按钮时,相应的场景会从左侧或右侧滑入,具体取决于按钮栏中的按钮位置:

例如,当从Discover导航到TV Shows时,TV Shows场景应该从右侧滑动,同时Discover场景应该向左移动。

请注意,中间项目TV Shows可以有不同的过渡,这取决于我们来自哪里:

  • DiscoverTV Shows --> TV Shows场景应该来自右边
  • 电影电视节目-->电视节目场景应该来自左边

我做了什么:

我创建了自己的 PageRoute,并在其中覆盖了该buildTransitions方法。我有一点逻辑来确定幻灯片动画的方向:

onGenerateRoute我的用法Navigator

问题:

传入场景来自正确的一侧(从左到右),但传出场景保持原位。所以传入的场景正在“覆盖”传出的场景。

外观和感觉还不错,但它不是理想的结果:

我希望传出场景以相反的方向移出屏幕,以便像真正的滑块一样将位置留给传入场景。因此,我还必须通过参数为即将传出的场景设置动画secondaryAnimation

我可以编写 2 个动画,如下所示:

除了中间电视节目场景外,它将工作,因为它可以根据下一条路线有 2 种不同的过渡:在路线创建时方向未知。只有在创建下一条路线时才能知道。

所以我的问题是:在创建新路由时,是否可以访问当前路由的传出转换定义并重新定义它?

我最好的线索是TransitionRoute类中_updateSecondaryAnimation调用的方法,但我不知道如何使用它。didChangeNext

0 投票
1 回答
244 浏览

android - 导航和路由颤振

我刚开始颤抖并尝试构建一个在 4 个页面之间导航的底部导航栏:

启动应用程序时,主页应始终显示为主屏幕。(明显地 !!)

我按照一些文档构建导航栏。导航栏似乎没有问题,但问题是

我不知道在哪里以及如何实现其余的导航和选项卡切换逻辑

这是我的main_screen.dart

0 投票
1 回答
1111 浏览

flutter - 在 Flutter 中如何知道图像是否在内存中?

我的应用程序中有一个以图像为背景的屏幕,该图像位于我的资产文件夹中。当我导航到此屏幕时,背景瞬间为空白,然后图像被加载并出现。这使我的屏幕在半秒或更短的时间内看起来很奇怪,但足以让用户注意到。

我希望只能在加载图像后导航到该屏幕(我可以在前一个屏幕上等待),因此我可以避免这种行为并在用户导航到那里时将屏幕作为一个整体。

我知道可以使图像淡入,但这不是我想要的体验。

0 投票
2 回答
924 浏览

flutter - BottomNavigationBar 内的顶部 TabBar

TabBar无法在我的BottomNavigationBar. 我只希望顶部TabBar显示在家中BottomNavigationBarItem。我知道我可以在主页中设置另一个脚手架,但我显然不想在脚手架内设置脚手架。使用以下代码,我收到运行时错误:

home.dart:

主要飞镖: