【问题标题】:How to check answers and change colors of radio buttons on right and wrong selection in flutter?如何在颤动中检查正确和错误选择的答案并更改单选按钮的颜色?
【发布时间】:2020-03-18 14:51:52
【问题描述】:

我是 Flutter 应用程序开发的新手。我的单选按钮有问题。我已经创建了一个适用于 flatButtons 的逻辑,但我想将此登录与单选按钮一起使用。但是我的登录给了我一个错误,即函数名称不能分配给函数表达式。 这是错误的图像截图。

材质按钮代码:

Widget choicebutton(String option, String k) {
return Padding(
  padding: const EdgeInsets.all(5.0),
  child: MaterialButton(

      //  materialTapTargetSize: MaterialTapTargetSize.padded,
      onPressed: () => checkanswer(k),
  child:  Text(
    mydata[1][i.toString()][k],
  //  textDirection:TextDirection.ltr,
    //textAlign: TextAlign.left,
    style: TextStyle(
  fontFamily: "Alike",
  fontSize: 16.0,
  color: Colors.white,
    ),
       //   maxLines: 1,
  ),
       // padding: EdgeInsets.fromLTRB(2.0, 2.0, 50.0, 50.0),
      color: btncolor[k],
      splashColor: Colors.indigo[700],
      highlightColor: Colors.indigo[700],
        minWidth: 320.0,
        height: 90.0,
      shape:
      RoundedRectangleBorder(borderRadius: BorderRadius.circular(20.0)),


  ),
);

}

 btncolor["a"] = Colors.indigo;
  btncolor["b"] = Colors.indigo;
  btncolor["c"] = Colors.indigo;
  btncolor["d"] = Colors.indigo;

 void checkanswer(String k) {

if (mydata[2][i.toString()] == mydata[1][i.toString()][k]) {
  marks = marks + 1;
  colortoshow = right;
} else {
  colortoshow = wrong;
}
setState(() {
  btncolor[k] = colortoshow;
  canceltimer = true;
});
Timer(Duration(seconds: 1), nextquestion);

}

小部件代码:

Widget radioButton( k){
return RadioListTile(
value: 1, 
groupValue:  k ,
onChanged: (value){
  checkanswer(k);
 // btncolor[k];
},
title: Text(mydata[1][i.toString()][k],
style: TextStyle(
  fontFamily: "Roboto",
  fontSize: 18.0,
),
),
activeColor:  btncolor[k],
);

}

提前致谢。

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    将函数作为参数传递时,不要输入函数名称

    例如

     Widget radioBtn(){
        return Radio(
          value: null,
          groupValue: null,
          onChanged: (value){
    
          },
        );
      }
    

    如果你想传递函数名,考虑做这样的事情

      Widget radioBtn(){
        return Radio(
          value: null,
          groupValue: null,
          onChanged: whenRadioButtonChanges,
        );
      }
    
      void whenRadioButtonChanges(value){
    
      }
    

    希望这对你有帮助。

    【讨论】:

    • 但这对我不起作用。因为逻辑不适用于函数的名称。
    • 我刚刚用代码更新了问题。我想在按下时显示颜色。
    • “我想在按下时显示颜色”你能详细说明一下吗?在哪里显示颜色?
    • 当我点击单选按钮时,应该会出现一种颜色。正确的选择颜色应该是绿色,错误的选择颜色应该是红色。这就是我想要的。我在此处粘贴的 checkanswer() 函数可与 MaterialButton 配合使用。但我想使用与 RadioButtons 相同的功能..
    • 我添加了有问题的材料按钮代码。
    猜你喜欢
    • 2018-08-27
    • 2012-07-19
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 2016-07-19
    • 2017-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多