Passing a class type as a variable in Dart

Issue

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 ?

Solution

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.

Answered By – Ozan

Answer Checked By – David Marino (FlutterFixes Volunteer)

Leave a Reply

Your email address will not be published. Required fields are marked *