[英]How to achieve horizontal grid scroll with sliver
如何使用sliver:[]
获得类似于此示例的水平网格视图。 我尝试使用此处给出的示例,但它在子项中使用多个容器来获得所需的结果。 还尝试将其提供给 list.generate,但这似乎不起作用,或者我真的不知道如何使用它。
注意:我在 [ ] 里面还有其他多个滚动列表
这是我正在做的工作,但它以列表形式出现:
body: CustomScrollView(
slivers: [
SliverPadding(
padding: EdgeInsets.symmetric(horizontal: 16.0),
sliver: SliverGrid(
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
childAspectRatio: 2,
crossAxisSpacing: 16,
mainAxisSpacing: 16,
crossAxisCount: 2,
),
delegate: SliverChildBuilderDelegate(
(BuildContext context, int i) {
return InkWell(
onTap: () {},
child: ClipRRect(
clipBehavior: Clip.antiAlias,
borderRadius: BorderRadius.circular(8),
child: Container(
height: 200,
width: double.infinity,
decoration: BoxDecoration(
image: DecorationImage(
image:
CachedNetworkImageProvider('categoryImage'),
fit: BoxFit.cover,
onError: (exception, stackTrace) =>
LoadingImage(),
),
gradient: const LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [
Color(0x1FFFFFFF),
Color(0x463B3B3B),
],
),
borderRadius: BorderRadius.circular(8),
boxShadow: [
BoxShadow(
color: Colors.grey.shade900,
offset: const Offset(1, 1),
spreadRadius: 1,
blurRadius: 50,
blurStyle: BlurStyle.outer),
]),
child: Container(
padding: const EdgeInsets.all(10),
height: 100,
color: Colors.transparent,
alignment: Alignment.bottomLeft,
width: double.infinity,
child: Text(
"title",
overflow: TextOverflow.ellipsis,
style: Theme.of(context).textTheme.bodyText1!,
),
),
),
),
);
},
childCount: count.length,
),
),
),
],
)
只需在CustomScrollView
中添加scrollDirection: Axis.horizontal,
,只需更改我的图像,希望对您有所帮助
完整的小部件:
CustomScrollView(
scrollDirection: Axis.horizontal,
slivers: [
SliverPadding(
padding: EdgeInsets.symmetric(horizontal: 16.0),
sliver: SliverGrid(
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
childAspectRatio: 2,
crossAxisSpacing: 16,
mainAxisSpacing: 16,
crossAxisCount: 2,
),
delegate: SliverChildBuilderDelegate(
(BuildContext context, int i) {
return InkWell(
onTap: () {},
child: ClipRRect(
clipBehavior: Clip.antiAlias,
borderRadius: BorderRadius.circular(8),
child: Container(
height: 200,
width: double.infinity,
decoration: BoxDecoration(
image: DecorationImage(
image: NetworkImage(
'https://storage.googleapis.com/cms-storage-bucket/a9d6ce81aee44ae017ee.png'),
),
gradient: const LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [
Color(0x1FFFFFFF),
Color(0x463B3B3B),
],
),
borderRadius: BorderRadius.circular(8),
boxShadow: [
BoxShadow(
color: Colors.grey.shade900,
offset: const Offset(1, 1),
spreadRadius: 1,
blurRadius: 50,
blurStyle: BlurStyle.outer),
]),
child: Container(
padding: const EdgeInsets.all(10),
height: 100,
color: Colors.transparent,
alignment: Alignment.bottomLeft,
width: double.infinity,
child: Text(
"title",
overflow: TextOverflow.ellipsis,
style: Theme.of(context).textTheme.bodyText1!,
),
),
),
),
);
},
childCount: 20,
),
),
),
],
),
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.