android - Flutter - 如何在点击时切换 RaisedButton 的颜色?

标签 android button dart widget flutter

我正在尝试切换凸起按钮的颜色。最初按钮应该是蓝色的,当它被按下时它会变成灰色。现在我有一个名为 pressAttention 的 bool 值,它被设置为 false。我正在使用它来最初将其设置为 false。当按下按钮时,它会切换 pressAttention bool,但似乎小部件永远不会再次更新。

new RaisedButton(
                  child: new Text("Attention"),
                  textColor: Colors.white,
                  shape: new RoundedRectangleBorder(borderRadius: new BorderRadius.circular(30.0)),
                  color: pressAttention?Colors.grey:Colors.blue,
                  onPressed: () => doSomething("Attention"),
                )

void doSomething(String buttonName){
if(buttonName == "Attention"){
  if(pressAttention = false){
    pressAttention = true;
  } else {
    pressAttention = false;
  }
}

}

最佳答案

这个按钮需要在StatefulWidgetStatebuild中创建,并且State必须有一个成员变量bool pressAttention = false;.正如 Edman 建议的那样,您需要在 setState 回调中进行状态更改,以便 Widget 重绘。

new RaisedButton(
  child: new Text('Attention'),
  textColor: Colors.white,
  shape: new RoundedRectangleBorder(
    borderRadius: new BorderRadius.circular(30.0),
  ),
  color: pressAttention ? Colors.grey : Colors.blue,
  onPressed: () => setState(() => pressAttention = !pressAttention),
);

关于android - Flutter - 如何在点击时切换 RaisedButton 的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50863681/

相关文章:

android - 如何确定Google服务插件,gradle插件和dart pub软件包的兼容版本

android动画向左滑出,向后反转

java - 错误 :(63, 0) 无法设置只读属性 'outputFile' 的值

android - 自定义进度对话框未显示在对话框 fragment 中

css - 关闭模态窗口后,模态焦点高亮保留在元素上

android - 基于 Android 示例的 Flutter 应用程序在 BOOT_COMPLETED 上自动启动不起作用

java - 使用哪种语法可以获得更好的性能和资源利用率

python - 动态生成 Tkinter 按钮

HTML 自动调整表单框中电话的按钮大小和字体大小

database - 如何解决 flutter sqlite 语法错误?