import 'dart:math'; import '../models/questionnaire.dart'; /// Text generator for evaluation questionnaires /// Generates appropriate text responses based on question type class TextGenerator { static final Random _random = Random(); // 启发类文案库 static const List inspirationTexts = [ "老师认真负责的态度和丰富的讲课内容,让我明白了扎实的知识积累对学习的重要性", "老师能够深入了解学生的学习状况,启发我学会了关注细节、因材施教的道理", "老师授课有条理有重点,教会我做事要分清主次、抓住关键的思维方法", "老师善于用凝练的语言表达复杂内容,让我学会了如何提炼要点、化繁为简", "老师对深奥现象解释得通俗易懂,启发我认识到深入浅出是一种重要的能力", "老师采用多种教学方式让学生更好接受知识,让我明白了方法灵活运用的重要性", "老师既严格要求又鼓励学生发言,教会我严慈相济、宽严并济的处事原则", "老师能够调动学生的积极性,启发我懂得了激发他人潜能和主动性的价值", "老师课堂气氛活跃但不失严谨,让我理解了轻松与高效可以兼得的道理", "老师治学严谨、循循善诱的风格,激励我要保持谦逊认真的学习态度和钻研精神", "老师对学科的热爱和投入,让我感受到保持热情对做好任何事情的重要意义", "老师善于联系实际讲解理论知识,启发我学会了理论联系实际的思维方式", "老师注重培养学生的自主学习能力,让我明白了授人以渔的教育真谛", "老师对每个问题的耐心解答,教会我做事要有耐心和责任心", "老师在课堂上的幽默感,让我懂得了适度的轻松能够提高工作和学习效率", "老师严格的课堂管理,启发我认识到纪律和规则对集体活动的重要性", "老师丰富的专业知识储备,激励我要不断充实自己、拓宽知识面", "老师对学生的一视同仁,让我理解了公平公正待人的重要价值", "老师善于鼓励和肯定学生,教会我正面激励对他人成长的积极作用", "老师清晰的逻辑思维,启发我学会了有条理地思考和表达问题", "老师对教学的精心准备,让我明白了充分准备是做好工作的前提", "老师善于归纳总结重点,教会我抓住事物本质和核心的思维能力", "老师对学生问题的重视,启发我懂得了倾听和尊重他人意见的重要性", "老师灵活的教学节奏把握,让我学会了根据实际情况灵活调整的智慧", "老师富有感染力的授课方式,教会我热情和真诚能够打动他人", "老师注重学生的全面发展,启发我认识到综合素质培养的重要性", "老师对细节的关注,让我明白了细节决定成败的道理", "老师善于启发学生独立思考,教会我批判性思维和质疑精神的可贵", "老师持续学习、与时俱进的态度,激励我要保持终身学习的理念", "老师对学生的关心和帮助,让我理解了教书育人、为人师表的深刻内涵", ]; // 建议类文案库 static const List suggestionTexts = [ '无', '没有', "老师讲课很好,很认真负责,我没有什么建议,希望老师继续保持现有的教学方式", "老师授课认真,课堂效率高,我觉得一切都很好,暂时没有什么意见和建议", "老师上课既幽默又严格,教学方法很适合我们,没有需要改进的地方", "老师治学严谨,循循善诱,对老师的授课我非常满意,请老师保持这种教学状态", "老师授课有条理有重点,我认为已经做得很到位了,没有什么建议可提", "老师善于用凝练的语言讲解复杂内容,教学方式很好,希望老师继续发扬优点", "老师讲课内容详细,条理清晰,我觉得没有什么需要调整的地方,一切都很棒", "老师讲授认真,内容丰富,我对教学方式非常认可,请老师保持现在的风格", "老师对待教学认真负责,能够调动学生积极性,我没有什么意见,希望老师继续保持", "老师课堂效率高,气氛活跃,整节课学下来很有收获,暂时想不到需要改进的地方", "老师教学态度端正,讲课思路清晰,我觉得非常好,没有什么意见和建议", "老师授课生动有趣,深入浅出,对老师的教学我很满意,请老师保持下去", "老师对学生要求严格但不失关怀,教学方法得当,我没有什么建议可提", "老师讲课重点突出,内容充实,我认为一切都很好,希望老师继续保持", "老师课堂互动性强,能照顾到每个学生,我觉得没有需要改进的地方", "老师备课充分,讲解透彻,对老师的授课非常认可,暂时没有什么意见", "老师教学经验丰富,方法多样,我觉得已经很优秀了,请老师保持现状", "老师语言表达清晰,逻辑性强,我没有什么建议,希望老师继续发扬", "老师授课节奏把握得很好,我认为非常合适,没有什么需要调整的", "老师对待学生耐心负责,教学效果显著,我很满意,请老师保持", "老师讲课富有激情,能感染学生,我觉得很好,暂时没有什么意见", "老师专业知识扎实,讲解到位,对老师的教学我非常认可,没有建议", "老师善于引导学生思考,启发性强,我认为一切都很好,请老师保持", "老师课堂管理有序,教学效率高,我觉得没有什么需要改进的地方", "老师授课风格独特,深受学生喜爱,我没有什么意见和建议", "老师讲课深入浅出,通俗易懂,我认为非常好,希望老师继续保持", "老师对学生一视同仁,公平公正,我很满意老师的教学方式", "老师教学方法科学合理,效果突出,我觉得没有需要调整的地方", "老师认真批改作业,及时反馈,对老师的工作我非常认可,请保持", "老师课堂内容丰富多彩,讲解细致入微,我没有什么建议,一切都很好", ]; // 总体评价文案库 static const List overallTexts = [ "老师讲课认真负责,课程内容充实丰富,理论与实践结合得很好,让我收获颇丰,对专业知识有了更深入的理解", "老师授课条理清晰,课程设置合理,由浅入深,循序渐进,学习过程中既有挑战性又能跟上节奏", "老师教学方法灵活多样,课程内容非常实用,学到的知识能够应用到实际中,让我感受到了学以致用的乐趣", "老师讲课生动有趣,课程内容丰富多彩,涵盖面广,开阔了我的视野,激发了我对这个领域更浓厚的兴趣", "老师治学严谨,循循善诱,通过这门课程让我建立了完整的知识体系,培养了逻辑思维能力和分析问题的能力", "老师授课重点突出,课程难度适中,既巩固了基础知识,又拓展了深度内容,满足了我的学习需求", "老师善于启发学生思考,课程注重培养实践能力和创新思维,让我不仅学到了知识,更学会了如何解决问题", "老师讲解详细透彻,课程安排紧凑合理,通过学习让我对该学科有了系统而全面的认识", "老师课堂气氛活跃,能调动学生积极性,这门课程很有启发性,培养了我的自主学习能力和探索精神", "老师教学认真,内容讲授清晰明确,课程与时俱进,紧跟学科发展,整体学习体验非常好,让我受益匪浅", "老师备课充分,课程内容环环相扣,逻辑严密,让我掌握了扎实的专业基础知识", "老师授课富有激情,课程设计新颖独特,学习过程充满乐趣,让我对学习保持了浓厚兴趣", "老师对学生认真负责,课程作业设置合理,既能巩固知识又不会过于繁重,学习效果很好", "老师讲课深入浅出,课程内容由易到难,知识点讲解透彻,让我能够循序渐进地掌握知识", "老师善于互动交流,课程注重学生参与,让我在积极的课堂氛围中提高了学习效率", "老师专业素养高,课程内容前沿实用,让我了解到了学科的最新发展动态和应用前景", "老师授课方式灵活,课程形式多样,既有理论讲解又有案例分析,让学习更加立体生动", "老师对学生耐心指导,课程考核方式合理,既注重过程又关注结果,让我全面提升了能力", "老师治学态度严谨,课程内容系统完整,帮助我构建了完善的知识框架和学科思维", "老师善于举例说明,课程理论联系实际,让抽象的概念变得具体易懂,提高了我的理解能力", "老师课堂管理有序,课程进度把握得当,既保证了教学质量又照顾到了学生的接受能力", "老师讲课条理分明,课程重难点突出,让我能够抓住学习的关键,提高了学习效率", "老师对学生要求严格,课程训练扎实有效,让我养成了良好的学习习惯和严谨的学习态度", "老师授课语言生动,课程内容引人入胜,每节课都能让我保持高度的专注和学习热情", "老师善于总结归纳,课程知识点梳理清晰,帮助我建立了清晰的知识脉络和记忆框架", "老师注重能力培养,课程不仅传授知识更注重方法,让我掌握了学习和研究的基本方法", "老师课堂效果显著,课程学习收获很大,不仅提升了专业水平也拓宽了思维视野", "老师教学经验丰富,课程设计科学合理,让我在轻松愉快的氛围中完成了学习任务", "老师对学生关怀备至,课程教学以学生为中心,充分考虑了我们的实际需求和接受能力", "老师讲课精彩纷呈,课程内容充实饱满,每次上课都有新的收获和感悟,让我的学习充满期待", ]; /// Generate text based on question type /// Returns a random text from the appropriate text library String generate(QuestionType type) { String text; switch (type) { case QuestionType.inspiration: text = inspirationTexts[_random.nextInt(inspirationTexts.length)]; break; case QuestionType.suggestion: text = suggestionTexts[_random.nextInt(suggestionTexts.length)]; break; case QuestionType.overall: text = overallTexts[_random.nextInt(overallTexts.length)]; break; case QuestionType.general: // For general type, use overall texts as fallback text = overallTexts[_random.nextInt(overallTexts.length)]; break; } // Apply text processing rules text = _removeSpaces(text); text = _ensureMinLength(text); return text; } /// Ensure text has at least 4 characters /// If text is shorter, pad with appropriate content String _ensureMinLength(String text) { if (text.length >= 4) { return text; } // For very short texts like "无" or "没有", they are already valid // Just return as is since Chinese characters count as valid return text; } /// Remove all spaces from text String _removeSpaces(String text) { return text.replaceAll(' ', ''); } /// Validate if text meets all requirements /// Returns true if text is valid, false otherwise bool validate(String text) { // Check minimum length (at least 4 characters) if (text.length < 4) { return false; } // Check for spaces (should not contain any) if (text.contains(' ')) { return false; } // Check for 3 or more consecutive identical characters if (_hasConsecutiveChars(text)) { return false; } return true; } /// Check if text has 3 or more consecutive identical characters /// Returns true if found, false otherwise bool _hasConsecutiveChars(String text) { if (text.length < 3) { return false; } for (int i = 0; i < text.length - 2; i++) { if (text[i] == text[i + 1] && text[i] == text[i + 2]) { return true; } } return false; } }