我试图在用户按下屏幕时绘制小部件。 目前我通过存储小部件列表来实现这一点,并且当我将添加到小部件列表的手势触发ontapup时。
Widget build(BuildContext context) {
Widget draw = new Text("A");
List<Widget> children = new List<Widget>();
return new Scaffold(
appBar: new AppBar(
title: const Text('Heading'),
leading: new Icon(Icons.question_answer),
),
body: new GestureDetector(
onTapUp: (details) {
setState(() {
children.add(new Positioned(
left: details.globalPosition.dx,
top: details.globalPosition.dy,
child: draw,
));
});
},
child: new Stack(children: children)
...
所以我的代码正在工作我在点击时绘制小部件但我的问题是当添加新的Positioned()到堆栈时,位置是基于不包括appbar偏移的屏幕。有没有办法让堆栈初始x / y位置?或者有没有办法获得appbars高度?如何获得小部件位置或高度/宽度?
答案 0 :(得分:3)
对于有同样问题的其他人,我需要创建自己的小部件并使用
context.findRenderObject()
和
globalToLocal()
仅仅是FYI全球到本地不起作用,而在一个解决方案中,我需要将其设为自己的小部件。