在定位小部件问题中使用RaisedButton小部件

时间:2019-07-02 05:03:34

标签: flutter dart

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,
)

您如何解决此问题?

2 个答案:

答案 0 :(得分:2)

简短的答案是:

Flutter不会触发与堆栈边界重叠的项目的推送事件(这是将top设置为-30时要执行的操作)。

其背后的原因可以在这里找到:Document that widgets in the overflow of stack do not respond to gestures

一个可行的解决方案是将所有其他项目降低30.0,以便可以将按钮放置在堆栈中。

答案 1 :(得分:-2)

此问题的解决方案是将堆栈包装在手势检测器中,然后在手势检测器的ontap属性中添加要在按下的凸起按钮上添加的内容