class Semester { Semester({required DateTime startDate, required this.totalWeeks}) : startDate = DateTime.utc(startDate.year, startDate.month, startDate.day) { if (totalWeeks < 1 || totalWeeks > 30) { throw ArgumentError('学期周数应为 1–30'); } } DateTime get firstMonday => startDate.subtract(Duration(days: startDate.weekday - 1)); final DateTime startDate; final int totalWeeks; }