如何从颤振中的枚举中获取价值

时间:2021-03-30 06:49:37

标签: android flutter dart enums

我收到来自 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;
                                      }
                                  });
                    },
                  )

谁能帮我解决这个问题?

2 个答案:

答案 0 :(得分:1)

如果你尝试 StatusEnum.PURPLE.toString(),你会得到一个字符串“StatusEnum.PURPLE”。
为此,为了获得价值,我更喜欢并推荐使用 enum_to_string 包。它允许将枚举值作为字符串获取,而无需您的枚举名称,即 YourEnum.value -> EnumToString.toString(YourEnum.value) => value

答案 1 :(得分:1)

下面的代码将描述枚举的实现:

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

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