Извините, если он повторил вопрос, но я не нашел решения.
Ошибка:
Исключение: тип '(dynamic) = ›PostalModel' не является подтипом типа '(Map‹ String, dynamic ›) =› List' of 'f'
Что я сделал:
Вызов API:
Future<PostalModel> fetchPhotos(http.Client client) async { final response = await client.get('https://api.postalpincode.in/pincode/364710'); // Use the compute function to run parsePhotos in a separate isolate. return compute(parsePostalPincode, response.body); }
разбор JSON:
// A function that converts a response body into a List. PostalModel parsePostalPincode(String responseBody) { print(responseBody); final parsed = jsonDecode(responseBody).cast<Map<String, dynamic>>(); print('Parsed : $parsed'); //Getting Log OUTPUT PostalModel postalModel = parsed.map<List<PostalModel>>((json) => PostalModel.fromJson(json)); print('Postal Model : $postalModel'); //Getting Log OUTPUT return postalModel; }
Связывание данных в теле:
body: FutureBuilder<PostalModel>( future: fetchPhotos(http.Client()), builder: (context, snapshot) { print('snapshot $snapshot'); // Getting Error Here // "AsyncSnapshot<PostalModel>(ConnectionState.done, null, Exception: type '(dynamic) => PostalModel' is not a subtype of type '(Map<String, dynamic>) => List<PostalModel>' of 'f')" if (snapshot.hasError) print(snapshot.error); return snapshot.hasData ? PostOfficeList(postOfficeList: snapshot.data.postOffice) : Center(child: CircularProgressIndicator()); }, ),
Вы можете проверить JSON из ссылки API, и я создал класс модели из здесь.