From a35f8f55725df8998b019be79a1468e777221b24 Mon Sep 17 00:00:00 2001 From: "DESKTOP-I3JPKHK\\wy" <1111> Date: Thu, 24 Apr 2025 15:11:12 +0800 Subject: [PATCH] 111 --- .../components/question_number_view.dart | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/making_school_asignment_app/lib/page/home_page/children/homework_review/components/question_number_view.dart b/making_school_asignment_app/lib/page/home_page/children/homework_review/components/question_number_view.dart index 8bcc869..fe05892 100644 --- a/making_school_asignment_app/lib/page/home_page/children/homework_review/components/question_number_view.dart +++ b/making_school_asignment_app/lib/page/home_page/children/homework_review/components/question_number_view.dart @@ -61,7 +61,9 @@ Widget $questionNumberScrollView({ usePiddingTop.value = sateZoomData.zoomFile.value?.imageHeightOffsetStart ?? 0; }); useEffect(() { - var studentQuestionsStream = sateData.studentQuestions.listen((e) => studentQuestions.value = e ?? []); + var studentQuestionsStream = sateData.studentQuestions.listen((e) { + studentQuestions.value = e ?? []; + }); var stream = sateZoomData.initScale.listen((e) { // print("initScale : $e"); @@ -155,9 +157,9 @@ Widget $scoringQuestionsView(BuildContext context, HomeworkReviewState sateData, /// 学生打分数据 studentScoreListener() { item.studentScore = studentScore.value; - var theVal = sateData.studentQuestions.value?.firstWhereOrNull((e)=>e.questionNo==e.questionNo); - if(theVal!=null) theVal.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; @@ -171,7 +173,15 @@ Widget $scoringQuestionsView(BuildContext context, HomeworkReviewState sateData, studentScore.addListener(studentScoreListener); + var studentQuestionsStream = sateData.studentQuestions.listen((e) { + var itemVal = (e ?? []).firstWhereOrNull((e1) => e1.questionNo == item.questionNo); + if (itemVal != null && studentScore.value != itemVal.studentScore) { + studentScore.value = itemVal.studentScore; + } + }); + return () { + studentQuestionsStream.cancel(); studentScore.removeListener(studentScoreListener); }; }, []);