Flutter 组件抽取:自适应每行最高 item 高度的 GridView(OptionGridView)
以下是一个简化的OptionGridView
组件,它使用GridView
来展示一个列表,并且每个子项都有自己的高度,高度由其内容决定,从而实现每行高度自适应。
import 'package:flutter/material.dart';
class OptionGridView extends StatelessWidget {
final List<Widget> items;
final int crossAxisCount;
const OptionGridView({
Key? key,
required this.items,
this.crossAxisCount = 3,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return GridView.builder(
physics: NeverScrollableScrollPhysics(), // 防止GridView滚动
shrinkWrap: true, // 根据子组件的实际高度来包装
itemCount: items.length,
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: crossAxisCount, // 每行的item数量
mainAxisSpacing: 4.0, // 主轴方向的间距
crossAxisSpacing: 4.0, // 交叉轴方向的间距
childAspectRatio: 1.0, // 子widget的宽高比例
),
itemBuilder: (context, index) {
return items[index];
},
);
}
}
使用OptionGridView
时,你只需要提供一个items
列表,并且可以通过crossAxisCount
来设置每行想要展示的Item
数量。每个Item
的高度会根据其内容自适应。
评论已关闭