Open
Description
我的需求是:点击树节点展开下一层级的时候,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的吗?为什么第三级不能正确展开呢?