我有一台SliverAppBar,它可以向上滚动缩小,向下滚动扩展。
当我切换BottomNavigationBar时,我想扩展SliverAppBar。
在当前情况下,保持切换前的SliverAppBar状态。
这是我的代码。https://gist.github.com/ysknsn/d90a84a180e32de5b0691de874c65d55
任何建议都是有帮助的。谢谢。
发布于 2019-07-09 02:10:46
就像你对TabController做的一样……
将其放在一个局部变量中:
TabController _tabController;
ScrollController _scrollController;
int _selectedIndex = 0;
@override
void initState() {
_tabController = TabController(vsync: this, length: 2);
_scrollController = ScrollController(keepScrollOffset: true);
super.initState();
}然后在你的NestedScrollView`中使用它
@override
Widget build(BuildContext context) {
return Scaffold(
body: DefaultTabController(
length: _tabController.length,
child: NestedScrollView(
controller: _scrollController,
key: PageStorageKey(widget.title),
...然后在单击时更新位置:
void _onItemTapped(int index) {
_scrollController.jumpTo(0);
setState(() {
_selectedIndex = index;
_tabController.index = index;
});
}发布于 2021-10-13 15:22:34
添加一个滚动控制器到你的‘自定义滚动视图’
ScrollController _scrollController;
Widget build(BuildContext context) {
_scrollController = ScrollController();
return Scaffold(
body: CustomScrollView( shrinkWrap: true, controller: _scrollController,
physics: BouncingScrollPhysics(),
slivers: <Widget>[
SliverAppBar(
pinned: false,
:
:
:
:
:
:
:
:
:
onPressed: () {// Scroll to top when on click => Expand
_scrollController.animateTo(
_scrollController.position.minScrollExtent,
duration:Duration(milliseconds:1300),
curve: Curves.decelerate,);
},
onPressed: () {// Scroll to bottom when on click => Collapse
scrollController.animateTo(
scrollController.position.maxScrollExtent,
duration: Duration(milliseconds: 1300),
curve: Curves.decelerate,
);
},https://stackoverflow.com/questions/56938250
复制相似问题