FConfigAnnotationFieldInfo.create constructor

FConfigAnnotationFieldInfo.create(
  1. ConstantReader reader
)

工厂方法:从ConstantReader创建FConfigAnnotationFieldInfo实例

reader - 注解的ConstantReader

返回包含被@FconfigAnnotationField标记的字段名称列表的实例

Implementation

factory FConfigAnnotationFieldInfo.create(ConstantReader reader) {
  final typeChecker = TypeChecker.typeNamed(FconfigAnnotationField);
  // 获取注解类型的元素
  return reader.objectValue.type?.element
          ?.let((it) {
            if (it is ClassElement) {
              // 查找所有被@FconfigAnnotationField标记的字段
              return it.fields
                  .where((field) => typeChecker.hasAnnotationOf(field))
                  .map((field) => field.name!)
                  .toList();
            }
            return null;
          })
          ?.let((it) => FConfigAnnotationFieldInfo(it)) ??
      const FConfigAnnotationFieldInfo([]);
}