Flutter如何测试多个字段对象的哪些字段为空?

问题描述 投票:0回答:1

我将用户详细信息保存到应用程序中3个位置的SharedPrefs中,这将导致大量重复代码。因此,我想将一个方法添加到我的Person类中,以便可以从任何地方调用它,并将用户详细信息保存在那里。

我有一个var:Object Person的用户,我一直在用Keys和String来访问它的字段,但是总是有同样的错误:

没有为类型'Person'定义getter'属性'。尝试导入定义“属性”的库,将名称更正为现有吸气剂的名称,或定义一个名为的吸气剂或字段'属性'。

  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字段?

flutter dart sharedpreferences
1个回答
0
投票

[好的,我已经找到了一种不错的解决方法,请使用.forEach获取“对象”字段及其键。看来Dart还没有很好的基本类型查询,因此您只需要长时间使用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);
      }
    });
  }

我很满意,希望它可以对某人有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.