Home > Enterprise >  Logging/Printing List of HashMap<String, dynamic> dart flutter
Logging/Printing List of HashMap<String, dynamic> dart flutter

Time:01-15

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();
  }

enter image description here

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.

  •  Tags:  
  • Related