处理BUG
This commit is contained in:
parent
158fbc355f
commit
33996285f4
|
|
@ -0,0 +1,17 @@
|
||||||
|
import 'package:json_annotation/json_annotation.dart';
|
||||||
|
|
||||||
|
part 'annotate_list_to_refresh.g.dart';
|
||||||
|
|
||||||
|
|
||||||
|
@JsonSerializable()
|
||||||
|
class AnnotateListToRefresh extends Object {
|
||||||
|
|
||||||
|
AnnotateListToRefresh();
|
||||||
|
|
||||||
|
factory AnnotateListToRefresh.fromJson(Map<String, dynamic> srcJson) => _$AnnotateListToRefreshFromJson(srcJson);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => _$AnnotateListToRefreshToJson(this);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -35,13 +35,10 @@ class QuestionNumberView extends GetView<HomeworkReviewLogic> {
|
||||||
var zoomFile = sateZoomData.zoomFile.value;
|
var zoomFile = sateZoomData.zoomFile.value;
|
||||||
if (zoomFile == null) return const SizedBox();
|
if (zoomFile == null) return const SizedBox();
|
||||||
|
|
||||||
var studentQuestions = sateData.studentQuestions.value ?? [];
|
|
||||||
|
|
||||||
return $QuestionNumberScrollView(
|
return $QuestionNumberScrollView(
|
||||||
controller: controller,
|
controller: controller,
|
||||||
sateData: sateData,
|
sateData: sateData,
|
||||||
sateZoomData: sateZoomData,
|
sateZoomData: sateZoomData,
|
||||||
studentQuestions: studentQuestions,
|
|
||||||
);
|
);
|
||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
|
|
@ -52,18 +49,20 @@ class QuestionNumberView extends GetView<HomeworkReviewLogic> {
|
||||||
// 试题题号视图
|
// 试题题号视图
|
||||||
@hwidget
|
@hwidget
|
||||||
Widget $questionNumberScrollView({
|
Widget $questionNumberScrollView({
|
||||||
required HomeworkReviewLogic controller,
|
|
||||||
required ZoomState sateZoomData,
|
required ZoomState sateZoomData,
|
||||||
required HomeworkReviewState sateData,
|
required HomeworkReviewState sateData,
|
||||||
required List<StudentQuestions> studentQuestions,
|
required HomeworkReviewLogic controller,
|
||||||
}) {
|
}) {
|
||||||
final scrollControllerNum = useScrollController(); // 试题题号区域
|
final scrollControllerNum = useScrollController(); // 试题题号区域
|
||||||
|
var studentQuestions = useState<List<StudentQuestions>>(sateData.studentQuestions.value ?? []);
|
||||||
var useZoom = useState<double>(sateZoomData.initScale.value ?? 1);
|
var useZoom = useState<double>(sateZoomData.initScale.value ?? 1);
|
||||||
var usePiddingTop = useState<double>(sateZoomData.zoomFile.value?.imageHeightOffsetStart ?? 0);
|
var usePiddingTop = useState<double>(sateZoomData.zoomFile.value?.imageHeightOffsetStart ?? 0);
|
||||||
useValueChanged<double?, void>(sateZoomData.zoomFile.value?.imageHeightOffsetStart, (_, __) {
|
useValueChanged<double?, void>(sateZoomData.zoomFile.value?.imageHeightOffsetStart, (_, __) {
|
||||||
usePiddingTop.value = sateZoomData.zoomFile.value?.imageHeightOffsetStart ?? 0;
|
usePiddingTop.value = sateZoomData.zoomFile.value?.imageHeightOffsetStart ?? 0;
|
||||||
});
|
});
|
||||||
useEffect(() {
|
useEffect(() {
|
||||||
|
var studentQuestionsStream = sateData.studentQuestions.listen((e) => studentQuestions.value = e ?? []);
|
||||||
|
|
||||||
var stream = sateZoomData.initScale.listen((e) {
|
var stream = sateZoomData.initScale.listen((e) {
|
||||||
// print("initScale : $e");
|
// print("initScale : $e");
|
||||||
useZoom.value = e ?? 1;
|
useZoom.value = e ?? 1;
|
||||||
|
|
@ -83,6 +82,7 @@ Widget $questionNumberScrollView({
|
||||||
|
|
||||||
return () {
|
return () {
|
||||||
stream.cancel();
|
stream.cancel();
|
||||||
|
studentQuestionsStream.cancel();
|
||||||
};
|
};
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
|
@ -112,7 +112,6 @@ Widget $questionNumberScrollView({
|
||||||
|
|
||||||
// print("图片高度:$actualImgHeight");
|
// print("图片高度:$actualImgHeight");
|
||||||
|
|
||||||
print("数据长度:${studentQuestions.length}");
|
|
||||||
print("FFFFFFFFF ${usePiddingTop.value}");
|
print("FFFFFFFFF ${usePiddingTop.value}");
|
||||||
|
|
||||||
return SingleChildScrollView(
|
return SingleChildScrollView(
|
||||||
|
|
@ -125,9 +124,9 @@ Widget $questionNumberScrollView({
|
||||||
child: Column(
|
child: Column(
|
||||||
mainAxisAlignment: MainAxisAlignment.start,
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
children: studentQuestions
|
children: studentQuestions.value
|
||||||
.map((e) => $ScoringQuestionsView(
|
.map((e) => $ScoringQuestionsView(
|
||||||
studentQuestions,
|
sateData,
|
||||||
e,
|
e,
|
||||||
controller,
|
controller,
|
||||||
sateZoomData.zoomFile.value!.scaleRatio,
|
sateZoomData.zoomFile.value!.scaleRatio,
|
||||||
|
|
@ -141,7 +140,7 @@ Widget $questionNumberScrollView({
|
||||||
|
|
||||||
// 单道题得分框
|
// 单道题得分框
|
||||||
@hwidget
|
@hwidget
|
||||||
Widget $scoringQuestionsView(BuildContext context, List<StudentQuestions>? studentQuestions, StudentQuestions item, HomeworkReviewLogic logic, double scaleRatio, double initScale) {
|
Widget $scoringQuestionsView(BuildContext context, HomeworkReviewState sateData, StudentQuestions item, HomeworkReviewLogic logic, double scaleRatio, double initScale) {
|
||||||
var studentScore = useState<int?>(item.studentScore);
|
var studentScore = useState<int?>(item.studentScore);
|
||||||
|
|
||||||
useValueChanged<int?, void>(item.studentScore, (_, __) {
|
useValueChanged<int?, void>(item.studentScore, (_, __) {
|
||||||
|
|
@ -156,6 +155,10 @@ Widget $scoringQuestionsView(BuildContext context, List<StudentQuestions>? stude
|
||||||
/// 学生打分数据
|
/// 学生打分数据
|
||||||
studentScoreListener() {
|
studentScoreListener() {
|
||||||
item.studentScore = studentScore.value;
|
item.studentScore = studentScore.value;
|
||||||
|
var theVal = sateData.studentQuestions.value?.firstWhereOrNull((e)=>e.questionNo==e.questionNo);
|
||||||
|
if(theVal!=null) theVal.studentScore = studentScore.value;
|
||||||
|
|
||||||
|
var studentQuestions = sateData.studentQuestions.value;
|
||||||
if (item.studentScore == null) return;
|
if (item.studentScore == null) return;
|
||||||
|
|
||||||
// 校验是否自动提交 对于已经批阅过的试题 不重复自动提交
|
// 校验是否自动提交 对于已经批阅过的试题 不重复自动提交
|
||||||
|
|
|
||||||
|
|
@ -9,11 +9,13 @@ import 'package:flutter/rendering.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:get/get_rx/get_rx.dart';
|
import 'package:get/get_rx/get_rx.dart';
|
||||||
|
import 'package:making_school_asignment_app/common/job/annotate_list_to_refresh.dart';
|
||||||
import 'package:making_school_asignment_app/common/job/marking_models/do_paper_details_param.dart';
|
import 'package:making_school_asignment_app/common/job/marking_models/do_paper_details_param.dart';
|
||||||
import 'package:making_school_asignment_app/common/job/marking_models/do_paper_details_result.dart';
|
import 'package:making_school_asignment_app/common/job/marking_models/do_paper_details_result.dart';
|
||||||
import 'package:making_school_asignment_app/common/job/marking_models/do_test_questions_image_info.dart';
|
import 'package:making_school_asignment_app/common/job/marking_models/do_test_questions_image_info.dart';
|
||||||
import 'package:making_school_asignment_app/common/job/marking_models/favor_param.dart';
|
import 'package:making_school_asignment_app/common/job/marking_models/favor_param.dart';
|
||||||
import 'package:making_school_asignment_app/common/job/marking_models/review_submission_params.dart';
|
import 'package:making_school_asignment_app/common/job/marking_models/review_submission_params.dart';
|
||||||
|
import 'package:making_school_asignment_app/common/mixins/event_bus_mixin.dart';
|
||||||
import 'package:making_school_asignment_app/common/mixins/request_tool_mixin.dart';
|
import 'package:making_school_asignment_app/common/mixins/request_tool_mixin.dart';
|
||||||
import 'package:making_school_asignment_app/common/utils/permission_describe_util.dart';
|
import 'package:making_school_asignment_app/common/utils/permission_describe_util.dart';
|
||||||
import 'package:making_school_asignment_app/common/utils/toast_utils.dart';
|
import 'package:making_school_asignment_app/common/utils/toast_utils.dart';
|
||||||
|
|
@ -71,7 +73,7 @@ class HomeworkReviewBinding extends Bindings {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class HomeworkReviewLogic extends GetxController with RequestToolMixin {
|
class HomeworkReviewLogic extends GetxController with RequestToolMixin,EventBusMixin<AnnotateListToRefresh>{
|
||||||
final zoomLogic = Get.find<ZoomLogic>();
|
final zoomLogic = Get.find<ZoomLogic>();
|
||||||
final GlobalKey pictureOverviewKey = GlobalKey();
|
final GlobalKey pictureOverviewKey = GlobalKey();
|
||||||
late StreamSubscription<DoPaperDetailsParam> _paramListen;
|
late StreamSubscription<DoPaperDetailsParam> _paramListen;
|
||||||
|
|
@ -150,6 +152,7 @@ class HomeworkReviewLogic extends GetxController with RequestToolMixin {
|
||||||
@override
|
@override
|
||||||
void onClose() {
|
void onClose() {
|
||||||
SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: [SystemUiOverlay.top]); // 屏幕刘海
|
SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: [SystemUiOverlay.top]); // 屏幕刘海
|
||||||
|
eventCancel();
|
||||||
_dataListen.cancel();
|
_dataListen.cancel();
|
||||||
_paramListen.cancel();
|
_paramListen.cancel();
|
||||||
imageScaleZoomStream?.cancel();
|
imageScaleZoomStream?.cancel();
|
||||||
|
|
@ -279,8 +282,8 @@ class HomeworkReviewLogic extends GetxController with RequestToolMixin {
|
||||||
var data = state.data.value;
|
var data = state.data.value;
|
||||||
if (data == null) return;
|
if (data == null) return;
|
||||||
|
|
||||||
if (state.data.value?.studentQuestions.isEmpty ?? true) return;
|
if ((state.data.value?.studentQuestions.isEmpty ?? true) || (state.studentQuestions.value?.isEmpty ?? true)) return;
|
||||||
var studentQuestions = state.data.value!.studentQuestions;
|
var studentQuestions = state.studentQuestions.value!;
|
||||||
var noRatingElement = studentQuestions.firstWhereOrNull((e) => e.studentScore == null);
|
var noRatingElement = studentQuestions.firstWhereOrNull((e) => e.studentScore == null);
|
||||||
if (noRatingElement != null) {
|
if (noRatingElement != null) {
|
||||||
ToastUtils.showInfo('${noRatingElement.questionNo}题请评分');
|
ToastUtils.showInfo('${noRatingElement.questionNo}题请评分');
|
||||||
|
|
@ -315,7 +318,7 @@ class HomeworkReviewLogic extends GetxController with RequestToolMixin {
|
||||||
// 批阅完成
|
// 批阅完成
|
||||||
if (!state.lastQuestionPrompt) {
|
if (!state.lastQuestionPrompt) {
|
||||||
await showDialog(
|
await showDialog(
|
||||||
context: context,
|
context: Get.context ?? context,
|
||||||
builder: (BuildContext context1) {
|
builder: (BuildContext context1) {
|
||||||
return AlertDialog(
|
return AlertDialog(
|
||||||
title: quickText('批阅已完成'),
|
title: quickText('批阅已完成'),
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
|
import 'package:making_school_asignment_app/common/job/annotate_list_to_refresh.dart';
|
||||||
import 'package:making_school_asignment_app/page/global_widget/ReturnToHomepage.dart';
|
import 'package:making_school_asignment_app/page/global_widget/ReturnToHomepage.dart';
|
||||||
import 'package:making_school_asignment_app/page/global_widget/my_text.dart';
|
import 'package:making_school_asignment_app/page/global_widget/my_text.dart';
|
||||||
import 'package:making_school_asignment_app/page/home_page/children/annotate_class/annotate_class_logic.dart';
|
import 'package:making_school_asignment_app/page/home_page/children/annotate_class/annotate_class_logic.dart';
|
||||||
|
|
@ -28,6 +29,7 @@ class HomeworkReview extends StatelessWidget {
|
||||||
if (e && sateData.needRefresh) {
|
if (e && sateData.needRefresh) {
|
||||||
controller.getList();
|
controller.getList();
|
||||||
homeLogicController.getList();
|
homeLogicController.getList();
|
||||||
|
logic.eventFire(model: AnnotateListToRefresh());
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
child: Scaffold(
|
child: Scaffold(
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,9 @@ import 'package:flutter_easyrefresh/easy_refresh.dart';
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
import 'package:functional_widget_annotation/functional_widget_annotation.dart';
|
import 'package:functional_widget_annotation/functional_widget_annotation.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
|
import 'package:making_school_asignment_app/common/job/annotate_list_to_refresh.dart';
|
||||||
import 'package:making_school_asignment_app/common/job/work_student_params.dart';
|
import 'package:making_school_asignment_app/common/job/work_student_params.dart';
|
||||||
|
import 'package:making_school_asignment_app/common/mixins/event_bus_mixin.dart';
|
||||||
import 'package:making_school_asignment_app/common/mixins/request_tool_mixin.dart';
|
import 'package:making_school_asignment_app/common/mixins/request_tool_mixin.dart';
|
||||||
import 'package:making_school_asignment_app/common/utils/enum_untils.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/common/utils/utils.dart';
|
||||||
|
|
@ -31,7 +33,7 @@ class AnnotateList extends StatefulWidget {
|
||||||
}
|
}
|
||||||
|
|
||||||
class _AnnotateListState extends State<AnnotateList>
|
class _AnnotateListState extends State<AnnotateList>
|
||||||
with RequestToolMixin, SingleTickerProviderStateMixin {
|
with RequestToolMixin, SingleTickerProviderStateMixin,EventBusMixin<AnnotateListToRefresh>{
|
||||||
late RxString customTimeStr = '自定义'.obs;
|
late RxString customTimeStr = '自定义'.obs;
|
||||||
int active = 1;
|
int active = 1;
|
||||||
late RxList<Items> unAnnotateList = RxList();
|
late RxList<Items> unAnnotateList = RxList();
|
||||||
|
|
@ -65,6 +67,9 @@ class _AnnotateListState extends State<AnnotateList>
|
||||||
refreshController1 = EasyRefreshController();
|
refreshController1 = EasyRefreshController();
|
||||||
refreshController2 = EasyRefreshController();
|
refreshController2 = EasyRefreshController();
|
||||||
|
|
||||||
|
eventOn<AnnotateListToRefresh>(callback: (e){
|
||||||
|
refreshController1.callRefresh();
|
||||||
|
});
|
||||||
tabController2 = TabController(length: 4, vsync: this);
|
tabController2 = TabController(length: 4, vsync: this);
|
||||||
EasyLoading.show(status: 'loading...');
|
EasyLoading.show(status: 'loading...');
|
||||||
getUnAnnotateList();
|
getUnAnnotateList();
|
||||||
|
|
@ -76,6 +81,7 @@ class _AnnotateListState extends State<AnnotateList>
|
||||||
refreshController1.dispose();
|
refreshController1.dispose();
|
||||||
refreshController2.dispose();
|
refreshController2.dispose();
|
||||||
tabController2.dispose();
|
tabController2.dispose();
|
||||||
|
eventCancel();
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue