Dart - 动态获取类的属性的方法
更新时间:2023-05-25 21:55
dart并不像js一样可以很方便的通便变量获取对象属性
我想通过传递一个字符串名称来获取一个类的属性。比如:
js 有两种方式获取对象的属性
点语法, 例如 person.name
中括号语法, 例如 person ['name']
其中, 第一种不能使用变量, 而第二种可以使用变量
let person = {
name: 'wj',
age: 20
}
// 点表示法
// 这里不能使用变量作为对象的属性名
console.log(person.name);
// 中括号表示法
// 这里可以传入变量作为对象的属性名
let name = 'name';
console.log(person[name]);
我想通过传递一个字符串名称来获取一个类的属性。比如:
class A {
String fName ='Hello';
}
main() {
A a = A();
String var1='fName'; // name of property of A class
print (a.fName); // it is working fine
print (a.$var1); // it is giving error that no getter in A class. but I want to pass var1 and automatically get the associate property
}
class Person {
String name;
int age;
Person({this.age, this.name});
Map<String, dynamic> _toMap() {
return {
'name': name,
'age': age,
};
}
dynamic get(String propertyName) {
var _mapRep = _toMap();
if (_mapRep.containsKey(propertyName)) {
return _mapRep[propertyName];
}
throw ArgumentError('propery not found');
}
}
main() {
Person person = Person(age: 10, name: 'Bob');
print(person.name); // 'Bob'
print(person.get('name')); // 'Bob'
print(person.get('age')); // 10
// wrong property name
print(person.get('wrong')); // throws error
}
上一篇:关于函数的默认值 输入 null 下一篇:Flutter 布局详解