【发布时间】:2019-09-22 15:48:07
【问题描述】:
我需要创建一个重叠的综合浏览量集合,但由于项目的绘制/布局顺序,第二页总是显示在第一页的前面。有没有办法创建一个集合列表,其中第一个项目与其他项目重叠?
PAGE BUILDER ->
Widget buildList(PreloadPageController pageController, List data,
double currentPosition) {
return AspectRatio(
aspectRatio: 12.0 / 15.0,
child: PreloadPageView.builder(
itemCount: data.length,
controller: pageController,
preloadPagesCount: 2,
itemBuilder: (context, index) {
return CardWidget(
page: index,
currentPage: currentPosition,
);
},
),
);
}
CARD WIDGET ->
Widget build(BuildContext context) {
return LayoutBuilder(builder: (context, contraints) {
final double padding = 20.0;
var delta = currentPage - page;
var start = padding * delta.abs() * 10;
var top = padding + padding * max(-delta, 0.0);
var bottom = padding + padding * max(-delta, 0.0);
//print(start);
return Transform.translate(
offset: Offset(-start, 0),
child: Container(
padding: EdgeInsets.only(top: top, bottom: bottom),
child: ClipRRect(
borderRadius: BorderRadius.circular(16.0),
child: Container(
color: _randomColor(page),
),
),
),
);
});
}
我希望创建一个集合效果,这样第二页就会出现在第一页的后面,但实际上第二页总是与第一页重叠。
我可以在 PageView.builder 中使用reverse,但是这个集合需要是一个无限列表,当它到达末尾时会加载更多数据,而使用reverse,代码会更复杂。
我正在实现这一目标:
但我想要的是红色卡片后面的蓝色卡片。
【问题讨论】:
-
尝试使用 Stack 小部件。 api.flutter.dev/flutter/widgets/Stack-class.html
-
嗨!你说使用 Stack 而不是 PageView?我试过了,但是使用 Stack 小部件时,我会消耗大量内存,导致应用程序在开始加载更多数据时崩溃。
-
这方面有什么更新吗?
-
我最终使用了 PageView.builder 的 reverse 属性,但我不得不放弃无休止的滚动页面。
标签: flutter dart flutter-layout