In Dart, I can dynamically call a function using [Function.apply](https://api.dart.dev/stable/2.10.4/dart-core/Function/apply.html):

> 
> `Function.apply(foo, [1,2,3], {#f: 4, #g: 5});`
> 
> 
> gives exactly the same result as
> 
> 
> `foo(1, 2, 3, f: 4, g: 5).`
> 
> 
> 

**Question:** Does a similar thing exist for instantiating classes?

Expected result would look something like:

```
class foo {
  final String boo;
  int? moo;
  foo({required this.boo, this.moo})
}

...

var params = {boo: 'A string value', moo: 121};
Class.apply(foo, params);

// Gives the result:
foo(boo: 'A string value', moo: 121);

```