我想开发一个应用程序,其中我使用TabBar
,它由两个屏幕组成。在第一个屏幕中,我有一个ListView
。我希望在向下滚动ListView
时隐藏TabBar
。并且在ListView
向上滚动时显示出来。我使用GestureDetector
作为ListView
的父对象来检测用户是否向上和/或向下滚动。通过在线搜索,我发现使用onVerticalDragUpdate
和onPanUpdate
可以检测上下垂直滚动,但是现在的问题是这些方法没有被调用!GestureDetector
的其他方法比如onTap
被调用了,我想原因是ListView
吸收了垂直滚动,那么解决这个问题的方法是什么呢?您的帮助是非常感谢!!
**注意:**使用SliverAppBar
并不能很好地符合我的要求。
下面是我的代码:
SafeArea(
child: Stack(
children: [
TabBarView(
controller: _controller,
children: [
GestureDetector(
onTap: () {
print('onTap called!');
},
onVerticalDragUpdate: (updates) {
print('onVerticalDragUpdate is called!');
},
onPanUpdate: (update) {
print('onPanUpdate is called!');
},
child: ListView.builder(
itemCount: 20,
itemBuilder: (ctx, index) => Card(
child: ListTile(
title: Text('Hi there! $index'),
),
),
),
),
Container(color: Colors.purpleAccent),
],
),
Align(
alignment: Alignment.topCenter,
child: TabBar(
controller: _controller,
labelColor: Colors.black,
indicator: UnderlineTabIndicator(
borderRadius: BorderRadius.circular(8),
borderSide: const BorderSide(
color: Colors.black,
width: 2,
),
insets: const EdgeInsets.symmetric(horizontal: -8),
),
indicatorSize: TabBarIndicatorSize.label,
isScrollable: true,
tabs: const [
Tab(
text: 'Social',
height: 36,
),
Tab(
icon: Text('Videos'),
height: 36,
),
],
),
),
],
),
)
下面是输出:
1条答案
按热度按时间kq4fsx7k1#
试试这个
或者如果
UserScrollNotification
不适合您,请选择另一种ScrollNotification