我正在尝试为两行小部件设置动画,以作为一个滚动折叠成 1 行这些小部件。我正在尝试在SliverAppBar
.
为了澄清起见,我在此处包含了一个 GIF 以供参考。我希望您在应用栏中看到的行为,但不是 1 行到 2,我希望 2 行变为 1。
这是我迄今为止所拥有的快速片段。我将Row
包含 3shrinkableBox
个小部件的2个小部件包装到一个Wrap
小部件中。我通过挂钩_scrollController.offset
并进行一些计算来动态调整这些框的大小。这些行确实会动态移动,但它们不会动画化,而是突然移动。
double kExpandedHeight = 300.0;
Widget build(BuildContext context) {
double size = !_scrollController.hasClients || _scrollController.offset == 0 ? 75.0 : 75 - math.min(45.0, (45 / kExpandedHeight * math.min(_scrollController.offset, kExpandedHeight) * 1.5));
return Scaffold(
body: CustomScrollView(
controller: _scrollController,
slivers: <Widget>[
SliverAppBar(
pinned: true,
expandedHeight: kExpandedHeight,
title: new Text(
"Title!",
),
bottom: PreferredSize(child: Wrap(
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.center, …
Run Code Online (Sandbox Code Playgroud)