loadBindings method
Implementation
Future<void> loadBindings(Compiler compiler, String name) async {
final packagePath = 'package:every_door_plugin/bindings/${name}_eval.json';
final packageUri = await Isolate.resolvePackageUri(Uri.parse(packagePath));
if (packageUri == null) {
throw FileSystemException("Cannot find $packagePath");
}
final contents = await File(p.fromUri(packageUri)).readAsString();
final data = json.decode(contents) as Map<String, dynamic>;
for (final $class in (data['classes'] as List).cast<Map>()) {
compiler.defineBridgeClass(BridgeClassDef.fromJson($class.cast()));
}
for (final $enum in (data['enums'] as List).cast<Map>()) {
compiler.defineBridgeEnum(BridgeEnumDef.fromJson($enum.cast()));
}
for (final $source in (data['sources'] as List).cast<Map>()) {
compiler.addSource(DartSource($source['uri'], $source['source']));
}
for (final $function in (data['functions'] as List).cast<Map>()) {
compiler.defineBridgeTopLevelFunction(
BridgeFunctionDeclaration.fromJson($function.cast()),
);
}
}