1

高さに反応する 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 **
        ],
      ),
4

2 に答える 2