簡體   English   中英

如何使用 flutter 中的 dropdownSearch 小部件獲取列表中所選項目的 ID?

[英]How can I get the id of a selected item in a list using the the dropdownSearch widget in flutter?

我正在使用 flutter 中的 DropDownSearch 小部件來顯示項目列表。 我正在顯示列表中的值“acYear”,但我希望能夠將所選項目的值“id”傳遞給 controller,即 academicYearController.text。請問我該如何實現? 這是我試過的:

 child: DropdownSearch < dynamic > ( autoValidateMode: AutovalidateMode.onUserInteraction, validator: (value) => value == null? "Academic Year is required ": null, dropdownDecoratorProps: const DropDownDecoratorProps( dropdownSearchDecoration: InputDecoration( hintText: "Select academic year", helperText: '', labelText: "Academic Year *", contentPadding: EdgeInsets.fromLTRB(12, 12, 0, 0), border: OutlineInputBorder(), ), ), items: dataService.academicYearList.map((AcademicYear yr) { return yr.accYear.toString(); }).toList(), // items: dataService.academicYearList.map((AcademicYear yr) { // return DropdownMenuItem( // child: Text(yr.id.toString()), // value: yr.id, // ); // }).toList(), onChanged: (value) { academicYearController.text = value; setState(() { dataService.selectedAcademicYear = dataService.selected; }); debugPrint('selectedId: ${academicYearController.text}'); }, ),

AcademicYear Object 和 academicYear List 如下所示:

 class AcademicYear { int id; String accYearId; String accYear; int status; AcademicYear({ required this.id, required this.accYearId, required this.accYear, required this.status, }); [{ "id": 1, "accYearId": "20212022", "accYear": "20212022", "status": 1 }]

我已經添加了 API 調用來獲取 academicYear 數據,以防我做錯事,如下所示:

 Future < List < AcademicYear >> getYears() async { academicUrl = "${dataService.baseUrl}/academicyear"; // debugPrint('url: $academicUrl'); http.Response response = await http.get( Uri.parse(academicUrl), headers: { "Content-Type": "application/json", }, ); List < AcademicYear > result(dynamic str) => List < AcademicYear >.from( json.decode(str).map((x) => AcademicYear.fromJson(x))); // debugPrint('result: ${response.body}'); if (response.statusCode == 200) { return result(response.body); } else { throw Exception('error loading object'); } }

在您的DropdownSearch's onChanged 中,執行以下操作:

onChanged: (value) {
      var xList = dataService.academicYearList.where((element) => element.accYear == value);

      if (xList.isNotEmpty) {
         AcademicYear x = xList.first;
         print("x = ${x.id}");
         academicYearController.text = value;
      }
      
      setState(() {
        dataService.selectedAcademicYear = dataService.selected;
      });
      debugPrint('selectedId: ${academicYearController.text}');
    },

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM