相关疑难解决方法(0)

Flutter:如何避免在现有路线上推同一条路线

我有底部导航栏的视图,当您按下导航栏项目时,新的路线将被推送到视图中。

 final navigatorKey = GlobalKey<NavigatorState>();

 @override
  Widget build(BuildContext context) => MaterialApp(
    home: Scaffold(
      key: _scaffoldKey,
      body: _buildBody(context),
      bottomNavigationBar: _buildBottomNavigationBar(context),
    ),
  );

 void routeToView(routeIndex) {
      navigatorKey.currentState.pushNamed(pagesRouteFactories.keys.toList()[routeIndex]);
  }
Run Code Online (Sandbox Code Playgroud)

我想防止在当前视图上推送相同的路由。我想将当前路线与我们尝试推入的新路线进行比较,如果相同则忽略推入路线。

如果要尝试的路线与我相同,我想将视图滚动到顶部

有任何想法吗。

flutter

5
推荐指数
1
解决办法
1439
查看次数

嵌套路由中应该使用flutter路由还是应该使用Page View?

来自网络背景(角度),我真的对颤振路由感到困惑。

看来我并不孤单(1、2 ... )。

从答案的相对复杂性以及与其中一些答案相关的各种错误来看,我想知道我是否只是想使用导航器作为它不是的东西。我尝试像使用网络框架的路由器一样使用它。如果 flutter 中的路由旨在更改整个屏幕而不是子窗口小部件。

网络导航

在 Web 上,以下导航将类似于以下内容:

{ path: '/sign-in', widget: SignInPage() },
{ path: '/', widget: HomePage(), children: [
    { path: '/a', widget: DashboardPage() },
    { path: '/b', widget: ProfilePage(), children: [
       { path: '/general', widget: BGeneralPage() },
       { path: '/settings', widget: BSettingsPage() },
    ] }
] }
// example url x.com/b/settings
Run Code Online (Sandbox Code Playgroud)

在flutter中你可以放置一个嵌套的Navigator,但是热重载似乎失败了,而且默认动画也很垃圾。甚至嵌套导航的文档也说<<仅使用单个导航器就可以获得类似的结果>>。

在我看来,路由系统是为了在我们想要更改整个屏幕时使用的。PageViewTabBarView是用于内部导航的小部件。

- 是这样吗?

然而,我发现一个潜在的问题是,当 flutter web 可用时,它不会有匹配的 url。

flutter flutter-navigation flutter-web

5
推荐指数
0
解决办法
585
查看次数

标签 统计

flutter ×2

flutter-navigation ×1

flutter-web ×1