我試圖在這里洗掉我最喜歡的串列中的一個元素,但這似乎不起作用。我在網上查看過,但找不到與此相關的任何內容。它們都是關于如何清除 sharedPreferences 或洗掉密鑰。
Future<void> removeFav(String articleId) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
favoriteList = prefs.getStringList('favoriteList');
if (favoriteList != null) {
await prefs.remove('${favoriteList!.where((id) => id == articleId)}'); //I'm guessing id here returns an element of this list..??
print('unfavorited');
setState(() {
isFavorite = false;
});
} else {
print('favoriteList was null');
}
}
uj5u.com熱心網友回復:
您需要先從串列中洗掉該專案:
SharedPreferences prefs = await SharedPreferences.getInstance();
// get the list, if not found, return empty list.
var favoriteList = prefs.getStringList('favoriteList')?? [];
// remove by articleId
favoriteList.removeWhere((item) => item == articleId);
然后,將更改保存favoriteList回 sharedPreferences:
prefs.setStringList('favoriteList', favoriteList);
uj5u.com熱心網友回復:
您應該執行以下步驟以將物件串列保存在SharedPreferences:
將您的物件轉換為地圖 →
toMap()方法將您的地圖編碼為字串 →
encode(...)方法將字串保存到
shared preferences
用于恢復您的物件:
將共享首選項字串解碼為映射 →
decode(...)方法使用
fromJson()方法來獲取您的物件
因此,在這種情況下,我認為您應該從shared preference并修改串列中恢復串列,然后將新串列保存在shared preference.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/348919.html
