Flutter - GestureDetector onTapDown 颜色变化

6 android ios dart flutter

onTapDown我确实想在我的底部工作表中实现一个手势检测器,当它调用和onTapCancel的函数时,它应该改变容器的颜色GestureDetector。但该功能并没有改变任何东西。我还将下面的代码放入 a 中StatefulWidget,以便我能够调用setState((){}).

这是我的代码:

bool enabled = false;
    return InkWell(
      child: Container(
        child: Row(
          children: <Widget>[
            Padding(
              padding: EdgeInsets.only(top: 16.0, bottom: 16.0, left: 30.0),                
            ),
            Text(
              text,
              style: TextStyle(
                color: (enabled
                  ? textColor
                  : Colors.black54
                ),
                fontWeight: FontWeight.bold
              ),
            )
          ],
        ),
        decoration: BoxDecoration(
          color: (enabled
            ? background
            : Colors.transparent
          )
        ),
      ),
      onTapDown: (TapDownDetails details){
        setState(() {
          enabled = true;
        });
      },
      onTapCancel: (){
        setState(() {
          enabled = false;
        });
      },
      onTap: (){
        String r_value;
        if(text == sheetText[0]){
          r_value = "delete";
        } else if(text == sheetText[1]){
          r_value = "edit";
        } else if(text == sheetText[2]){
          r_value = "notification";
        } else {
          return;
        }
        Navigator.pop(context, r_value);
      },
    );
Run Code Online (Sandbox Code Playgroud)

我希望有人能够帮助我。

die*_*per 6

bool enabled = false;从您的方法中删除build,因为每次调用setState它都会具有相同的值。

将变量更改enabled为实例字段。

    class YourClass ...

    bool enabled = false;

    ..
    @override
      Widget build(BuildContext context) {
Run Code Online (Sandbox Code Playgroud)