使用侦听器类在Flutter中点击Container时,如何更改BoxShadow?

时间:2020-07-16 07:32:17

标签: flutter containers

我的计算器应用程序中有多个具有框阴影属性的容器,以使其具有新的外观。 但是我想更改BoxShadow或在按下Container时将其完全删除。

我通过使用onPointerUp和onPointerUp属性来使用Listener类。 我已经达到了神经质外观,但是按下后无法改变其阴影。

这是我的代码:

bool buttonPressed =false;//false by default
 // buttonPressed set to false when  button is pressed
 void _onPointerDown(PointerDownEvent event) {
      setState(() {
        buttonPressed = true;
      });
    }
//button pressed is true when button is released
    void _onPointerUp(PointerUpEvent event){
      setState(() {
        buttonPressed = false;
      });
    }

    return Listener(
      child: Container(
        decoration: BoxDecoration(
         ...
          boxShadow: buttonPressed ? pressedShadow : unPressedShadow
        ),
        child: Center(
          child: Text(widget.buttonText,
            style: GoogleFonts.roboto(
              color: buttonColor,
              fontSize: 40.0,

            ),
          ),
        ),
      ),
      onPointerDown: _onPointerDown,
      onPointerUp: _onPointerUp,
    );

我已经在statefulWidget中完成了

1 个答案:

答案 0 :(得分:0)

您必须使用手势检测器。我希望我能帮上忙,我是编程新手,和你有同样的问题,例如:

bool buttonpressed = false

return Listener(
  child: Gesturedetector(onTap: () {
   setState(() {
    buttonpressed = val )}};
  child: Container
        decoration: BoxDecoration(
         ...
          boxShadow: buttonPressed ? pressedShadow : unPressedShadow
        ),
        child: Center(
          child: Text(widget.buttonText,
            style: GoogleFonts.roboto(
              color: buttonColor,
              fontSize: 40.0,

            ),
          ),
        ),
      ),