簡體   English   中英

如何在 Flutter 中將枚舉綁定到 DropdownButton?

[英]How to bind an enum to DropdownButton in Flutter?

是否可以將下拉按鈕綁定到枚舉? 我創建了一個枚舉並嘗試將其綁定到下拉按鈕,請參閱下面的代碼。 感謝您對此的任何幫助。

enum ClassType {
  Class-A,
  Class-B,
  Class-C,
  Class-D
}

DropdownButton<String>(
    value: classType,
    onChanged: (String newValue) {
        setState(() {
            viewModel.classType = newValue;
            });
        },
    items: ClassType.map((String classType) {
        return DropdownMenuItem<String>(
            value: classType,
            child: Text(classType),
        );
   }).toList(),
)

首先,您需要將 DropdownButton 類型參數更新為ClassType而不是String 在 Dart 中,枚舉聲明創建了一個新類型,而不是字符串。

下拉按鈕(...);

接下來,您需要更改枚舉名稱。 枚舉必須是有效的 dart 標識符,這意味着它不能包含符號-

enum ClassType {A, B, C, D}

我還更新了您的map方法,您的枚舉實例上沒有靜態迭代器,您必須將它們列出來。 此外,您需要手動將它們轉換為字符串,或者通過調用toString來為您提供"ClassType.A" , ClassType.B"或通過編寫您自己的函數來執行此操作。

return DropdownButton<ClassType>(
    value: classType,
    onChanged: (ClassType newValue) {
      setState(() {
        viewModel.classType = newValue;
      });
    },
    items: ClassType.values.map((ClassType classType) {
      return DropdownMenuItem<ClassType>(
        value: classType,
        child: Text(classType.toString()));
    }).toList();
);

暫無
暫無

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

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