获取_InternalLinkedHashMap <string,dynamic =“”>'不是'FutureOr <response>'类型的子类型

时间:2018-12-06 12:17:39

标签: dart flutter

我是Dart / Flutter的新手,我试图获得使用Web服务的未来的结果:

 Future<Map> _readData() async {
   (...)


http.Response response = await http.post(
    request,
    headers: {
      "SOAPAction": "http://www.totvs.com/IwsConsultaSQL/RealizarConsultaSQL",
      "Content-Type": "text/xml;charset=UTF-8",
      "Authorization": "Basic bWVzdHJlOnRvdHZz",
      "cache-control": "no-cache"
    },
    body: utf8.encode(requestBody),
    encoding: Encoding.getByName("UTF-8")
).then((onValue){

  (...)


  var dataFinal = jsonDecode(jsondataFinal);

  return  dataFinal ;
});

在初始化状态下,我调用此函数,因此可以使用此结果构建布局:

     @override
  void initState () {
    super.initState();
    _readData().then((data){
      setState(() {
        print(data);

      });

    });

  }

我总是会遇到此异常:

_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'FutureOr<Response>'

关于我在做什么错的任何想法?

谢谢

2 个答案:

答案 0 :(得分:1)

此代码会显示此错误吗?

<?php
if (!isset($_SESSION)) {
    session_start();
    echo session_status();
    echo "SessionID: ".session_id();
}

echo "SessionID: ".session_id();
?>

答案 1 :(得分:1)

您不能同时使用await。您的代码应如下所示

Future<Map> _readData() async {
(...)

http.Response response = await http.post(
    request,
    headers: {
      "SOAPAction": "http://www.totvs.com/IwsConsultaSQL/RealizarConsultaSQL",
      "Content-Type": "text/xml;charset=UTF-8",
      "Authorization": "Basic bWVzdHJlOnRvdHZz",
      "cache-control": "no-cache"
    },
    body: utf8.encode(requestBody),
    encoding: Encoding.getByName("UTF-8")
);

  var dataFinal = jsonDecode(response.body);

  return  dataFinal ;
}