visitInstanceCreationExpression method

  1. @override
dynamic visitInstanceCreationExpression(
  1. InstanceCreationExpression node
)
override

Implementation

@override
visitInstanceCreationExpression(InstanceCreationExpression node) {
  if (node.constructorName.type.element?.name == 'Meta') {
    // find generic widget type.
    final typeArguments = node.constructorName.type.typeArguments?.arguments;
    if (typeArguments?.firstOrNull case NamedType type) {
      componentGeneric = type.element as ClassElement?;
    }

    // find argument widget type.
    final componentArgumentExpression = node.argumentList.arguments
        .whereType<NamedExpression>()
        .firstWhereOrNull(
          (element) => element.name.label.name == 'component',
        )
        ?.expression;
    final componentArgument =
        (componentArgumentExpression as SimpleIdentifier?) //
            ?.element;
    if (componentArgument case ClassElement component) {
      this.componentArgument = component;
    }
  }

  return super.visitInstanceCreationExpression(node);
}