전체 학생 목록에 학번 검색 + 학년 필터, 1학년부터 정렬 추가
목록을 학년 오름차순(1→2→3, 미배정은 맨 뒤)으로 정렬하고, 학번으로 검색하는 입력창과 전체/1학년/2학년/3학년 필터 칩을 추가. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -38,8 +38,42 @@ class TeacherStudentManagementController extends ChangeNotifier {
|
||||
|
||||
List<dynamic> _students = [];
|
||||
bool _isLoadingStudents = true;
|
||||
String _searchQuery = '';
|
||||
int? _gradeFilter; // null = 전체
|
||||
List<dynamic> get students => _students;
|
||||
bool get isLoadingStudents => _isLoadingStudents;
|
||||
String get searchQuery => _searchQuery;
|
||||
int? get gradeFilter => _gradeFilter;
|
||||
|
||||
/// 🔍 학번 검색 + 학년 필터를 적용하고, 학년 오름차순(1→2→3, 미배정은 맨 뒤)으로
|
||||
/// 정렬한 목록. 화면에는 이 목록을 그린다.
|
||||
List<dynamic> get filteredStudents {
|
||||
final query = _searchQuery.trim();
|
||||
final filtered = _students.where((s) {
|
||||
if (_gradeFilter != null && s['grade'] != _gradeFilter) return false;
|
||||
if (query.isEmpty) return true;
|
||||
return s['id'].toString().contains(query);
|
||||
}).toList();
|
||||
filtered.sort((a, b) {
|
||||
final ga = a['grade'] as int?;
|
||||
final gb = b['grade'] as int?;
|
||||
if (ga == null && gb == null) return 0;
|
||||
if (ga == null) return 1;
|
||||
if (gb == null) return -1;
|
||||
return ga.compareTo(gb);
|
||||
});
|
||||
return filtered;
|
||||
}
|
||||
|
||||
void setSearchQuery(String query) {
|
||||
_searchQuery = query;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
void setGradeFilter(int? grade) {
|
||||
_gradeFilter = grade;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
Future<void> init() => fetchStudents();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user