Нет способа напрямую захватить все подклассы, но вы можете найти все классы и проверить, является ли каждый подклассом того, который вас интересует.
Начните с получения LibraryElement
для файла, для которого вы генерируете код с BuildStep.inputLibrary
.Оттуда найдите все классы в библиотеке с var classes = libraryElement.units.expand((cu) => cu.types);
.Затем проверьте, является ли каждый из них подклассом интересующего вас класса, проверив, находится ли ClassElement
для интересующего вас типа в ClassElement.allSupertypes
для проверяемого вами типа.var subtypes = classes.where((c) => c.allSupertypes.contains(lookingFor));
.
Вы можете найти полезными утилиты LibraryReader
и TypeChecker
из source_gen
.