|
- import 'dart:io';
-
- import 'package:flutter/cupertino.dart';
- import 'package:flutter/material.dart';
- import 'package:provider/provider.dart';
- import 'package:zhiying_comm/pages/login_page/account/login_account_page.dart';
- import 'package:zhiying_comm/pages/login_page/login_page.dart';
- import 'package:zhiying_comm/util/event_util/event_util.dart';
- import 'package:zhiying_comm/util/event_util/login_success_event.dart';
- import 'package:zhiying_comm/util/shared_prefe_util.dart';
- import 'package:zhiying_comm/zhiying_comm.dart';
-
- class RouterUtil {
- /*公共跳转
- * skipModel 跳转参数
- * data 额外参数
- * */
- static Future route(SkipModel skipModel, Map<String, dynamic> data, BuildContext context) async {
-
- if (skipModel.skipIdentifier == null || skipModel.skipIdentifier == '') {
- print('skipIdentifier 参数不存在,无法跳转页面');
- return Future.error('skipIdentifier 参数不存在,无法跳转页面');
- }
- // is_jump等于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<UserInfoNotifier>(context, listen: false).getUserInfoModel();
- print(user.toString());
- if (user?.token == null || user.token == '') {
- print('need login...');
- return RouterUtil.goLogin(context);
- }
- }
-
- if (skipModel?.requiredTaobaoAuth == '1') {
- UserInfoModel user =
- await Provider.of<UserInfoNotifier>(context, listen: false).getUserInfoModel();
- if (!user?.isTBAuth ?? false) {
- TaobaoAuth.auth(context);
- return;
- }
- }
-
- // webView
- if (skipModel?.skipIdentifier == 'pub.flutter.url') {
- this.openWebview(skipModel?.url, context);
- return;
- }
-
- Widget page = EmptyPage();
- if (PageFactory.hasRegisted(skipModel.skipIdentifier)) {
- page = PageFactory.create(skipModel.skipIdentifier, data);
- } else {
- 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<String, dynamic>.from(result));
- }
- return Navigator.of(context).push(CupertinoPageRoute(builder: (BuildContext context) {
- return page;
- }));
- }
-
- // 跳转登录
- 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) {
- // 苹果审核登录样式
- if (Platform.isIOS && isIosReview == '1') {
- return LoginAccountPage(null);
- }
- return LoginPage();
- }));
- }
-
- // 打开网页
- static Future openWebview(String url, BuildContext context) {
- if (url == null || url == '') {
- Logger.error('跳转链接不能为空');
- return Future.error('跳转链接不能为空');
- }
- SkipModel model = SkipModel();
- model.skipIdentifier = 'pub.flutter.url';
- model.url = url;
- RouterUtil.route(model, model.toJson(), context);
- }
-
- // 回到首页
- static Future goBackHomePage(BuildContext context, {bool needUpdateAuth = true}) async {
- if (needUpdateAuth) {
- await TaobaoAuth.initAuth(context);
- EventUtil.instance.fire(LoginSuccessEvent());
- }
- Navigator.popUntil(context, ModalRoute.withName('/homePage'));
- }
-
- // 隐藏键盘
- static void hideKeyboard(BuildContext context) {
- try {
- FocusScopeNode currentFocus = FocusScope.of(context);
- 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);
- }
- }
- }
|