![](/img/trans.png)
[英]how too style DropdownSearch Selected Item in flutter
[英]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.