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 中没有您想要的便捷设置。
这可能不是最佳解决方案。但它适用于某些情况:
在SliverAppBar()
中设置floating: true
,pinned: false
(默认为false)
用滚动位置控制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,
...
我在 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 中没有您想要的便捷设置。
这可能不是最佳解决方案。但它适用于某些情况:
在SliverAppBar()
中设置floating: true
,pinned: false
(默认为false)用滚动位置控制
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,
...