类型'int'不是类型转换中类型'String'的子类型

时间:2018-09-25 20:53:39

标签: dart flutter

这是我的服务

  Future ads(token, adsLimit) {
    return _netUtil.post(BASE_URL + "/getuserads", body: {"token": token, "quantity": adsLimit}).then(
        (dynamic res) {
      return res;
    });
  }

我正试图像这样使用它:

var myToken = prefs.getString('token');
var adsLimit = prefs.getInt('adsLimit') ?? 10;

this.api.ads(myToken, adsLimit).then((res) async {
  var ads = res['ads'];
  print('New Ads $ads');
  // _showBigPictureNotification(ads);
});

即使这样做:

this.api.ads(myToken, 10).then((res) async {

仍然出现相同的错误。解决办法是什么?

Flutter 0.9.3-pre.14 • channel master • https://github.com/flutter/flutter.git
Framework • revision 449e3c2a0a (5 days ago) • 2018-09-20 19:46:50 -0700
Engine • revision a8890fdccd
Tools • Dart 2.1.0-dev.5.0.flutter-46ec629096

1 个答案:

答案 0 :(得分:1)

body可能是Map<String, String>,因此您需要将int转换为String。给您正式的参数类型是个好主意。

Future<void> ads(String token, int adsLimit) {
  return _netUtil.post(
    BASE_URL + '/getuserads',
    body: {
      'token': token,
      'quantity': '$adsLimit',
    },
  );
}

如果您想在编译类型时捕获该错误,请为主体映射指定如下类型:

    body: <String, String>{
      'token': token,
      'quantity': adsLimit,
    },