パッケージ、リポジトリ、アプリカテゴリを検索

flutter_tree_pro のカバー
パッケージ詳細v0.0.15

flutter_tree_pro

Flutter ツリー選択ウィジェット。ツリーノードを選択するために使用できます。RTLもサポートされています。

AndroidiOSWebmacOSWindowsLinux
30日間ダウンロード
140
いいね数
28
Pub ポイント
150

パッケージをインストール

flutter pub add flutter_tree_pro

パッケージ概要

公開情報に基づく選定ガイドです。参考としてご利用ください。

Flutter Tree Pro は、Flutter 向けのカスタマイズ可能なツリー選択ウィジェットであり、ユーザーが階層的なデータ構造を簡単にナビゲートおよび選択できるようにします。右から左へのレイアウト(RTL)をサポートしており、マルチリンガルアプリケーションに適しています。このパッケージは、Android、iOS、Web、macOS、Windows、Linux プラットフォームすべてにシームレスに統合できます。直感的なユーザーインタラクションを実現する設計により、開発者はファイルエクスプローラー、組織図、カテゴリセレクターなどの複雑なツリー型インターフェースを構築できます。軽量で柔軟なアーキテクチャにより、大規模なデータセットでもスムーズなパフォーマンスを確保します。

用途

  • ファイルエクスプローラーインターフェース
  • 組織図が表示されます
  • カテゴリーフィルターシステム
  • 階層的データ選択
  • 設定ナビゲーションメニュー

主な機能

  • RTL 対応
  • クロスプラットフォーム互換性
  • カスタマイズ可能なノードスタイル
  • 大規模なツリー構造の効率的なレンダリング
  • 複数選択機能

適している対象

  • 階層的なUIを構築する開発者
  • ツリー構造のナビゲーションを必要とするアプリ
  • 国際化アプリケーション
  • 複雑なデータ構造の可視化
  • 共有コードベースを備えたWebおよびモバイルアプリ

注意事項

  • 複雑なテーマに対応するにはカスタムスタイルが必要になる場合があります
  • 非常に深いツリー構造によるパフォーマンスへの影響
  • 制限された組み込みアニメーション
  • ステート管理を手動で処理する必要があります
  • リアルタイム共同編集には最適化されていません

元の README

関連するソースリポジトリの README 原文のスナップショットです。最新の内容はリポジトリをご覧ください。

flutter_tree_pro

A Flutter tree-select widget with checkbox selection, single-select mode, RTL support, and leaf-node drag-and-drop.

Demo

flutter_tree demo

Features

  • Build tree data from flat list (DataType.DataList) or nested map (DataType.DataMap)
  • Multi-select with parent/child check-state synchronization
  • Single-select mode with initial selected node
  • Expand/collapse nodes
  • RTL layout support
  • Custom tree connector line style (TreeLineStyle)
  • Drag-and-drop for leaf nodes
    • Drop on a non-leaf node: dragged leaf becomes a child of that node
    • Drop on a leaf node: dragged leaf is inserted after target leaf as a sibling

Installation

Add dependency to your pubspec.yaml:

dependencies:
  flutter_tree_pro: ^0.0.16

Then run:

flutter pub get

Quick Start (DataList)

import 'package:flutter/material.dart';
import 'package:flutter_tree_pro/flutter_tree_pro.dart';

class TreeDemo extends StatefulWidget {
  const TreeDemo({super.key});

  @override
  State<TreeDemo> createState() => _TreeDemoState();
}

class _TreeDemoState extends State<TreeDemo> {
  final List<Map<String, dynamic>> listData = [
    {'id': 1001, 'parentId': 0, 'value': 'USA'},
    {'id': 1002, 'parentId': 1001, 'value': 'California'},
    {'id': 1003, 'parentId': 1002, 'value': 'San Francisco'},
    {'id': 1004, 'parentId': 1001, 'value': 'New York'},
  ];

  final List<Map<String, dynamic>> initialListData = [
    {'id': 1003, 'parentId': 1002, 'value': 'San Francisco'},
  ];

  List<Map<String, dynamic>> checked = [];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('flutter_tree_pro')),
      body: FlutterTreePro(
        listData: listData,
        initialListData: initialListData,
        isExpanded: true,
        isRTL: false,
        isSingleSelect: false,
        config: const Config(
          dataType: DataType.DataList,
          id: 'id',
          parentId: 'parentId',
          label: 'value',
          children: 'children',
          lineStyle: TreeLineStyle(
            color: Color(0xFFE0E0E0),
            width: 1.0,
            indent: 28,
            showVerticalLine: true,
            showHorizontalLine: true,
          ),
        ),
        onChecked: (items) {
          setState(() {
            checked = items;
          });
        },
      ),
    );
  }
}

Data Source Modes

DataType.DataList

Use flat list data with id + parentId and pass it through listData.

Required fields in each item (or mapped by Config):

  • id
  • parentId
  • label (for display text)
DataType.DataMap

Use nested tree data with children and pass it through treeData.

If treeData is empty and initialTreeData is provided, initialTreeData will be used as fallback root data.

API

FlutterTreePro parameters
Parameter Type Default Description
treeData List<Map<String, dynamic>> const [] Tree source for DataMap mode
listData List<Map<String, dynamic>> const [] Flat source for DataList mode
initialTreeData Map<String, dynamic> const {} Fallback root tree node when treeData is empty
initialListData List<Map<String, dynamic>> const [] Initial checked items in multi-select mode
config Config const Config() Field mapping and tree style config
onChecked Function(List<Map<String, dynamic>>) required Selection callback
isExpanded bool false Expand all nodes initially
isRTL bool false Enable right-to-left layout
isSingleSelect bool false Enable single-select mode
initialSelectValue int 0 Initial selected node ID in single-select mode
Config
Field Type Default Description
dataType DataType DataType.DataMap Data mode
id String 'id' Node ID key
parentId String 'parentId' Parent ID key
label String 'label' Display text key
value String 'value' Reserved compatibility field
children String 'children' Children key
lineStyle TreeLineStyle const TreeLineStyle() Connector line style
TreeLineStyle
Field Type Default Description
color Color Color(0xFFD9D9D9) Line color
width double 1.0 Line width
indent double 24.0 Per-level indentation
showVerticalLine bool true Show vertical connectors
showHorizontalLine bool true Show horizontal connectors

Drag-and-Drop Rules

  • Only leaf nodes can be dragged.
  • A node cannot be dropped onto itself.
  • A node cannot be dropped directly onto its current parent.
  • Drop on a leaf node inserts after that target leaf, keeping the same parent level.
  • Drop on a non-leaf node appends as the target node's child.

Notes

  • In multi-select mode, onChecked returns checked leaf nodes after internal filtering/deduplication.
  • In single-select mode, onChecked returns at most one selected node.
  • Config.value is reserved for compatibility and is not used by current select-state logic.

Example Project

See /example for a runnable demo:

cd example
flutter pub get
flutter run

License

MIT

カテゴリー

ソースリポジトリ

このパッケージを使用しているプロジェクト

データはまだありません。