![](/img/trans.png)
[英]Flutter 'Unhandled Exception: type 'List<dynamic>' is not a subtype of type 'List<class>'
[英]Flutter:Unhandled Exception: type 'List<dynamic>' is not a subtype of type 'List<String>'
我有一個 json 字符串,我試圖將其保存到共享首選項。 我已經設法保存了除此列表之外的所有其他人
{
"roles":[
"ROLE_USER",
"ROLE_MODERATOR",
"ROLE_ADMIN"
],
}
這是我的 json
{
"id":44,
"username":"user@gmail.com",
"email":"user@gmail.gom",
"roles":[
"ROLE_USER",
"ROLE_MODERATOR",
"ROLE_ADMIN"
],
"userid":"439cea61-602b-4b1f-a32b-41487775ba00",
"surname":"user",
"firstname":"user1",
"telephoneno":"2113456",
"whatsappno":"2113456",
"active":1,
"studyrole":"TRAINEE",
"tokenType":"Bearer",
"accessToken":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJybXVtb0BtZ2ljLnVtYXJ5bGFuZC5lZHUiLCJpYXQiOjE2MTEwNzk0NDcsImV4cCI6MTYxMTE2NTg0N30.EFX48OAD2MRtg3jCBvvH-Sna4jG8P5FX_LCbyBw38-UX4M85y6l15ISxlF02qK7rhzddiN9KZ8IIvLxhd0mZUA"
}
到目前為止我所管理的
final http.Response response = await http.post(
url,
headers: <String, String>{
'Content-Type': 'application/json; charset=UTF-8',
},
body: jsonEncode(<String, String>{
'username': username,
'password': password,
'appversion': appversion,
'latitude': latitude,
'longitude': longitude,
'imeI': imeI,
}),
);
print(response.body);
SharedPreferences prefs = await SharedPreferences.getInstance();
var parse = jsonDecode(response.body);
await prefs.setString('username', parse["username"]);
await prefs.setString('accessToken', parse["accessToken"]);
await prefs.setString('surname', parse["surname"]);
await prefs.setString('firstname', parse["firstname"]);
await prefs.setInt('id', parse["id"]);
await prefs.setBool('active', parse["active"] == 1);
await prefs.setString('userid', parse["userid"]);
我如何嘗試將列表保存在共享首選項中
await prefs.setStringList('roles', parse['roles']);
每當我嘗試保存 json 列表時,我都會遇到錯誤
未處理的異常:“列表”類型不是“列表”類型的子類型
如何提取角色並將它們作為 flutter 中的單個項目保存在共享首選項中。
同樣在保存它們之后,我如何從共享首選項中檢索像 ROLE_USER 這樣的用戶的個人角色?
可能你錯過了演員表,試試這個
await prefs.setStringList('roles', parse['roles'].cast<String>());
根據您的第二個問題(按字段搜索用戶)
這樣做有點棘手,因為共享首選項是鍵/值存儲,而不是關系數據庫。 我強烈建議使用數據庫,否則您將面臨太多復雜性。
為什么? 您想在共享首選項中存儲用戶列表(我假設它是用戶對象),但是您共享的代碼 scope 是針對單個用戶的,確實需要用戶列表。 而要存儲一個列表,它需要編碼為 json 字符串,而要檢索為列表,需要從 json 字符串中解碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.