gpt4 book ai didi

dart - 返回匿名JS函数,该函数从Dart返回javascript纯对象

转载 作者:行者123 更新时间:2023-12-03 04:30:10 24 4
gpt4 key购买 nike

Dart代码

import 'dart:html' as html;
import 'dart:js' as js;
import 'package:js/js.dart';

void main() {

var data = new AddLocationData(locationName: "Location1", locationPath: "ThisFolder");
var func = () => data;
html.window.console.log(func);
html.window.console.log(func());
}

@JS("")
@anonymous
class AddLocationData {
external String get locationName;
external String get locationPath;
external factory AddLocationData({String locationName, String locationPath});
}

您将假定 func将是一个js函数,但不是。它的类型/名称是 main_closure。看截图

Screenshot

因此,前两行是从Dart代码中打印出来的,然后使用Chrome Inspect Element窗口并右键单击 main_closure' and selected "Store as global variable" which then printed temp1`,然后使用它来显示有关所生成代码的一些信息。

因此很明显,Dart返回了一个对象而不是一个js函数,所以问这个问题的原因也是如此。

因此,我希望 temp1成为函数而不是 temp1.call$0,以便我可以通过调用 temp1()而不是 temp1.call$0()来获取数据。

最佳答案

参见js package doc:

Passing functions to JavaScript.

If you are passing a Dart function to a JavaScript API, you must wrap it using allowInterop or allowInteropCaptureThis.

关于dart - 返回匿名JS函数,该函数从Dart返回javascript纯对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47743070/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com