基础库
 
 
 
 
 

66 行
2.1 KiB

  1. import 'package:flutter/cupertino.dart';
  2. import 'package:flutter/material.dart';
  3. import 'package:provider/provider.dart';
  4. import 'package:zhiying_comm/pages/login_page/login_page.dart';
  5. import 'package:zhiying_comm/zhiying_comm.dart';
  6. class RouterUtil {
  7. /*公共跳转
  8. * skipModel 跳转参数
  9. * data 额外参数
  10. * */
  11. static Future route(SkipModel skipModel, Map<String, dynamic> data,
  12. BuildContext context) async {
  13. if (skipModel.skipIdentifier == null || skipModel.skipIdentifier == '') {
  14. print('skipIdentifier 参数不存在,无法跳转页面');
  15. return Future.error('skipIdentifier 参数不存在,无法跳转页面');
  16. }
  17. print('skipIdentifier: ${skipModel.skipIdentifier}');
  18. if (skipModel?.requiredLogin == '1') {
  19. UserInfoModel user =
  20. await Provider.of<UserInfoNotifier>(context, listen: false)
  21. .getUserInfoModel();
  22. print(user.toString());
  23. if (user?.token == null || user.token == '') {
  24. print('need login...');
  25. return RouterUtil.goLogin(context);
  26. }
  27. }
  28. Widget page = EmptyPage();
  29. if (PageFactory.hasRegisted(skipModel.skipIdentifier)) {
  30. page = PageFactory.create(skipModel.skipIdentifier, data);
  31. } else {
  32. var result = await NetUtil.post(
  33. '/api/v1/mod/${skipModel.skipIdentifier.toString()}',
  34. method: NetMethod.GET);
  35. Logger.debug(result);
  36. page = PageFactory.create('index', Map<String, dynamic>.from(result));
  37. }
  38. return Navigator.of(context)
  39. .push(CupertinoPageRoute(builder: (BuildContext context) {
  40. return page;
  41. }));
  42. }
  43. // 跳转登录
  44. static Future goLogin(BuildContext context) {
  45. return Navigator.of(context)
  46. .push(CupertinoPageRoute(builder: (BuildContext context) {
  47. return LoginPage();
  48. }));
  49. }
  50. static Future openWebview(String url, BuildContext context) {
  51. if (url == null || url == '') {
  52. Logger.error('跳转链接不能为空');
  53. return Future.error('跳转链接不能为空');
  54. }
  55. SkipModel model = SkipModel();
  56. model.skipIdentifier = 'pub.flutter.url';
  57. model.url = url;
  58. RouterUtil.route(model, null, context);
  59. }
  60. }