/* * @Author: wangyang 1147192855@qq.com * @Date: 2022-07-05 16:50:28 * @LastEditors: wangyang 1147192855@qq.com * @LastEditTime: 2022-07-22 16:51:19 * @FilePath: \marking_app\lib\routes\RouterManager.dart * @Description: 路由 */ import 'dart:convert'; import 'package:fluro/fluro.dart'; import 'package:flutter/material.dart'; import 'package:marking_app/common/model/enum/marking_list_type.dart'; import 'package:marking_app/pages/common/startUpPage.dart'; import 'package:marking_app/pages/homework_correction/do_papers_job_exam.dart'; import 'package:marking_app/pages/homework_correction/job_report.dart'; import 'package:marking_app/pages/homework_correction/pages/job_list_participate_in_class.dart'; import 'package:marking_app/pages/homework_correction/review_job.dart'; import 'package:marking_app/pages/homework_correction/quick_check_personal.dart'; import 'package:marking_app/pages/homework_correction/quick_data_check.dart'; import 'package:marking_app/pages/login/index.dart'; import 'package:marking_app/pages/mainPage.dart'; import 'package:marking_app/pages/marking/do_papers.dart'; import 'package:marking_app/pages/homework_correction/do_papers_job.dart' as DoPapersHomework; import 'package:marking_app/pages/marking/progress.dart'; import 'package:marking_app/pages/marking/progress_abnormal.dart'; import 'package:marking_app/pages/marking/review.dart'; import 'package:marking_app/pages/mine/index.dart'; import 'package:marking_app/pages/mine/other_pages/index.dart'; import 'package:marking_app/pages/other/agreement_page.dart'; import 'package:marking_app/pages/report_detail/index.dart'; import 'package:marking_app/pages/reports/report_class_teacher.dart'; import 'package:marking_app/pages/reports/report_personal_subject.dart'; import 'package:marking_app/pages/reports/report_subject_teacher.dart'; import 'package:marking_app/utils/const_text.dart'; import 'package:marking_app/utils/the_global.dart'; import '../utils/index.dart'; class RouterManager { static const String root = '/'; static const String startUpPath = '/startUpPath'; static const String loginPath = '/login'; static const String markingProgressPath = '/marking/progress'; static const String markingReviewPath = '/marking/review'; static const String markingJobReviewPath = '/marking/job/review'; static const String markingReviewAbnormalPath = '/marking/review/abnormal'; static const String markingDoPath = '/marking/do_papers'; static const String markingHomeworkDoPath = '/marking_homework/do_papers'; static const String agreementPath = 'other/agreement_page'; static const String ohterMainPagePath = 'other/index'; // 作业 static const String jobReportPagePath = '/job/report/index'; // 作业 ==> 横屏考试 static const String jobExamPagePath = '/job/exam/index'; // 作业 ==> 列表 ==> 参与班级 static const String jobListParticipateInClassPath = '/job/list/participateInClass'; static const String reportClassTeacherPath = 'report/details/reportClassTeacher'; static const String reportSubjectTeacherPath = 'report/details/reportSubjectTeacher'; static const String reportPersonalSubjectPath = 'report/details/reportPersonalSubject'; static const String userMinePath = 'user/mine/index'; static const String reportDetailPath = '/report_detail/index'; static const String quickDataCheckPath = '/homework_correction/quick_data_check'; static const String quickCheckPersonalPath = '/homework_correction/quick_check_personal'; // TheMine static final FluroRouter router = FluroRouter(); static void initRouter() { _defineRoutes(); } static Route? generator(RouteSettings routeSettings) { var context = TheGlobal.navigatorKey.currentContext; if (context != null) { var settings = ModalRoute.of(context)?.settings; if (settings != null) { print('路由信息:'); print(settings.name); } print('ssssssssss'); } return router.generator(routeSettings); } // 启动页 static final _startUpPageHandler = Handler(handlerFunc: (BuildContext? context, Map> params) => const StartUpPage()); // 主页 static final _mainPageHandler = Handler(handlerFunc: (BuildContext? context, Map> params) => const TheMainPage()); // 登录页 static final _loginPageHandler = Handler(handlerFunc: (BuildContext? context, Map> params) => const TheLogin()); // 阅卷进度页面 static final _progressPageHandler = Handler( handlerFunc: (BuildContext? context, Map> params) => Progress(int.parse(params['examSubjectId']![0]), params['name']![0])); // 回评页面 static final _reviewPageHandler = Handler(handlerFunc: (BuildContext? context, Map> params) { int markingUserId = int.parse(params['markingUserId']![0]); int examSubjectId = int.parse(params['examSubjectId']![0]); String examName = params['examName']![0]; return Review(markingUserId, examSubjectId, examName); }); static final _reviewJobPageHandler = Handler(handlerFunc: (BuildContext? context, Map> params) { int markingUserId = int.parse(params['markingUserId']![0]); int examSubjectId = int.parse(params['examSubjectId']![0]); String examName = params['examName']![0]; return ReviewJob(markingUserId, examSubjectId, examName); }); // 回评异常页面 static final _reviewAbnormalPageHandler = Handler( handlerFunc: (BuildContext? context, Map> params) => ProgressAbnormal( int.parse(params['examSubjectId']![0]), params['markingId']![0], params['name']![0], params['questionNum']![0])); // 阅卷页面 static final _markingDoPageHandler = Handler(handlerFunc: (BuildContext? context, Map> params) { try { int markingtype = int.parse(params['markingtype']?[0] ?? '-1'); int markingUserId = int.parse(params['markingUserId']![0]); int examSubjectId = int.parse(params['examSubjectId']![0]); // ignore: unrelated_type_equality_checks bool isReview = params['isReview']?[0] == '1'; bool exceptional = params['exceptional']?[0] == '1'; String? questionNum = params['questionNum']?[0]; int? pageOper; if (params['pageOper'] != null && params['pageOper']![0] != null && params['pageOper']![0] != 'null') { pageOper = int.parse(params['pageOper']![0]); } int? detailId; if (params['detailId'] != null && params['detailId']![0] != null && params['detailId']![0] != 'null') { detailId = int.parse(params['detailId']![0]); } MarkingListType? markType; if (markingtype != -1) { markType = MarkingListType.values[markingtype]; } return DoPapers( markingUserId, markingtype: markType, examSubjectId: examSubjectId, isReview: isReview, pageOper: pageOper ?? 2, exceptional: exceptional, markingUserDetailId: detailId ?? 0, questionNum: questionNum, ); } catch (e) { toPrint(val: '进入跳转报错啦,$e'); } }); // 批阅作业页面 static final _markingHomeworkDoPageHandler = Handler(handlerFunc: (BuildContext? context, Map> params) { try { int taskId = int.parse(params['taskId']![0]); int jobId = int.parse(params['jobId']![0]); String taskName = params['taskName']![0]; String className = params['className']![0]; return DoPapersHomework.DoPapersJob(taskId: taskId, jobId: jobId, taskName: taskName, className: className); } catch (e) { toPrint(val: '进入跳转报错啦,$e'); } }); // 作业报告页面 static final _jobReportPageHandler = Handler(handlerFunc: (BuildContext? context, Map> params) { int id = int.parse(params['id']![0]); String title = params['title']![0]; return JobReport(id: id, title: title); }); // 作业报告页面 static final _jobExamPageHandler = Handler(handlerFunc: (BuildContext? context, Map> params) { int taskId = int.parse(params['taskId']![0]); int jobId = int.parse(params['JobId']![0]); String taskName = params['taskName']![0]; String className = params['className']![0]; return DoPapersJobExam(taskId: taskId, jobId: jobId, taskName: taskName, className: className); }); static final _agreementPageHandler = Handler(handlerFunc: (BuildContext? context, Map> params) { AGREEMENT_KEY key = AGREEMENT_KEY.values.byName(params['type']![0]); return AgreementPage(type: key); }); static final _ohterMainPageHandler = Handler( handlerFunc: (BuildContext? context, Map> params) => const OhterPage(), ); static final _reportClassTeacherPageHandler = Handler(handlerFunc: (BuildContext? context, Map> params) { int examId = int.parse(params['examId']![0]); return ReportClassTeacher(examId: examId); }); static final _reportSubjectTeacherPageHandler = Handler( handlerFunc: (BuildContext? context, Map> params) { int examId = int.parse(params['examId']![0]); int classId = int.parse(params['classId']![0]); int subject = int.parse(params['subject']![0]); String subjectName = params['subjectName']![0]; return ReportSubjectTeacher(examId: examId, classId: classId, subject: subject, subjectName: subjectName); }, ); static final _userMinePageHandler = Handler( handlerFunc: (BuildContext? context, Map> params) => TheMine(), ); static final _reportDetailPath = Handler( handlerFunc: (BuildContext? context, Map> params) { int examId = int.parse(params['examId']![0]); bool showGrade = params['showGrade']![0] == 'true'; return ReportDetail(examId: examId, showGrade: showGrade); }, ); static final _reportPersonalSubjectPageHandler = Handler( handlerFunc: (BuildContext? context, Map> params) { int examId = int.parse(params['examId']![0]); int userId = int.parse(params['userId']![0]); int subject = int.parse(params['subject']![0]); String subjectName = params['subjectName']![0]; String studentName = params['studentName']![0]; return ReportPersonalSubject( examId: examId, userId: userId, subject: subject, studentName: studentName, subjectName: subjectName, ); }, ); static final _jobListParticipateInClassHandler = Handler( handlerFunc: (BuildContext? context, Map> params) { int jobId = int.parse(params['jobId']![0]); String jobName = params['jobName']![0]; String genderName = params['genderName']![0]; // ignore: sdk_version_since bool completed = bool.parse(params['completed']?[0] ?? 'false'); return JobListParticipateInClass(jobId: jobId, jobName: jobName, genderName: genderName, completed: completed); }, ); // 数据快查 static final _quickDataCheckPageHandler = Handler( handlerFunc: (BuildContext? context, Map> params) { int jobId = int.parse(params['jobId']![0]); String className = params['className']![0]; return QuickDataCheckPage(jobId: jobId, className: className); }, ); // 数据快查-个人信息 static final _quickCheckPersonalPageHandler = Handler( handlerFunc: (BuildContext? context, Map> params) { int jobId = int.parse(params['jobId']![0]); int studentId = int.parse(params['studentId']![0]); return QuickCheckPersonal(jobId: jobId, studentId: studentId); }, ); // 开始阅卷页面 // static final _doMarkingPapers = Handler(handlerFunc: (BuildContext? context, Map> params) => MarkingPapers()); //未授权页面处理器 // static final permissionDeniedHandler = // Handler(handlerFunc: (BuildContext context, Map params) { // return PermissionDenied(); // }); static void _defineRoutes() { router.define(root, handler: _mainPageHandler, transitionType: TransitionType.material); router.define(startUpPath, handler: _startUpPageHandler, transitionType: TransitionType.material); router.define(loginPath, handler: _loginPageHandler); router.define(markingProgressPath, handler: _progressPageHandler, transitionType: TransitionType.material); router.define(markingReviewPath, handler: _reviewPageHandler, transitionType: TransitionType.material); router.define(markingJobReviewPath, handler: _reviewJobPageHandler, transitionType: TransitionType.material); router.define(markingDoPath, handler: _markingDoPageHandler, transitionType: TransitionType.material); router.define(markingHomeworkDoPath, handler: _markingHomeworkDoPageHandler, transitionType: TransitionType.material); router.define(markingReviewAbnormalPath, handler: _reviewAbnormalPageHandler, transitionType: TransitionType.material); router.define(agreementPath, handler: _agreementPageHandler, transitionType: TransitionType.material); router.define(ohterMainPagePath, handler: _ohterMainPageHandler, transitionType: TransitionType.material); router.define(reportClassTeacherPath, handler: _reportClassTeacherPageHandler, transitionType: TransitionType.material); router.define(reportSubjectTeacherPath, handler: _reportSubjectTeacherPageHandler, transitionType: TransitionType.material); router.define(reportPersonalSubjectPath, handler: _reportPersonalSubjectPageHandler, transitionType: TransitionType.material); router.define(userMinePath, handler: _userMinePageHandler, transitionType: TransitionType.material); router.define(reportDetailPath, handler: _reportDetailPath, transitionType: TransitionType.material); router.define(jobReportPagePath, handler: _jobReportPageHandler, transitionType: TransitionType.material); router.define(jobExamPagePath, handler: _jobExamPageHandler, transitionType: TransitionType.material); router.define(jobListParticipateInClassPath, handler: _jobListParticipateInClassHandler, transitionType: TransitionType.material); router.define(quickDataCheckPath, handler: _quickDataCheckPageHandler, transitionType: TransitionType.material); router.define(quickCheckPersonalPath, handler: _quickCheckPersonalPageHandler, transitionType: TransitionType.material); // getTransition() router.notFoundHandler = Handler(handlerFunc: (BuildContext? context, Map> params) { toPrint(val: "ROUTE WAS NOT FOUND !!!"); return; }); } }