我已经实现了NestedScrollView
,这就是我的结果。
滚动前:
滚动后:
问题是:
- 在Before Scrolled 部分中,如何使默认
Live Button
值位于中间AppBar
? - 在After Scrolled 部分中,当用户滚动到顶部时,
Live Button
会从中心(默认)移动到右侧(旁边Chat Button
)。 - 在After Scrolled 部分中,当用户滚动到顶部时,不应该与,
title
重叠,而是应该在 的右边,应该在 的左边,应该在 的左边。Back Button
Live Button
Chat Button
title prefix
Back Button
title suffix
Live Button
Live Button
Chat Button
这是我的构建代码AppBar
:
Widget _customAppBar(EventEntity event) {
return SliverAppBar(
expandedHeight: 200 + _appBarHeight,
floating: false,
pinned: true,
leading: _buildNavButton(), // Back Button (Left)
actions: <Widget>[
// Live Button (Right)
event?.status != null &&
event.status == EventStatus.LIVE
? Center(child: LiveLabel(),)
: Container(),
// Chat Button (Right)
HelpButton(),
],
flexibleSpace: FlexibleSpaceBar(
centerTitle: true,
title: Text(
widget.event.name.trim(),
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 24,
),
overflow: TextOverflow.ellipsis,
maxLines: 1,
textAlign: TextAlign.center,
),
background: Hero(
tag: '--${widget.visibilityFilter} __${widget.event.id}',
child: DinoNetworkImage(
imageUrl: widget.event.image,
fit: BoxFit.contain,
),
),
),
);
}
这是build
方法:
Widget build(BuildContext context) {
return Scaffold(
key: _scaffoldKey,
body: SafeArea(
top: true,
bottom: false,
child: Stack(
fit: StackFit.expand,
children: <Widget>[
NestedScrollView(
headerSliverBuilder: (BuildContext context,
bool innerBoxIsScrolled) {
return <Widget>[
_customAppBar(widget.event),
];
},
body: SingleChildScrollView(
....
),
),
....
],
),
),
);
}
如何使我的代码发生这种情况?