組み込みの方法を見つけられなかったので、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');
しかし、持っているすべての Enum に対してこの関数を書き直す必要があるようです。Enum 型をパラメーターとして受け取る同じ関数を記述する方法はありますか? 試してみましたが、Enum にキャストできないことがわかりました。
//is something with the following signiture actually possible?
dynamic enumFromString(Type enumType,String value){
}
ベストアンサー1
ミラーは常に利用できるとは限りませんが、幸いなことに必要ありません。これは適度にコンパクトで、必要な機能を果たすはずです。
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に感謝します