Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 向服务器发送数据时获取_InternalLinkedHashMap错误_Flutter_Dart - Fatal编程技术网

Flutter 向服务器发送数据时获取_InternalLinkedHashMap错误

Flutter 向服务器发送数据时获取_InternalLinkedHashMap错误,flutter,dart,Flutter,Dart,创建两个类来创建此json结构后: { "data": [ { "staff_id": "1111", "class_id": "222222", "enter_date": "33333333", "exit_date": "4444444444444" } ] } 我没有任何问题,但当我尝试将此结构发送到服务器时,我得到错误: 获取erorr类型“\u InternalLinkedHashMap”不是一个 “映射”类型

创建两个类来创建此json结构后:

{
  "data": [
    {
      "staff_id": "1111",
      "class_id": "222222",
      "enter_date": "33333333",
      "exit_date": "4444444444444"
    }
  ]
}
我没有任何问题,但当我尝试将此结构发送到服务器时,我得到错误:

获取erorr类型“\u InternalLinkedHashMap”不是一个 “映射”类型的子类型

我的json结构类:

@JsonSerializable()
class RestData {
  final List<Data> data;

  RestData(this.data);

  factory RestData.fromJson(Map<String, dynamic> json) => _$RestDataFromJson(json);

  Map<String, dynamic> toJson() => _$RestDataToJson(this);
}

@JsonSerializable()
class Data {
  @JsonKey(name: 'staff_id')
  String staffId;

  @JsonKey(name: 'class_id')
  String classId;

  @JsonKey(name: 'enter_date')
  String enterDate;

  @JsonKey(name: 'exit_date')
  String exitDate;

  Data(this.staffId, this.classId,this.enterDate, this.exitDate);

  factory Data.fromJson(Map<String, dynamic> json) => _$DataFromJson(json);
  Map<String, dynamic> toJson() => _$DataToJson(this);
}
@JsonSerializable()
类RestData{
最终清单数据;
RestData(this.data);
工厂RestData.fromJson(映射json)=>u$RestDataFromJson(json);
映射到JSON()=>$RestDataToJson(这个);
}
@JsonSerializable()
类数据{
@JsonKey(名称:“员工id”)
线锯;
@JsonKey(名称:“class_id”)
字符串classId;
@JsonKey(名称:“输入日期”)
字符串输入日期;
@JsonKey(名称:“退出日期”)
串出口;
数据(this.staffId、this.classId、this.enterDate、this.exitDate);
factory Data.fromJson(Map json)=>$DataFromJson(json);
映射到JSON()=>$DataToJson(此);
}
生成数据并发送到服务器:

List<Data> list = [];
list.add(Data('1111', '222222', '33333333', '4444444444444'));

RestData restData = RestData(list);

print(json.encode(restData.toJson()));

/*result of print: {"data":[{"staff_id":"1111","class_id":"222222","enter_date":"33333333","exit_date":"4444444444444"}]}*/


Map userHeader = {"Content-type": "application/json", "Accept": "application/json"};

final response = await http
    .post('http://sample.com', body: json.encode(restData.toJson()), headers: userHeader)
    .timeout(Duration(seconds: 60));

if (response.statusCode == 200) {
  return true;
} else {
  return false;
}
List=[];
添加(数据('1111','222222','33333333','44444');
RestData RestData=RestData(列表);
打印(json.encode(restData.toJson());
/*打印结果:{“数据”:[{“员工id”:“1111”,“班级id”:“2222222”,“输入日期”:“3333333”,“退出日期”:“44444”}]}*/
Map userHeader={“内容类型”:“应用程序/json”,“接受”:“应用程序/json”};
最终响应=等待http
.post('http://sample.com,正文:json.encode(restData.toJson()),标题:userHeader)
.超时(持续时间(秒:60));
如果(response.statusCode==200){
返回true;
}否则{
返回false;
}

这很可能是因为标题-它们必须是
Map
类型,但您只是将它们定义为Map,因此Dart为您分配给它的值选择最有效的Map类型,它最终是
\u InternalLinkedHashMap
,出于某种原因,它不是
Map
的子类型。我想说得更具体一点,但在FlatterSDK中搜索“\u InternalLinkedHashMap”不会产生任何结果,因此我不知道实现细节。

问题已解决
Similar@TinusJackson链接没有任何答案。请共享异常的堆栈跟踪。@Ovidiu我如何才能共享它?我找不到stack Trace你在技术上用了一种稍微不同的方式应用了我的答案。通过直接在
post
调用中指定
headers
的值,它被直接分配给
headers
属性,该属性属于正确的所需类型
Map
final response = 
await http.post(
    'http://sample.com',
    body:json.encode(restData.toJson()),
    headers: {"Content-type": "application/json"}
).timeout(Duration(seconds: 60));