标签: dart-js-interop

如何使用Dart的JS互操作创建匿名JavaScript函数/回调?

我正在使用Dart和它的JS互操作.我需要将以下JavaScript代码转换为Dart:

ID3.loadTags("filename.mp3", function() {
  var tags = ID3.getAllTags("filename.mp3");
  if (tags.artist)
    artist.textContent = tags.artist;
  if (tags.title)
    track.textContent = tags.title;
}, {
  dataReader: FileAPIReader(file)
});
Run Code Online (Sandbox Code Playgroud)

请注意匿名回调作为第二个参数loadTags.如何使用Dart和dart:js库创建它?

我得到的最接近的是创建一个命名函数:

  js.context['loadTagsCallback'] = () {
    var tags = ID3.callMethod('getAllTags', ["filename.mp3"]);
    var artistTag = tags['artist'];
    var titleTag = tags['title'];

    if (artistTag != null) {
      artist.text = artistTag;
    }

    if (titleTag != null) {
      track.text = titleTag;
    }
  };
Run Code Online (Sandbox Code Playgroud)

然后使用这个Dart代码:

ID3.callMethod('loadTags', [
    "filename.mp3",
    js.context['loadTagsCallback'],
    new js.JsObject.jsify({'dataReader': id3FileReader})
]);
Run Code Online (Sandbox Code Playgroud)

但是,我不想创建命名函数.任何想法或提示?

dart dart-js-interop

4
推荐指数
1
解决办法
875
查看次数

Dart 和 Javascript 互操作的性能如何?

我担心编写一个需要与 D3 javascript 库互操作的 Dart 程序。需要从 javascript 访问大量数据,但我想将这些数据存储在 dart 中,我担心 Dart 和 Javascript 之间是否存在性能问题?

dart dart-js-interop

3
推荐指数
1
解决办法
205
查看次数

对于dartjs,奇数列表的字母(A到Z)空类实例是什么?

在每个dart文件的顶部编译的javascript是这个奇怪的列表.

function dart() {
  this.x = 0;
  delete this.x;
}
var A = new dart;
var B = new dart;
var C = new dart;
var D = new dart;
var E = new dart;
var F = new dart;
... etc etc ...
var Z = new dart;
Run Code Online (Sandbox Code Playgroud)

我扫描了其余的代码,寻找.A(或任何其他字母)没有运气.这究竟是为了什么目的?最终的结果是dart()函数/构造函数的AZ实例是空类对象,但有什么用?

/[A-Z]{1}\./我一样使用正则表达式找到一些字母实例用属性装饰,然后所有27个字母都通过这个函数运行:

function convertToFastObject(properties) {
  function MyClass() {
  }
  MyClass.prototype = properties;
  new MyClass();
  return properties;
}
;
A = convertToFastObject(A);
B = convertToFastObject(B);
C = convertToFastObject(C);
... etc …
Run Code Online (Sandbox Code Playgroud)

dart dart-js-interop

2
推荐指数
1
解决办法
569
查看次数

将 Dart 2 Map 动态转换为 Javascript 对象

我正在chrome.storage.local.set使用新js包和 dart 2 SDK编写一个自定义 dart 到 js 互操作。

MapDart 中的A与 JavaScript 中的对象不同,但强迫开发人员每次想要使用面向公众的 API 时都编写抽象类也不是正确的做法。

因此,我正在寻找一种将 dart Map 转换为不需要编写抽象类的 JavaScript 对象的方法。

使用dart:js它很容易将 dart Map 转换为 JS 对象,但是使用新js包我还没有看到任何将 dart Map 动态转换为 js 对象的示例。

dart dart-js-interop

2
推荐指数
2
解决办法
748
查看次数

在 PayPal 中使用 HtmlElementView

我有一个 Flutter Web 项目。我有以下 HTML 脚本需要放入HtmlElementView

<script src="https://www.paypal.com/sdk/js?client-id=YOUR_CLIENT_ID"></script>
<script>paypal.Buttons().render('body');</script>
Run Code Online (Sandbox Code Playgroud)

这里。我试过这个:

Widget build(BuildContext context) {
    // ignore: undefined_prefixed_name
    ui.platformViewRegistry.registerViewFactory(
      'paypal-button',
        (int viewId) => IFrameElement()
        ..width = '500'
        ..height = '500'
        ..src = '''
        <div id="paypal-button-container"></div>
        <script src="https://paypal.com/sdk/js?client-id=MY_CLIENT_ID"></script>
        <script>
        paypal.Buttons({

            // Set up the transaction
            createOrder: function(data, actions) {
                return actions.order.create({
                    purchase_units: [{
                        amount: {
                            value: '0.01'
                        }
                    }]
                });
            },

            // Finalize the transaction
            onApprove: function(data, actions) {
                return actions.order.capture().then(function(details) {
                    // Show a success message to …
Run Code Online (Sandbox Code Playgroud)

paypal dart-js-interop flutter flutter-web

2
推荐指数
1
解决办法
1090
查看次数

如何使用每个函数,从jquery到Dart语言?

我在jquery中有一个函数,如下所示

function findMax(){
 $( ".elements" ).each(function( ) {
  if($(this).css('z-index')>max1)
  max1=$(this).css('z-index');
  max1=parseInt(max1);
 });
}
Run Code Online (Sandbox Code Playgroud)

我必须在Dart语言中实现这个功能.在使用.each函数和'this'函数时遇到语法问题.

dart dart-editor dart-webui dart-js-interop

1
推荐指数
1
解决办法
275
查看次数

你如何与飞镖的js互动?

不,这与同名的其他问题不同.

有看似相同的包似乎这样做,但有不同的apis.

为什么有两个?

我们应该使用哪一个?

互操作看起来更新,并且有更好的api,但实际上并不起作用.根据文档,您应该能够转换此JavaScript:

var stage = new PIXI.Stage(0xFFFFFF);;
renderer = PIXI.autoDetectRenderer(800, 600);
document.body.appendChild(renderer.view);
Run Code Online (Sandbox Code Playgroud)

成:

var pixi = new js.Proxy(js.context.PIXI.Stage, 0xffffff);
var renderer = js.context.PIXI.autoDetectRenderer(400, 400);
document.body.append(renderer.view);
Run Code Online (Sandbox Code Playgroud)

但是当你尝试编译它时会出现错误:

dart2js
Error occured:/Users/doug/megac/client/public/dart/index.dart:7:27:
Warning: No member named 'PIXI' in class 'Proxy'.
var pixi = new js.Proxy(js.context.PIXI.Stage, 0xffffff);
^^^^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)

那么... js:dart?这是你应该使用的吗?

编辑:顺便说一句,对于任何偶然发现这一点的人来说,还有一个开放的错误http://code.google.com/p/dart/issues/detail?id=15795&thanks=15795&ts=1388068177关于如何缩小dart-js互操作桥操作当前不起作用.最初的问题是在2013年5月报道的,从那时起就没有采取任何行动,所以不要屏住呼吸.

dart dart-js-interop

0
推荐指数
1
解决办法
1417
查看次数

使用dart:js调用google maps api event addListener

在Google Maps API v3中,他们声明我们需要在点击标记时打开infowindow:

google.maps.event.addListener(marker, 'click', function() {
    infowindow.open(map,marker);
});
Run Code Online (Sandbox Code Playgroud)

现在我试图使用js库在dart中复制它.到目前为止,我有这样的事情:

final google_maps = context['google']['maps'];

var myLatlng = [43.5, -6.5];
var center = new JsObject(google_maps['LatLng'], myLatlng);

var mapTypeId = google_maps['MapTypeId']['ROADMAP'];

var mapOptions = new JsObject.jsify({
  "center": center,
  "zoom": 8,
  "mapTypeId": mapTypeId
});

var map = new JsObject(google_maps['Map'], [querySelector('#map-canvas'), mapOptions]);

var marker = new JsObject(google_maps['Marker'], [new JsObject.jsify({
  'position': center,
  'map': map,
  'title': 'Hello World!'
})]);

var tooltip = '<div id="content">Info window coontent</div>';

var infowindow = new JsObject(google_maps['InfoWindow'], [new JsObject.jsify({
"content": tooltip …
Run Code Online (Sandbox Code Playgroud)

google-maps google-maps-api-3 dart dart-js-interop

0
推荐指数
1
解决办法
260
查看次数