pseudopeach
pseudopeach

Reputation: 1475

How to dynamically use getters/setters in Dart

class User{
  String firstName;
  String lastName;
  String email;
}

I want to be able to get and set one of the fields in user with a dynamically selected symbol or string. For example String value = u[new Symbol("firstName")];

I see that InstanceMirror has a getField method, but it doesn't seem to return the value. All I need is the value.

Upvotes: 2

Views: 890

Answers (1)

Günter Zöchbauer
Günter Zöchbauer

Reputation: 657238

If you create a symbol with # you need to know the name at compile time. I got it working this way:

library operator_lib;

import 'dart:mirrors';

void main(List<String> args) {
  var x = new X();
  var f = new Symbol('firstName');
  var r = reflect(x);
  print(r.getField(f).reflectee);
  r.setField(f, "John");
  print(r.getField(f).reflectee);

}

class X {
  String firstName = 'Mike';
}

Upvotes: 2

Related Questions