【发布时间】:2021-05-01 16:11:02
【问题描述】:
我有下面的列表,我想将其转换并存储为字符串,以便以后需要它时,我会将字符串解码回列表,以便将其用作参数。
List allTasks = [
{"project-name":"My First Project"},
{"date-time":"12 Mar 2021Z 12:34:05 am"},
{"people":["John","Doe"]},
{"project-body":[
{
"id":"0",
"color": Colors.transparent,
"name":"hello amigo",
"sub-children":[
{
"id":"0",
"color": Colors.transparent,
"type":"text",
"state":"waiting",
"mediaUrl":"",
"name":"Heya its me",
"hasMessage":false,
"people":[
{"person-id":"id110",
"profile-pic":"",
}
]
},
],
},
],
}
];
此代码用于将其存储在 sharedPreference 中首先我将列表转换为字符串,然后传递它。
void storeValuesLocally(String mainlist)async{
SharedPreferences prefs = await SharedPreferences.getInstance();
String myToJson = json.encode(mainlist);
await prefs.setString('main-list', myToJson);
}
下面我正在尝试将字符串解码回列表
void getAndSetTaskValues()async{
SharedPreferences prefs = await SharedPreferences.getInstance();
String values = (prefs.getString('main-list') ?? [].toString());
var castedToList = json.decode(values);
print(castedToList[0].runtimeType); // String
}
我的问题
每当我尝试将解码结果分配给列表时,它都会引发错误。这是因为castedToList 是一个字符串,因为当我检查类型时它是一个字符串。
我该如何解决这个问题。
【问题讨论】: