Ich möchte auf eine Eigenschaft mit dem Namen si string format zugreifen.
Wenn ich so eine Klasse habe:
class PrefsState {
String a;
PrefsState({
this.a,
})
Wie kann ich so etwas machen:
PrefsState test= PrefsState(a: "it is a test");
String key = "a";
print(test[key]);
Natürlich funktioniert nicht. Gibt es eine Möglichkeit, dies in Dart zu tun?
Leider können Sie beim Flattern keine Reflexion / Spiegel verwenden. Was Sie tun können, was mühsam ist, ist die Verwendung von Karten.
class PrefsState {
String a;
const PrefsState({ this.a, });
dynamic getProp(String key) => <String, dynamic>{
'a' : a,
}[key];
}
Es ist wahrscheinlich besser, die Karte im Konstruktor zu erstellen, aber wenn Sie const-Konstruktoren möchten, müssen Sie sich damit zufrieden geben. Wahrscheinlich wird es keinen großen Unterschied machen, wenn Sie nicht trotzdem eine Million Parameter haben. Dann benutzt du es so:
PrefsState test= PrefsState(a: "it is a test");
String key = "a";
print(test.getProp(key));
Ich glaube nicht, dass es einen weniger umständlichen Weg gibt, aber ich würde mich gerne als falsch erweisen lassen :-)
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen