Using SliverGrid will provide better experience in my opinion.
class GroupingItem extends StatelessWidget {
const GroupingItem({super.key});
@override
Widget build(BuildContext context) {
final List<String> vehicles = ["Car", 'Motor'];
final List<String> animals = ["Cat", 'Dog'];
return Scaffold(
body: CustomScrollView(
slivers: [
SliverToBoxAdapter(child: Text("Vehicles")),
SliverGrid.count(
crossAxisCount: 3,
crossAxisSpacing: 10,
mainAxisSpacing: 10,
children: vehicles
.map(
(e) => buildItem(e),
)
.toList(),
),
SliverToBoxAdapter(child: Text("Animals")),
SliverGrid.builder(
//better
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 3,
crossAxisSpacing: 10,
mainAxisSpacing: 10,
),
itemBuilder: (context, index) {
return buildItem(animals[index]);
},
itemCount: animals.length,
)
],
),
);
}
Container buildItem(String e) {
return Container(
decoration: BoxDecoration(
color: Colors.blue,
borderRadius: BorderRadius.circular(9),
),
alignment: Alignment.center,
child: Text(e));
}
}