首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Flutter - GestureDetector onTapDown颜色更改

Flutter - GestureDetector onTapDown颜色更改
EN

Stack Overflow用户
提问于 2018-12-13 03:45:50
回答 1查看 7.8K关注 0票数 4

我确实想在我的底部工作表中实现一个手势检测器,当它调用onTapDownGestureDetectoronTapCancel函数时,它应该会改变容器的颜色。但是这个函数不会改变任何东西。我还将下面的代码放在一个StatefulWidget中,以便能够调用setState((){})

这是我的代码:

代码语言:javascript
复制
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);
      },
    );

我希望有人能帮助我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-13 04:16:16

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

enabled变量更改为实例字段。

代码语言:javascript
复制
    class YourClass ...

    bool enabled = false;

    ..
    @override
      Widget build(BuildContext context) {
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53750322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档