Дарт - зеркало - как узнать имя переменной с помощью зеркал - PullRequest
0 голосов
/ 17 апреля 2020

Я редактирую свой вопрос, чтобы полностью описать, что именно мне нужно. Я хочу создать sql запрос с использованием отражения на основе модели / полей следующим образом.

здесь метод getFieldName () является фиктивным примером моей потребности, потому что я не знаю, как реализовать.

import 'package:reflection_test2/common/reflect/Reflector.dart';

@reflector
class Table
{
  int id;
  String name;

    String sql = "SELECT " + getFieldName(name) + " FROM TABLE "
                 "WHERE " + getFieldName(id) + "=" + 1.toString();

  String getFieldName(dynamic field)
  {
    String fieldName = sameWayToGetFieldName(field);
    return fieldName;
  }
}

Ответы [ 2 ]

0 голосов
/ 17 апреля 2020

Вы должны обернуть переменную в классе, а затем использовать отражение ... Вот так

class MyClass{
  int myint = 9;
}

void getVariableNames(){
  ClassMirror classMirror = reflectClass(MyClass);
  for(var attribute in classMirror.declarations.values){
    if(attribute is VariableMirror){
      var attributeName = MirrorSystem.getName(attribute.simpleName);
      print(attributeName);
    }
  }
}

main() {
  getVariableNames();
}

ОБРАТИТЕ ВНИМАНИЕ: Флаттер пока не поддерживает отражения / зеркала, но вы можете попробовать это в дротике. https://flutter.dev/docs/resources/faq#does -flutter пришел-с-reflectionmirrors-система

0 голосов
/ 17 апреля 2020

Вы отметили свой вопрос как flutter. Флаттер не позволяет использовать пакет dart:mirror. Таким образом, нет способа получить имя переменной.

PS. Зачем вам имя переменной? Если вам нужны именованные номера, вы можете использовать Map class.

...