Flutter&Dartでenumを使った定数を定義[SharedPreferenceのKeyなどに使用]
こんにちは、FlutterとDartでアプリ開発中の 村松龍之介 です!
Shared Preferenceの引数で使用するキーを定数で一か所に定義しようと思いました。
static const
で定義しても良かったのですが、今回はenum
を使用しました。
しかし、DartのEnumはString型が使えないのでExtensionで対応しました。
今回はその備忘録です。
ちなみに、DartのExtension機能は Dart 2.7 で追加されたそうです。
Extension methods | Dart
まずはExtensionの前に…
Enumで使用するKeyを定義
/// ここではSharedPreference使用するKeyを想定
enum PreferenceKey {
one,
two,
three,
}
Enumに対するextensionを定義
Extensionの書式
extension
キーワードで始めて、on
の後に拡張する方を書くようです。
extension <拡張名> on <拡張する型> {
// メンバーを定義する
}
<拡張名>は必須。他ライブラリと競合した時に識別したりするのに使うようです。
自己プロジェクト用のExtensionであれば、恐らくそこまで意識する必要はないでしょう。
DartにおけるExtensionのメンバーには、
* メソッド
* Getter
* Setter
* 演算子
* Static field
* Static helper method
を定義できるようです。
Extensionの実装
extension KeyToString on PreferenceKey {
/// 文字列にして `PreferenceKey.one` から `one` を抽出する
String get key => toString().split('.').last;
}
ここではenum PreferenceKey
のStringを取得したい時用のGetterを定義しました。
使い方
// enum, extension を定義したファイル(ライブラリ)をインポート
import 'preference_key.dart';
PreferenceKey.timeOfDay.key; // String型の'timeOfDay'が返る
// extensionの拡張名を指定して使用する場合の記法
KeyToString(PreferenceKey.timeOfDay).key;
(蛇足)import記法
// preference_key.dartの内、extension KeyToString のみ使用する
import 'preference_key.dart' show KeyToString;
// preference_key.dartの内、extension KeyToString のみ使用しない
import 'preference_key.dart' hide KeyToString;
以上、今回はFlutter&Dartでのenumを使った定数定義の一例を書いてみました。
Dartはまだ勉強中なので、間違いやもっと良い記法がありましたらコメントや編集お願いいたします🙇♂️
参考
Author And Source
この問題について(Flutter&Dartでenumを使った定数を定義[SharedPreferenceのKeyなどに使用]), 我々は、より多くの情報をここで見つけました https://qiita.com/Riscait/items/1124951d600ab5c15644著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .