问题描述
我正在尝试解析 json,将其打印到控制台,然后放入 ListView.builder 并收到此错误:type '_InternalLinkedHashMap
我该如何解决?
列表数据
FutureBuilder(
future: restaurantSearch,builder: (context,AsyncSnapshot<RestaurantSearch> snapshot) {
if(snapshot.connectionState == ConnectionState.waiting) {
return Expanded(child: Center(child: CircularProgressIndicator(strokeWidth: 3)));
} else if(snapshot.connectionState == ConnectionState.done) {
if(snapshot.hasData) {
return ListView.builder(
shrinkWrap: true,itemCount: snapshot.data.restaurants.length,itemBuilder: (context,index) {
var restaurant = snapshot.data.restaurants[index];
return ListTile(
title:Text(restaurant.name),);
}
);
}
} else if (snapshot.hasError) {
return Center(child: Text(snapshot.error.toString()));
}
return Text('');
}
)
api服务
Future<RestaurantSearch> restaurantSearch(String query) async {
final response = await dio.get("https://restaurant-api.dicoding.dev/search",queryParameters: {"q": query});
print(response.data);
if(response.statusCode == 200) {
return RestaurantSearch.fromJson(json.decode(response.data));
} else {
throw Exception("Failed to Load Detail Restaurant,Please Check Your Internet");
}
}
型号
import 'dart:convert';
RestaurantSearch restaurantSearchFromJson(String str) => RestaurantSearch.fromJson(json.decode(str));
String restaurantSearchToJson(RestaurantSearch data) => json.encode(data.toJson());
class RestaurantSearch {
RestaurantSearch({
this.error,this.founded,this.restaurants,});
bool error;
int founded;
List<RestaurantS> restaurants;
factory RestaurantSearch.fromJson(Map<String,dynamic> json) => RestaurantSearch(
error: json["error"],founded: json["founded"],restaurants: List<RestaurantS>.from(json["restaurants"].map((x) => RestaurantS.fromJson(x))),);
Map<String,dynamic> toJson() => {
"error": error,"founded": founded,"restaurants": List<String>.from(restaurants.map((x) => x.toJson())),};
}
class RestaurantS {
RestaurantS({
this.id,this.name,this.description,this.pictureId,this.city,this.rating,});
String id;
String name;
String description;
String pictureId;
String city;
double rating;
factory RestaurantS.fromJson(Map<String,dynamic> json) => RestaurantS(
id: json["id"],name: json["name"],description: json["description"],pictureId: json["pictureId"],city: json["city"],rating: json["rating"].toDouble(),dynamic> toJson() => {
"id": id,"name": name,"description": description,"pictureId": pictureId,"city": city,"rating": rating,};
}
非常感谢您的回答...................................................... ………………………………………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………………… .....................................................
解决方法
您需要删除 a += T * c + ( b - M )
,因为 Dio 已经为您解码了正文
改变这一行
json.decode