Instance.fromModule constructor
Instance.fromModule(})
Synchronously instantiates compiled WebAssembly Module.
Some runtimes do not allow synchronous instantiation of modules bigger than 4 KB in the main thread.
Imports could be provided via either importMap
parameter like this:
final importMap = {
'env': {
'log': allowInterop(print)
}
}
final instance = Instance.fromModule(module, importMap: importMap);
or via importObject
parameter which must be a JsObject
:
import 'package:js/js.dart';
@JS()
@anonymous
abstract class MyImports {
external factory MyImports({MyEnv env});
}
@JS()
@anonymous
abstract class MyEnv {
external factory MyEnv({Function log});
}
final importObject = MyImports(env: MyEnv(log: allowInterop(print)));
final instance = Instance.fromModule(module, importObject: importObject);
Implementation
factory Instance.fromModule(Module module,
{Map<String, Map<String, Object>>? importMap,
Object? importObject}) =>
Instance._(
_Instance(module.jsObject, _reifyImports(importMap, importObject)),
module);