【发布时间】:2021-08-02 01:25:54
【问题描述】:
我正在开发的应用尝试尽可能地为 Android 和 iOS 用户采用最原生的体验。
为此,应用运行CupertinoApp 和MaterialApp。
在 iOS 上,我使用 CupertinoScaffold 显示 CupertinoTabBar 和 BottomNavigationBarItems。它的表现和预期的一样好:
- 页面只创建一次,我第一次点击标签时;
- 页面在返回到之前显示的选项卡时恢复:在我的一个选项卡中,有一个列表,并且它的滚动位置始终保持不变。
在 Android 上,情况有所不同:我使用的是 Drawer 小部件。
当我点击一个条目时,我调用Navigator#push 来显示相关页面。但是,这将继续在堆栈中添加每个条目页面的新实例。
我似乎无法返回到现有页面。至少,我不能用 iOS 做到这一点。
看着Navigator,我看到似乎实现了我正在寻找的功能:
-
popUntil=> 将显示我现有的屏幕,但会显示在所有其他屏幕的广阔范围内,因此只会为了一页而做出牺牲。无所事事…… -
pushReplacement=> 将显示目标页面的新实例并销毁当前页面。不可取。
我错过了什么?我怎样才能实现CupertinoTabBar 似乎能够做到的事情?
【问题讨论】:
-
也许你需要一个 Navigator Observer 来检查 pop 或 push 路由并替换或删除它 api.flutter.dev/flutter/widgets/NavigatorObserver-class.html 有了一个观察者,你可以随时弹出或 push
-
您好,感谢您的建议。您建议的课程提供了确实监视正在推送或弹出的内容的方法。你的意思是我应该用它来保留以前导航到的路线的实例?
标签: android flutter dart flutter-navigation flutter-drawer