Skip to content

children动态变化的问题 #3

Open
@letica

Description

@letica

我的需求是:点击树节点展开下一层级的时候,children 动态加载
实现方法是:在 tree_node 中添加了 didUpdateWidget 方法来监听 widget 变化
问题:目前只有第二级可以正常加载,第三级就监听不到 children 的变化了……

下面是相关代码:

这是生成TreeNode节点:

TreeNode(
          id: item['id'],
          parentId: item['parentId'],
          name: item['name'],
          count: item['count'] ?? 0,
          checked: item['checked'] ?? false,
          children: item['children'],  // 这个 item['children'] 是在点击展开的时候调用下面的 onExpand 动态赋值的
          onExpand: () {
            if (getDataFunc != null && getDataFunc is Function) {
              getDataFunc(item, i);  //这里会动态请求数据,然后赋值给children
            }
          },
        )

这是TreeNode class 中的 didUpdateWidget,点击展开第一级可以监听到children变化并正确展开第二级,但是点击第二级的时候就监听不到children变化了,children正确赋值了:

 @override
  void didUpdateWidget(MaterialTreeNode oldWidget) {
    if (oldWidget.children != widget.children && widget.children != null) {
      setState(() {
        _children = widget.children;
      });
    }
    super.didUpdateWidget(oldWidget);
  }

不知道我表述清楚了没,请教一下这么实现是ok的吗?为什么第三级不能正确展开呢?

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions