首页 > 解决方案 > 如何为每个按钮 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!'),
  ),
),

标签: flutterdart

解决方案


据我了解!

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);
  }

截屏


推荐阅读