Flutter如何测试多个字段对象的哪些字段为空?
Posted
技术标签:
【中文标题】Flutter如何测试多个字段对象的哪些字段为空?【英文标题】:Flutter how to test which fields of a many fielded object are null? 【发布时间】:2020-07-28 09:28:13 【问题描述】:我在我的应用程序的 3 个位置将用户详细信息保存到 SharedPrefs,这会导致大量重复代码。所以我想将一个方法滚动到我的 Person 类中,这样我就可以从任何地方调用它并将用户详细信息保存在那里。
我有一个 var: 对象 Person 的用户,我一直在摆弄 Keys 和 String 来访问它的字段,但总是出现同样的错误:
没有为“Person”类型定义吸气剂“属性”。尝试 导入定义“属性”的库,将名称更正为 现有 getter 的名称,或定义一个 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
字段?
【问题讨论】:
【参考方案1】:好的,我找到了一个优雅的解决方法,使用 .forEach 来获取 Objects 字段和它的键。似乎 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);
);
我很满意,希望它可以帮助某人。
【讨论】:
以上是关于Flutter如何测试多个字段对象的哪些字段为空?的主要内容,如果未能解决你的问题,请参考以下文章
Flutter-不可为空的实例字段'questionAnswer','questionText'必须初始化
在 Flutter 小部件测试中,如何验证字段验证错误消息?