Я пытаюсь создать скрытую панель слайдов с вкладками. Он должен скрываться, когда я начинаю прокручивать вниз, и показывать, когда я начинаю прокручивать вверх. Прямо сейчас панель приложений скрывается при прокрутке вниз, но не отображается в начале прокрутки вверх, а отображается в конце прокрутки. Также мне нужно сохранить положение страницы в виде вкладок, но когда я пытаюсь это сделать, панель приложений больше не скрывается.
class ConferentionsPage extends StatefulWidget{
final void Function() openMenu;
ConferentionsPage({Key key, this.openMenu}): super(key: key);
@override
State<StatefulWidget> createState() => ConferentionsPageState();
}
class ConferentionsPageState extends State<ConferentionsPage>
with SingleTickerProviderStateMixin {
TabController _tabController;
ScrollController _scrollController;
double listViewOffset = 0.0;
_buildSliverAppBar(BuildContext context, bool innerIsScrolled){
return SliverAppBar(
leading: IconButton(
icon: Image.asset('assets/icons/menu.png', width: 24, height: 24,),
onPressed: widget.openMenu
),
title: Text(CONFERENTIONS_TITLE),
centerTitle: true,
elevation: .6,
actions: <Widget>[
IconButton(
icon: Image.asset('assets/icons/user.png', width: 24.0, height: 24.0,),
onPressed: (){
},
)
],
pinned: true,
floating: true,
snap: true,
forceElevated: innerIsScrolled,
bottom: TabBar(
controller: _tabController,
tabs: <Widget>[
Tab(text: 'Прошедшие',),
Tab(text: 'Ближайшие',)
],
),
);
}
@override
void initState() {
super.initState();
_tabController = TabController(length: 2, vsync: this);
_scrollController = ScrollController(initialScrollOffset: 0, keepScrollOffset: true);
}
@override
Widget build(BuildContext context) {
return NestedScrollView(
controller: _scrollController,
headerSliverBuilder: (BuildContext context, bool innerIsScrolled){
return <Widget>[
_buildSliverAppBar(context, innerIsScrolled)
];
},
body: TabBarView(
controller: _tabController,
children: <Widget>[
Tab1(),
Tab1()
],
),
);
}
}