feat: A1 短材料复现本单元理解词,并加入黑夜模式
课程内容 - 重写全部 21 个 A1 单元的听读材料,把本单元理解词织进听/读文本, 单元内理解词复现率从约 20% 提升到约 77%(各单元 56–96%)。 - 修正 U01 房间号与机场大巴同为 thirty 的撞车(改为 17/30/40)。 - 校验器容差按级别读取(A1 为 8%),materials 覆盖率、字数、 选项子串等校验全部通过;course_content_test 通过。 黑夜模式 - app_theme 拆分明/暗两套调色板,AppColors 随亮度切换; main 用 theme/darkTheme/themeMode + builder 镜像已解析亮度; 主题偏好持久化到快照;进度页新增“外观主题”切换。 文档 - COURSE-PACK-JSON.md 更新 A1 词池覆盖(840/933)与材料复现约定。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
9ab08c25ef
commit
febfd30f49
@@ -5,6 +5,7 @@ import '../../core/ai_service.dart';
|
||||
import '../../core/app_theme.dart';
|
||||
import '../../core/models.dart';
|
||||
import '../../core/seed_courses.dart';
|
||||
import '../../core/speech_compare.dart';
|
||||
import '../../core/voice_service.dart';
|
||||
import '../../core/writing_feedback.dart';
|
||||
import '../../widgets/app_widgets.dart';
|
||||
@@ -112,6 +113,7 @@ class _LessonFlowState extends State<LessonFlow> {
|
||||
correctAnswer: activity.answers.first,
|
||||
selectedAnswer: selectedAnswer,
|
||||
audioPlayed: listeningAudioPlayed,
|
||||
missed: listeningMissed,
|
||||
onSelected: (value) => setState(() {
|
||||
selectedAnswer = value;
|
||||
if (listeningOptions[value] != activity.answers.first) {
|
||||
@@ -119,11 +121,14 @@ class _LessonFlowState extends State<LessonFlow> {
|
||||
}
|
||||
}),
|
||||
onPlayed: () => setState(() => listeningAudioPlayed = true),
|
||||
onLookup: () => showLexiconLookup(
|
||||
context,
|
||||
state: widget.state,
|
||||
initialText: activity.listening,
|
||||
),
|
||||
onLookup: () {
|
||||
setState(() => listeningMissed = true);
|
||||
showLexiconLookup(
|
||||
context,
|
||||
state: widget.state,
|
||||
initialText: activity.listening,
|
||||
);
|
||||
},
|
||||
onContinue:
|
||||
selectedAnswer >= 0 &&
|
||||
listeningOptions[selectedAnswer] == activity.answers.first
|
||||
@@ -135,6 +140,7 @@ class _LessonFlowState extends State<LessonFlow> {
|
||||
content = _SpeakingStep(
|
||||
state: widget.state,
|
||||
text: activity.speaking,
|
||||
tip: activity.speakingTip,
|
||||
keepRecording: widget.state.keepRecordings,
|
||||
onContinue: widget.state.completeSpeaking,
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user