It is possible to pass a class type as a variable in Dart ?
I am trying to do something as follows:
class Dodo
{
void hello() {
print("hello dodo");
}
}
void main() {
var a = Dodo;
var b = new a();
b.hello();
}
in python similar code would work just fine. In Dart I get an error at new a()
complaining that a
is not a type.
Is is possible to use class objects as variables ? If not, what is the recommended work around ?
what you can do is : const dynamic a = Dodo; // or dynamic a = Dodo; var b = new a(); b. hello();
Dart objects have runtimeType property which returns Type . To check whether the object has a certain type, use == operator. Unlike is , it will only return true if compared to an exectly same type, which means comparing it with its super class will return false .
ANother way to do it is by passing a closure rather than the class. Then you can avoid using mirrors. e.g.
a = () => new Dodo();
...
var dodo = a();
You can use the mirrors api:
import 'dart:mirrors';
class Dodo {
void hello() {
print("hello dodo");
}
}
void main() {
var dodo = reflectClass(Dodo);
var b = dodo.newInstance(new Symbol(''), []).reflectee;
b.hello();
}
Maybe it can be written more compact, especially the new Symbol('')
expression.
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