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
@@ -90,7 +90,7 @@ class _OpenScene extends StatelessWidget {
|
||||
),
|
||||
Text(
|
||||
recommended ? 'A0 · 推荐' : 'A0',
|
||||
style: const TextStyle(color: AppColors.green),
|
||||
style: TextStyle(color: AppColors.green),
|
||||
),
|
||||
],
|
||||
),
|
||||
@@ -111,7 +111,7 @@ class _LockedScene extends StatelessWidget {
|
||||
Widget build(BuildContext context) => SectionCard(
|
||||
child: Row(
|
||||
children: [
|
||||
const Icon(Icons.lock_outline, color: AppColors.muted),
|
||||
Icon(Icons.lock_outline, color: AppColors.muted),
|
||||
const SizedBox(width: 10),
|
||||
Expanded(
|
||||
child: Column(
|
||||
@@ -686,7 +686,7 @@ class _DialoguePageState extends State<DialoguePage>
|
||||
tint: AppColors.warm,
|
||||
child: Text(
|
||||
hint!,
|
||||
style: const TextStyle(color: AppColors.warmInk),
|
||||
style: TextStyle(color: AppColors.warmInk),
|
||||
),
|
||||
),
|
||||
if (aiNotice != null)
|
||||
@@ -694,7 +694,7 @@ class _DialoguePageState extends State<DialoguePage>
|
||||
tint: AppColors.warm,
|
||||
child: Row(
|
||||
children: [
|
||||
const Icon(
|
||||
Icon(
|
||||
Icons.cloud_off_outlined,
|
||||
size: 18,
|
||||
color: AppColors.warmInk,
|
||||
@@ -703,7 +703,7 @@ class _DialoguePageState extends State<DialoguePage>
|
||||
Expanded(
|
||||
child: Text(
|
||||
aiNotice!,
|
||||
style: const TextStyle(
|
||||
style: TextStyle(
|
||||
color: AppColors.warmInk,
|
||||
fontSize: 13,
|
||||
),
|
||||
@@ -715,7 +715,7 @@ class _DialoguePageState extends State<DialoguePage>
|
||||
if (validationError != null)
|
||||
Text(
|
||||
validationError!,
|
||||
style: const TextStyle(color: AppColors.warmInk),
|
||||
style: TextStyle(color: AppColors.warmInk),
|
||||
),
|
||||
TextField(
|
||||
controller: controller,
|
||||
@@ -757,7 +757,7 @@ class _DialoguePageState extends State<DialoguePage>
|
||||
transcriptEdited
|
||||
? '你修改了设备转写:这轮按文字作答保存。'
|
||||
: '这是设备转写;未修改提交后会作为语音尝试保存。',
|
||||
style: const TextStyle(color: AppColors.muted, fontSize: 12),
|
||||
style: TextStyle(color: AppColors.muted, fontSize: 12),
|
||||
),
|
||||
RecordingControls(
|
||||
recording: recording,
|
||||
@@ -771,9 +771,9 @@ class _DialoguePageState extends State<DialoguePage>
|
||||
widget.state.keepRecordings
|
||||
? '录音只保存在本机,不会发送给 AI。'
|
||||
: '录音仅供本次回听,离开后自动删除。',
|
||||
style: const TextStyle(color: AppColors.muted, fontSize: 12),
|
||||
style: TextStyle(color: AppColors.muted, fontSize: 12),
|
||||
),
|
||||
const Text(
|
||||
Text(
|
||||
'文字输入可完成教学对话;即使使用语音输入,本受控教学对话也不会单独记为独立口语证据。',
|
||||
style: TextStyle(color: AppColors.muted, fontSize: 12),
|
||||
),
|
||||
@@ -792,7 +792,7 @@ class _DialoguePageState extends State<DialoguePage>
|
||||
tint: AppColors.warm,
|
||||
child: Text(
|
||||
'下次可以注意:${latestFeedback!}',
|
||||
style: const TextStyle(color: AppColors.warmInk),
|
||||
style: TextStyle(color: AppColors.warmInk),
|
||||
),
|
||||
),
|
||||
PrimaryButton(
|
||||
@@ -916,7 +916,7 @@ class _TurnAction extends StatelessWidget {
|
||||
const SizedBox(width: 4),
|
||||
Text(
|
||||
label,
|
||||
style: const TextStyle(
|
||||
style: TextStyle(
|
||||
fontSize: 12,
|
||||
color: AppColors.green,
|
||||
fontWeight: FontWeight.w500,
|
||||
@@ -935,7 +935,7 @@ class _AssistChip extends StatelessWidget {
|
||||
Widget build(BuildContext context) => ActionChip(
|
||||
label: Text(label),
|
||||
backgroundColor: AppColors.surface,
|
||||
side: const BorderSide(color: AppColors.line),
|
||||
side: BorderSide(color: AppColors.line),
|
||||
onPressed: onTap,
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user