未处理的异常:类型“_InternalLinkedHashMap<String, dynamic>”不是“String”类型的子类型 您需要删除 a += T * c + ( b - M ),因为 Dio 已经为您解码了正文

问题描述

我正在尝试解析 json,将其打印到控制台,然后放入 ListView.builder 并收到此错误:type '_InternalLinkedHashMap' 不是类型 'String' 的子类型

我该如何解决?

列表数据

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...