为什么 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
),
我正在尝试制作一个 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
),