// Add the new node as a child to the clicked node
graph.addEdge(node, newNode);
// Update the graph
setState(() {});
},
child: Container(
padding: EdgeInsets.all(16),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(4),
boxShadow: [
BoxShadow(color: Colors.blue[100]!, spreadRadius: 1),
],
),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Text('Node ${node.key!.value}'),
SizedBox(height: 8),
ElevatedButton(
onPressed: () {
// Create a new node with a unique ID
final newNode = Node.Id(graph.nodeCount() + 1);
// Add the new node as a child to the clicked node
graph.addEdge(node, newNode);
// Update the graph
setState(() {});
},
child: Text('Add child'),
),
],
),
),
);
4条答案
按热度按时间aij0ehis1#
您可以使用Graphview创建带有静态数据的家谱。
kmpatx3s2#
使用这个软件包graphite
和你照片差不多
mu0hgdu03#
对于家谱,您可以使用名为BALKAN OrgChartJS的JavaScript组件
它几乎支持您所需的一切
6tqwzwtp4#
类TreeViewPage扩展了状态控件{
@override树视图页面状态创建状态()=〉树视图页面状态();}
类树视图页面状态扩展状态{
双标度= 1.0;获取名称=〉null;
@override小部件构建(BuildContext上下文){ return框架(appBar:应用程序栏(),正文:色谱柱(主轴尺寸:主轴尺寸最大值,子级:[行(主轴对齐:MainAxisAlignment.center,儿童:[图标按钮(按下时:(){设置状态((){ _刻度 *= 1.5;}); },图标:图标(图标添加)、)、图标按钮(按下时:(){设置状态((){ _刻度/= 1.5;}); },图标:图标(图标移除)、)、]、)、展开(子项:交互式查看器(比例启用:false,变换控制器:转换控制器()..值=矩阵4.对角3值(_比例,_比例,1),约束:false,边界边距:边缘插入,全部(100),最小比例:0.01,最大刻度:5.6,儿童:图形视图(图形:图形,算法:BuchheimWalkerAlgorithm(构建器,树边渲染器(构建器)),绘制:绘制()..颜色=Colors.green..笔划宽度= 1..样式=绘画样式.笔划,生成器:(节点node){ //为每个节点ID创建一个新的节点对象final nodeKey = node.key!.value as int?;最终节点对象=节点ID(节点密钥!);
}
随机r =随机();
控件矩形控件(节点节点){ return墨水池(onTap:(){ //创建具有唯一ID的新节点final newNode = Node.Id(graph.nodeCount()+ 1);
}
最终图形graph = Graph().. isTree =真;布赫海姆步行机配置生成器=布赫海姆步行机配置();
@覆盖空的初始状态(){
} }