From 6c00cfc418f08e75c6a173fbe171b2566d49ed6f Mon Sep 17 00:00:00 2001 From: wanghualei Date: Tue, 15 Nov 2022 22:50:41 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E8=87=AA=E5=AE=9A=E4=B9=89api?= =?UTF-8?q?=E7=9A=84=E8=BF=94=E5=9B=9E=E5=80=BC=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/mop.dart | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/lib/mop.dart b/lib/mop.dart index 55df1ec..fb1c6dd 100644 --- a/lib/mop.dart +++ b/lib/mop.dart @@ -7,7 +7,8 @@ import 'package:mop/api.dart'; typedef MopEventCallback = void Function(dynamic event); typedef MopEventErrorCallback = void Function(dynamic event); -typedef ExtensionApiHandler = Future Function(dynamic params); +typedef ExtensionApiHandler = Future> Function(dynamic params); +typedef MopAppletHandler = Future Function(dynamic params); class FinStoreConfig { ///创建应用时生成的SDK Key @@ -317,6 +318,8 @@ class Mop { late int eventId = 0; final List> _mopEventQueye = >[]; + final Map _appletHandlerApis = {}; + final Map _extensionApis = {}; Map _webExtensionApis = {}; @@ -360,6 +363,11 @@ class Mop { if (handler != null) { return await handler(call.arguments); } + + final apiHandler = _appletHandlerApis[name]; + if (apiHandler != null) { + return await apiHandler(call.arguments); + } } else if (call.method.startsWith("webExtentionApi:")) { final name = call.method.substring("webExtentionApi:".length); final handler = _webExtensionApis[name]; @@ -553,13 +561,13 @@ class Mop { /// 注册小程序事件处理 /// void registerAppletHandler(AppletHandler handler) { - _extensionApis["forwardApplet"] = (params) async { + _appletHandlerApis["forwardApplet"] = (params) async { handler.forwardApplet(Map.from(params)); }; - _extensionApis["getUserInfo"] = (params) { + _appletHandlerApis["getUserInfo"] = (params) { return handler.getUserInfo(); }; - _extensionApis["getCustomMenus"] = (params) async { + _appletHandlerApis["getCustomMenus"] = (params) async { final res = await handler.getCustomMenus(params["appId"]); List> list = []; res.forEach((element) { @@ -573,14 +581,14 @@ class Mop { debugPrint("registerAppletHandler getCustomMenus list $list"); return list; }; - _extensionApis["onCustomMenuClick"] = (params) async { + _appletHandlerApis["onCustomMenuClick"] = (params) async { return handler.onCustomMenuClick( params["appId"], params["path"], params["menuId"], params["appInfo"]); }; - _extensionApis["appletDidOpen"] = (params) async { + _appletHandlerApis["appletDidOpen"] = (params) async { return handler.appletDidOpen(params["appId"]); }; - _extensionApis["getPhoneNumber"] = (params) async { + _appletHandlerApis["getPhoneNumber"] = (params) async { return handler.getMobileNumber((params0) => {_channel.invokeMethod("getPhoneNumberResult", params0)}); };