flutter - 如何为每个按钮 onPressed 分配特定值?
问题描述
我连续有 5 个按钮,我想为每个按钮分配一个值。另外,如果赢了我想显示按钮的相同值,如果输了我想显示按钮 times(*)2 的值。
如何为每个按钮 onPressed 分配特定值?
谢谢
int bab = 5;
int o = 0; // output
void Scorebab() {
setState(() {
o = o + bab;
});
}
5 个不同按钮的示例
Container(
height: 80,
width: 80,
padding: EdgeInsets.all(3.0),
child: MaterialButton(
shape: CircleBorder(
side: BorderSide(
color: Colors.black,
width: 1.0,
style: BorderStyle.solid)),
color: selectedTalba == Talba.bab
? kActiveCardColor
: kInactiveCardColor,
onPressed: () {
Scorebab();
setState(() {
selectedTalba = Talba.bab;
});
},
child: Text(
'bab',
style: kLabelTextStyle,
),
),
),
分数输出
Expanded(
child: ReusableCard(
onPress: () {
setState(() {
selectedShary = Shary.Lihum;
});
},
color: kInactiveCardColor,
cardChild: CardChild(
label: '$o ',
),
),
),
输赢按钮
Expanded(
child: ReusableCard(
onPress: () {
setState(() {
selectedScore = Score.Lose;
});
},
color: selectedScore == Score.Lose
? kActiveCardColor
: kInactiveCardColor,
cardChild: CardChild(
label: 'lose',
),
),
),
Expanded(
child: ReusableCard(
onPress: () {
setState(() {
selectedScore = Score.Win;
});
},
color: selectedScore == Score.Win
? kActiveCardColor
: kInactiveCardColor,
cardChild: CardChild(label: 'win!'),
),
),
解决方案
据我了解!
List<String> rootValues =['1','2','3','4','5'],
currentValues=[];
//change your data type above....
int activeButton = 3;
@override
void initState() {
super.initState();
currentValues = rootValues;
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
body: Center(
child: Row(
mainAxisAlignment:MainAxisAlignment.spaceEvenly,
children:List.generate(currentValues.length,(ind)=>
FlatButton(
onPressed:(){
getWinOrLoss(ind);
},
shape:RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10),
),
color: activeButton == ind?
Colors.green:
Colors.orange[700],
child: Text(currentValues[ind],
style: TextStyle(
color: Colors.white,
fontSize: 20,
fontWeight: FontWeight.bold,
)),
),
).toList(),
)));
}
getWinOrLoss(int a){
//Your code about win or loss
setState(()=>activeButton=a);
}
推荐阅读
- lua - 有没有办法在喊或说时获得最后的聊天按摩?
- css - Docker 在 sapper 图像构建上抛出 postcss 错误
- serialization - UWP DataWriter.WriteDateTime 使用什么格式?
- django - Django + Heroku + MongoDB Atlas (Djongo) = DatabaseError 无异常
- java - 如何使用 mockito 在不同的 jar 中模拟方法
- amazon-web-services - AWS Data Pipeline 不支持“m3.xlarge”
- javascript - 从 Google 工作表调用单个 html 表单
- reporting-services - 调整 SSRS 报告列的大小
- jbpm - 带有 jBPM 的 Jboss 许可证
- erlang - Erlang 记录打印