4つのボタンのオプションでクイズの質問をしました。
1 ページにいくつかの質問を表示します。クイズページの例
次に、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}]
}
これは投稿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]]
[質問ID、選択肢ID]