so i am suposed to make api call to fetch data plans from an endpoint url, it returns the complete data in postman which is
{
“status”: true,
“data_plans”: [
{
“id”: 12,
“name”: “MTN CG 500MB”,
“planid”: 7,
“gig_measurment”: 0,
“plan_code”: 106,
“validity”: “30 Days”,
“network”: 1,
“plan_type”: 2
},
{
“id”: 13,
“name”: “MTN CG 1GB”,
“planid”: 8,
“gig_measurment”: 1,
“plan_code”: 107,
“validity”: “30 Days”,
“network”: 1,
“plan_type”: 2
},
{
“id”: 14,
“name”: “MTN CG 2GB”,
“planid”: 9,
“gig_measurment”: 2,
“plan_code”: 108,
“validity”: “30 Days”,
“network”: 1,
“plan_type”: 2
},
{
“id”: 15,
“name”: “MTN CG 3GB”,
“planid”: 10,
“gig_measurment”: 3,
“plan_code”: 109,
“validity”: “30 Days”,
“network”: 1,
“plan_type”: 2
},
{
“id”: 16,
“name”: “MTN CG 5GB”,
“planid”: 11,
“gig_measurment”: 5,
“plan_code”: 110,
“validity”: “30 Days”,
“network”: 1,
“plan_type”: 2
},
{
“id”: 17,
“name”: “MTN CG 10GB”,
“planid”: 12,
“gig_measurment”: 10,
“plan_code”: 111,
“validity”: “30 Days”,
“network”: 1,
“plan_type”: 2
}
]
}
instead this is what i get as response in my flutter app
Response data: {status: true, data_plans: []}
`
Future<void> fetchDataPlans() async {
final url = 'https://yourapi.com/getdataplans/';
final requestPayload = {
'network': selectedNetwork.toString(),
'selectedPlanType': '2',
};
debugPrint('Fetching data plans with payload: $requestPayload');
try {
final response = await http.post(
Uri.parse(url),
headers: {
'Content-Type': 'application/json',
},
body: jsonEncode(requestPayload),
);
debugPrint('Response status: ${response.statusCode}');
debugPrint('Response body: ${response.body}');
if (response.statusCode == 200) {
final dynamic responseData = jsonDecode(response.body);
debugPrint('Response data: $responseData');
List<Map<String, dynamic>> plans;
if (responseData is Map && responseData['status'] == true && responseData['data_plans'] is List) {
plans = List<Map<String, dynamic>>.from(responseData['data_plans']);
} else {
throw Exception('Unexpected response format');
}
debugPrint('Parsed data plans: $plans');
setState(() {
dataPlans = plans;
selectedDataPlan = plans.isNotEmpty ? plans.first['plan_code'].toString() : '';
});
} else {
throw Exception('Failed to load data plans');
}
} catch (e) {
debugPrint('Error fetching data plans: $e');
}
}
Justice Oguche is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.