From 0145aaa31a2ec4877797a82da7d93ae55d3c6840 Mon Sep 17 00:00:00 2001 From: jvenin Date: Mon, 29 Apr 2024 16:45:36 +0200 Subject: [PATCH] fix: skeleton change --- .../header2/widgets/chunks/skeleton.dart | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/lib/widgets/header2/widgets/chunks/skeleton.dart b/lib/widgets/header2/widgets/chunks/skeleton.dart index 15be774..676891e 100644 --- a/lib/widgets/header2/widgets/chunks/skeleton.dart +++ b/lib/widgets/header2/widgets/chunks/skeleton.dart @@ -1,5 +1,6 @@ import 'package:animated_tree_view/animated_tree_view.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/widgets.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:paraworld_gsf_viewer/classes/gsf/header2/chunks/bone.dart'; import 'package:paraworld_gsf_viewer/classes/gsf/header2/chunks/skeleton.dart'; @@ -89,9 +90,10 @@ class BoneTreeDisplay extends ConsumerStatefulWidget { } class _BoneTreeDisplayState extends ConsumerState { - late final TreeNode _computedBoneTree = TreeNode.root( + late TreeNode _computedBoneTree = TreeNode.root( data: widget.bones.first, ); + TreeViewController? _controller; createBranchFromBone(Bone bone, TreeNode node) { final children = widget.boneTree[bone.guid.value]!.children; @@ -112,6 +114,22 @@ class _BoneTreeDisplayState extends ConsumerState { super.initState(); } + @override + void didUpdateWidget(BoneTreeDisplay oldWidget) { + if (oldWidget.bones != widget.bones) { + _computedBoneTree = TreeNode.root( + data: widget.bones.first, + ); + createBranchFromBone(widget.bones.first, _computedBoneTree); + } + if (_controller != null) { + WidgetsBinding.instance.addPostFrameCallback((_) { + _controller!.expandAllChildren(_computedBoneTree); + }); + } + super.didUpdateWidget(oldWidget); + } + @override Widget build(BuildContext context) { final theme = Theme.of(context); @@ -127,7 +145,8 @@ class _BoneTreeDisplayState extends ConsumerState { child: TreeView.simpleTyped>( shrinkWrap: true, onTreeReady: (controller) { - controller.expandAllChildren(_computedBoneTree); + _controller = controller; + _controller!.expandAllChildren(_computedBoneTree); }, builder: (context, node) { return ListTile(