我将用户详细信息保存到应用程序中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
字段?
[好的,我已经找到了一种不错的解决方法,请使用.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);
}
});
}
我很满意,希望它可以对某人有所帮助。