Flutter Dart - dynamically get a property of a class Flutter Dart - dynamically get a property of a class dart dart

Flutter Dart - dynamically get a property of a class


Further to Suman's answer I recommend exposing a method that converts the object to a map and retrieves the property if it's there.

For example:

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}


A quick workaround would be,

  1. Convert your class into JSON.
  2. Access the property via json[key].
void main() {  String var1='name';  String var2='age';  Info info= Info(name:"Suman", age:4);  final json=info.toJson();  print("NAME = ${json[var1]}");  print("AGE = ${json[var2]}");}class Info {  String name;  int age;  Info({this.name, this.age});  Info.fromJson(Map<String, dynamic> json) {    name = json['name'];    age = json['age'];  }  Map<String, dynamic> toJson() {    final Map<String, dynamic> data = new Map<String, dynamic>();    data['name'] = this.name;    data['age'] = this.age;    return data;  }}

Hope this helps. Cheers.