Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Code Generation
- freezeD
- 다트
- 리눅스
- 파이썬
- 프로그래밍
- 가상환경
- 디자인패턴
- 유데미 코리아
- 유데미 러닝크루
- 책
- copyWIth
- 플러터
- 리버팟
- riverpod
- vscode
- python
- 도서
- 코딩
- command
- 개발자
- linux
- 개발
- ExpansionTile
- dart
- 유데미
- flutter
- 맥
- ListTile
- 명령어
Archives
- Today
- Total
승상의 코딩 블로그
[Flutter] 목록 펼치기 (서브 카테고리 만들기) 본문
한번에 페이지에 시현되는 정보가 너무 많으면, 원하는 정보를 찾기도 어려워 사용자에게 피로감을 주는 문제가 있다.
이러한 문제는 상위 카테고리를 만들어 각 항목들을 묶어줌으로써 개선할 수 있다.
카테고리로 묶어주는 보편적인 방법에는 드롭다운이 있다.
플러터에서는 ExpansionTile 을 사용하여 드롭다운 형태로 카테고리를 분류할 수 있다.
https://api.flutter.dev/flutter/material/ExpansionTile-class.html
구현
ExpansionTile 은 내부 하위 항목으로 ListTile 을 가진다.
ExpansionTileController 를 사용하면, 기본적으로 제공하는 확장/축소 버튼 이외에도 자신이 직접 확장/축소 시킬수 있다
(아래 코드에서는 미사용함.)
ExpansionTile 은 확장시, 상위 카테고리의 색상이 변경된다. textColor 를 통해 색상을 지정할 수 있다.
ExpansionTile 은 확장시, 하위 항목(ListTile)에 인덴트(들여쓰기)가 없다. childrenPadding 으로 인덴트를 줄 수 있다.
하위 항목(ListTile)간에 구분선이 없으므로, 하위 항목 사이에 Divider 를 추가하여 구분선을 만들어 줄 수 있다.
...
Column(
children: [
ExpansionTile(
title: Text('ABC Category'),
leading: Icon(Icons.abc),
childrenPadding: EdgeInsets.only(left: 56),
children: [
ListTile(
leading: Icon(Icons.airplay),
title: Text('A'),
onTap: () {}),
Divider(height: 1),
ListTile(title: Text('B'), onTap: () {}),
Divider(height: 1),
ListTile(title: Text('C'), onTap: () {}),
],
),
],
),
...
반응형
'Flutter (플러터)' 카테고리의 다른 글
[Flutter] Riverpod(리버팟) - StateProvider (2) | 2023.12.31 |
---|---|
[Flutter] Drawer 메뉴 만들기 (1) | 2023.12.26 |
[Flutter] Named Constructor, Factory Constructor (Freezed 패키지 when 함수) (0) | 2023.08.24 |
[Flutter] 반복적인 코드 작성을 막아주는 vscode snippet 만들기 (0) | 2023.08.23 |
[Flutter] 불변객체와 내부 속성을 쉽게 만들어주는 freezed 패키지 (0) | 2023.08.22 |
Comments