更改开关的颜色 - FormBuilderSwitch - flutter

Posted

技术标签:

【中文标题】更改开关的颜色 - FormBuilderSwitch - flutter【英文标题】:Change the Color of a Switch - FormBuilderSwitch - flutter 【发布时间】:2021-06-09 10:32:04 【问题描述】:

如果切换正常,我想更改开关的颜色。在 Material.dart 中,我找到了一些东西,但写不正确。如果你能做一些例子那就太好了。谢谢

FormBuilderSwitch(
                  name: "public",
                  title: Text("Wird noch ein Mitspieler gesucht?"),
                  initialValue: widget.event?.public ?? false,
                  controlAffinity: ListTileControlAffinity.leading,
                  decoration: InputDecoration(border: InputBorder.none),
                ),

【问题讨论】:

【参考方案1】:

你可以使用 bool 来做到这一点

例子:

bool switched = false; //Based on which state you want it to be on init

小部件触发开关功能

FormBuilderSwitch(
                        onChanged: (bool) 
                          setState(() 
                            bool = !bool;
                            switched = bool;
                          );
                        ,
                      )

这是一个基于 bool 的颜色变化示例

Container(
   color: switched? Colors.white : Colors.blue,
)

更新:

这是代码

FormBuilderSwitch(
              name: "public",
              title: Text("Wird noch ein Mitspieler gesucht?"),
              initialValue: false,
              controlAffinity: ListTileControlAffinity.leading,
              decoration: InputDecoration(border: InputBorder.none),
              onChanged: (bool) 
                setState(() 
                  bool = !bool;
                  switched = bool;
                );
              ,
            ),
            Container(
              height: 20, 
              width: 20, 
              color: switched ? Colors.black54 : Colors.blue,
            ),

输出

https://i.stack.imgur.com/x3j35.png

https://i.stack.imgur.com/XUBpy.png

更新:

FormBuilderSwitch(
                  name: "public",
                  title: Text("Wird noch ein Mitspieler gesucht?"),
                  initialValue: false,
                  controlAffinity: ListTileControlAffinity.leading,
                  activeColor: Colors.red
                  decoration: InputDecoration(border: InputBorder.none),
                  onChanged: (bool) 
                    setState(() 
                      bool = !bool;
                      switched = bool;
                    );
                  ,
                ),
                Container(
                  height: 20, 
                  width: 20, 
                  color: switched ? Colors.red : Colors.black,
                ),

【讨论】:

谢谢。但我不想要一个新的开关,而不是 formbuilderswitch。代码中的switch怎么处理? 我用 formbuilderswitch @AndreasSüßbauer 更新了它 非常感谢,但它对我不起作用。颜色不变。 你能详细说明你想改变什么颜色吗? @AndreasSüßbauer 容器的颜色从黑色变为红色(我选择了红色,因为蓝色是开关的标准颜色),但如您所见,开关保持蓝色。例如,我也想将开关涂成红色。 imgur.com/01xY0fy

以上是关于更改开关的颜色 - FormBuilderSwitch - flutter的主要内容,如果未能解决你的问题,请参考以下文章

Android - 如何动态更改 SwitchPreference 开关的拇指/轨道颜色

更改开关的“开启”颜色

Swift 3 - 通过开关更改所有视图控制器的背景颜色(暗模式/夜间模式)

使用开关在整个应用程序中更改文本,单元格和视图控制器的颜色

自定义布局中开关首选项中开/关切换的颜色变化

Swift - 使用 UISwitch 更改引脚颜色