[flutter] ListView에 아이템 그룹핑하기
Flutter 앱을 개발할 때, ListView 위젯을 사용하면 화면에 스크롤 가능한 목록을 표시할 수 있습니다. ListView는 대량의 데이터를 효율적으로 표시하는 데 유용한데, 이번에는 ListView에 다양한 항목들을 그룹핑하여 표시하는 방법에 대해 알아보겠습니다.
ListView.builder로 그룹핑된 아이템 표시하기
ListView.builder를 사용하여 그룹화된 아이템을 표시하는 것은 매우 간단합니다. 아래는 간단한 예제 코드입니다.
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('그룹핑된 아이템')),
body: ListView.builder(
itemCount: _groupedItems.length,
itemBuilder: (BuildContext context, int index) {
return _buildGroupedItem(_groupedItems[index]);
},
),
),
);
}
}
List<String> _groupedItems = [
'그룹 1 - 아이템 1',
'그룹 1 - 아이템 2',
'그룹 2 - 아이템 1',
'그룹 2 - 아이템 2',
];
Widget _buildGroupedItem(String item) {
return ListTile(
title: Text(item),
);
}
위 예제에서 ListView.builder가 _groupedItems
목록의 각 항목을 받아와서 _buildGroupedItem
함수로 전달하여 각 그룹에 있는 아이템들을 표시합니다.
ListView를 사용하여 그룹핑하기
만약 ListView.builder를 사용하는 것보다 더 많은 제어를 원한다면, ListView를 직접 사용하여 그룹핑된 목록을 만들 수 있습니다.
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('그룹핑된 아이템')),
body: ListView(
children: _groupedItems
.map((group) => Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
group.title,
style: TextStyle(
fontSize: 18,
fontWeight: FontWeight.bold,
),
),
),
Column(
children: group.items
.map((item) => ListTile(title: Text(item)))
.toList(),
),
],
))
.toList(),
),
),
);
}
}
class Group {
final String title;
final List<String> items;
Group(this.title, this.items);
}
List<Group> _groupedItems = [
Group('그룹 1', ['아이템 1', '아이템 2']),
Group('그룹 2', ['아이템 3', '아이템 4']),
];
위 예제에서 ListView는 _groupedItems
목록을 반복하면서 각 그룹의 제목과 항목들을 표시합니다.
이러한 방법을 사용하여 ListView를 그룹핑하여 편리하게 다양한 목록 데이터를 표시할 수 있습니다.
요약
ListView를 사용하여 그룹핑된 아이템들을 표시하는 방법을 살펴보았습니다. ListView.builder나 ListView를 사용하여 효율적으로 그룹핑된 목록을 만들 수 있습니다. 이러한 방법을 사용하면 다양한 구조의 데이터를 가진 앱을 개발할 때 효과적으로 화면에 표시할 수 있습니다.