gpt4 book ai didi

android - 模拟谷歌播放应用程序中看到的水平图像列表

转载 作者:行者123 更新时间:2023-11-29 18:25:17 24 4
gpt4 key购买 nike

我想创建一个小部件,其行为方式与 google play 应用中的水平滚动列表(例如推荐的应用)相同。

我的意思的一个例子:

enter image description here

我曾尝试使用页面查看器小部件,但它并没有做同样的事情。一些值得注意的事实:

1) 3 张完全正方形的图像完全可见,另一张显示部分。第二个(绿色的)就在中间。

2) 最左边的图片(蓝色)与标题“为您推荐”完美对齐

3) 所有 4 个正方形图像都有圆角。

4) 支持元素捕捉

这是我能够使用 PageView 小部件模拟此行为的最佳结果:

enter image description here

  • 红色是包含综合浏览量的容器的背景色。
  • 绿色是偶数项的颜色,蓝色是奇数项的颜色
  • 在每个项目中添加一张 100x100 的图像。

这是代码:

  return Container(
width: double.infinity,
color: Colors.red,
height: 100,
child:
PageView(
pageSnapping: true,
controller:
PageController(initialPage: 1, viewportFraction: 0.315),
children: List<Widget>.generate(10, (index) {
return Container(
color: index%2 ==0 ? Colors.green : Colors.blue,
child:Image.network("http://via.placeholder.com/100x100",
fit: BoxFit.fitHeight)
);
})));

在我的代码中,有 2 件事是行不通的:

1) 我无法从右侧显示一个部分可见的项目,仅通过使用 viewportFraction 来保持 3 个完全可见的项目和第二个完全居中,就像在原始图像形式 google play 中一样。

2) 我无法将圆角应用于项目图像,因为如您所见,容器不是方形的,但图像是方形的。因此,当我应用 ClipRRect 时,它没有正确应用。我试图添加另一个容器,将其大小强制为 100x100,并在此容器内的图像上应用 ClipRRect,但当它位于 PageView 内时,给定的宽度/高度似乎无效。它们似乎由 PageView 在内部控制。

那么,有人可以帮助解决这个问题以获得与 google play 水平滚动列表具有相同行为的东西吗?

干杯!

最佳答案

class SO extends StatelessWidget {
@override
Widget build(BuildContext context) {
double edge = 120.0;
double padding = edge / 10.0;
return Scaffold(
appBar: AppBar(),
body: Container(
color: Colors.red,
padding: const EdgeInsets.symmetric(vertical: 8),
child: SingleChildScrollView(
scrollDirection: Axis.horizontal,
child: Row(
children: [
for (int i = 0; i < 10; i++)
Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Padding(
padding: EdgeInsets.all(padding),
child: ClipRRect(
borderRadius: BorderRadius.all(Radius.circular(edge * .2)),
child: Container(
width: edge,
height: edge,
color: Colors.blue,
child: Image.network("http://via.placeholder.com/${edge.round()}x${edge.round()}", fit: BoxFit.fitHeight),
),
),
),
Container(
width: edge + padding,
padding: EdgeInsets.only(left: padding),
child: Text(
'foo app bar baz app apk',
maxLines: 2,
overflow: TextOverflow.ellipsis,
),
),
Padding(
padding: EdgeInsets.only(left: padding),
child: Row(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Text('4.2'),
Icon(
Icons.star,
size: 16,
)
],
),
),
],
)
],
),
),
),
);
}
}

给出

screenshot

关于android - 模拟谷歌播放应用程序中看到的水平图像列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59439515/

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