flutter的按钮如何变为不可选中,Flutter-单击后如何切换RaisedButton的颜色?

I am trying to toggle the color of a raised button. Initially the button should be blue and when it is pressed it turns to grey. Right now I have a bool value called pressAttention and it is set to false. I am using this to initially set this the false. When the button is pressed it toggles the pressAttention bool, but it seems that the widget is never updated again.

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;

}

}

}

解决方案

This button will need to be created in the build of a State of a StatefulWidget, and the State must have a member variable bool pressAttention = false;. As Edman suggests, you need to make state changes in a setState callback for the Widget to redraw.

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),

);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值