如何禁用颤振开关

Posted

技术标签:

【中文标题】如何禁用颤振开关【英文标题】:How can I disabled flutter switch 【发布时间】:2021-03-31 11:53:47 【问题描述】:

在我的帮助屏幕中,我有这个开关,其目的是什么都不做,只是按原样显示。

但是我现在遇到的问题,即使它没有做任何事情,用户也可以拖动开关,所以我试图弄清楚如何禁用它,以便没有人可以拖动开关按钮.

    return Container(
      child: Card(
        color: Theme.of(context).primaryColor,
        margin: EdgeInsets.only(bottom: 30, top: 10),
        child: ListTile(
          title: Row(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: <Widget>[
              Text("Dark Theme",
                  style: TextStyle(color: Theme.of(context).accentColor)),
              Switch(
                  value: true,
                  onChanged: (value) ,
                  activeColor: Theme.of(context).accentColor),
              Text("Light Theme", style: TextStyle())
            ],
          ),
        ),
      ),
    );
  

【问题讨论】:

【参考方案1】:

要禁用您的 Switch,请将其 onChanged 方法编辑为 null,如下所示

Switch(
  onChanged: null,
  value: true,
  inactiveThumbColor: Colors.tealAccent,
  inactiveTrackColor: Colors.tealAccent.withOpacity(0.5),
  // ...
),

【讨论】:

哦..谢谢它被禁用但结果不是我想象的那样。开关被禁用但颜色不再应用于开关,你知道我怎样才能应用浅蓝色(就像在图像中一样)并使开关仍然禁用吗?。 你也可以使用Theme.of(context).accentColorTheme.of(context).accentColor.withOpacity(0.5)为例 哦,好吧...但我认为我不允许同时使用 inactiveThumbColor 和 inactiveTrackColor ,因为我遇到了错误。 (附图)你知道可能是什么原因吗?谢谢 它说未定义的名称'inactiveTrackColor'。尝试将名称更正为已定义的名称,或定义名称。 它有效!.. 非常感谢您对我的两个问题的帮助。谢谢你【参考方案2】:

如果您想要手动设置值的静态开关,请考虑使用 AbsorbPointer。它不会改变您的开关的外观,也不会禁用它。 AbsorbPointer 只是阻止用户与元素交互

【讨论】:

这应该是答案,谢谢你教我一个新的小部件。

以上是关于如何禁用颤振开关的主要内容,如果未能解决你的问题,请参考以下文章

单击单击时如何禁用 onTap 功能。使用颤振

如何在颤振/飞镖扩展中禁用蓝色警告下划线标志?

当我的开关行的行值发生变化时,如何启用/禁用我的模式?

TextFormField 上的可点击图标 - 禁用 TextFormField 对图标单击的关注(颤振)

如何在颤动时禁用自动热重载?

禁用颤振中的文本编辑字段