高さに反応する SliverAppBar を作成しようとしています。展開されているかどうかに応じて異なるものを表示します。
https://medium.com/flutter-community/flutter-sliverappbar-snap-those-headers-544e097248c0に基づいていますが、問題があります:
リストの最後の空白が長すぎます。
アイテム数が多い場合は SliverFillRemaining を削除する必要はありませんが、numberOfItems
たとえば 30 ではなく 3 アイテムに変更する場合は、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 **
],
),