flutter_fancy_tree_view 1.6.0
flutter_fancy_tree_view: ^1.6.0 copied to clipboard
A collection of widgets and slivers that helps bringing hierarchical data to life.
1.6.0 24-04-2024 #
- Added a way to set the default expansion state of tree nodes through
the
defaultExpansionState
property ofTreeController
. - Made
TreeController.toggledNodes
public for state restoration/persistence.
1.5.0 10-04-2024 #
- Fixed an issue that prevented two
AnimatedTreeView
s with the same nodes to be displayed alongside each other or on a router stack. - Follwing the updates to the Flutter Framework's
DragTarget
widget:- Added
TreeDragTarget.onWillAcceptWithDetails
- Deprecated
TreeDragTarget.onWillAccept
- Deprecated
TreeDragTarget.onAccept
- Added
1.4.1 04-10-2023 #
- Revert v1.4.0 change to
collapseCascading()
. The change broke non-cascading animations
1.4.0 04-10-2023 #
- Added
TreeController.search()
+ filtering example - Added a way to limit the depth of the tree. Checkout
IndentGuide.maxLevel
- Fixed
collapseCascading()
when used with an animated tree would only animate the first level and the other levels would just vanish immediately - Deprecated
(Descend|Return)Condition
in favor ofValuePredicate
- Deprecated
alwaysReturnsTrue
andalwaysReturnsFalse
1.3.0 13-09-2023 #
- Added pub topics to pubspec.yaml
- Indentation Improvements:
- Added a way to apply dashing algorithms to the indentation lines through
AbstractLineGuide.pathModifier
- Added an optional connection between the line of a parent node and its
subtree lines with
ConnectingLinesGuide.connectBranches
- Added the
IndentGuide.padding
property, which is added to the Padding widget that indents tree nodes - Fixed an issue with rounded corners being mistakenly offset by
ConnectingLinesGuide.origin
- Added a way to apply dashing algorithms to the indentation lines through
1.2.0 18-08-2023 #
- Upgrade to Dart 3
- Rudimentary Drag and Drop support
1.1.1 04-04-2023 #
- Fix an issue that caused some nodes to lose line hierarchy when the tree structure changes (e.g., node added/removed/reordered).
1.1.0 24-03-2023 #
- Fix refresh issue on controller change
- Author: @bambinoua (https://github.com/bambinoua)
TreeController
improvements- Added:
breadthFirstSearch()
- Added:
expandAll()
,collapseAll()
,isTreeExpanded
,isTreeCollapsed
,areAllRootsExpanded
,areAllRootsCollapsed
- Co-Author: @bambinoua (https://github.com/bambinoua)
- Added:
1.0.0 20-03-2023 #
⚠️ Warning: Major Rewrite #
Please, treat this version as a whole new package. Migrating from previous versions is discouraged as the package went through a major rewrite and has many breaking changes.
Additions:
- Dynamic "TreeNode" modeling through callbacks
IndentGuides
indentation decorations APISliverTree
andSliverAnimatedTree
sliversAnimatedTreeView
widgetTreeEntry
tree node details object
Changes:
- Renamed
TreeViewController
toTreeController
- Removed:
find()
,shouldRefresh()
,nodeRefreshed()
,refreshNode()
,reset()
,nodeAt()
,isVisible()
,indexOf()
,expandAll()
,collapseAll()
,useBinarySearch
,rootNode
,visibleNodes
,expandedNodes
- Renamed methods:
expandNode
->expand
collapseNode
->collapse
toggleExpanded
->toggleExpansion
expandSubtree
->expandCascading
collapseSubtree
->collapseCascading
expandUntil
->expandAncestors
isExpanded
->getExpansionState
- Added:
roots
,childrenProvider()
,setExpansionState()
,rebuild()
,depthFirstTraversal()
- Removed:
NodeWidgetLeadingIcon
was rewritten asFolderButton
Removals:
- Removed
nodeHeight
fromTreeView
(fixed height not required anymore) - Removed
TreeViewControllerBase
- Removed
TreeNode
andTreeNodeScope
- Removed
NodeWidget
as it was just a wrapper aroundInkWell
+Row
- Removed
ExpandNodeIcon
as it was just a wrapper aroundExpandIcon
- Removed
TreeViewTheme
,LinesWidget
,LinesPainter
andTreeLine
in favor of the newIndentGuide
+TreeIndentation
API.
0.5.3+2 01-10-2022 #
- Update [NodeWidgetLeadingIcon] icon types from [Icon] to [Widget]
- Author: @naory159 (https://github.com/naory159)
0.5.3+1 12-08-2022 #
- Fix rtl line painting bug
- Author: @naory159 (https://github.com/naory159)
0.5.3 09-08-2022 #
- Add Right-to-Left support to line painting
- Author: @naory159 (https://github.com/naory159)
0.5.2 29-06-2022 #
- Allow [TreeView.nodeHeight] to be nullable.
- Author: @mz2 (https://github.com/mz2)
0.5.1+1 10-06-2021 #
-
Fixes logic that marks nodes to refresh
Before only child nodes were getting marked as needing refresh, causing the grand children and it's subtrees not to refresh, breaking lines hierarchy.
0.5.1 10-06-2021 #
-
Adds new refreshNode Feature to [TreeViewController]
-
Updates TreeNode's [delete] and [clearChildren] logic
-
Adds linesToBeDrawn check in shouldRepaint of [LinesPainter]
-
New example App UI
0.5.0 30-05-2021 #
Reverts most changes from 0.4.0 #
-
Removing the TreeViewController made nodes inside a different page or in a drawer to lose their state.
- TreeViewController is back, all logic from _TreeViewState got moved back to it.
-
Merged the utils methods into TreeNode (ancestors, descendants, ...).
-
The TreeView no longer auto scrolls nodes.
- Now scrolling has to be done by the user.
0.4.0 17-05-2021 #
Simplification of the TreeView API. #
-
Dropped TreeViewController and merged it's logic into [TreeViewState] to make the code less 'spaghetti'. Instead of the controller, use a [GlobalKey
- Made [TreeViewState] not private anymore.
-
New scrolling functionality.
-
Added [scrollController] optional property to [TreeView].
-
Added [shouldAutoScroll] property to [TreeView].
-
Added [scrollTo] method to [TreeViewState].
-
-
Renamed ScopedTreeNode to TreeNodeScope.
-
Renamed InheritedTreeView to _TreeViewScope.
-
Removed
reversedSubtreeGenerator
fromutils.dart
as it was not being used.
0.3.1 16-04-2021 #
- Implemented rounded corners for connected lines.
0.3.0 15-04-2021 #
-
[ExpandNodeIcon] and [NodeWidgetLeadingIcon] are able to expand/collapse leaf nodes.
-
[TreeNode.children] changed from [List] to [Set] to avoid duplicate children.
-
The [TreeViewController] received a new callback.
- The new
onAboutToExpand
is useful to dynamically populate the [TreeView].
- The new
-
Some performance improvements when expanding/collapsing nodes.
0.2.1 11-04-2021 #
-
Added useBinarySearch option to TreeViewController.
-
Many performance improvements by reducing the amount of loops that expandNode and collapseNode took.
0.2.0 31-03-2021 #
-
Stable null safety release.
-
Refactoring of the entire API:
-
The old API was very "janky" with AnimatedList, TreeView now uses ListView.custom under the hood.
-
New InheritedTreeView inherited widget is used under the hood to get access to TreeViewController and TreeViewTheme from TreeView.of() method.
-
New ScopedTreeNode inherited widget, to get a TreeNode from anywhere under it in the widget tree, every TreeNode has its own ScopedTreeNode.
-
New NodeWidgetLeadingIcon for a folder/file icon approach.
-
The TreeViewController is now a ChangeNotifier, to talk to TreeView more easily.
-
TreeNode received a delete() method that removes it from the tree and clear its relationships.
-
-
Extracted the main implementation of TreeViewController to a base class to be able to change the expansion of a node without notifying listeners.
- Added some tests to TreeViewControllerBase.
-
Updated NodeWidget to a Row instead of a ListTile
- ListTile had some errors when using LinesWidget as leading.
-
Dropped support for selecting/disabling nodes as it was getting very complicated and "hacky" to manage.
-
Dropped TreeLine.link as it was complicating the indentation of nodes.
-
Plus Many upgrades and fixes.
0.1.0-nullsafety.0 12-02-2021 #
- First release.