arrays - Flutter:如何存储或保存用户点击的按钮的值?
问题描述
我做了一个带有 4 个按钮选项的测验问题。
我在一页上显示了几个问题。测验页面示例
现在如何存储或保存用户在传递 POST 请求 API 的值之前单击的每个按钮的值。
目前我知道要做的就是保存用户点击的最新值。
顺便说一句,我是编码和颤振的新手。希望你们能帮助我。
这是我做的代码
List<dynamic> sent;
CustomCheckBoxGroup(
buttonValuesList: [
[
snapshot.data.result[index].id,
snapshot.data.result[index]
.options[0].id
],
[
snapshot.data.result[index].id,
snapshot.data.result[index]
.options[1].id
],
[
snapshot.data.result[index].id,
snapshot.data.result[index]
.options[2].id
],
[
snapshot.data.result[index].id,
snapshot.data.result[index]
.options[3].id
],
],
buttonLables: [
snapshot.data.result[index]
.options[0].option,
snapshot.data.result[index]
.options[1].option,
snapshot.data.result[index]
.options[2].option,
snapshot.data.result[index]
.options[3].option,
],
checkBoxButtonValues: (values) {
sent=values;
print(values);
},
selectedColor: Colors.orange,
unSelectedColor: Colors.white70,
horizontal: true,
),
我想为 POST API 发送数组中的值
像这样
{
"data":[{"question_id":1,"option_id":2},{"question_id":2,"option_id":6}]
}
虽然这是我为 post API 所做的
Future<Sent> saveAnswer() async {
setState(() {
_isloading = true;
});
// var data = {"question_id": sent[0][0], "option_id": sent[0][1]};
Map<String, List<Map<String, int>>> data = {
"data": [
{"question_id": sent[0][0], "option_id": sent[0][1]},
{"question_id": sent[0][0], "option_id": sent[0][1]},
]
};
var url = await Network().link("/exercise/1/saveAnswer");
SharedPreferences localStorage = await SharedPreferences.getInstance();
final token = jsonDecode(localStorage.getString('token'));
http.Response response =
await http.post(Uri.parse(url), body: json.encode(data), headers: {
'Content-type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer $token'
});
if (response.statusCode == 200) {
print(response.body);
print("Save success");
} else {
print(response.body);
print("Save failed");
}
}
如果我单击按钮,这是颤振的响应
我/颤振(4884):[[1, 2]]
我/颤振(4884):[[2, 7]]
[question_id,option_id]
解决方案
我认为使用RadioListTile
多项选择比手动为每个问题使用 4 个按钮更好。您可以创造性地制作List
变量来动态存储问题和答案。
推荐阅读
- javascript - JS调度事件不起作用
- javascript - 将从 servlet 返回的 hashmap 对象分配给 Javascript 变量
- c++ - 通过不同方式访问数组/向量中的相同元素
- yii2 - Yii2 表单验证 - 仅在填写密码字段时比较密码重复
- reactjs - 将基于 React / Preact 的小部件库集成到旧版 Web 应用程序中
- amazon-web-services - Cloudformation AWS CLI 使用多个嵌套堆栈查询所有堆栈资源
- ssl - 从 Let's Encrypt 从头开始生成 CRT 和 KEY ssl 文件
- logging - 链接 log4j 日志和 zipkin 跟踪 id
- python - 如何在 Python 中根据 1 或 0 为背景着色
- sonarqube - SonarQube:项目验证失败,模块已经是项目的一部分