submit method
Implementation
@override
Future<SubmitResponse> submit(String userId) async {
late Completer<Map<String, dynamic>> testResultCompleter;
testResultCompleter = Completer<Map<String, dynamic>>();
String jsCode = '''
function submit() {
if (window.isInitialized) {
window.DeviceIntelligence.setUserId( '$userId');
window.DeviceIntelligence.onSubmit((eventId, response) => {
let status = 'Error not defined';
if (response.status === 200) {
status = 'Success';
} else {
if (response.errors) {
status = response.errors.status + ' ' + response.errors.errorCode;
} else if (response.message) {
status = response.name + ' ' + response.message;
}
}
window.isInitialized=false;
window.flutter_injectResult(status, eventId);
});
} else {
const waitForInit = setInterval(() => {
if (window.isInitialized) {
clearInterval(waitForInit);
submit();
}
}, 250);
}
}
submit()
''';
js.context['flutter_injectResult'] = allowInterop((result, eventId) {
testResultCompleter
.complete({'message': result, 'eventId': eventId ?? ''});
});
js.context.callMethod('eval', [jsCode]);
final result = await testResultCompleter.future;
return SubmitResponse(
message: result['message'], eventId: result['eventId']);
}