getCurrentUser method
Implementation
@override
Future<String> getCurrentUser() async {
final completer = Completer<String>();
// Success handler
headlessWebView.webViewController?.addJavaScriptHandler(
handlerName: 'onGetCurrentUserResult',
callback: (args) {
if (!completer.isCompleted) {
completer.complete(args.isNotEmpty ? args[0].toString() : 'null');
}
},
);
// Error handler
headlessWebView.webViewController?.addJavaScriptHandler(
handlerName: 'onGetCurrentUserError',
callback: (args) {
if (!completer.isCompleted) {
completer.completeError(
args.isNotEmpty ? args[0].toString() : 'Unknown error',
);
}
},
);
await headlessWebView.webViewController?.evaluateJavascript(
source: """
(async () => {
try {
const res = await getCurrentUser();
window.flutter_inappwebview.callHandler('onGetCurrentUserResult', res ?? 'null');
} catch (e) {
window.flutter_inappwebview.callHandler('onGetCurrentUserError', 'Error: ' + e.toString());
}
})()
""",
);
try {
final result = await completer.future;
return result;
} catch (e) {
rethrow;
}
}