SliverAppBar flexibleSpace 不应显示在滚动备份中

SliverAppBar flexibleSpace shouldn't show in scroll back up

我在 SliverAppBar 中使用 flexibleSpace 浮动:true,固定:false,快照:true:当我向上滚动时。它显示 AppBar 和 flexibleSpace space https://flutter.github.io/assets-for-api-docs/assets/material/app_bar_floating_snap.mp4。但我想要的是当用户滚动底部时它应该隐藏应用程序栏和 flexibleSpace 并且当用户向上滚动时它应该只显示 appBar。直到滚动到达页面的第一页,它也应该显示 flexibleSpace。

据我所知,SilverAppBar 中没有您想要的便捷设置。

这可能不是最佳解决方案。但它适用于某些情况:

  1. 在SliverAppBar()

    中设置floating: true,pinned: false(默认为false)
  2. 用滚动位置控制expandedHeight

.

ScrollController _scrollController;
bool _top;
double _expandH;
double _collapseH;

@override
void initState() {
  _collapseH = 50;
  _expandH = 150;
  _top = false;
  _scrollController = ScrollController()..addListener(() {
    if(_scrollController.offset == 0 && !_top) {
      setState(() {
        _top = true;
        _scrollController.position.correctPixels(_expandH-_collapseH);
      });
    }else if(_top && _scrollController.offset > _expandH-_collapseH) {
      setState(() {
        _top = false;
        _scrollController.position.correctPixels(0);
      });
    }
  });
  super.initState();
}

...

CustomScrollView(
  controller: _scrollController,
  slivers: [
    SliverAppBar(
      floating: true,
      // pinned: false,
      expandedHeight:_top ? _expandH: _collapseH,
      ...