将导航仪作为子节点的ListView

问题描述 投票:0回答:1

我想把一个 Navigator 作为子女 ListView 小部件。我这样做的目的是为了有一些静态的顶部内容(例如,一个带有导航选项的顶部导航条),而在其下方,一些基于 Navigator. 我想用 ListView 而非 Column 以便能够滚动所有内容,包括顶部导航栏。

然而,我得到了一个渲染异常,因为在 Navigator widget没有边界,因此不能放在 ListView因为它没有任何尺寸限制。

有没有什么变通的方法可以达到这样的效果?

|------------------| ^
| STATIC NAVBAR    | | SCROLL
|------------------| |
|                  | ^
|    NAVIGATOR     |
|     CONTENT      |
|                  |
|------------------|
flutter flutter-layout
1个回答
0
投票

首先是一个 SingleChildScrollView可能 更适合你的需求来滚动一个单一的widget。

为了解决你的渲染异常,你应该把你的 ListViewSingleChildScrollView 作为 孩子Navigator 因为您的预期效果是滚动每个路由小组件的内容。这并不是唯一的方法,我只是认为对你来说,管理每个子路由的约束会更容易。无论哪种方式,你都需要将你的子路由的 Navigator 在垂直方向的某个点上。


0
投票

你可以使用TabBar来实现你问题中所说的导航。你可以把 TabBar 里面 bottom 的财产 Scaffold - AppBar().

关于文档,你可以查看这个官方文档,了解如何使用tabs 此处

我的工作实例:

return Scaffold(
  appBar: AppBar(
    title: AppBarTitle(),
    bottom: TabBar(
      controller: _tabController, // define your TabController
      tabs: _tabs, //list of tab widgets
    ),
  ),
  body: TabBarView(
    controller: _tabController,
    children: <Widget>[
      // Here you can put your ListView widget as your dynamic contents
    ],
  ),
);
© www.soinside.com 2019 - 2024. All rights reserved.