I am having a Future that is async and returns a List of HashMap<String, dynamic> that I would like to log. I am using
Below is the Future
Future<List<HashMap<String, dynamic>>> _fetchUsersUsingListOfHashMap() async {
try {
final response = await http.get(Uri.parse("https://jsonkeeper.com/b/XBCA"));
final decodedJson = json.decode(response.body);
final responseList = decodedJson.map<HashMap<String, dynamic>>((e) => HashMap<String, dynamic>.from(e)).toList();
return responseList;
} catch (e) {
log("FetchUsersUsingListOfHashMapException $e");
rethrow;
}
}
Below is my initState where i am printing
@override
void initState() {
log("PrintFetchUsersUsingListOfHashMap $_fetchUsersUsingListOfHashMap()");
super.initState();
}
Below is how the list should look like when i am logging
[
{
"name": "Kamchatka",
"about": "Lorem ipsum dolor sit amet consectetur adipisicing elit. Maxime mollitia,molestiae quas vel sint commodi repudiandae consequuntur voluptatum laborumnumquam blanditiis harum quisquam eius sed odit fugiat iusto fuga praesentium optio, eaque rerum! Provident similique accusantium nemo autem.",
"email": "[email protected]",
"index": 1,
"picture": "https://thispersondoesnotexist.com/"
},
{
"name": "Valjakutse",
"about": "Lorem ipsum dolor sit amet consectetur adipisicing elit. Maxime mollitia,molestiae quas vel sint commodi repudiandae consequuntur voluptatum laborumnumquam blanditiis harum quisquam eius sed odit fugiat iusto fuga praesentium optio, eaque rerum! Provident similique accusantium nemo autem.",
"email": "[email protected]",
"index": 2,
"picture": "https://thispersondoesnotexist.com/"
},
{
"name": "Shipment",
"about": "Lorem ipsum dolor sit amet consectetur adipisicing elit. Maxime mollitia,molestiae quas vel sint commodi repudiandae consequuntur voluptatum laborumnumquam blanditiis harum quisquam eius sed odit fugiat iusto fuga praesentium optio, eaque rerum! Provident similique accusantium nemo autem.",
"email": "[email protected]",
"index": 3,
"picture": "https://thispersondoesnotexist.com/"
}
]
But when I am logging I am getting something like this below
PrintFetchUsersUsingListOfHashMap Closure: () => Future<List<HashMap<String, dynamic>>> from Function '_fetchUsersUsingListOfHashMap@20327479':.()
How can i be able to print the list i have tried using print below but its return Closure
print("PrintFetchUsersUsingListOfHashMap $_fetchUsersUsingListOfHashMap()");
CodePudding user response:
In your code _fetchUsersUsingListOfHashMap() is Future and if you directly try to print it it will return you a Instance of Future not the value and to print the value you need to call another function using async and await to fetch the value from your Future function like and call that function in your initState.
void printData() async {
log("PrintFetchUsersUsingListOfHashMap ${ await _fetchUsersUsingListOfHashMap()}");
}
@override
void initState() {
printData();
super.initState();
}
CodePudding user response:
_fetchUsersUsingListOfHashMap is a future, consider using the await keyword before printing.
As a example:
var result = await someFutureFunction();
print('result: $result')
All that inside a async function.

