[解決済み] 文字列から列挙
2022-11-24 04:45:36
質問
私は
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){
}
どのように解決するのですか?
ミラーを使えば、ある動作を強制することができます。私は 2 つのアイデアを考えていました。残念ながら、Dartは型付けされた関数をサポートしていません。
import 'dart:mirrors';
enum Visibility {VISIBLE, COLLAPSED, HIDDEN}
class EnumFromString<T> {
T get(String value) {
return (reflectType(T) as ClassMirror).getField(#values).reflectee.firstWhere((e)=>e.toString().split('.')[1].toUpperCase()==value.toUpperCase());
}
}
dynamic enumFromString(String value, t) {
return (reflectType(t) as ClassMirror).getField(#values).reflectee.firstWhere((e)=>e.toString().split('.')[1].toUpperCase()==value.toUpperCase());
}
void main() {
var converter = new EnumFromString<Visibility>();
Visibility x = converter.get('COLLAPSED');
print(x);
Visibility y = enumFromString('HIDDEN', Visibility);
print(y);
}
出力します。
Visibility.COLLAPSED
Visibility.HIDDEN
関連
-
[解決済み】Dartで日付をフォーマットする方法とは?
-
[解決済み】Flutterで数値入力フィールドを作成する方法は?
-
[解決済み] "extends" 対 "implements" 対 "with" (拡張する)。
-
[解決済み] Flutter SVG レンダリング
-
[解決済み] Flutter initState メソッドでコンテキストを取得する
-
[解決済み] Dartで "new "キーワードを使う必要があるのか?
-
[解決済み] ステートレスウィジェットクラスのKeyとは何ですか?
-
[解決済み] POSTリクエスト中にCERTIFICATE_VERIFY_FAILEDエラーが発生した場合、どのように解決しますか?
-
[解決済み] Dartでプライベート変数を作成する方法は?
-
[解決済み] Dartのグローバル変数
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] フラッターサークルデザイン
-
[解決済み】Dartで日付をフォーマットする方法とは?
-
[解決済み】Flutterで数値入力フィールドを作成する方法は?
-
[解決済み] dartでenumにメソッドや値を追加する
-
[解決済み] "extends" 対 "implements" 対 "with" (拡張する)。
-
[解決済み] Flutter initState メソッドでコンテキストを取得する
-
[解決済み] TextFieldのBorder Colorを変更できない。
-
[解決済み] DartのNULLチェックのイディオムやベストプラクティスは何ですか?
-
[解決済み] Dartは列挙をサポートしていますか?
-
[解決済み] Flutter (Dart) アプリにタップでクリップボードにコピーする機能を追加するには?