Флаттер, как проверить, какие поля многих полей выставлены на ноль? - PullRequest
0 голосов
/ 15 апреля 2020

Я сохраняю информацию о пользователях в SharedPrefs в 3 местах моего приложения, и это приведет к большому количеству дублирующегося кода. Итак, я хочу добавить метод в мой класс Person, чтобы я мог вызывать его из любого места и сохранять там данные о пользователях.

У меня есть var: пользователь Object Person, я возился с ключами и строкой чтобы получить доступ к его полям, но всегда одна и та же ошибка:

Атрибут getter не определен для типа «Person». Попробуйте импортировать библиотеку, которая определяет «атрибут», исправив имя в соответствии с именем существующего получателя или определив получатель или поле с именем «атрибут».

  saveToPrefs(SharedPreferences prefs, Person user) {
    print('attempting to save details');
    for(String attribute in (user.toMap().keys)) {
      var testField = user.attribute;
      if(testField != null) {
        switch(runtimeType(user.attribute)) {
          case String:
            {
              prefs.setString(attribute, testField);
              break;
            }
          case double: {
            prefs.setDouble(attribute, testField);
            break;
          }
        }
      }
    }
  }

Как получить доступ к Person user поля?

1 Ответ

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

ОК, хорошо, я нашел изящную работу, используйте .forEach, чтобы получить поля объектов и их ключи. Похоже, у Дарта пока нет хорошего запроса элементарного типа, поэтому вам просто нужно сделать это длинным ходом с инструкциями if.

    saveToPrefs(SharedPreferences prefs, Person user) {
    print('attempting to save details');
    (user.toMap()).forEach((key, value) {
      if(value != null) {
        if(value is String) prefs.setString(key, value);
        else if(value is List<String>) prefs.setStringList(key, value);
        else if(value is double) prefs.setDouble(key, value);
        else if(value is int) prefs.setInt(key, value);
        else if(value is bool) prefs.setBool(key, value);
      }
    });
  }

Я доволен, надеюсь, это может кому-то помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...