颤动 - 如何在点击时切换RaisedButton的颜色?

Chr*_*ris 5 android widget button dart flutter

我试图切换凸起按钮的颜色.最初按钮应为蓝色,按下时按钮变为灰色.现在我有一个名为pressAttention的bool值,它被设置为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;
  }
}
Run Code Online (Sandbox Code Playgroud)

}

Ric*_*eap 13

此按钮需要在builda State的a中创建,StatefulWidgetState必须具有成员变量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),
);
Run Code Online (Sandbox Code Playgroud)


kin*_*ord 6

如果您希望按钮更改按下状态的颜色,您只需要使用 RaisingButton 中的“highlightColor”属性

       RaisedButton(
          onPressed: () {},
          child: Text("Test"),
          highlightColor: YOUR_PRESSED_COLOR, //Replace with actual colors
          color: IDLE_STATE_COLOR,
        ),
Run Code Online (Sandbox Code Playgroud)