Dart 如何从HttpRequest获取值?

Dart 如何从HttpRequest获取值?,dart,Dart,我在学飞镖,遇到了一个障碍。我非常想从json字符串处理函数返回一个值,以便在main()中使用该值。(我正在尝试设置一些顶级变量,以便与html模板的单向数据绑定一起使用。)我正在使用HttpRequest.getString和调用启动处理。但是HttpRequest不喜欢被分配给变量,所以我不知道如何从中获取任何信息 processString(字符串jsonString){ //创建相关数据的地图 返回myMap; } void main(){ getString(url).then(pr

我在学飞镖,遇到了一个障碍。我非常想从json字符串处理函数返回一个值,以便在main()中使用该值。(我正在尝试设置一些顶级变量,以便与html模板的单向数据绑定一起使用。)我正在使用
HttpRequest.getString
调用启动处理。但是HttpRequest不喜欢被分配给变量,所以我不知道如何从中获取任何信息

processString(字符串jsonString){
//创建相关数据的地图
返回myMap;
}
void main(){
getString(url).then(processString);
//对处理后的结果做点什么!
}

我想我的问题是如何从HttpRequest调用的函数中获取值?

您正在尝试执行Dart异步模型不支持的操作。您必须处理异步请求的结果:

  • processString()
  • 在从
    processString()
    调用的另一个函数中
  • 在传递给
    then()
    的匿名函数中 或者类似的东西。您不能在
    main()
    中从较低的位置访问它:

    processString(字符串jsonString){
    //创建相关数据的地图
    //对处理后的结果做点什么!
    }
    void main(){
    getString(url).then(processString);
    //这里的任何代码都无法访问HttpRequest的结果
    }
    
    您可能更喜欢:

    processString(字符串jsonString){
    //创建相关数据的地图
    返回myMap;
    }
    void main(){
    HttpRequest.getString(url).then((resp){
    map=processString(resp);
    //对处理后的结果做点什么!
    });
    //这里的任何代码都无法访问HttpRequest的结果
    }
    
    谢谢您的回答。似乎我也无法从
    HttpRequest
    内部更改顶级变量,即使它位于
    main()
    内。这是因为我正在处理一个可能在
    main()
    之后运行的
    Future
    ?还是我遇到了范围问题?@jacobrharris您可以从匿名函数或
    processString()
    访问(更改)任何顶级变量。但是,您在
    main()
    中看不到进一步的更改,因为在
    main()
    完成之前,回调不会运行。