株式会社TenxiaのCEOの岡部(Twitter)です。
ついにFlutterのStableがDart2.7になり、待望のExtensionが使えるようになりました。
ExtensionでStatic methodを使う方法で若干詰まったので、メモがてら記事にしておきます。
直感的な方法だと参照出来ない
enum Sex {
male,
female,
others,
}
extension SexExtension on Sex {
static Sex fromString(String text) {
switch(text) {
case 'male':
return Sex.male;
case 'female':
return Sex.female;
default:
return Sex.others;
}
}
}
main() {
print(Sex.fromString('male'));
/// Error compiling to JavaScript:
/// main.dart:22:13:
/// Error: Enums can't be instantiated.
/// print(Sex.fromString('male'));
/// ^^^^^^^^^^
/// Error: Compilation failed.
}
こっちに生えてる
main() {
print(SexExtension.fromString('male'));
/// => Sex.male
}
良かったですね。
参考: https://github.com/dart-lang/language/issues/723#issuecomment-562582406