この1つは少しトリッキーです - DartType
が実際に自分自身いくつかのスーパータイプを持っているので - ここにあなたが興味ます一つはParameterizedType
です:
import 'package:analyzer/dart/element/type.dart';
Iterable<DartType> getGenericTypes(DartType type) {
return type is ParameterizedType ? type.typeArguments : const [];
}
私はそれがに可能かどう場合を知っているかわかりませんタイプは一般的です - 結局のところ、それはただのタイプです。タイプは再び、汎用パラメータを受け入れる場合しかし、あなたはClassElement
を使用して、チェックすることができます役立ちます
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/type.dart';
bool canHaveGenerics(DartType type) {
final element = type.element;
if (element is ClassElement) {
return element.typeParameters.isNotEmpty;
}
return false;
}
希望を!