我仍然是 flutter 的新手,我现在正在开发一个测验应用程序在单选按钮列表中,每当应用程序转到下一个问题时,单选按钮都没有重置,如果有人可以指导我如何做,我将不胜感激调用下一个问题功能时重置单选按钮

伪代码

class _QuizPageState extends State<QuizPage> {
  List<dynamic> myQuestion;
  _QuizPageState(this.myQuestion);
  int i = 0;
  int count = 0;
  int selectedRadioTile;
  int marks = 0;
  var selected;

  Widget choiceButton(String k, int value) {
    return Padding(
      padding: EdgeInsets.symmetric(
        vertical: 10,
      ),
      child: RadioListTile(
        value: value,
        groupValue: selectedRadioTile,
        title: Container(
          child: Text(myQuestion[i][k] ?? "None"),
        ),
        onChanged: (val) {
          setSelectedRadioTile(val);
          selected = val;
        },
        activeColor: Colors.green,
        selected: true,
      ),
    );
  }

  void initState() {
    selectedRadioTile = 0;
    super.initState();
  }

  setSelectedRadioTile(int val) {
    setState(() {
      selectedRadioTile = val;
    });
  }

  void checkAnswer() {
    var e = int.parse(myQuestion[i]["Answer"]);
    if (e == selected) {
      marks = marks + 1;
    } else {
      print("wrong");
    }
    nextquestion();
  }

  void nextquestion() {



    setState(() {
      if (count < 9) {
        i = randomBetween(0, myQuestion.length);
      } else {
        Navigator.of(context).pushReplacement(MaterialPageRoute(
          builder: (context) => resultpage(marks: marks),
        ));
      }
    });
  }

  @override
  Widget build(BuildContext context) {
    return WillPopScope(
      onWillPop: () {
        return showDialog(
            context: context,
            builder: (context) => AlertDialog(
                  title: Text(
                    "Alert",
                  ),
                  content: Text("You Can't Go Back At This Stage."),
                  actions: <Widget>[
                    FlatButton(
                      onPressed: () {
                        Navigator.of(context).pop();
                      },
                      child: Text(
                        'Ok',
                      ),
                    )
                  ],
                ));
      },
      child: Scaffold(
        appBar: AppBar(
          elevation: 30.0,
          title: Center(
            child: Text(
              'Quiz',
              style: TextStyle(
                color: Colors.white,
                fontSize: 20.0,
                fontFamily: "Quando",
                fontWeight: FontWeight.bold,
              ),
            ),
          ),
          backgroundColor: Colors.amber[800],
        ),
        body: LayoutBuilder(
          builder: (context, constraint) {
            return SingleChildScrollView(
              child: ConstrainedBox(
                constraints: BoxConstraints(minHeight: constraint.maxHeight),
                child: IntrinsicHeight(
                  child: Column(
                    children: <Widget>[
                      Expanded(
                        child: Column(
                          mainAxisAlignment: MainAxisAlignment.center,
                          mainAxisSize: MainAxisSize.min,
                          children: <Widget>[
                            Center(
                              child: Container(
                                padding: EdgeInsets.only(top: 20, left: 10),
                                child: Text(
                                  myQuestion[i]["Question"] ?? "None",
                                  style: TextStyle(
                                    fontSize: 15.0,
                                    fontFamily: "Quando",
                                    fontWeight: FontWeight.bold,
                                  ),
                                ),
                              ),
                            ),
                            SizedBox(
                              height: 20,
                            ),
                            Expanded(
                              child: AspectRatio(
                                aspectRatio: 16 / 11,
                                child: ClipRect(
                                  child: SizedBox(
                                    height: 50,
                                    child: PhotoView(
                                      imageProvider: AssetImage(
                                          myQuestion[i]["Image"] ?? "None"),
                                      minScale:
                                      PhotoViewComputedScale.contained *
                                          0.5,
                                      maxScale:
                                      PhotoViewComputedScale.covered * 2,
                                      initialScale: 0.6,
                                      backgroundDecoration: BoxDecoration(
                                        color: Theme.of(context).canvasColor,
                                      ),
                                    ),
                                  ),
                                ),
                              ),
                            ),
                            Text(
                              "To adjust the image double Tap",
                              style: TextStyle(
                                fontFamily: "Quando",
                                color: Colors.black26,
                                fontSize: 15.0,
                                fontWeight: FontWeight.bold,
                              ),
                            ),
                          ],
                        ),
                      ),
                      SizedBox(
                        height: 10,
                      ),
                      Expanded(
                        child: Column(
                          mainAxisAlignment: MainAxisAlignment.center,
                          mainAxisSize: MainAxisSize.min,
                          children: <Widget>[
                            choiceButton("option1", 1),
                            choiceButton("option2", 2),
                            choiceButton("option3", 3),
                            choiceButton("option4", 4),
                          ],
                        ),
                      ),
                      Expanded(
                        flex: 0,
                        child: RaisedButton(
                          splashColor: Colors.blueAccent,
                          color: Colors.blueAccent,
                          shape: RoundedRectangleBorder(
                            borderRadius: BorderRadius.circular(50.0),
                          ),
                          onPressed: () {
                            checkAnswer();
                            count = count + 1;
                            showDialog(
                                context: context,
                                builder: (context) => AlertDialog(
                                      title: Text(
                                        "Explaination",
                                      ),
                                      content: Text(
                                        myQuestion[i]["Explanation"] ?? "None",
                                        style: TextStyle(
                                          fontSize: 15.0,
                                          fontFamily: "Quando",
                                        ),
                                      ),
                                      actions: <Widget>[
                                        FlatButton(
                                          onPressed: () {
                                            Navigator.of(context).pop();
                                          },
                                          child: Text(
                                            'Ok',
                                          ),
                                        )
                                      ],
                                    ));
                          },
                          child: Text(
                            'Submit',
                          ),
                        ),
                      ),
                      SizedBox(
                        height: 40,
                      )
                    ],
                  ),
                ),
              ),
            );
          },
        ),
      ),
    );
  }
}

#1楼 票数:1 已采纳

您可以在 nextQuestion 中将 selectedRadioTile 设置为 0:

  void nextquestion() {
    setState(() {
      selectedRadioTile = 0;
      if (count < 9) {
        i = randomBetween(0, myQuestion.length);
      } else {
        Navigator.of(context).pushReplacement(MaterialPageRoute(
          builder: (context) => resultpage(marks: marks),
        ));
      }
    });
  }

  ask by Rahul Kumar Jha translate from so

未解决问题?本站智能推荐:

2回复

如何设置Flutter中默认选中的单选按钮?

默认情况下,Flutter会将所有单选按钮显示为空(未选中)。 如何设置默认选中的单选按钮? 我正在发布此问题来记录我的解决方案,这可能会对某些人有所帮助,并且还会启动与此相关的主题,因为在这里我没有找到任何关于它的信息。 单选按钮代码下方:
1回复

如何从另一个屏幕重置Flutter中的表单?

如何重置(清除)flutter app中的表单字段? 一旦数据提交到服务器? 在我的应用程序中,我有2页。 第1页输入表格详细信息,如姓名,地址等 第2页是上传图片。 第1页将数据推送到第2页。 (这里我没有做推更换,意味着第2页位于首页顶部) 第二页是选择图像,并将表单
1回复

Flutter中的列表视图

我一直无法理解如何正确列出 API 调用中的所有项目,现在我通过在 API 响应后添加索引 [0] 来显示 API 列表中的第一个。 我意识到我可以使用我目前将它设置为 1 的 itemCount 来做到这一点,因为我似乎无法理解如何使用列出 API 中所有项目的 .length 选项。 这是代码:
4回复

Flutter应用中的无限列表

我正在将我的应用程序从 android 迁移到 flutter,直到现在我已经在 flutter 中使用了ListView 。 我的问题是,有没有什么专门的技术来处理flutter中的大量数据? 作为参考,您可以查看 android RecyclerView 。 它处理内存中的视图并回收其运行时。
2回复

如何从dart/flutter中的列表中获取价值?

我正在尝试从外汇 API 获取一些货币数据。 从网站获取数据后,我在从 HTTP 请求后作为数据接收的列表中提取货币对的所需值时遇到问题。 这是我在做什么: 在这里,我想从列表“信息”中获取价格的价值,但不知道在“双倍价格”中写什么 这是 consol 的结果 我想要的是 : 我想在打印响应后在控制
2回复

如何在Flutter中传递Stepper上的列表

我正在使用 Stepper 创建应用程序,但是在 Stepper 中传递 List 时出现错误类似的东西:未定义命名参数“步骤” 我的代码:
1回复

在Flutter中绘制列表视图边界之外

我想将我的项目转换为比列表视图本身大。 (重点导航的意图) 我的列表: 我的项目: 当前行为 预期行为
1回复

Flutter从列表中删除项目

我的问题是关于flutter的列表视图。 当我从列表中删除项目并设置状态 flutter listview.builder滚动到顶部。 我希望它不会在从列表中删除项目后滚动。 你的建议是什么? 提前致谢。