我做了一个带有 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]