当前位置: 首页 > 知识库问答 >
问题:

我无法创建包含其他贴图的贴图

丁震博
2023-03-14

我试图创建一个注册模型,并将其发送到我的API,但位置键有另一个地图/json对象,其中包含类型:点和坐标:[双,双]。

最后一个json对象应该是这样的

{
    "name": "Arsh Bansal",
    "email": "ab@yahoo.com",
    "password": "123456789",
    "birthday": "06-21-2000",
    "gender": "Male",
    "location": {
        "type": "Point", 
        "coordinates": [13.0987, 88.403]
    },
    "phone_number": "123456789"
}

网络助手代码如下:

import 'package:http/http.dart' as http;
import 'dart:convert';

class NetworkHelper {

  NetworkHelper(this.url);
  NetworkHelper.withHeader(this.url, this.headers);

  final String url;
  Map<String, String> headers;

  Future getData() async {

    http.Response response = await http.get(url);

    if(response.statusCode == 200) {
      String data = response.body;

      return jsonDecode(data);
    } else {
      String error = response.body;

    }
  }

  Future<http.Response> postData(Map body) async {

    http.Response response = await http.post(url, headers: headers, body: body);
    return response;

  }

}

但我得到下面的错误

我得到的错误是:未处理的异常:类型“\u InternalLinkedHashMap”

#0      CastMap.forEach.<anonymous closure> (dart:_internal/cast.dart:288:25)
#1      _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:379:8)
#2      CastMap.forEach (dart:_internal/cast.dart:287:13)
#3      mapToQuery (package:http/src/utils.dart:17:7)
#4      Request.bodyFields= (package:http/src/request.dart:137:12)
#5      BaseClient._sendUnstreamed (package:http/src/base_client.dart:170:17)
#6      BaseClient.post (package:http/src/base_client.dart:58:7)
#7      post.<anonymous closure> (package:http/http.dart:70:16)
#8      _withClient (package:http/http.dart:166:20)
#9      post (package:http/http.dart:69:5)
#10     NetworkHelper.postData (package:clubinn/services/network_helper.dart:28:36)
#11     Models.createUser (package:clubinn/models/models.dart:72:50)
#12     _SignUpPageState.build.<anonymous closure> (package:clubinn/sc<…>

共有1个答案

石臻
2023-03-14

您的问题是使用http。post正文参数。如果您阅读了文档,可以看到文档描述如下:

body设置请求的主体。它可以是字符串、列表或映射。如果是字符串,则使用编码对其进行编码,并将其用作请求的主体。请求的内容类型默认为“text/plain”。

...

若body是一个映射,那个么使用编码将其编码为表单字段。请求的内容类型将设置为“application/x-www-form-urlencoded”;这不能被覆盖。

https://pub.dev/documentation/http/latest/http/post.html

输入的body来自以下代码:

    Map<String, dynamic> body = {
      "name": name,
      "email": email,
      "password": password,
      "birthday": DOB,
      "gender": gender,
      "location": location.toJson(),
      "phone_number": mobile
    };

其中类型甚至不接近于Map

  Map<String,dynamic> toJson() => {
    "type": type,
    "coordinates": List<double>.from(coordinates.map((x) => x)),
  };

另外,我不认为你想把地图放在首位。正如您在前面提到的留档中看到的,映射被“使用编码编码为表单字段”。相反,您真正想要的是将映射解析成JSON字符串,并将该字符串作为主体提供给http.post

所以它应该是这样的:

http.Response response = await http.post(url, headers: headers, body: json.encode(body));

 类似资料:
  • 通过纹理贴图加载器TextureLoader的load()方法加载一张图片可以返回一个纹理对象Texture,纹理对象Texture可以作为模型材质颜色贴图.map属性的值。 材质的颜色贴图属性.map设置后,模型会从纹理贴图上采集像素值,这时候一般来说不需要再设置材质颜色.color。.map贴图之所以称之为颜色贴图就是因为网格模型会获得颜色贴图的颜色值RGB。 // 纹理贴图映射到一个矩形平面

  • Note 本节暂未进行完全的重写,错误可能会很多。如果可能的话,请对照原文进行阅读。如果有报告本节的错误,将会延迟至重写之后进行处理。 我们的场景中已经充满了多边形物体,其中每个都可能由成百上千平坦的三角形组成。我们以向三角形上附加纹理的方式来增加额外细节,提升真实感,隐藏多边形几何体是由无数三角形组成的事实。纹理确有助益,然而当你近看它们时,这个事实便隐藏不住了。现实中的物体表面并非是平坦的,而

  • 一个复杂的曲面模型,往往模型顶点数量比较多,模型文件比较大,为了降低模型文件大小,法线贴图.normalMap算法自然就产生了,复杂的三维模型3D美术可以通过减面操作把精模简化为简模,然后把精模表面的复杂几何信息映射到法线贴图.normalMap上。 法线贴图 下面代码在没有设置法线贴图之前就是一个立方体网格模型Mesh,然后把一个携带圆形凹坑信息的法线贴图3_256.jpg设置到立方体网格模型的

  • 有没有更好的方法来转换贴图

  • 法线贴图(凹凸贴图) 法线贴图是 凹凸贴图 的一种。凹凸贴图是一种特殊的纹理,允许为模型添加表面细节,例如凸起、凹槽和划痕光,这些细节将捕获光线,就像真实的几何体一样。 举个例子,你可能想要显示一个具有凹槽、螺丝钉或铆钉的表面,例如飞机机身。一种实现方式是为这些细节进行几何建模,如下所示。 一张飞机金属板,以真实的几何形状为细节建模。 以真实几何形状为如此细微的细节建模通常不是一个好主意。在上图右

  • 我正在尝试制作一个.jar文件(这是我第一次),我很困惑。我了解如何使用命令提示符创建一个简单的jar文件,但对于我的程序,我导入了JavaMail API和我创建的另一个库(名为ArrayLibrary,其中填充了排序方法)。我如何在一个jar文件中创建这些?