diff --git a/lib/util/application.dart b/lib/util/application.dart index 15ff151..6ee6174 100644 --- a/lib/util/application.dart +++ b/lib/util/application.dart @@ -4,6 +4,9 @@ class Application { // 初始化方法 static List _initMethods = List(); + ///有标签的方法用于没有页面的第三模块调用 + static Map _initStringMethods = Map(); + static Future init() async { for (InitMethod method in _initMethods) { await method(); @@ -15,4 +18,24 @@ class Application { static addMethod(InitMethod method) { _initMethods.add(method); } + + static addStringMethod({String type, InitMethod method}) { + if(type==null||method==null){ + return; + } + _initStringMethods[type] = method; + } + + static bool hasStringMethod(String type){ + return _initStringMethods.containsKey(type); + } + + static doStringMethod(String type){ + if(_initStringMethods.containsKey(type)){ + print("存在方法"+type); + _initStringMethods[type](); + }else{ + print("不存在方法"+type); + } + } } diff --git a/lib/util/router_util.dart b/lib/util/router_util.dart index 5d8fcc2..b838ac1 100644 --- a/lib/util/router_util.dart +++ b/lib/util/router_util.dart @@ -15,22 +15,24 @@ class RouterUtil { * skipModel 跳转参数 * data 额外参数 * */ - static Future route(SkipModel skipModel, Map data, - BuildContext context) async { + static Future route(SkipModel skipModel, Map data, BuildContext context) async { + // skipModel.skipIdentifier="pub.flutter.credit_card"; + // if (Application.hasStringMethod(skipModel.skipIdentifier.toString())) { + // Application.doStringMethod(skipModel.skipIdentifier.toString()); + // return null; + // } if (skipModel.skipIdentifier == null || skipModel.skipIdentifier == '') { print('skipIdentifier 参数不存在,无法跳转页面'); return Future.error('skipIdentifier 参数不存在,无法跳转页面'); } // is_jump等于0不跳转 - if(!EmptyUtil.isEmpty(skipModel.isJump) && skipModel.isJump == '0') { + if (!EmptyUtil.isEmpty(skipModel.isJump) && skipModel.isJump == '0') { return; } print('skipIdentifier: ${skipModel.skipIdentifier}'); hideKeyboard(context); if (skipModel?.requiredLogin == '1') { - UserInfoModel user = - await Provider.of(context, listen: false) - .getUserInfoModel(); + UserInfoModel user = await Provider.of(context, listen: false).getUserInfoModel(); print(user.toString()); if (user?.token == null || user.token == '') { print('need login...'); @@ -42,25 +44,25 @@ class RouterUtil { if (PageFactory.hasRegisted(skipModel.skipIdentifier)) { page = PageFactory.create(skipModel.skipIdentifier, data); } else { - var result = await NetUtil.post( - '/api/v1/mod/${skipModel.skipIdentifier.toString()}', - method: NetMethod.GET); + if (Application.hasStringMethod(skipModel.skipIdentifier.toString())) { + Application.doStringMethod(skipModel.skipIdentifier.toString()); + return null; + } + var result = await NetUtil.post('/api/v1/mod/${skipModel.skipIdentifier.toString()}', method: NetMethod.GET); Logger.debug(result); page = PageFactory.create('index', Map.from(result)); } - return Navigator.of(context) - .push(CupertinoPageRoute(builder: (BuildContext context) { + return Navigator.of(context).push(CupertinoPageRoute(builder: (BuildContext context) { return page; })); } // 跳转登录 - static Future goLogin(BuildContext context) async{ + static Future goLogin(BuildContext context) async { String isIosReview = await SharedPreferencesUtil.getStringValue(GlobalConfig.IS_IOS_REVIEW, defaultVal: '0'); - return Navigator.of(context) - .push(CupertinoPageRoute(builder: (BuildContext context) { + return Navigator.of(context).push(CupertinoPageRoute(builder: (BuildContext context) { // 苹果审核登录样式 - if(Platform.isIOS && isIosReview == '1'){ + if (Platform.isIOS && isIosReview == '1') { return LoginAccountPage(null); } return LoginPage(); @@ -80,8 +82,8 @@ class RouterUtil { } // 回到首页 - static Future goBackHomePage(BuildContext context, {bool needUpdateAuth = true}) async{ - if(needUpdateAuth) { + static Future goBackHomePage(BuildContext context, {bool needUpdateAuth = true}) async { + if (needUpdateAuth) { await TaobaoAuth.initAuth(context); EventUtil.instance.fire(LoginSuccessEvent()); } @@ -89,17 +91,16 @@ class RouterUtil { } // 隐藏键盘 - static void hideKeyboard(BuildContext context){ + static void hideKeyboard(BuildContext context) { try { FocusScopeNode currentFocus = FocusScope.of(context); - if (!currentFocus.hasPrimaryFocus && - currentFocus.focusedChild != null) { + if (!currentFocus.hasPrimaryFocus && currentFocus.focusedChild != null) { FocusManager.instance.primaryFocus.unfocus(); } // SystemChannels.textInput.invokeMethod('TextInput.hide'); // FocusScope.of(context).requestFocus(FocusNode()); - }catch(e, s){ - Logger.error(e,s); + } catch (e, s) { + Logger.error(e, s); } } } diff --git a/lib/zhiying_comm.dart b/lib/zhiying_comm.dart index 3d612b7..8fa93f6 100644 --- a/lib/zhiying_comm.dart +++ b/lib/zhiying_comm.dart @@ -53,3 +53,4 @@ export 'package:permission_handler/permission_handler.dart'; export 'package:zhiying_comm/util/shared_prefe_util.dart'; export 'package:fluttertoast/fluttertoast.dart'; export 'package:zhiying_comm/util/launcher_wx_mini_program.dart'; +export 'package:zhiying_comm/util/application.dart';