Flutter flatter不适用于swtich语句的自定义枚举 抽象类枚举{ 最终T值; 常量枚举(此.value); } 类FlightScheduleStatus扩展枚举{ const FlightScheduleStatus(int-val):超级(val); 静态const None=const FlightScheduleStatus(0); 静态const OnTime=const FlightScheduleStatus(1); 静态常数延迟=常数飞行计划状态(2); } 小部件GetFlightState(LiveStatus LiveStatus){ 开关(liveStatus.flightScheduleStatus){ 案例飞行计划状态。延迟: 返回行( 儿童:[ 文本(“延迟”), 大小盒子( 宽度:3, ), 芯片( 标签:文本(“${liveStatus.delayedTime}”), 背景颜色:Colors.red, ), ], ); 打破 case FlightScheduleStatus.OnTime: 返回文本(“准时”); 打破 案例飞行计划状态。无: 返回文本(“不适用”); 打破 } }

Flutter flatter不适用于swtich语句的自定义枚举 抽象类枚举{ 最终T值; 常量枚举(此.value); } 类FlightScheduleStatus扩展枚举{ const FlightScheduleStatus(int-val):超级(val); 静态const None=const FlightScheduleStatus(0); 静态const OnTime=const FlightScheduleStatus(1); 静态常数延迟=常数飞行计划状态(2); } 小部件GetFlightState(LiveStatus LiveStatus){ 开关(liveStatus.flightScheduleStatus){ 案例飞行计划状态。延迟: 返回行( 儿童:[ 文本(“延迟”), 大小盒子( 宽度:3, ), 芯片( 标签:文本(“${liveStatus.delayedTime}”), 背景颜色:Colors.red, ), ], ); 打破 case FlightScheduleStatus.OnTime: 返回文本(“准时”); 打破 案例飞行计划状态。无: 返回文本(“不适用”); 打破 } },flutter,dart,enums,switch-statement,Flutter,Dart,Enums,Switch Statement,在这里,我使用自定义类创建了自定义枚举。但是,当我们使用switch语句时,这里没有任何情况。请在这个问题上帮助我。如果这是一个枚举类,我想按原样处理这段代码 甚至我也使用了liveStatus.flightScheduleStatus.value它不起作用 我想问题在于您的FlightScheduleStatus类实际上允许您创建具有相同内部值的多个对象实例。由于您有一个用于FlightScheduleStatus的公共构造函数,我猜您正在代码的其他地方使用该构造函数将int转换为Flight

在这里,我使用自定义类创建了自定义枚举。但是,当我们使用switch语句时,这里没有任何情况。请在这个问题上帮助我。如果这是一个枚举类,我想按原样处理这段代码


甚至我也使用了
liveStatus.flightScheduleStatus.value
它不起作用

我想问题在于您的
FlightScheduleStatus
类实际上允许您创建具有相同内部值的多个对象实例。由于您有一个用于
FlightScheduleStatus
的公共构造函数,我猜您正在代码的其他地方使用该构造函数将
int
转换为
FlightScheduleStatus
。如果是这种情况,您确实需要使用工厂构造函数,如以下示例所示:

abstract class Enum<T> {
  final T value;

  const Enum(this.value);
}


class FlightScheduleStatus<int> extends Enum<int> {
  const FlightScheduleStatus(int val) : super(val);
  static const None = const FlightScheduleStatus(0);
  static const OnTime = const FlightScheduleStatus(1);
  static const Delayed = const FlightScheduleStatus(2);
}


Widget getFlightStates(LiveStatus liveStatus) {
switch (liveStatus.flightScheduleStatus) {
      case FlightScheduleStatus.Delayed:
        return Row(
          children: <Widget>[
            Text('Delayed'),
            SizedBox(
              width: 3,
            ),
            Chip(
              label: Text('${liveStatus.delayedTime}'),
              backgroundColor: Colors.red,
            ),
          ],
        );
        break;
      case FlightScheduleStatus.OnTime:
        return Text('On Time');
        break;
      case FlightScheduleStatus.None:
        return Text('N/A');
        break;
    }
}
抽象类枚举{
最终T值;
常量枚举(此.value);
}
类FlightScheduleStatus扩展枚举{
const FlightScheduleStatus.uz(int-val):超级(val);
工厂航班计划状态(int val){
如果(val==None.value){
不返回任何值;
}else if(val==OnTime.value){
按时返回;
}else if(val==Delayed.value){
返回延迟;
}
抛出异常(“$val不是FlightScheduleStatus的有效值。”);
}
静态const None=const FlightScheduleStatus.\u0;
静态const OnTime=const FlightScheduleStatus.\u1;
静态常数延迟=常数飞行计划状态。\u2;
}
void main(){
var测试=飞行计划状态(0);
开关(测试){
案例飞行计划状态。无:

print('None');//您能添加liveStatus.flightschedulestStatus和liveStatus.flightschedulestStatus.value吗?我根据您的代码创建了一个示例,它工作正常。请查看。
abstract class Enum<T> {
  final T value;

  const Enum(this.value);
}

class FlightScheduleStatus extends Enum<int> {
  const FlightScheduleStatus._(int val) : super(val);

  factory FlightScheduleStatus(int val) {
    if (val == None.value) {
      return None;
    } else if (val == OnTime.value) {
      return OnTime;
    } else if (val == Delayed.value) {
      return Delayed;
    }
    throw Exception('$val is not a valid value for FlightScheduleStatus.');
  }

  static const None = const FlightScheduleStatus._(0);
  static const OnTime = const FlightScheduleStatus._(1);
  static const Delayed = const FlightScheduleStatus._(2);
}

void main() {
  var test = FlightScheduleStatus(0);

  switch (test) {
    case FlightScheduleStatus.None:
      print('None'); // <-- this is the one executed
      break;
    case FlightScheduleStatus.OnTime:
      print('OnTime');
      break;
    case FlightScheduleStatus.Delayed:
      print('Delayed');
      break;
  }
}