La estructura para realizar una llamada desde flutter a una api y mandar parámetros para recibir datos es de la siguiente manera:
primero declaramos e inicializamos una variable con la ruta a la api, en este caso la llamo uri:
final uri = 'https://nombre/ruta/api';
Depués declaro las cabeceras, tipo-contenido
final headers = {
'Content-Type': 'application/json',
};
Creo el body con los datos que son necesarios enviar para hacer la llamada.
final body = {
'email': email,
'password': password,
};
final jsonBody = jsonEncode(body);
A continuación genero la llamada y guardo la respuesta en una variable a la que he llamado response.
final response =
await http.post(Uri.parse(uri), headers: headers, body: jsonBody);
Para saber si la llámada se realizado correctamente, compruebo el statusCode e imprimo por consola en modelo json la respuesta de datos con la siguiente línea de código.
if (response.statusCode == 200) {
print(json.decode(response.body));
} else {
print('Error en la solicitud: ${response.statusCode}');
}
El código completo de la llamada POST lo muestro a continuación:
final uri = 'https://nombre/ruta/api';
final body = {
'email': email,
'password': password,
};
final headers = {
'Content-Type': 'application/json',
};
final jsonBody = jsonEncode(body);
final response =
await http.post(Uri.parse(uri), headers: headers, body: jsonBody);
if (response.statusCode == 200) {
print(json.decode(response.body));
} else {
print('Error en la solicitud: ${response.statusCode}');
}

Espero que les sirva de ayuda !! Les deseo un feliz día.
