Fork from tgarm/flutter-luavm
A Flutter plugin provides Lua virtual machine
This plugin is inspired by flutter_lua, a Go based Lua implementation for Flutter.
- Supports the latest stable vanilla Lua 5.3.5
- Support multiple Lua instances (don't be too much. <=100 instances)
- Lua script runs in platform thread
- Use Java/ObjC to avoid the annoying Swift version compatibility problem
- Lua library "os" is NOT supported yet, due to unsupported functions in iOS: system and tmpnam
- All returned values will be converted to string
VM instances are named to distinguish each other.
import 'package:luavm/luavm.dart';
...
await Luavm.open("vm-name");When VM is opened, run Lua code with 'eval' function:
- To load a Lua function:
await Luavm.eval("name","function luafn(a,b) return a+b end" );- To simply run Lua code:
final res = await Luavm.eval("name","return _VERSION")res should be returned as:
["Lua 5.3"]- To call a Lua function:
final res = await Luavm.eval("name","return luafn(1,2)");Luavm.eval returns a list of String, contains each value returned from Lua function.
final res = await Luavm.eval("name","return 1,2,'hello'");should return a Dart list:
["1","2","hello"]
await Luavm.close("name");Errors will be thrown as LuaError which contains error message as a string.
- http: luasocket
- json: dkjson
local socket = _G["socket"]
local json = _G["json"]
local response_body = {}
local res, code, response_headers = socket.http.request{
url = myUrl,
method = "GET",
sink = ltn12.sink.table(response_body)
}
local jsonData = table.concat(response_body)
local obj, pos, err = json.decode (jsonData, 1, nil)
if not err then
-- dosomething
end
response_body = nil
Run this code when app start
Luavm.Init();And replace
Luavm.eval("name","code");to
Luavm.evalAsync("name","code");