Like the question at Dynamic class method invocation in PHP I want to do this in Dart.
var = "name";
page.${var} = value;
page.save();
Is that possible?
You can use Serializable
For example:
import 'package:serializable/serializable.dart';
@serializable
class Page extends _$PageSerializable {
  String name;
}
main() {
  final page = new Page();
  var attribute = "name";
  var value = "value";
  page["name"] = value;
  page[attribute] = value;
  print("page.name: ${page['name']}");
}
                        There are several things you can achieve with Mirrors.
Here's an example how to set values of classes and how to call methods dynamically:
import 'dart:mirrors';
class Page {
  var name;
  method() {
    print('called!');
  }
}
void main() {
  var page = new Page();
  var im = reflect(page);
  // Set values.
  im.setField("name", "some value").then((temp) => print(page.name));
  // Call methods.
  im.invoke("method", []);
}
In case you wonder, im is an InstanceMirror, which basically reflects the page instance.
There is also another question: Is there a way to dynamically call a method or set an instance variable in a class in Dart?
You can use Dart Mirror API to do such thing. Mirror API is not fully implemented now but here's how it could work :
import 'dart:mirrors';
class Page {
  String name;
}
main() {
  final page = new Page();
  var value = "value";
  InstanceMirror im = reflect(page);
  im.setField("name", value).then((_){
    print(page.name); // display "value"
  });
}
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With