diff --git a/making_school_asignment_app/lib/main.dart b/making_school_asignment_app/lib/main.dart index 00686a7..c72a73d 100644 --- a/making_school_asignment_app/lib/main.dart +++ b/making_school_asignment_app/lib/main.dart @@ -23,6 +23,7 @@ void main() async { SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: [SystemUiOverlay.top, SystemUiOverlay.bottom]); // 屏幕刘海 SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); // 屏幕强制竖屏 + WidgetsFlutterBinding.ensureInitialized(); runApp(const MyApp()); } @@ -34,9 +35,9 @@ class MyApp extends StatelessWidget { Widget build(BuildContext context) { return ScreenUtilInit( designSize: const Size(AppConfig.UI_WIDTH, AppConfig.UI_HEIGHT), - minTextAdapt: true, - splitScreenMode: true, - builder: (BuildContext context, Widget? child) => GetMaterialApp( + /* minTextAdapt: true, + splitScreenMode: true,*/ + builder: () => GetMaterialApp( title: '作业', theme: ThemeData( brightness: Brightness.light, diff --git a/making_school_asignment_app/lib/page/home_page/children/answer_trajectory/widget/answer_trajectory_job.dart b/making_school_asignment_app/lib/page/home_page/children/answer_trajectory/widget/answer_trajectory_job.dart index 1a99ba8..0188c6d 100644 --- a/making_school_asignment_app/lib/page/home_page/children/answer_trajectory/widget/answer_trajectory_job.dart +++ b/making_school_asignment_app/lib/page/home_page/children/answer_trajectory/widget/answer_trajectory_job.dart @@ -1,10 +1,12 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:get/get.dart'; import 'package:making_school_asignment_app/common/job/work_student.dart'; import 'package:making_school_asignment_app/common/utils/enum_untils.dart'; import 'package:making_school_asignment_app/common/utils/utils.dart'; import 'package:making_school_asignment_app/page/global_widget/MyEmptyWidget.dart'; import 'package:making_school_asignment_app/page/global_widget/my_text.dart'; +import 'package:making_school_asignment_app/routes/app_pages.dart'; class AnswerTrajectoryJob extends StatelessWidget { final List jobList; @@ -31,6 +33,7 @@ class AnswerTrajectoryJob extends StatelessWidget { /* RouterManager.router.navigateTo(context, '${RouterManager.answerTrajectoryJobDetailPath}?&jobId=${item.id}&jobName=${Uri.encodeComponent(item.title)}&genderName=${Uri.encodeComponent(item.genderName)}', transition: getTransition());*/ + Get.toNamed(Routes.answerTrajectoryDetailPage,arguments: {'homeworkId':item.id,'title':item.name,'grade':item.grade}); }, child: Container( padding: EdgeInsets.only(top: 10.h), diff --git a/making_school_asignment_app/lib/page/home_page/children/answer_trajectory_detail/answer_trajectory_detail_binding.dart b/making_school_asignment_app/lib/page/home_page/children/answer_trajectory_detail/answer_trajectory_detail_binding.dart new file mode 100644 index 0000000..a87bb20 --- /dev/null +++ b/making_school_asignment_app/lib/page/home_page/children/answer_trajectory_detail/answer_trajectory_detail_binding.dart @@ -0,0 +1,10 @@ +import 'package:get/get.dart'; + +import 'answer_trajectory_detail_logic.dart'; + +class AnswerTrajectoryDetailBinding extends Bindings { + @override + void dependencies() { + Get.lazyPut(() => AnswerTrajectoryDetailLogic()); + } +} diff --git a/making_school_asignment_app/lib/page/home_page/children/answer_trajectory_detail/answer_trajectory_detail_logic.dart b/making_school_asignment_app/lib/page/home_page/children/answer_trajectory_detail/answer_trajectory_detail_logic.dart new file mode 100644 index 0000000..78cd609 --- /dev/null +++ b/making_school_asignment_app/lib/page/home_page/children/answer_trajectory_detail/answer_trajectory_detail_logic.dart @@ -0,0 +1,37 @@ +import 'package:flutter_easyloading/flutter_easyloading.dart'; +import 'package:flutter_easyrefresh/easy_refresh.dart'; +import 'package:get/get.dart'; +import 'package:making_school_asignment_app/common/job/annotated_class.dart'; +import 'package:making_school_asignment_app/common/mixins/request_tool_mixin.dart'; + +import 'answer_trajectory_detail_state.dart'; + +class AnswerTrajectoryDetailLogic extends GetxController with RequestToolMixin{ + final AnswerTrajectoryDetailState state = AnswerTrajectoryDetailState(); + late final EasyRefreshController refreshController; + @override + void onInit(){ + super.onInit(); + state.homeworkId.value = Get.arguments['homeworkId'] ?? ''; + state.title.value = Get.arguments['title'] ?? ''; + state.grade = Get.arguments['grade'] ?? -1; + refreshController = EasyRefreshController(); + EasyLoading.show(status: 'loading...'); + getList(); + } + + void getList() async{ + List data = await getClient().getAnnotatedClassList(state.homeworkId.value); + state.classList.value = data; + if( state.classList.isNotEmpty){ + state.currentClass.value = state.classList[0]; + } + EasyLoading.dismiss(); + } + + @override + void dispose(){ + super.dispose(); + refreshController.dispose(); + } +} diff --git a/making_school_asignment_app/lib/page/home_page/children/answer_trajectory_detail/answer_trajectory_detail_state.dart b/making_school_asignment_app/lib/page/home_page/children/answer_trajectory_detail/answer_trajectory_detail_state.dart new file mode 100644 index 0000000..5ee6023 --- /dev/null +++ b/making_school_asignment_app/lib/page/home_page/children/answer_trajectory_detail/answer_trajectory_detail_state.dart @@ -0,0 +1,14 @@ +import 'package:get/get.dart'; +import 'package:making_school_asignment_app/common/job/annotated_class.dart'; + +class AnswerTrajectoryDetailState { + AnswerTrajectoryDetailState() { + ///Initialize variables + } + + late RxString homeworkId = ''.obs; + late RxString title = ''.obs; + late int grade = -1; + late RxList classList = RxList(); + late Rx currentClass=Rx(AnnotatedClass('',-1,'','','',-1,-1,-1,-1,-1,[],[],-1,-1,-1,-1,-1,[],[])); +} diff --git a/making_school_asignment_app/lib/page/home_page/children/answer_trajectory_detail/answer_trajectory_detail_view.dart b/making_school_asignment_app/lib/page/home_page/children/answer_trajectory_detail/answer_trajectory_detail_view.dart new file mode 100644 index 0000000..aa121f9 --- /dev/null +++ b/making_school_asignment_app/lib/page/home_page/children/answer_trajectory_detail/answer_trajectory_detail_view.dart @@ -0,0 +1,247 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_easyloading/flutter_easyloading.dart'; +import 'package:flutter_easyrefresh/easy_refresh.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:get/get.dart'; +import 'package:making_school_asignment_app/common/job/annotated_class.dart'; +import 'package:making_school_asignment_app/common/utils/enum_untils.dart'; +import 'package:making_school_asignment_app/common/utils/utils.dart'; +import 'package:making_school_asignment_app/page/global_widget/MyEmptyWidget.dart'; +import 'package:making_school_asignment_app/page/global_widget/ReturnToHomepage.dart'; +import 'package:making_school_asignment_app/routes/app_pages.dart'; + +import 'answer_trajectory_detail_logic.dart'; + +class AnswerTrajectoryDetailPage extends StatefulWidget { + const AnswerTrajectoryDetailPage({Key? key}) : super(key: key); + + @override + State createState() => + _AnswerTrajectoryDetailPageState(); +} + +class _AnswerTrajectoryDetailPageState + extends State { + final logic = Get.find(); + final state = Get + .find() + .state; + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: Color(0xFFF5F5F5), + appBar: AppBar( + centerTitle: true, + backgroundColor: Colors.white, + title: Obx(() { + return Text( + state.title.value, + style: TextStyle(fontSize: 14.sp, color: Color(0xFF333333)), + overflow: TextOverflow.ellipsis, + ); + }), + leading: IconButton( + icon: Icon(Icons.arrow_back_ios, color: Colors.black), + onPressed: () => Navigator.of(context).pop(), + ), + actions: const [ + ReturnToHomepage(), + ], + ), + body: Column( + children: [ + SizedBox( + height: 10.r, + ), + Obx(() { + return state.classList.isNotEmpty?Padding( + padding: EdgeInsets.symmetric(horizontal: 14.r), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + children: List.generate(state.classList.length, ( + index) { + AnnotatedClass item = state.classList[index]; + return InkWell( + onTap: () { + if (state.currentClass.value.classId != + item.classId) { + state.currentClass.value = item; + } + }, + child: Container( + padding: EdgeInsets.symmetric( + vertical: 5.r, horizontal: 10.r), + margin: EdgeInsets.only( + right: index < state.classList.length + ? 8.r + : 0), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(4.r), + ), + child: Center( + child: Text( + '${EnumUtils.formatGrade(state.grade)}${item + .className}', + style: TextStyle( + fontSize: 10.sp, + color: state.currentClass.value + .classId == item.classId + ? Color(0xFF6888FD) + : Color(0xFF686868)), + ), + ), + ), + ); + })), + ), + ], + ), + ):Container(); + }), + SizedBox( + height: 10.r, + ), + Container( + height: 1.r, + color: const Color(0xFFCCCCCC), + ), + Obx((){ + return state.currentClass.value.students.isNotEmpty ? Expanded( + child: Padding( + padding: EdgeInsets.symmetric(vertical: 14.r, horizontal: 14.r), + child: EasyRefresh( + firstRefresh: true, + taskIndependence: true, + controller: logic.refreshController, + header: MaterialHeader(), + footer: TaurusFooter(), + onRefresh: () async { + // getStudentList(); + }, + child: state.currentClass.value.students.isNotEmpty + ? Utils.isPad() + ? GridView( + gridDelegate: + SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 2, + mainAxisSpacing: 10.r, + crossAxisSpacing: 10.r, + childAspectRatio: 556 / 112, + ), + children: List.generate( + state.currentClass.value.students.length, (index) { + AnnotatedStudents item = state.currentClass.value.students[index]; + return InkWell( + onTap: () { + Get.toNamed(Routes.studentPersonalPage, arguments: {'studentId': item.studentId, 'homeworkId': state.homeworkId.value}); + }, + child: Container( + padding: EdgeInsets.symmetric(horizontal: 10.r), + decoration: BoxDecoration( + borderRadius: + BorderRadius.all(Radius.circular(10.r)), + color: Colors.white, + ), + child: Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Expanded( + child: Text( + item.studentName, + style: TextStyle( + fontSize: 12.sp, + color: Color(0xFF6888FD)), + )), + + Container( + height: 20.r, + width: 70.r, + decoration: BoxDecoration( + border: Border.all( + width: 1.r, color: Color(0xFFFFA41E)), + borderRadius: BorderRadius.all( + Radius.circular(20.r)), + + ), + child: Center(child: Text('详情', + style: TextStyle(fontSize: 10.r, + color: Color(0xFFFFA41E))), + )), + ], + ), + ), + ); + }), + ) + : ListView.builder( + itemBuilder: (context, index) { + AnnotatedStudents item = state.currentClass.value + .students[index]; + return InkWell( + onTap: () { + Get.toNamed(Routes.studentPersonalPage, arguments: {'studentId': item.studentId, 'homeworkId': state.homeworkId.value}); + }, + child: Container( + padding: EdgeInsets.symmetric( + vertical: 20.r, horizontal: 15.r), + margin: EdgeInsets.only(bottom: 15.r), + decoration: BoxDecoration( + borderRadius: + BorderRadius.all(Radius.circular(10.r)), + color: Colors.white, + ), + child: Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Expanded( + child: Text( + item.studentName, + style: TextStyle( + fontSize: 12.sp, + color: Color(0xFF6888FD)), + )), + Container( + height: 24.r, + width: 72.r, + decoration: BoxDecoration( + border: Border.all( + width: 1.r, color: Color(0xFFFFA41E)), + borderRadius: BorderRadius.all( + Radius.circular(20.r)), + + ), + child: Center(child: Text('详情', + style: TextStyle(fontSize: 10.r, + color: Color(0xFFFFA41E))), + )), + ], + ), + ), + ); + }, + itemCount: state.currentClass.value.students.length, + ) + : const MyEmptyWidget(), + ), + ), + ) : const MyEmptyWidget(); + }), + ], + ), + ); + } + + @override + void dispose() { + Get.delete(); + super.dispose(); + } +} \ No newline at end of file diff --git a/making_school_asignment_app/lib/routes/app_pages.dart b/making_school_asignment_app/lib/routes/app_pages.dart index 83d0c9b..92b1f61 100644 --- a/making_school_asignment_app/lib/routes/app_pages.dart +++ b/making_school_asignment_app/lib/routes/app_pages.dart @@ -7,6 +7,8 @@ import 'package:making_school_asignment_app/page/home_page/children/annotate_cla import 'package:making_school_asignment_app/page/home_page/children/annotate_class/annotate_class_view.dart'; import 'package:making_school_asignment_app/page/home_page/children/answer_trajectory/answer_trajectory_binding.dart'; import 'package:making_school_asignment_app/page/home_page/children/answer_trajectory/answer_trajectory_view.dart'; +import 'package:making_school_asignment_app/page/home_page/children/answer_trajectory_detail/answer_trajectory_detail_binding.dart'; +import 'package:making_school_asignment_app/page/home_page/children/answer_trajectory_detail/answer_trajectory_detail_view.dart'; import 'package:making_school_asignment_app/page/home_page/children/class_student/class_student_binding.dart'; import 'package:making_school_asignment_app/page/home_page/children/class_student/class_student_view.dart'; import 'package:making_school_asignment_app/page/home_page/children/homework_review/configuration_files/index.dart'; @@ -82,6 +84,7 @@ abstract class AppPages { binding: KnowledgePointsGraspDetailBinding(), transition: Transition.noTransition), GetPage(name: Routes.answerTrajectoryPage, page: () => const AnswerTrajectoryPage(), binding: AnswerTrajectoryBinding(), transition: Transition.noTransition), + GetPage(name: Routes.answerTrajectoryDetailPage, page: () => const AnswerTrajectoryDetailPage(), binding: AnswerTrajectoryDetailBinding(), transition: Transition.noTransition), // 批阅主页(作业、考试) GetPage(name: Routes.reviewHomework, page: () => const HomeworkReview(), binding: HomeworkReviewBinding(), transition: getTransition()), GetPage(name: Routes.reviewExam, page: () => const HomeworkReview(), binding: HomeworkReviewBinding(), transition: getTransition()), diff --git a/making_school_asignment_app/lib/routes/app_routes.dart b/making_school_asignment_app/lib/routes/app_routes.dart index e925c2b..e00664d 100644 --- a/making_school_asignment_app/lib/routes/app_routes.dart +++ b/making_school_asignment_app/lib/routes/app_routes.dart @@ -19,6 +19,7 @@ abstract class Routes { static const knowledgePointsGraspPage = '/knowledgePointsGraspPage'; static const knowledgePointsGraspDetailPage = '/knowledgePointsGraspDetailPage'; static const answerTrajectoryPage = '/answerTrajectoryPage'; + static const answerTrajectoryDetailPage = '/answerTrajectoryDetailPage'; // 批阅主页 static const reviewHomework = '/review/reviewHomework'; // 作业批阅 static const reviewExam = '/review/reviewExam'; // 考试批阅 diff --git a/making_school_asignment_app/pubspec.lock b/making_school_asignment_app/pubspec.lock index 384aeab..c319b35 100644 --- a/making_school_asignment_app/pubspec.lock +++ b/making_school_asignment_app/pubspec.lock @@ -359,10 +359,10 @@ packages: dependency: "direct main" description: name: flutter_screenutil - sha256: b372c35a772a1dc84142a3b9c5ee89a390834bd258e5e6a450d9b975b985d1c9 + sha256: "03714dd992a90453f2eb48c08d1caa0769d366ee5dc647cf9d23c5b320dab2cb" url: "https://pub.flutter-io.cn" source: hosted - version: "5.9.1" + version: "5.0.0+2" flutter_spinkit: dependency: transitive description: diff --git a/making_school_asignment_app/pubspec.yaml b/making_school_asignment_app/pubspec.yaml index 32f5f4b..7c576c7 100644 --- a/making_school_asignment_app/pubspec.yaml +++ b/making_school_asignment_app/pubspec.yaml @@ -43,7 +43,8 @@ dependencies: # 日志插件 logger: ^2.3.0 # 屏幕尺寸计算插件 - flutter_screenutil: 5.9.1 +# flutter_screenutil: 5.9.1 + flutter_screenutil: 5.0.0+2 # http请求插件 dio: ^5.4.2+1 # 网络缓存图片