簡體   English   中英

如何從 flutter 中的枚舉中獲取價值

[英]How to get value from enum in flutter

我收到了 API 的回復,我定義了一個這樣的枚舉

enum StatusEnum { EMPTY, STATUS, PURPLE }

final statusEnumValues = EnumValues({
  "کنسل شده": StatusEnum.EMPTY,
  "اتمام": StatusEnum.PURPLE,
  "در انتظار پرداخت": StatusEnum.STATUS
}); 

但是當我在我的代碼中使用它時,我收到錯誤“無法將參數類型“StatusEnum”分配給參數類型'String'。這是我使用的代碼:

  Consumer<GetOrders>(
                    builder: (context, data, child) {
                      return ListView.builder(
                                  physics: NeverScrollableScrollPhysics(),
                                  shrinkWrap: true,
                                  itemCount: getOrders.allData.length,
                                  itemBuilder: (context, index) {
                                      try {
                                        return Column(
                                          crossAxisAlignment:
                                              CrossAxisAlignment.end,
                                          children: [
                                            Row(
                                              mainAxisAlignment:
                                              MainAxisAlignment.end,
                                              children: [
                                                Text(
                                                  data.allData[index].statuse,
                                                  style: TextStyle(
                                                      fontFamily:
                                                      "Vazir",fontWeight: FontWeight.bold),
                                                ),
                                              ],
                                            ),
                                          ],
                                        );
                                      } on Exception catch (_) {
                                        print('never reached');
                                        return null;
                                      }
                                  });
                    },
                  )

任何人都可以幫助 mo 解決這個問題嗎?

如果您嘗試StatusEnum.PURPLE.toString() ,您將得到一個字符串“StatusEnum.PURPLE”。
為此,為了獲得唯一的價值,我更喜歡並推薦使用enum_to_string package。 它允許將枚舉值作為字符串獲取,而無需您的枚舉名稱,即YourEnum.value -> EnumToString.toString(YourEnum.value) => value

下面的代碼將描述枚舉的實現:

enum Day {
  monday, tuesday, wednesday, thursday, friday, saturday, sunday
}

void validateDescribeEnum() {
  assert(Day.monday.toString() == 'Day.monday');
  assert(describeEnum(Day.monday) == 'monday');
}

更新 Dart 2.15:

enum Status {
  failed,
  pending,
}

您可以在枚舉上使用name屬性。

String status = Day.failed.name; // 'failed'

暫無
暫無

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

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