generateForAnnotatedField method

  1. @override
String generateForAnnotatedField(
  1. FieldElement element,
  2. ConstantReader annotation,
  3. BuildStep buildstep
)
override

Implementation

@override
String generateForAnnotatedField(FieldElement element, ConstantReader annotation, BuildStep buildstep) {
  final buffer = StringBuffer();
  final properties = Helpers.getClassProperties(FieldDropdown);
  final map = Helpers.annotationToJson<FieldDropdown>(element, properties);

  buffer.write('''
    Widget ${element.name}FormField(BuildContext context, Map<String, dynamic> _formData, {required Function onSaved, required double width}) {
      double maxWidth = 0;
      final options = ${map['options'] ?? []};
      for (var e in options) {
        maxWidth = max(maxWidth, e['value'].toString().length * 1.0);
      }
      return ${dropdownHideUnderlineField(element.name, element.type.toString(), map)};
    }
  ''');

  return buffer.toString();
}