gpt4 book ai didi

dart - 来自字符串的枚举

转载 作者:行者123 更新时间:2023-11-30 10:50:47 25 4
gpt4 key购买 nike

我有一个 Enum 和一个从 String 创建它的函数,因为我找不到内置的方法来做到这一点

enum Visibility{VISIBLE,COLLAPSED,HIDDEN}

Visibility visibilityFromString(String value){
return Visibility.values.firstWhere((e)=>
e.toString().split('.')[1].toUpperCase()==value.toUpperCase());
}

//used as
Visibility x = visibilityFromString('COLLAPSED');

但似乎我必须为我拥有的每个枚举重写这个函数,有没有办法编写以枚举类型作为参数的相同函数?我尝试过,但我发现我无法转换为枚举。

//is something with the following signiture actually possible?
dynamic enumFromString(Type enumType,String value){

}

最佳答案

镜子并不总是可用的,但幸运的是你并不需要它们。这是相当紧凑的,应该可以满足您的需求。

enum Fruit { apple, banana }

// Convert to string
String str = Fruit.banana.toString();

// Convert to enum
Fruit f = Fruit.values.firstWhere((e) => e.toString() == 'Fruit.' + str);

assert(f == Fruit.banana); // it worked

感谢@frostymarvelous 更正答案

关于dart - 来自字符串的枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54590202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com