I've been working on integrating the Amadeus Flight Offers API into a FlutterFlow app and displaying price information in a ListView, but despite receiving successful API calls, the data fails to display as expected. I've created a custom FlightOffer
data type with fields such as price
, duration
, carrierCode
, departureTime
, arrivalTime
, origin
, and destination
, all set to String
. In the backend, I configured the API call (FlightCall
) with the correct endpoint and JSON parsing settings. I set the primary JSON path to $.data
, enabled "Parse as Data Type," chose the FlightOffer
schema, and confirmed the Is List
toggle was on. I also added individual paths like $.data[:].price.total
, $.data[:].itineraries[0].duration
, etc. and correctly mapped them to their respective fields in the data type. In the action flow, I tested multiple approaches including setting the App State variable flightResults
as a List<Data(FlightOffer)>
using the JSON Body > Predefined Path (flightOfferList
), and also tried JSON Path manually with $.data
. I attempted both page-level and app-level state variables, used conditional visibility for ListView rendering, and even displayed raw text lists (like a price array) directly on the page. I confirmed the API returns valid data, and tested both hardcoded and dynamic accessTokens to rule out authentication delays. At one point I also tried mapping the JSON to strings instead of data types, which caused errors like toList()
being called on a null object. Lastly, I tested both children variables and non-children ListView rendering, but children consistently failed to populate the list. At this point, I'm wondering if there's something wrong with the timing of the state update, parsing of the predefined path, or how the ListView reads from a List<Data>
state variable, despite the backend call working and data preview showing the expected array structure. The pictures are my search page where I have all the logic in my search button and my Test page where the majority of the logic is within the page load. I was using is to at least get the items to populate in a list manually but that didn't work either. The dummyAction I created was just to help check if my accessToken expired on page reload incase you where curious why its there. It does absolutely nothing, I just needed it for the conditional.