Flutter:AnimatedOpacity复选框,即使它不可见,为什么我仍然可以点击它

时间:2018-12-08 12:55:22

标签: dart flutter

我想知道为什么即使看不到该复选框也仍然可以单击或点击该复选框。仍然会在我的控制台中提供打印值。

Container(
  child: Row(
    children: <Widget>[
      AnimatedOpacity(
        opacity: _visible ? 1.0 : 0.0,
        duration: Duration(milliseconds: 500),
        child: Checkbox(
          value: this.folder[index].checked,
          onChanged: (bool value) {
              print(value);
              setState(() {
              this.folder[index].checked = value;
              });
          },
        ),
      )
    ],
  ),
)

1 个答案:

答案 0 :(得分:0)

即使您的Widget不透明,它也具有用户交互性,因此要解决您的问题,您有两种选择:

onChanged方法内添加条件

   Container(
        child: Row(
          children: <Widget>[
            AnimatedOpacity(
              opacity: _visible ? 1.0 : 0.0,
              duration: Duration(milliseconds: 500),
              child: Checkbox(
                      value: this.folder[index].checked,
                      onChanged: (bool value) {
                        if (_visible) {
                          print(value);
                          setState(() {});
                        }
                      },
                    ),
            )
          ],
        ),
      )

或者如果Widget变量为false,则添加条件以显示空的_visible

    Container(
        child: Row(
          children: <Widget>[
            AnimatedOpacity(
              opacity: _visible ? 1.0 : 0.0,
              duration: Duration(milliseconds: 500),
              child: _visible
                  ? Checkbox(
                      value: this.folder[index].checked,
                      onChanged: (bool value) {
                        if (_visible) {
                          print(value);
                          setState(() {});
                        }
                      },
                    )
                  : SizedBox(),
            )
          ],
        ),
      )