类型'List <string>'不是类型转换中类型'String'的子类型

时间:2018-06-29 21:16:48

标签: dart flutter

我有这个:

List<String> _filters = <String>[8, 11];

我将此_filters传递到此端点:

this.api.setInterests(token, _filters)
  .then((res) {
    print(res);
  });

如下所示:

  Future setInterests(String token, List<String> interests) {
    return _netUtil.post(BASE_URL + "/setinterests", body: {
      "token": token,
      "interests": interests
    }).then((dynamic res) {
      return res;
    });
  }

传递_filters总是会引发错误:

type 'List<String>' is not a subtype of type 'String' in type cast

我不知道飞镖还想要我做什么。

3 个答案:

答案 0 :(得分:0)

我找到了答案。我刚刚将.toString()添加到了_filters列表中。

  this.api.setInterests(token, _filters.toString())
  .then((res) {
    print(res);
  });

答案 1 :(得分:0)

  1. 您需要在正文中添加json.encode(data)
  2. 添加这两个标头
    “内容类型”:“ application / json”,
      'Accept':'application / json',
  3. 创建数据地图

    final Map<String, dynamic> data = new Map<String, dynamic>();
     data['token'] = token;
     data['interests'] = interests;
    
  4. 像这样调用api

    http.post(url,<br>
    body: json.encode(data),
    headers: { 'Content-type': 'application/json',
      'Accept': 'application/json'},
    encoding: encoding)
    .then((http.Response response) {
    
         // print(response.toString());
    
    }
    

答案 2 :(得分:0)

在您的情况下,主体是Map ,因为“ params”键映射到列表([])而不是字符串(“ []”)。

使用List <String>函数分隔join(),并将每个元素转换为String并连接字符串。像这样

_filters.join('')

如果您想要comma separated string,请这样做

这使您的列表以逗号分隔的字符串

_filters.join(',')