2014-04-04 96 views
1

如何導入和使用dart中的任何第三方javascript庫?我想在我的dart應用中使用snapsvg來呈現svg。但不知道如何添加依賴項來添加和導入它。使用dart語言的第三方庫

我將js: any添加到我的pubspec.yaml中,並將packages/browser/interop.js導入到我的html中。我在哪裏放置下載的snapsvg.js並將其導入我的dart源文件以使用它。

我想使用下面的JavaScript代碼使用飛鏢的snapsvg框架。

s = Snap(800, 600); 
s.rect(0, 0, 100, 100).attr({ 
    fill: 'white', 
    stroke: 'black' 
}); 

我試圖從鏢這樣的代碼:

import 'package:js/js.dart' as js; 
    void main() { 
     var s = js.context.Snap(800, 600); 
     s.rect(0, 0, 100, 100); 
    } 

這工作在dartium罰款,但是當我生成後,如JavaScript運行,我得到了JavaScript錯誤「的方法ZM在對象未找到」

我相信這是不正確的方式,我應該使用callMethod代理。所以我改變了這樣的代碼

import 'dart:js' show context, JsObject; 
void main() { 
    var snap = context['Snap']; 
    snap.callMethod('rect', 0,0,100,100); 
} 

這不適用於Dartium本身。我將不勝感激,如果有人能夠提供如何從dart調用構造函數Snap(800, 600)的示例,以及我示例代碼中的rectattr方法的示例。

回答

1

使用<script>標記將它們添加到HTML文件中。
您可以使用dart-js-interop從Dart調用JavaScript函數。 在這個標籤下的Stackoverflow上有很多例子 - 只需點擊你的問題下面的標籤。 當您提供更具體的示例時,它更容易提供幫助。

+0

帶有更具體問題和示例的編輯帖子,你能幫忙嗎? @Justin Fagnani – Raja

1

您可以使用內置的dart:js庫調用JavaScript。請儘量避免使用/ package/js,這是通過將js: any添加到您的pubspec中來安裝的。 js包很可能會導致dart2js輸出變得臃腫,我們可能會在某個時候棄用它。

您可以像在任何HTML頁面中那樣通過腳本標記來引用JavaScript文件。您實際上並沒有將它們導入到Dart源代碼中,您可以使用dart:js通過其頂級context屬性訪問JavaScript。