处理BUG

This commit is contained in:
DESKTOP-I3JPKHK\wy 2025-04-24 11:43:07 +08:00
parent 158fbc355f
commit 33996285f4
5 changed files with 47 additions and 16 deletions

View File

@ -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);
}

View File

@ -35,13 +35,10 @@ class QuestionNumberView extends GetView<HomeworkReviewLogic> {
var zoomFile = sateZoomData.zoomFile.value;
if (zoomFile == null) return const SizedBox();
var studentQuestions = sateData.studentQuestions.value ?? [];
return $QuestionNumberScrollView(
controller: controller,
sateData: sateData,
sateZoomData: sateZoomData,
studentQuestions: studentQuestions,
);
}),
),
@ -52,18 +49,20 @@ class QuestionNumberView extends GetView<HomeworkReviewLogic> {
//
@hwidget
Widget $questionNumberScrollView({
required HomeworkReviewLogic controller,
required ZoomState sateZoomData,
required HomeworkReviewState sateData,
required List<StudentQuestions> studentQuestions,
required HomeworkReviewLogic controller,
}) {
final scrollControllerNum = useScrollController(); //
var studentQuestions = useState<List<StudentQuestions>>(sateData.studentQuestions.value ?? []);
var useZoom = useState<double>(sateZoomData.initScale.value ?? 1);
var usePiddingTop = useState<double>(sateZoomData.zoomFile.value?.imageHeightOffsetStart ?? 0);
useValueChanged<double?, void>(sateZoomData.zoomFile.value?.imageHeightOffsetStart, (_, __) {
usePiddingTop.value = sateZoomData.zoomFile.value?.imageHeightOffsetStart ?? 0;
});
useEffect(() {
var studentQuestionsStream = sateData.studentQuestions.listen((e) => studentQuestions.value = e ?? []);
var stream = sateZoomData.initScale.listen((e) {
// print("initScale : $e");
useZoom.value = e ?? 1;
@ -83,6 +82,7 @@ Widget $questionNumberScrollView({
return () {
stream.cancel();
studentQuestionsStream.cancel();
};
}, []);
@ -112,7 +112,6 @@ Widget $questionNumberScrollView({
// print("图片高度:$actualImgHeight");
print("数据长度:${studentQuestions.length}");
print("FFFFFFFFF ${usePiddingTop.value}");
return SingleChildScrollView(
@ -125,9 +124,9 @@ Widget $questionNumberScrollView({
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: studentQuestions
children: studentQuestions.value
.map((e) => $ScoringQuestionsView(
studentQuestions,
sateData,
e,
controller,
sateZoomData.zoomFile.value!.scaleRatio,
@ -141,7 +140,7 @@ Widget $questionNumberScrollView({
//
@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);
useValueChanged<int?, void>(item.studentScore, (_, __) {
@ -156,6 +155,10 @@ Widget $scoringQuestionsView(BuildContext context, List<StudentQuestions>? stude
///
studentScoreListener() {
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;
//

View File

@ -9,11 +9,13 @@ import 'package:flutter/rendering.dart';
import 'package:flutter/services.dart';
import 'package:get/get.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_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/favor_param.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/utils/permission_describe_util.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 GlobalKey pictureOverviewKey = GlobalKey();
late StreamSubscription<DoPaperDetailsParam> _paramListen;
@ -150,6 +152,7 @@ class HomeworkReviewLogic extends GetxController with RequestToolMixin {
@override
void onClose() {
SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: [SystemUiOverlay.top]); //
eventCancel();
_dataListen.cancel();
_paramListen.cancel();
imageScaleZoomStream?.cancel();
@ -279,8 +282,8 @@ class HomeworkReviewLogic extends GetxController with RequestToolMixin {
var data = state.data.value;
if (data == null) return;
if (state.data.value?.studentQuestions.isEmpty ?? true) return;
var studentQuestions = state.data.value!.studentQuestions;
if ((state.data.value?.studentQuestions.isEmpty ?? true) || (state.studentQuestions.value?.isEmpty ?? true)) return;
var studentQuestions = state.studentQuestions.value!;
var noRatingElement = studentQuestions.firstWhereOrNull((e) => e.studentScore == null);
if (noRatingElement != null) {
ToastUtils.showInfo('${noRatingElement.questionNo}题请评分');
@ -315,7 +318,7 @@ class HomeworkReviewLogic extends GetxController with RequestToolMixin {
//
if (!state.lastQuestionPrompt) {
await showDialog(
context: context,
context: Get.context ?? context,
builder: (BuildContext context1) {
return AlertDialog(
title: quickText('批阅已完成'),
@ -338,8 +341,8 @@ class HomeworkReviewLogic extends GetxController with RequestToolMixin {
);
},
);
}else{
ToastUtils.showSuccess("已经提交",duration:const Duration(milliseconds: 800));
} else {
ToastUtils.showSuccess("已经提交", duration: const Duration(milliseconds: 800));
}
return;
}

View File

@ -1,6 +1,7 @@
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/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/my_text.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) {
controller.getList();
homeLogicController.getList();
logic.eventFire(model: AnnotateListToRefresh());
}
},
child: Scaffold(

View File

@ -5,7 +5,9 @@ import 'package:flutter_easyrefresh/easy_refresh.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:functional_widget_annotation/functional_widget_annotation.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/mixins/event_bus_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/utils.dart';
@ -31,7 +33,7 @@ class AnnotateList extends StatefulWidget {
}
class _AnnotateListState extends State<AnnotateList>
with RequestToolMixin, SingleTickerProviderStateMixin {
with RequestToolMixin, SingleTickerProviderStateMixin,EventBusMixin<AnnotateListToRefresh>{
late RxString customTimeStr = '自定义'.obs;
int active = 1;
late RxList<Items> unAnnotateList = RxList();
@ -65,6 +67,9 @@ class _AnnotateListState extends State<AnnotateList>
refreshController1 = EasyRefreshController();
refreshController2 = EasyRefreshController();
eventOn<AnnotateListToRefresh>(callback: (e){
refreshController1.callRefresh();
});
tabController2 = TabController(length: 4, vsync: this);
EasyLoading.show(status: 'loading...');
getUnAnnotateList();
@ -76,6 +81,7 @@ class _AnnotateListState extends State<AnnotateList>
refreshController1.dispose();
refreshController2.dispose();
tabController2.dispose();
eventCancel();
super.dispose();
}