Haseeb Ahmad
Haseeb Ahmad

Reputation: 8730

How to convert Future List instance to List String in flutter

I am saving strings list in shared procedure and fetching that like below

Future<List<String>> getList() async {
  final prefs = await SharedPreferences.getInstance();
  return prefs.getStringList("key");
}

Issue is that I need to send that list to server but facing issue as I need to convert that future list to simple List

How can I do that? or is there any other way as I need to send list of ids save by user to server.

Upvotes: 1

Views: 7452

Answers (2)

Abdelbaki Boukerche
Abdelbaki Boukerche

Reputation: 1692

When you mark a function as async it will return a future.

If you dont wait for the future you will get 'Future instance' this means your future(data) is not available yet.

If you want to wait for the future(data) to be resolved you need to use the await keyword.

So in your case you can create a List<String> myList; then create a function to wait for the future and assign the data to the previous List.

List<String> myList;
void getStringList() async {
var tempList = await getList();
// Or use setState to assign the tempList to myList
myList = tempList;
}

Or use Then:

getList().then(List<String> myList {
// TODO: Send myList to server.
});

Hope this helpe!!

Upvotes: 5

alordead
alordead

Reputation: 46

When you work with async data you should "wait" while data will not completely loaded. You can use await word in async methods like that:

foo() async {
  final Future<List<dynamic>> futureList = fetchSomeFutureList();
  final list = await futureList;
}

or use Future's then() method to delegate some work. You also can wait for futures in widget tree using FutureBuilder. Check Dart Docs page for see details.

Upvotes: 1

Related Questions