如何在dart中使用javascript返回的代理

如何在dart中使用javascript返回的代理,dart,dart-js-interop,Dart,Dart Js Interop,我目前正在从dart调用一个JavaScript函数,该函数接受一个JSON字符串和一个成功回调 来自JavaScript的回调应该以JSON字符串的形式返回响应。但是,我无法从dart中返回的代理获取此信息。调试代理时,我只能看到_id、_port和hashCode 如何从代理获取所需的信息 代码片段: void init() { _mJSProxy= js.retain(new js.Proxy(js.context.Test));} } void testRequest(String

我目前正在从dart调用一个JavaScript函数,该函数接受一个JSON字符串和一个成功回调

来自JavaScript的回调应该以JSON字符串的形式返回响应。但是,我无法从dart中返回的代理获取此信息。调试代理时,我只能看到_id、_port和hashCode

如何从代理获取所需的信息

代码片段:

void init()
{
  _mJSProxy= js.retain(new js.Proxy(js.context.Test));}
}

void testRequest(String p_request)
{
  _mJSProxy.test(js.map(p_request), new js.Callback.once(onCallbackSuccess));
}

void onCallbackSuccess(var response, var httpRequest)
{
  // response & httpRequest is a Proxy
  // How to get the required information from them?
}

当返回的类型不是
bool
num
String
html.Element
时,使用
js.Proxy
对象。当返回一个
js.Proxy
时,您必须知道使用它的底层js对象的结构。例如,如果Js对象是一个对象,那么您可以像这样使用它:

js.Proxy p=//XMLHttpRequest上的代理
字符串结果=p.responseText;
//“.responseText”由noSuchMethod处理,调用在Js端完成
在您的情况下,如果
response
Proxy
,并且您希望在Dart中复制Json结构,则可以使用:

导入'dart:convert';
String jsonValue=js.context.JSON.stringify(response);
Map dartJson=JSON.decode(jsonValue);
旁注:您必须使用
Map
作为
js.Map(…)
的参数。在代码中使用
字符串