newInstance method

  1. @override
dynamic newInstance()
override

Implementation

@override
dynamic newInstance() {
  Map<Symbol, dynamic> args = {};

  // fetch all required values

  var typeDescriptor = mapper.type;

  for (var constructorParameter in typeDescriptor.constructorParameters) {
    var name = constructorParameter.name;

    var child = findChild(name);

    if ( child != null) {
      // take the value from the mapped child widget

      args[Symbol(name)] = child.value;
    }
    else {
      // take it from the original - not mapped - object property

      args[Symbol(name)] = typeDescriptor.get(mapper.instance, name);
    }
  }

  return Function.apply(typeDescriptor.constructor!, [], args);
}