dartはJavaScriptにもコンパイルできます。
JavaScriptから関数を呼び出すのは少々面倒なのですが、Dartで作った関数を使ったJSアプリなんかを作ることも出来ます。
今は未だラインナップが弱いpubですが、素晴らしいものもあり、今回はqrを使用しています。
なので、下記サンプルにはpubspec.yamlに下記が必要です。
dependencies: qr: ^1.2.0 js: ^0.6.1+1
概要
JavaScript側に、makeSetQRという関数を用意しておいて、Dartから関数を露出させます。
var makeQR = function() { return "UNLOADED YET"; }; function makeSetQR(func) { makeQR = func; }
Dartがこちら。
import 'package:qr/qr.dart'; import 'package:js/js.dart'; @JS() external makeSetQR(Function f); main() { makeSetQR(allowInterop((int size,String f) { return QRImage(size,f); })); } String QRImage(int size,String source) { final qrCode = new QrCode(size, QrErrorCorrectLevel.L); qrCode.addData(source); qrCode.make(); var result = ""; for (int x = 0; x < qrCode.moduleCount; x++) { for (int y = 0; y < qrCode.moduleCount; y++) { if (qrCode.isDark(y, x)) { result += "1"; // render a dark square on the canvas } else { result += "0"; } } result += "\n"; } return result; }