web-dev-qa-db-ja.com

Flutter-クリック時にRaisedButtonの色を切り替える方法

上げられたボタンの色を切り替えようとしています。最初はボタンは青色で、押されると灰色になります。現在、pressAttentionと呼ばれるブール値があり、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;
  }
}

}

5
Chris

このボタンは、buildStateStatefulWidgetに作成する必要があり、Stateにはメンバー変数bool pressAttention = false;。エドマンが示唆するように、ウィジェットを再描画するには、setStateコールバックで状態を変更する必要があります。

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),
);
14
Richard Heap

押された状態のボタンの色を変更する場合は、RaisedButtonの「強調表示色」プロパティを使用するだけです。

       RaisedButton(
          onPressed: () {},
          child: Text("Test"),
          highlightColor: YOUR_PRESSED_COLOR, //Replace with actual colors
          color: IDLE_STATE_COLOR,
        ),
0