上げられたボタンの色を切り替えようとしています。最初はボタンは青色で、押されると灰色になります。現在、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;
}
}
}
このボタンは、build
のState
のStatefulWidget
に作成する必要があり、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),
);
押された状態のボタンの色を変更する場合は、RaisedButtonの「強調表示色」プロパティを使用するだけです。
RaisedButton(
onPressed: () {},
child: Text("Test"),
highlightColor: YOUR_PRESSED_COLOR, //Replace with actual colors
color: IDLE_STATE_COLOR,
),