프로젝트로 돌아가기
Flutter PackagesActive

Flutter FolderView

계층적 데이터를 트리 및 폴더 뷰로 표시하는 커스터마이징 가능한 Flutter 위젯

dartflutter

Pub Version License

개요

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.builderitemExtent를 활용하여 대량 노드 렌더링 성능을 보장한다.
  • just_tooltip 통합: Flutter 기본 Tooltip 대신 just_tooltip 패키지를 채택하여 4방향 배치, 정렬, 화살표, 다양한 애니메이션(fade, scale, slide, rotation 등)을 지원한다.
  • 제네릭 타입 지원: 모든 테마 클래스가 <T> 제네릭을 지원하여 node.data에 타입 안전하게 접근할 수 있다.

왜 주목할까?

Flutter 생태계에서 트리뷰/폴더뷰 위젯은 여럿 있지만, flutter_folderview는 폴더 모드와 트리 모드를 동시에 지원하면서도 노드 타입별 세밀한 테마 커스터마이징이 가능하다는 점에서 차별화된다. 특히 20,000개 이상의 노드에서도 성능을 유지할 수 있도록 증분 펼침/접힘, 텍스트 폭 캐싱 등 실용적인 최적화가 적용되어 있어 실무 프로젝트에서의 활용 가능성이 높다. 풍부한 툴팁 옵션과 resolver 기반 동적 스타일링은 단순한 파일 탐색기 UI를 넘어 다양한 계층 데이터 시각화 시나리오에 적용할 수 있게 한다.

댓글