在RaisedButton
小部件中使用Positioned
时遇到问题。
问题是,当我在RaisedButton
小部件内使用Positioned
时,单击onPressed
子级时没有触发RaisedButton
事件,但是单击了另一个空格时RaisedButton
有效。
请注意,它在正常情况下可以正常工作,并且在RaisedButton
小部件中使用Positioned
时发生了。
这是我的小部件:
Positioned(
child: Center(
child: SizedBox(
width: 80,
height: 65,
child: RaisedButton(
padding: EdgeInsets.all(0),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
color: Colors.green,
child: Icon(Icons.message, size: 50, color: Colors.white,),
// When I clicked on this icon, onPressed didn't triggered. but when I click on another space of button it triggered.
onPressed: () {
print('Hello world from onPressed');
},
),
),
),
top: -30,
left: 0,
right: 0,
)
您如何解决此问题?
答案 0 :(得分:2)
简短的答案是:
Flutter不会触发与堆栈边界重叠的项目的推送事件(这是将top设置为-30时要执行的操作)。
其背后的原因可以在这里找到:Document that widgets in the overflow of stack do not respond to gestures
一个可行的解决方案是将所有其他项目降低30.0,以便可以将按钮放置在堆栈中。
答案 1 :(得分:-2)
此问题的解决方案是将堆栈包装在手势检测器中,然后在手势检测器的ontap属性中添加要在按下的凸起按钮上添加的内容