basend этот вопрос Я создал перечисление в dart с методом расширения:
enum TagVisibility {
public,
shared,
private,
}
extension on TagVisibility {
String get german {
switch(this){
case TagVisibility.public: return "Für alle sichtbar";
case TagVisibility.shared: return "Für alle mit demselben Tag sichtbar";
case TagVisibility.private: return "Nur für mich sichtbar";
default: throw Exception("enum has more cases");
}
}
}
Но я получаю ошибку Error: The method 'german' isn't defined for the class 'TagVisibility'.
, когда пытаюсь вызвать этот метод расширения:
import 'package:prototype/models/visibility.dart';
...
DropdownButton<TagVisibility>(
hint: Text("Wähle die Sichtbarkeit für diesen Tag"),
value: _visibility ?? _visibilityDefault,
onChanged: (visibility) {
setState(() {
_visibility = visibility;
});
},
// items: List<DropdownMenuItem<TagVisibility>>(
items: TagVisibility.values.map((visibility) => DropdownMenuItem(
value: visibility,
child: Text('${visibility.german()}'), // doesn't work
// child: Text('${visibility.toString()}'), // works, but I want the custom messages.
),
).toList(),
),
Я понятия не имею, что я здесь не так сделал. Не могли бы вы объяснить мне, как я могу заставить это работать? Thx!