【问题标题】:Flutter: How to sent an array to post request API?Flutter:如何发送一个数组来发布请求 API?
【发布时间】:2021-09-21 04:54:19
【问题描述】:

我想快速发送一个用于发布 API 的数组。

{
    "data":[{"question_id":1,"option_id":2},{"question_id":2,"option_id":6}]
}

我想像上面那样发送数据。

这是我的代码:


    class Sent {
      List<Data> data;
    
      Sent({this.data});
    
      Sent.fromJson(Map<String, dynamic> json) {
        if (json['data'] != null) {
          data = new List<Data>();
          json['data'].forEach((v) {
            data.add(new Data.fromJson(v));
          });
        }
      }
    
      Map<String, dynamic> toJson() {
        final Map<String, dynamic> data = new Map<String, dynamic>();
        if (this.data != null) {
          data['data'] = this.data.map((v) => v.toJson()).toList();
        }
        return data;
      }
    }
    
    class Data {
      int questionId;
      int optionId;
    
      Data({this.questionId, this.optionId});
    
      Data.fromJson(Map<String, dynamic> json) {
        questionId = json['question_id'];
        optionId = json['option_id'];
      }
    
      Map<String, dynamic> toJson() {
        final Map<String, dynamic> data = new Map<String, dynamic>();
        data['question_id'] = this.questionId;
        data['option_id'] = this.optionId;
        return data;
      }
    }

这是我将它发送到 POST API 的方式


    Future<Sent> saveAnswer() async {

        var data = {"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: jsonEncode(data), headers: {
          'Content-type': 'application/json',
          'Accept': 'application/json',
          'Authorization': 'Bearer $token'
        });
        if (response.statusCode == 200) {
          print(response.body);
        } else {
          print(response.body);
        }
      }

虽然这是我从 CustomCheckBoxGroup 获取 question_id 和 option_id 的方式。

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
    ],
  ],
  checkBoxButtonValues: (values) {
    sent = values;
    print(values);
    print(sent[0][0]);
    print(sent[0][1]);
  },
)

请帮助我。如何像我想发布请求 API 一样发送数组。 我的代码有什么问题。

【问题讨论】:

  • 试试this希望对你有帮助。在这个答案中,我已将数据发送到 API
  • json encode decode需要学习
  • 顺便说一句,如何存储用户单击的按钮的所有值?因为我上面做的,只取最新的值

标签: arrays flutter post


【解决方案1】:

最简单的方法是对列表进行编码并将其添加到 json 中。 例如:

List<dynamic> ListData = [{"question_id":1,"option_id":2},{"question_id":2,"option_id":6}];

var json = {
'listKey': json.encode(ListData)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-28
    • 1970-01-01
    • 2019-11-22
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    相关资源
    最近更新 更多