我对飞行和 dart 还是个新手。我正在尝试使用GraphView库绘制树视图。我能够生成树,平移也工作得很好。主要问题是树节点必须是可点击的,但是一旦树扩展到主窗口大小,“外部”节点就不再是可点击的了。
为了更好地解释这是树。向右平移后,绿色线是initState视图的右边距。这条线左边的所有节点都是可触摸的,而右边的节点是不可触摸的。
我为显示此视图而生成的代码如下:
Widget build(BuildContext context) {
return InteractiveViewer(
clipBehavior: Clip.none,
panEnabled: true,
minScale: 0.35,
maxScale: 1,
boundaryMargin: EdgeInsets.all(double.infinity),
child: OverflowBox(
alignment: Alignment.center,
minWidth: 0.0,
minHeight: 0.0,
maxWidth: double.infinity,
maxHeight: double.infinity,
child: GraphView(
algorithm: BuchheimWalkerAlgorithm(
builder,
TreeEdgeRenderer(builder),
),
graph: graph,
paint: Paint()
..color = Colors.green
..strokeWidth = 1
..style = PaintingStyle.stroke,
builder: (Node node) {
int a = node.key!.value;
if (a == 0) {
return rectangleWidget("ROOT", a, NodeType.ROOT, 99);
} else {
AttackTreeNode attackTreeNode =
dataManager.rootNode.findNode(a);
return rectangleWidget(
attackTreeNode.name, a, attackTreeNode.nodeType, attackTreeNode.score);
}
}),
),
);
}
感谢您的帮助!
1条答案
按热度按时间roqulrg31#
我不知道你是否还需要帮助,我也不知道这是否能解决你的问题。我有一个非常类似的行为,你所描述的,也许是因为同样的原因。请不要对我太苛刻,因为我也是一个Flutter新手。
在我的代码中,我使用了InteractiveViewer中的Table小部件,但由于行为相同或完全相同,我认为这并不重要。
我通过将我的Table小部件作为直接子部件来解决这个问题。早些时候,我把它 Package 在另一个小部件中,这似乎是导致bug的原因。也许你需要删除OverflowBox并将GraphView放在那里。就像这样:
抱歉代码格式不佳。如果这不起作用,我很遗憾没有任何其他选择让你尝试,因为这为我修复了它。如果你还有其他问题,你可以问他们,但我不知道我是否能正确回答他们。
感谢您的阅读和快乐的编码