如何为Enums类dart flutter制作toMap和fromMap方法?

Ima*_*ali 1 enums dart flutter

我在类中使用了枚举变量。现在我想为该类实现 toMap 和 fromMap 方法。

enter code here
Run Code Online (Sandbox Code Playgroud)
enum ColorNumber { inc, dec, none }


class CounterState extends Equatable {
  int value;
  ColorNumber ColorNumber;
  CounterState({this.value, this.colorNumber});
  @override
  List<Object> get props => [value, colorNumber];

  Map<String, dynamic> toMap() {
    return {
      'value': value,
      'colorNumber': colorNumber.toMap(),   //error to toMap
    };
  }

  factory CounterState.fromMap(Map<String, dynamic> map) {
    return CounterState(
      value: map['value'],
      none: ColorNumber.fromMap(map['colorNumber']),   //error to fromMap
    );
  }

}
Run Code Online (Sandbox Code Playgroud)

Pro*_*ude 6

简单地将枚举存储为代表其位置的 int 。

见下文

Map<String, dynamic> toMap() {
    return {
      'value': value,
      'colorNumber': colorNumber.index, 
    };
  }
Run Code Online (Sandbox Code Playgroud)
factory CounterState.fromMap(Map<String, dynamic> map) {
    int val = map['colorNumber'];
    return CounterState(
      value: map['value'],
      colorNumber: ColorNumber.values[val],  
    );
  }
Run Code Online (Sandbox Code Playgroud)