gpt4 book ai didi

Flutter:如何设置 SliverAppBar 默认折叠

转载 作者:IT王子 更新时间:2023-10-29 06:56:34 24 4
gpt4 key购买 nike

我是使用 flutter 的新手,当我编写我的应用程序时,我遇到了一个问题,即如何默认设置 SliverAppBar 折叠状态。为了解决我的困惑,我查看了 flutter 的文档,不幸的是我找不到解决方案,所以我来了。

下面是我的代码,如果你知道如何解决它,请帮助我。谢谢大家。

class CollapsingBarLayoutState extends State<CollapsingBarLayout>
with TickerProviderStateMixin {
final List<ListItem> listData = [];

@override
Widget build(BuildContext context) {
for (int i = 0; i < 20; i++) {
listData.add(new ListItem("$i", Icons.cake));
}
return Scaffold(
body: NestedScrollView(
headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {
return <Widget>[
SliverAppBar(
expandedHeight: 200.0,
pinned: true,
centerTitle: false,
snap: true,
floating: true,
titleSpacing: 0,
backgroundColor: Colors.green,
flexibleSpace: FlexibleSpaceBar(
centerTitle: true,
title: Center(
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: _buildBriefCalendarChildren(),
),
),
background: GridPage(
children: _buildCalendarPageChildren(),
column: 7,
row: 5,
)),
),
];
},
body: Center(
child: new ListView.builder(
itemBuilder: (BuildContext context, int index) {
return new ListItemWidget(listData[index]);
},
itemCount: listData.length,
),
),
),
);
}
}

最佳答案

有个不错的插件https://pub.dev/packages/after_layout我在这样的情况下使用过。只需添加一个 mixin,然后您需要实现的唯一方法将如下所示:

  void afterFirstLayout(BuildContext context) {
_scrollController //scroll controller of your list view under sliver
.animateTo((expandedHeight) - collapsedHeight,
duration: new Duration(milliseconds: 1),//0 dont work as duration
curve: Curves.linear)
.then((_) {
setState(() {
expandedPercentage = 0; //just my custom tracking of expansion percentage
});
});
}

编辑 - 更好的解决方案:初始化一个 new ScrollController(initialScrollOffset: expandedHeight - collapsedHeight); 并将其作为 controller 传递给您的 NestedScrollView

关于Flutter:如何设置 SliverAppBar 默认折叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56635214/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com