Отображение данных из базы данных в DropdownMenu Flutter - PullRequest
1 голос
/ 30 апреля 2020

Я получаю данные из базы данных MySQL, используя запрос POST, и данные возвращаются в формате JSON. Вот как выглядит мой JSON:

[
{
    "course_name": "Calculus & Analytical Geometry",
    "batch_name": "FA16-BCS-B16-B"
},
{
    "course_name": "COURSE 3",
    "batch_name": "FA16-BCS-B16-B"
},
{
    "course_name": "COURSE 4",
    "batch_name": "FA16-BCS-B16-A"
}]

У меня в приложении есть синтаксический анализатор JSON следующим образом:

class TeacherHomeData {
final String course_name;
final int batch_name;

TeacherHomeData(
  {this.course_name, this.batch_name});

factory TeacherHomeData.fromJson(Map<String, dynamic> json) {
  return TeacherHomeData(
  course_name: json['course_name'],
  batch_name: json['batch_name'],
     );
   }

Map<String, dynamic> toMap() => {
"batch_name": course_name,
"batch_name": batch_name};
}

Данные возвращаются в правильный формат, как это требуется, и также анализируется правильно. Я хочу собрать все course_name в одном DropDownMenu и все batch_name во втором пункте меню. Я хочу, чтобы данные извлекались из базы данных и отображались в DropDownMenu до того, как пользователь начнет использовать экран. У меня есть следующий код для отображения примеров данных в одном DropDownMenu:

class Courses {
int id;
String name;
Courses(this.id, this.name){fun();}
static List<Courses> getCourses() {
  return <Courses>[
  Courses(1, 'CSC311(Automata)'),
  Courses(2, 'CSC441(Compiler Construction)'),
  Courses(3, 'CSC446(Artificial Intelligence)'),
  Courses(4, 'CSC333(HCI)'),
  Courses(5, 'CSC275(Database)'),
  ];
}}
class _Teacher_HomeState extends State<TeacherHome> {
List<Courses> _courses = Courses.getCourses();



List<DropdownMenuItem<Courses>> _dropdownMenuItems;
Courses _selectedCourses;

@override
void initState() {

_dropdownMenuItems = buildDropdownMenuItems(_courses);
_selectedCourses = _dropdownMenuItems[0].value;
super.initState();
}

List<DropdownMenuItem<Courses>> buildDropdownMenuItems(List coursess) {
List<DropdownMenuItem<Courses>> items = List();
for (Courses course in coursess) {
  items.add(
    DropdownMenuItem(
      value: course,
      child: Text(course.name),
    ),
  );
}
return items;
}

onChangeDropdownItem(Courses selectedCourse) {
setState(() {
  _selectedCourses = selectedCourse;
});
}}

Я хочу отобразить данные, возвращенные из базы данных, для отображения в двух разных DropDownMenus, но я не получаю точный способ чтобы сделать это.
Вот как я получаю данные из базы данных:

 AppUtils.getStringFromPref("teacher_id").then((teacher_id) async {
  final data = await http
      .post(AppUtils.teacherHomeLink, body: {"teacher_id": teacher_id});
  var response=data.body;

  final parsed = json.decode(response).cast<Map<String, dynamic>>();
  List<TeacherHomeData> teacherHomeData = parsed
      .map<TeacherHomeData>((json) => TeacherHomeData.fromJson(json))
      .toList();

Любая помощь будет очень признательна. Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...