generateForAnnotatedElement method

  1. @override
Future<String> generateForAnnotatedElement(
  1. Element element,
  2. ConstantReader annotation,
  3. BuildStep buildStep
)

Implement to return source code to generate for element.

This method is invoked based on finding elements annotated with an instance of T. The annotation is provided as a ConstantReader.

Supported return values include a single String or multiple String instances within an Iterable or Stream. It is also valid to return a Future of String, Iterable, or Stream.

Implementations should return null when no content is generated. Empty or whitespace-only String instances are also ignored.

Implementation

@override
Future<String> generateForAnnotatedElement(
    Element element, ConstantReader annotation, BuildStep buildStep) async {
  // in case we do have a custom name set, we will find it @ functional widget
  final customName = parseFunctionalWidgetName(annotation);
  // to figure out how to call our class, let's either use customName or
  // the element's name (if available).
  // _checkValidElement will make sure to validate class name in the next step
  final className = _determineClassName(element, customName);
  final function = _checkValidElement(element, className);
  final type = parseFunctionalWidgetAnnotation(annotation);

  final _class = await _makeClassFromFunctionElement(
    function,
    type,
    buildStep,
    className,
  );

  return _class.accept(_emitter).toString();
}