【问题标题】: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())
            ],
          ),
        ),
      ),
    );
  }

【问题讨论】:

    标签: flutter dart layout flutter-layout flutter-dependencies


    【解决方案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 只是阻止用户与元素交互

    【讨论】:

    • 这应该是答案,谢谢你教我一个新的小部件。
    猜你喜欢
    • 2020-07-02
    • 2019-02-12
    • 2020-03-30
    • 1970-01-01
    • 2020-11-22
    • 2022-11-15
    • 1970-01-01
    • 1970-01-01
    • 2018-11-13
    相关资源
    最近更新 更多