Flutter-带捕捉工具栏和嵌套滚动视图的SliverAppBar

时间:2020-02-27 15:58:06

标签: flutter scrollview nestedscrollview sliverappbar

我正在尝试复制其中包含以下组件的UX设计:

  1. 包含文本“ Desmos”的顶部栏
  2. 主要帖子内容,由以下内容组成
    • 标题(用户图标,用户名,发布日期,选项按钮)
    • 帖子消息
    • 可能存在的任何帖子图片
  3. 一个标签栏,允许用户显示评论列表或反应列表。

此UX的特殊之处在于,当用户搜寻注释或反应列表(基于他当前正在查看的列表)时,垂直滚动列表将捕捉到选项卡栏。

从那里,用户将能够向下滚动评论列表,或者通过附加滚动再次显示帖子。请注意,应放置原始文章,以便用户再次显示它,需要更大的滚动力。

我整理了一个视频,您可以在此处观看该视频,以更好地了解其工作原理:

Wanted UX

我已经实现了一个名为PostContent的小部件,其中包含上述所有帖子的主要内容。我也已经尝试过为所需的UX编码,如下所示:

Scaffold(
  body: SafeArea(
    child: NestedScrollView(
      headerSliverBuilder: (context, _) {
        return [
          SliverAppBar(
            backgroundColor: Colors.white,
            expandedHeight: 310,
            pinned: true,
            primary: true,
            flexibleSpace: PostContent(post: post),
          )
        ];
      },
      body: ListView.builder(
        itemBuilder: (context, index) {
          return Text(index.toString());
        },
      ),
    ),
  ),
);

通过单击以下预览可以看到结果:

Created UX

此实现的问题如下:

  1. 由于PostContentColumn,我如何获取其高度,这样就不必在SliverAppBar的{​​{1}}属性中指定固定值?
  2. 如何避免在向上滚动expandedHeight时到达ListView时停止滚动而不向上滚动?

0 个答案:

没有答案