为什么 SliverFillRemaining 膨胀得太多了?

Why is SliverFillRemaining expanding too much?

我正在尝试制作一个 SliverAppBar 来响应它的高度,显示不同的东西取决于它是否展开。

我基于 https://medium.com/flutter-community/flutter-sliverappbar-snap-those-headers-544e097248c0,但我遇到了问题:

列表末尾的空 space 太长了。

如果项目数量很多,则没有必要删除 SliverFillRemaining,但将 numberOfItems 更改为例如3 个项目(而不是 30 个),SliverFillRemaining 是必需的。

查看此飞镖板以获取代码:https://dartpad.dev/2c434ddf2d4d1e87bd4b421f0a673c2d

      CustomScrollView(
        physics: AlwaysScrollableScrollPhysics(),
        controller: _controller,
        slivers: [
          SliverAppBar(
            pinned: true,
            backgroundColor: Colors.grey[100],
            stretch: true,
            automaticallyImplyLeading: false,
            flexibleSpace: Header(
              maxHeight: maxHeight,
              minHeight: minHeight,
            ),
            collapsedHeight: minimizedHeight,
            expandedHeight: maxHeight - MediaQuery.of(context).padding.top,
          ),
          SliverList(
            delegate: SliverChildBuilderDelegate(
              (context, index) {
                return _buildCard(index);
              },
              childCount: numberOfItems,
            ),
          ),
          SliverFillRemaining(
              hasScrollBody: true), // ** <-- this will add space, but too much **
        ],
      ),

如果你只是增加一定高度space,我建议你使用SliverToBoxAdapter:

SliverToBoxAdapter(
  child: SizedBox(
    height: 50,
  ),
),

使 hasScrollBody 值为 false 像这样:

     SliverFillRemaining(
        hasScrollBody: false
     ),