Instance.fromModule constructor

Instance.fromModule(
  1. Module module, {
  2. Map<String, Map<String, Object>>? importMap,
  3. Object? importObject,
})

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);