在 Dart 中将字符串转换为枚举值

Div*_*wal 6 enums model dart flutter

假设我有一个枚举:

enum XYZ { addition, updation, remove}
Run Code Online (Sandbox Code Playgroud)

我有一个使用fromJson返回添加、更新或删除的方法得到的结果字符串

如何编写一个函数以便将这些值转换为枚举值。诸如此类的东西应该XYZ.json['result']返回给我XYZ.addition等等XYZ.updation

任何帮助将非常感激。

Ivo*_*ers 11

你可以这样做

String yourString = 'addition';
XYZ? result = XYZ.values.firstWhereOrNull((e) => e.name == yourString);
Run Code Online (Sandbox Code Playgroud)

请注意,如果字符串与其中任何一个都不匹配,则result可能会出现这种情况。null你可以写这个来回退到XYZ.addition例如

XYZ result = XYZ.values.firstWhereOrNull((e) => e.name == yourString) ?? XYZ.addition;
Run Code Online (Sandbox Code Playgroud)

firstWhereOrNull是包的一部分collection,因此您需要添加它并导入它,如下所示:

import 'package:collection/collection.dart';
Run Code Online (Sandbox Code Playgroud)