前言
在将 Flutter 三方库 flutter_web_auth 适配到 OpenHarmony 时,核心挑战在于 MethodChannel 的通信机制。原生层需要处理来自 Dart 层的调用,特别是涉及浏览器跳转等跨进程操作时的参数提取与结果回调。
onMethodCall 方法分发逻辑
在 flutter_web_auth 的实现中,onMethodCall 主要处理两个方法:authenticate 和 cleanUpDanglingCalls。前者负责发起认证流程,后者用于清理挂起的调用请求。
源码实现
onMethodCall(call: MethodCall, result: MethodResult): void {
console.info(TAG, `onMethodCall: ${call.method}`);
if (call.method == "authenticate") {
const url = call.argument('url') as string;
const callbackUrlScheme = call.argument('callbackUrlScheme') as string;
console.info(TAG, `authenticate called with url=${url}, scheme=${callbackUrlScheme}`);
this.authenticate(url, callbackUrlScheme, result);
} else if (call.method == "cleanUpDanglingCalls") {
this.cleanUpDanglingCalls(result);
} else {
result.();
}
}

