繁体   English   中英

具有不同数据类型的 Dart 键值

[英]Dart key value with different data type

我有这个要发送到服务器的键值对:

String brand = "sony";

  double price_val = 0.01,
      ram_val = 0.01,
      internal_val = 0.01,
      kamera_val = 0.01;

var arguments = {
  "brand": brand,
  "price": price_val,
  "ram": ram_val,
  "internal": internal_val,
  "kamera": kamera_val
};

但我收到了这个错误:

Error : type 'double' is not a subtype of type 'String' in type cast

如果我将其更改为.toString() ,服务器将给出另一个错误,因为值需要为double 我怎样才能准确地发送这些值?

编辑

看起来它在 http 请求上出错了:

http.post(url,
        body: arguments,
        headers: {"Content-Type": "application/json"}).then((onValue) {
      Navigator.push(
          context,
          MaterialPageRoute(
              builder: (context) => ResultPage(
                    onValue.body,
                  )));
});

如果您在请求标头中将application/json设置为内容类型,则需要使用jsonEncode将请求正文编码为 json

这是示例

http.post(url,
        body: jsonEncode(arguments),
        headers: {"Content-Type": "application/json"}).then((onValue) {
      Navigator.push(
          context,
          MaterialPageRoute(
              builder: (context) => ResultPage(
                    onValue.body,
                  )));
});

明确定义参数类型

final arguments = <String, Object>{
  "brand": brand,
  "price": price_val,
  "ram": ram_val,
  "internal": internal_val,
  "kamera": kamera_val
};

您可以使用 dynamic 关键字:

final arguments = <String, dynamic>{
  "brand": brand,
  "price": price_val,
  "ram": ram_val,
  "internal": internal_val,
  "kamera": kamera_val
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM