我很难弄清楚为什么下面的代码无法执行。在 VisualStudio 中,我没有收到错误消息,但在 Android 模拟器中,我收到了标题中列出的错误。代码循环遍历 Map 对象列表,如下所示:
[{"HappinessLevel": "0.4", "Date": "5/10/2021", "SadnessLevel": "0.2", "AngrinessLevel": "0.2", "SurpriseLevel": "0.3", "Diary": "123124215", "FearLevel": "0.1", "User": "a4b68"}, ... ]
该列表是从以下代码中发出的 HTTP 请求中返回的
RestOptions options = RestOptions(path: '/emotions/$userId');
RestOperation restOperation = Amplify.API.get(restOptions: options);
RestResponse response = await restOperation.response;
res = String.fromCharCodes(response.data);
resList = jsonDecode(res)
失败的代码是:
List resList;
Map<String, List> ret;
for (var i = 0; i < resList.length; i++) {
String dVal = resList[i]["Date"];
List lit = [
double.parse(resList[i]["HappinessLevel"]),
double.parse(resList[i]["SadnessLevel"]),
double.parse(resList[i]["AngrinessLevel"]),
double.parse(resList[i]["FearLevel"]),
double.parse(resList[i]["SurpriseLevel"])
];
ret[dVal] = lit; //Code fails here and loop terminates early on the first pass.
}
我知道这个片段可以简化,但我一直很想确定失败发生的地方,所以我解构了这个过程。
任何线索将不胜感激。
答案 0 :(得分:0)
当你这样做
Map<String, List> ret;
ret
当前为 null,任何将密钥放入其中的尝试都会引发 NullPointerException
。
当你这样做
Map<String, List> ret = {};
ret
目前是一个空的map,可以正常往里面放一个key。