Utworzę instytucję na mojej stronie i zadzwoń do CallData, aby uzyskać Favid (typ: lista) Każdy I Otwieram tę stronę. Ale po uruchomieniu aplikacji mój kompilator pokazuje ten komunikat o błędzie:

_TypeError (type 'List<String>' is not a subtype of type 'String')

I to jest funkcja mojej GetData:

getData(favId) async {
    SharedPreferences pref = await SharedPreferences.getInstance();
    return pref.getStringList(favId);
  }

Jest to również moja funkcja Savedata:

void saveData() async {
    SharedPreferences pref = await SharedPreferences.getInstance();
    pref.setStringList("id", favId);
  }

Jak naprawić ten problem i mogę zadzwonić do GetData, które otworzę tę stronę w mojej aplikacji? Dziękuję Ci :)

0
Bill Rei 21 kwiecień 2021, 05:28

2 odpowiedzi

Najlepsza odpowiedź

Jeśli chcesz zapisać i pobrać listę do iz ShareDPreferences, używasz tego samego klawisza, aby zapisać i pobrać wartość.

Oto prosty przykład,

const favKey = 'favoriteKey';

Aby zapisać dane,

void saveData(String favKey, List<String> favorites) async {
    SharedPreferences pref = await SharedPreferences.getInstance();
    pref.setStringList(favKey,favorites);
  }

Aby pobrać dane,

getData(String favKey) async {
    SharedPreferences pref = await SharedPreferences.getInstance();
    return pref.getStringList(favKey);
  }

Uwaga: Musisz użyć tego samego klawisza, aby ustawić i uzyskać dane za pomocą ShareDPreference.

1
Ranjit 21 kwiecień 2021, 02:56

"id" to łańcuch, musisz zapisać List<String> do setStringList

Istnieją kroki, jeśli chcesz dodać element do listy:

List<String> ids = await getData(favId);
ids.add("id");
saveData(ids, favId);

Następnie zmień saveData()

void saveData(ids, favId) async {
    SharedPreferences pref = await SharedPreferences.getInstance();
    pref.setStringList(ids, favId);
}

getData()

List<String> getData(favId) async {
    SharedPreferences pref = await SharedPreferences.getInstance();
    return pref.getStringList(favId);
}
1
Alvin Chung 21 kwiecień 2021, 03:11