You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter Animated Tree View:SliverTreeView加载后如何折叠所有节点?

解决SliverTreeView默认展开所有节点且onTreeReady折叠无效的问题

可能的原因

onTreeReady的触发时机可能早于树的实际渲染完成,直接调用collapseNode无法生效;或者未指定递归折叠子节点,导致根节点折叠后子节点仍处于展开状态。

解决方案

方案1:延迟执行折叠操作

利用Future.delayed(Duration.zero)将折叠操作放到微任务队列,确保树完成渲染后再执行,同时加上recursive: true递归折叠所有子节点:

SliverTreeView.simple(
    tree: simpleTree,
    expansionBehavior: ExpansionBehavior.collapseOthers,
    showRootNode: false,
    key: _simpleTreeKey,
    onTreeReady: (controller) {
      Future.delayed(Duration.zero, () {
        // 递归折叠根节点及所有子节点
        controller.collapseNode(simpleTree, recursive: true);
      });
    },
    scrollController: scrollController,
    builder: (context, node) => Card(
        child: node.isRoot ? buildRootItem(node) : buildListItem(node)),
  ),

方案2:初始化时设置所有节点为折叠状态

在构建simpleTree时,直接给每个节点设置expanded: false,从根源避免默认展开:

// 示例构建折叠状态的树结构
final simpleTree = TreeNode.root(
  children: [
    TreeNode(
      data: "父节点1",
      expanded: false,
      children: [
        TreeNode(data: "子节点1-1", expanded: false),
        TreeNode(data: "子节点1-2", expanded: false),
      ],
    ),
    TreeNode(
      data: "父节点2",
      expanded: false,
      children: [
        TreeNode(data: "子节点2-1", expanded: false),
      ],
    ),
  ],
);

方案3:提前初始化TreeController并配置默认折叠

提前创建TreeController并设置allNodesExpanded: false,将其传入SliverTreeView,无需依赖onTreeReady:

late final TreeController _treeController;

@override
void initState() {
  super.initState();
  // 初始化控制器时指定所有节点默认折叠
  _treeController = TreeController(allNodesExpanded: false);
}

// 在SliverTreeView中使用该控制器
SliverTreeView.simple(
    tree: simpleTree,
    controller: _treeController, // 传入自定义控制器
    expansionBehavior: ExpansionBehavior.collapseOthers,
    showRootNode: false,
    key: _simpleTreeKey,
    scrollController: scrollController,
    builder: (context, node) => Card(
        child: node.isRoot ? buildRootItem(node) : buildListItem(node)),
  ),

内容的提问来源于stack exchange,提问作者Dev Conductor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 06:49:56