Flutter PackagesActive
Flutter FolderView
계층적 데이터를 트리 및 폴더 뷰로 표시하는 커스터마이징 가능한 Flutter 위젯
dartflutter
개요
Flutter FolderView는 계층적 데이터를 트리(tree)와 폴더(folder) 형태로 시각화하는 Flutter 위젯이다. 파일 탐색기처럼 폴더 → 하위 폴더 → 파일 구조를 그대로 표현할 수 있으며, 세 가지 노드 타입(folder, parent, child)과 두 가지 뷰 모드(folder, tree)를 지원한다.
주요 기능
- 듀얼 뷰 모드: 계층적 폴더 구조(
ViewMode.folder)와 평탄화된 트리 구조(ViewMode.tree) 간 전환 - 다양한 라인 스타일: 커넥터(
├─ └─), 스코프(수직선), 없음 세 가지 선택 - 풍부한 테마 시스템: 노드 타입별 아이콘, 텍스트 스타일, 호버/클릭 색상, 위젯 등 세밀한 커스터마이징
- 노드별 툴팁:
just_tooltip기반의 4방향 툴팁 지원 — 화살표, 애니메이션, 프로그래밍 제어 가능 - 동적 스타일링: resolver 함수를 통해 노드 데이터에 따라 아이콘, 텍스트, 라벨을 런타임에 결정
- 대규모 데이터 최적화: 20,000+ 노드에서도 부드러운 스크롤 (증분 펼침/접힘, 텍스트 폭 캐싱, lazy 측정)
- 동기화된 스크롤: 수평/수직 스크롤바 동기화 및 커스텀 스크롤바 테마
지원 플랫폼
Android, iOS, Web, macOS, Windows, Linux
기술적 특징
- 불변 노드 모델: v0.5.0부터
Node에서isExpanded상태를 제거하고, 외부에서expandedNodeIds를 주입하는 방식으로 전환하여 상태 관리의 유연성을 확보했다. - 성능 최적화:
ValueNotifier로 불필요한 위젯 트리 리빌드를 방지하고,FlattenService에서 재귀 리스트 스프레딩 대신 단일 mutable 리스트를 재사용한다.ListView.builder와itemExtent를 활용하여 대량 노드 렌더링 성능을 보장한다. - just_tooltip 통합: Flutter 기본 Tooltip 대신
just_tooltip패키지를 채택하여 4방향 배치, 정렬, 화살표, 다양한 애니메이션(fade, scale, slide, rotation 등)을 지원한다. - 제네릭 타입 지원: 모든 테마 클래스가
<T>제네릭을 지원하여node.data에 타입 안전하게 접근할 수 있다.
왜 주목할까?
Flutter 생태계에서 트리뷰/폴더뷰 위젯은 여럿 있지만, flutter_folderview는 폴더 모드와 트리 모드를 동시에 지원하면서도 노드 타입별 세밀한 테마 커스터마이징이 가능하다는 점에서 차별화된다. 특히 20,000개 이상의 노드에서도 성능을 유지할 수 있도록 증분 펼침/접힘, 텍스트 폭 캐싱 등 실용적인 최적화가 적용되어 있어 실무 프로젝트에서의 활용 가능성이 높다. 풍부한 툴팁 옵션과 resolver 기반 동적 스타일링은 단순한 파일 탐색기 UI를 넘어 다양한 계층 데이터 시각화 시나리오에 적용할 수 있게 한다.