【发布时间】:2020-05-17 09:47:39
【问题描述】:
This is a repository 创建一个最小的可重现示例。
当ScrollablePositionedList.builder 被滚动时,我想隐藏SliverAppBar。这是我在这里包含的相关代码。
NestedScrollView(
headerSliverBuilder: (context, innerBoxIsScrolled) => [
SliverAppBar(
backgroundColor: Colors.blue,
expandedHeight: 112,
snap: true,
pinned: false,
floating: true,
forceElevated: true,
actions: <Widget>[
IconButton(
icon: Icon(Icons.event),
)
],
flexibleSpace: SafeArea(
child: Column(
children: <Widget>[
Container(
height: kToolbarHeight,
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'Title',
style: Theme.of(context)
.textTheme
.title
.copyWith(
fontSize: 16, color: Colors.white),
),
SizedBox(
height: 2,
),
Text(
'Date',
style: Theme.of(context)
.textTheme
.caption
.copyWith(
fontSize: 10, color: Colors.white),
),
SizedBox(
height: 2,
),
Text(
'Another Text',
style: Theme.of(context)
.textTheme
.subtitle
.copyWith(
fontSize: 14, color: Colors.white),
),
],
),
),
Expanded(
child: Container(
height: kToolbarHeight,
width: MediaQuery.of(context).size.width,
color: Colors.white,
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceEvenly,
children: <Widget>[
Text(
'Prev',
),
Text(
'Next',
)
],
),
),
)
],
),
),
)
],
body: ScrollablePositionedList.builder(
physics: ScrollPhysics(),
itemPositionsListener: itemPositionListener,
itemScrollController: _itemScrollController,
initialScrollIndex: 0,
itemCount: 500,
itemBuilder: (BuildContext ctxt, int index) {
return Container(
margin: EdgeInsets.all(16)
,
child: Text('$index'));
})),
到目前为止,我尝试了两种方法都无法正常工作,
方法 1
我将
physics: ScrollPhysics(),添加到ScrollablePositionedList.builder
输出:
方法 2
我将
physics: NeverScrollableScrollPhysics(),添加到ScrollablePositionedList.builder
SliverAppBar 这次隐藏了,但现在我无法滚动到ScrollablePositionedList.builder 的最后,我的列表中有 500 个项目,但它只能滚动到第 14 个项目,请参阅输出。此外,它在滚动时滞后太多
输出:
提前致谢。
【问题讨论】:
-
您为什么不尝试基于 customScroll 视图的方法,如此处所示。 flutter.dev/docs/cookbook/lists/floating-app-bar
-
因为ScrollablePositionedList 允许滚动到特定项目。
-
这里有同样的问题,为什么 Flutter 团队之外的任何东西都不起作用,太令人沮丧了。除了核心 Flutter UI 之外的任何东西都不能一直运行良好
标签: flutter flutter-layout nestedscrollview scroll-position sliverappbar