Map<String, List<String>> treeData = {
'': [''],
}.obs;
void updateTreeData(Map<String, List<String>> data) {
treeData = data;
}
**AController myController = Get.put(AController());**
void generateSampleTree(TreeNode parent) {
**final childrenIds = myController.treeData[parent.id];**
if (childrenIds == null) return;
parent.addChildren(
childrenIds.map(
(String childId) => TreeNode(id: childId, label: childId),
),
);
parent.children.forEach(generateSampleTree);
}
late final TreeViewController treeController;
const String kRootId = '#root#';
final rootNode = TreeNode(id: kRootId, label: kRootId);
generateSampleTree(rootNode);
treeController = TreeViewController(
rootNode: rootNode,
);
final root = treeController.find('/');
if(root != null){
log('get...' + root.id);
treeController.expandNode(root);
}
final treeViewTheme = ValueNotifier(const TreeViewTheme());
late final scrollController = ScrollController();
ValueListenableBuilder<TreeViewTheme>(
valueListenable: treeViewTheme,
builder: (_, treeViewTheme, __) {
return Scrollbar(
thumbVisibility: false,
controller: scrollController,
child: TreeView(
controller: treeController,
theme: treeViewTheme,
scrollController: scrollController,
nodeHeight: nodeHeight.value,
nodeBuilder: (BuildContext context, TreeNode node) {
return InkWell(
onTap: () {
//------------
},
onLongPress: () {
// appController.toggleSelection(nodeScope.node.id)
},
child: ValueListenableBuilder<ExpansionButtonType>(
valueListenable: expansionButtonType,
builder: (context, ExpansionButtonType buttonType, __) {
return Row(
children: [
const LinesWidget(),
NodeWidgetLeadingIcon(
useFoldersOnly: true,
),
const SizedBox(width: 1),
Text(node.label, overflow: TextOverflow.ellipsis),
]
);
},
),
);
},
),
);
},
),
final root = {
'#root#': ['/']
};
root['/'] = ['aaa', 'bbb'];
myController.updateTreeData(root);
but it can not update.