mytja / flutter_quickjs

Flutter bindings for QuickJS with dart:ffi.

Home Page:https://pub.dev/packages/flutter_quickjs

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

flutter_quickjs

Flutter bindings with dart:ffi for QuickJS : A small Javascript engine supports ES2020.

This is a plugin help execute javascript on flutter app, which is convenient to use with simple apis, and it supports iOS, Android now.

Install

To use this plugin, add flutter_quickjs as a dependency in your pubspec.yaml file.

Usage

Basic Example

import 'package:flutter/material.dart';
import 'package:flutter_quickjs/flutter_quickjs.dart';

void main() {
  var evalResult = runJs();
  runApp(
    MaterialApp(
      home: Material(
        child: Center(
          child: Text(evalResult),
        ),
      ),
    ),
  );
}

runJs() {
  var qjs = FlutterQuickjs();
  var res = qjs.eval('Math.PI');
  qjs.close();
  return res.toString();
}

Global Object

qjs.eval('var a = 666;');
print(qjs.global()['a']);
// 666

Set Value

qjs.setValue('globalThis.console.log', (msg) {
  print(msg);
});
qjs.eval('console.log("hello world!")');
// hello world!

JS Function Call

var func = qjs.eval('function func(a, b){return [a, b, a + b];}func');
print(func(2,3));
// [2, 3, 5]

For more usages please see example

Datatype Mapping

dart js
null Undefined / Null
Bool Boolean
Int Number
Double Number
String String
List Array
Map Object
Function Function
Exception Error

Todo

  • bytecode support
  • support more platforms like macos,linux

Reference

Lincense

MIT © ZhangPingFan

About

Flutter bindings for QuickJS with dart:ffi.

https://pub.dev/packages/flutter_quickjs

License:MIT License


Languages

Language:C 89.5%Language:JavaScript 7.2%Language:C++ 1.1%Language:Dart 1.0%Language:Makefile 0.8%Language:Shell 0.2%Language:Ruby 0.1%Language:Kotlin 0.0%Language:CMake 0.0%Language:Swift 0.0%Language:Objective-C 0.0%