flutter_js
flutter_js copied to clipboard
base64 file can't be passed to js?
Hi. I'm a little stuck here trying to pass base64Encoded file to my js function. When I try to encode the file on the js side, application just dies, without any errors or something.
The code I'm trying to execute:
void test() async {
flutterJs = getJavascriptRuntime();
... // work with file here
final String base64Data = base64Encode(bytes); // base64 file
// example base64 variable for tests
final t2 = 'AAAAFGZ0eXBtcDQxIBMQGG1wNDEDL2VvbWRhdEdQUk8wAgAASEQ2LjAxLjAyLjAxLjAwTEFKNzA2MTQxODYwMDkzMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4kzBtrfZu9oHyzTA8xxcdkMzMjIxMzI0NjI5NzMxAEhFUk82IEJsYWNrAAAAAAAAAAAAAAAAAAAAAAAAAAwFAMKAWAAA4kzBtrfZu9oHyzTA8xxcdkMQ4AcYCAQAAACnsAAAAAAAARIAxxUrNDkuNDIwNyswMzIuMDIwNy8AAAAASEQ2LjAxLjAyLjAxLjAwTEFKNzA2MTQxODYwMDkzMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4kzBtrfZu9oHyzTA8xxcdkMzMjIxMzI0NjI5NzMxAEhFUk82IEJsYWNrAAAAAAAAAAAAAAAAAAAAAAAAAOJMwba32bvaB8s0wPMcXHYAAAAAAAAAAAAAAAAAAAAADABVWQAAAABOWUFVVE8AAAAASElHSAAARkxBVAAAAAAAAAAAAAAAAJABAABkAAAALTAuNQAANVNFQwAAAABXWU5OTk5SQVcAAAAAAEFVVE8AAAAAQVNLAAAAAAAAAAAAAAAAAAAAAAABAAAAkF8BAFADAADgAQAAAAAAAFADAADgAQAAAQAAAIC7AABkAAAAGAAAAAIAAACAuwAASPOFVsgxAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAR1ADAQAApMgAAA4QAAAOEAAAAC0nTUAe9gah7YC3AQEBQAAAAwBAAAAMuZAAU+wACGRn3uDMgAKfYABDIz73AIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABCjuPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACCRAAAKS+JYiEAE3/Au4ABupK//84ucW';
final String bundleJs = await rootBundle.loadString('assets/dist/main.js'); // my bundle with code
flutterJs.evaluate('''var window = global = globalThis;''');
flutterJs.evaluate(bundleJs + '');
final r = flutterJs.evaluate('''
let a = global.goproConvert;
a.extractFile(\'${base64Data}\' );
''');
print(r);
}
}
The JS code:
import * as gpmfExtract from 'gpmf-extract';
import * as base64 from 'base-64';
class goproConvert {
constructor() {
}
async extractFile(base64File) {
let file = base64.decode(base64File); // die at this line
let extracted = await gpmfExtract(file);
console.log(extracted);
return base64File;
}
}
window.goproConvert = new goproConvert();
Maybe I miss something, but haven't found any examples or docs why does it happen. Any help is much appreciated!
Thanks!
Maybe related to my question: how to handle js import?
https://github.com/abner/flutter_js/issues/113