То, что вы хотите, требует использования отражения.В флаттере отражение не поддерживается из-за тряски деревьев.Встряхивание дерева - это процесс удаления неиспользуемого кода из пакета приложения (apk, ipa) с целью уменьшения размера пакета.Когда используется отражение, весь код может использоваться неявно, поэтому флаттер не сможет узнать, от каких частей кода избавиться, поэтому они решили не поддерживать отражение (зеркала в контексте дротика).Вы должны попытаться решить вашу проблему с наследованием, если это возможно, или, в зависимости от вашей конкретной проблемы, вы можете попытаться использовать статическую генерацию кода.
Редактировать: вы можете вызывать статический геттер с отражаемым типом, как этот;
import 'package:reflectable/reflectable.dart';
class Reflector extends Reflectable {
const Reflector() : super(staticInvokeCapability);
}
const reflector = const Reflector();
@reflector
class ClassToReflect {
static double staticPropertyToInvoke = 15;
}
Main.dart
import 'package:reflectable/reflectable.dart';
import 'main.reflectable.dart';
void main() {
initializeReflectable();
ClassMirror x = reflector.reflectType(ClassToReflect);
var y = x.invokeGetter('staticPropertyToInvoke');
debugPrint(y);
}
PS main.reflectable.dart - это файл, созданный отражаемым пакетом.