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
@@ -281,6 +281,14 @@ const a0SeedLessons = [
|
||||
example: 'Nice to meet you, too.',
|
||||
exampleMeaning: '我也很高兴认识你。',
|
||||
),
|
||||
VocabularyItem(
|
||||
id: 'a0-01-thanks',
|
||||
word: 'thanks',
|
||||
meaning: '谢谢',
|
||||
example: 'Thanks. Nice to meet you, too.',
|
||||
exampleMeaning: '谢谢。我也很高兴认识你。',
|
||||
ipa: '/θæŋks/',
|
||||
),
|
||||
],
|
||||
),
|
||||
SeedLesson(
|
||||
@@ -405,6 +413,14 @@ const a0SeedLessons = [
|
||||
example: 'What’s this? It’s a key.',
|
||||
exampleMeaning: '这是什么?这是钥匙。',
|
||||
),
|
||||
VocabularyItem(
|
||||
id: 'a0-05-bag',
|
||||
word: 'bag',
|
||||
meaning: '包',
|
||||
example: 'It’s a bag.',
|
||||
exampleMeaning: '这是一个包。',
|
||||
ipa: '/bæɡ/',
|
||||
),
|
||||
],
|
||||
),
|
||||
SeedLesson(
|
||||
@@ -451,6 +467,22 @@ const a0SeedLessons = [
|
||||
example: 'This is my mother.',
|
||||
exampleMeaning: '这是我的妈妈。',
|
||||
),
|
||||
VocabularyItem(
|
||||
id: 'a0-07-sister',
|
||||
word: 'sister',
|
||||
meaning: '姐妹',
|
||||
example: 'This is my sister.',
|
||||
exampleMeaning: '这是我的姐姐(或妹妹)。',
|
||||
ipa: '/ˈsɪstə(r)/',
|
||||
),
|
||||
VocabularyItem(
|
||||
id: 'a0-07-brother',
|
||||
word: 'brother',
|
||||
meaning: '兄弟',
|
||||
example: 'This is my brother.',
|
||||
exampleMeaning: '这是我的哥哥(或弟弟)。',
|
||||
ipa: '/ˈbrʌðə(r)/',
|
||||
),
|
||||
],
|
||||
),
|
||||
SeedLesson(
|
||||
@@ -496,14 +528,38 @@ const a0SeedLessons = [
|
||||
example: 'Do you like tea?',
|
||||
exampleMeaning: '你喜欢茶吗?',
|
||||
),
|
||||
VocabularyItem(
|
||||
id: 'a0-09-music',
|
||||
word: 'music',
|
||||
meaning: '音乐',
|
||||
example: 'I like music.',
|
||||
exampleMeaning: '我喜欢音乐。',
|
||||
ipa: '/ˈmjuːzɪk/',
|
||||
),
|
||||
VocabularyItem(
|
||||
id: 'a0-09-movies',
|
||||
word: 'movies',
|
||||
meaning: '电影',
|
||||
example: 'Do you like movies?',
|
||||
exampleMeaning: '你喜欢看电影吗?',
|
||||
ipa: '/ˈmuːviz/',
|
||||
),
|
||||
],
|
||||
),
|
||||
SeedLesson(
|
||||
id: 'a0-10',
|
||||
number: 10,
|
||||
title: 'A0 综合任务',
|
||||
outcome: '完成自我介绍、喜好和反问',
|
||||
outcome: '没听清时请对方重复,并完成自我介绍、喜好和反问',
|
||||
vocabulary: [
|
||||
VocabularyItem(
|
||||
id: 'a0-10-water',
|
||||
word: 'water',
|
||||
meaning: '水',
|
||||
example: 'I like water.',
|
||||
exampleMeaning: '我喜欢喝水。',
|
||||
ipa: '/ˈwɔːtər/',
|
||||
),
|
||||
VocabularyItem(
|
||||
id: 'a0-10-again',
|
||||
word: 'Please say that again.',
|
||||
@@ -531,6 +587,7 @@ class LessonActivity {
|
||||
required this.listeningQuestion,
|
||||
required this.answers,
|
||||
required this.speaking,
|
||||
this.speakingTip = '',
|
||||
required this.reading,
|
||||
required this.readingQuestion,
|
||||
required this.readingAnswer,
|
||||
@@ -544,6 +601,9 @@ class LessonActivity {
|
||||
final String listeningQuestion;
|
||||
final List<String> answers;
|
||||
final String speaking;
|
||||
|
||||
/// 这句跟读的发音提示;为空时不显示,避免给每一句套用同一条提示。
|
||||
final String speakingTip;
|
||||
final String reading;
|
||||
final String readingQuestion;
|
||||
final String readingAnswer;
|
||||
@@ -587,7 +647,7 @@ const a0Activities = <String, LessonActivity>{
|
||||
answers: ['自我介绍', '买东西', '问时间'],
|
||||
speaking: 'Hello. I’m Shen. Nice to meet you.',
|
||||
reading:
|
||||
'Mia: Hello. I’m Mia. What’s your name?\nShen: Hi. I’m Shen.\nMia: Nice to meet you.\nShen: Nice to meet you, too.',
|
||||
'Mia: Hello. I’m Mia. What’s your name?\nShen: Hi. I’m Shen.\nMia: Nice to meet you.\nShen: Thanks. Nice to meet you, too.',
|
||||
readingQuestion: 'Shen 说的最后一句是什么?',
|
||||
readingAnswer: 'Nice to meet you, too.',
|
||||
readingOptions: [
|
||||
@@ -605,6 +665,7 @@ const a0Activities = <String, LessonActivity>{
|
||||
listeningQuestion: '这句话是什么意思?',
|
||||
answers: ['你的名字怎么拼?', '你的名字是什么?', '你来自哪里?'],
|
||||
speaking: 'S H E N',
|
||||
speakingTip: '字母之间留一个短停顿:S /es/ - H /eɪtʃ/ - E /iː/ - N /en/。先清楚,不必快。',
|
||||
reading:
|
||||
'Mia: I’m Mia. M-I-A.\nShen: Hi, Mia. I’m Shen. S-H-E-N.\nMia: How do you spell Sam?\nShen: S-A-M.',
|
||||
readingQuestion: 'Shen 自己的名字怎么拼写?',
|
||||
@@ -635,6 +696,7 @@ const a0Activities = <String, LessonActivity>{
|
||||
listeningQuestion: '你听到的是哪个号码?',
|
||||
answers: ['138', '183', '318'],
|
||||
speaking: 'My number is one-three-eight.',
|
||||
speakingTip: '号码一个数字一个数字地读,数字之间稍停:one - three - eight。',
|
||||
reading:
|
||||
'Mia: What’s your phone number?\nShen: My number is one-three-eight.\nMia: One-eight-three?\nShen: No. One-three-eight.',
|
||||
readingQuestion: 'Shen 的号码到底是哪一个?',
|
||||
@@ -650,10 +712,11 @@ const a0Activities = <String, LessonActivity>{
|
||||
listeningQuestion: '这是什么?',
|
||||
answers: ['钥匙', '书', '水'],
|
||||
speaking: 'What’s this? It’s a pen.',
|
||||
reading: 'Mia: What’s this? Is it a pen?\nShen: No. It’s a book.',
|
||||
readingQuestion: 'Shen 说那件东西是什么?',
|
||||
reading:
|
||||
'Mia: What’s this? Is it a pen?\nShen: No. It’s a book.\nMia: And what’s this?\nShen: It’s a bag.',
|
||||
readingQuestion: 'Shen 说第一件东西是什么?',
|
||||
readingAnswer: 'A book',
|
||||
readingOptions: ['A book', 'A pen', 'A phone'],
|
||||
readingOptions: ['A book', 'A pen', 'A bag'],
|
||||
writingPrompt: '写一句“这是一支笔”。',
|
||||
writingExample: 'It’s a pen.',
|
||||
independentPrompt: '不看句框,说出一个身边物品。',
|
||||
@@ -680,10 +743,10 @@ const a0Activities = <String, LessonActivity>{
|
||||
answers: ['妈妈', '朋友', '老师'],
|
||||
speaking: 'This is my family.',
|
||||
reading:
|
||||
'Mia: Who is this? Is this your father?\nShen: No. This is my mother.',
|
||||
readingQuestion: 'Shen 介绍的是哪一位家人?',
|
||||
'Mia: Who is this? Is this your father?\nShen: No. This is my mother.\nMia: And who is this? Your sister?\nShen: No. This is my brother.',
|
||||
readingQuestion: 'Shen 先介绍的是哪一位家人?',
|
||||
readingAnswer: 'My mother',
|
||||
readingOptions: ['My mother', 'My father', 'My sister'],
|
||||
readingOptions: ['My mother', 'My brother', 'My father'],
|
||||
writingPrompt: '介绍一位家人或朋友。',
|
||||
writingExample: 'This is my mother.',
|
||||
independentPrompt: '不看句框,介绍一位家人或朋友。',
|
||||
@@ -694,6 +757,7 @@ const a0Activities = <String, LessonActivity>{
|
||||
listeningQuestion: '是什么时间?',
|
||||
answers: ['星期一三点', '星期三一点', '星期一一点'],
|
||||
speaking: 'It’s three o’clock.',
|
||||
speakingTip: 'o’clock 读作 /əˈklɒk/,前面的 o 很轻。',
|
||||
reading:
|
||||
'Mia: What day is it today? Is it Tuesday?\nShen: No. It’s Monday.',
|
||||
readingQuestion: '对话中今天到底是星期几?',
|
||||
@@ -710,7 +774,7 @@ const a0Activities = <String, LessonActivity>{
|
||||
answers: ['喜欢', '不喜欢', '不知道'],
|
||||
speaking: 'I like tea. Do you like tea?',
|
||||
reading:
|
||||
'Mia: I like tea. Do you like tea?\nShen: No, I don’t. I like coffee.',
|
||||
'Mia: I like tea. Do you like tea?\nShen: No, I don’t. I like coffee and music.\nMia: Do you like movies?\nShen: Yes, I do.',
|
||||
readingQuestion: 'Shen 喜欢喝什么?',
|
||||
readingAnswer: 'Coffee',
|
||||
readingOptions: ['Coffee', 'Tea', 'Music'],
|
||||
@@ -720,19 +784,21 @@ const a0Activities = <String, LessonActivity>{
|
||||
independentHelp: 'I like … / Do you like …?',
|
||||
),
|
||||
'a0-10': LessonActivity(
|
||||
listening: 'Please say that again.',
|
||||
listeningQuestion: '对方希望什么?',
|
||||
answers: ['再说一遍', '说慢一点', '写下来'],
|
||||
speaking: 'Please speak slowly.',
|
||||
listening: 'Do you like water? Sorry, please say that again.',
|
||||
listeningQuestion: '第二个人希望对方做什么?',
|
||||
answers: ['再说一遍', '说慢一点', '给他一杯水'],
|
||||
speaking: 'Sorry, please say that again. I like water.',
|
||||
speakingTip: 'water 的 t 常读得很轻,像轻轻的 d。先清楚,不必快。',
|
||||
reading:
|
||||
'Alex: Hi! I’m Alex. What’s your name?\nShen: Hi! I’m Shen. Nice to meet you.\nAlex: Nice to meet you, too. Where are you from?\nShen: I’m from Hong Kong. Where are you from?\nAlex: I’m from London. Do you like coffee?\nShen: No, I don’t. I like tea.',
|
||||
readingQuestion: 'Shen 来自哪里、喜欢喝什么?',
|
||||
readingAnswer: 'Hong Kong, tea',
|
||||
readingOptions: ['Hong Kong, tea', 'London, coffee', 'Hong Kong, coffee'],
|
||||
writingPrompt: '写姓名、地点和喜好三句。',
|
||||
writingExample: 'I’m Shen.\nI’m from Hong Kong.\nI like tea.',
|
||||
independentPrompt: '不看帮助,完成姓名、地点、喜好和反问。',
|
||||
independentHelp: 'I’m … / I’m from … / I like …',
|
||||
'Alex: Hi! I’m Alex. Where are you from?\nShen: Sorry? Please say that again.\nAlex: Where are you from?\nShen: I’m from Hong Kong. Do you like coffee?\nAlex: No, I don’t. I like water.',
|
||||
readingQuestion: 'Alex 喜欢喝什么?',
|
||||
readingAnswer: 'Water',
|
||||
readingOptions: ['Water', 'Coffee', 'Tea'],
|
||||
writingPrompt: '写姓名、地点和喜好三句,喜好用 water。',
|
||||
writingExample: 'I’m Shen.\nI’m from Hong Kong.\nI like water.',
|
||||
independentPrompt: '不看帮助:先请对方再说一遍,再说姓名、喜欢喝什么,并反问对方。',
|
||||
independentHelp:
|
||||
'Please say that again. / I’m … / I like water. / Do you like …?',
|
||||
),
|
||||
};
|
||||
|
||||
@@ -774,6 +840,7 @@ const a0SegmentActivities = <String, LessonActivity>{
|
||||
listeningQuestion: '号码是多少?',
|
||||
answers: ['138', '183', '318'],
|
||||
speaking: 'My number is one-three-eight.',
|
||||
speakingTip: '号码一个数字一个数字地读,数字之间稍停:one - three - eight。',
|
||||
reading:
|
||||
'Mia: What’s your phone number?\nShen: My number is five-zero-two.\nMia: Five-two-zero?\nShen: No. Five-zero-two.',
|
||||
readingQuestion: 'Shen 最后确认的号码是哪一个?',
|
||||
@@ -1187,10 +1254,10 @@ const a0IndependentRequiredTerms = <String, List<List<String>>>{
|
||||
['i like', 'i love'],
|
||||
['do you like', '#question'],
|
||||
],
|
||||
// 完成姓名、地点、喜好和反问
|
||||
// 请对方重复,完成姓名、喜好和反问
|
||||
'a0-10': [
|
||||
['say that again', 'speak slowly', 'pardon'],
|
||||
_introductionTerms,
|
||||
["i'm from", 'i am from', 'from + #word'],
|
||||
['i like', 'i love'],
|
||||
['#question'],
|
||||
],
|
||||
@@ -1690,19 +1757,19 @@ const a0Dialogues = <String, LessonDialogue>{
|
||||
'Say: Please say that again.',
|
||||
'Say: Please speak slowly.',
|
||||
'Now ask me your name or where I am from.',
|
||||
'Say one thing you like.',
|
||||
'Tell me what you like to drink.',
|
||||
],
|
||||
hints: [
|
||||
'Please say that again.',
|
||||
'Please speak slowly.',
|
||||
'What’s your name?',
|
||||
'I like tea.',
|
||||
'I like water.',
|
||||
],
|
||||
translations: [
|
||||
'请说:Please say that again(请再说一遍)。',
|
||||
'请说:Please speak slowly(请说慢一点)。',
|
||||
'现在请问我的名字或我来自哪里。',
|
||||
'请说一件你喜欢的事物。',
|
||||
'告诉我你喜欢喝什么。',
|
||||
],
|
||||
requiredTerms: [
|
||||
['say that again', 'again', 'pardon'],
|
||||
@@ -1716,7 +1783,7 @@ const a0Dialogues = <String, LessonDialogue>{
|
||||
],
|
||||
['i like', 'i love'],
|
||||
],
|
||||
taskLabels: ['请求对方重复', '请求对方放慢语速', '反问名字或来自哪里', '说出一件你喜欢的事物'],
|
||||
taskLabels: ['请求对方重复', '请求对方放慢语速', '反问名字或来自哪里', '说出你喜欢喝什么'],
|
||||
),
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user