0

我是 Flutter 的新手,我正在通过 Json 解析,我正在使用 chopper 库,以及这个公共 api:https : //jsonplaceholder.typicode.com/posts/ 每当我调用 api 时都会出现上述错误。我在项目中添加了日志记录,没有打印任何 json。我试图删除 json 字段,并且只添加了正文,以防它出现解析问题,但没有任何改变。如果有人可以提供帮助,那就太好了:

json文件:

@JsonSerializable()
class JsonPlaceholderQuery {
  factory JsonPlaceholderQuery.fromJson(Map<String, dynamic> json) =>
      _$JsonPlaceholderQueryFromJson(json);
  Map<String, dynamic> toJson() => _$JsonPlaceholderQueryToJson(this);
  int userId;
  int id;
  String title;
  String body;
  JsonPlaceholderQuery({ required this.userId, required this.id,
    required this.title, required this.body
    });

}

@JsonSerializable()
class AllJsonData {
  List<JsonPlaceholderQuery> jsonPlaceholder;
  AllJsonData({required this.jsonPlaceholder});
  factory AllJsonData.fromJson(Map<String, dynamic> json) =>
      _$AllJsonDataFromJson(json);
  Map<String, dynamic> toJson() => _$AllJsonDataToJson(this);
}

斩波器服务:

@ChopperApi()
abstract class JsonPlaceHolderRequest extends ChopperService {
  @Get()
  Future<Response<Result<AllJsonData>>>request();

  static JsonPlaceHolderRequest create() {
    final client = ChopperClient(
        baseUrl: 'https://jsonplaceholder.typicode.com/posts',
        interceptors: [HttpLoggingInterceptor()],
        converter: ModelConverter(),
        errorConverter: const JsonConverter(),
        services: [
        _$JsonPlaceHolderRequest(),
      ],
    );
    return _$JsonPlaceHolderRequest(client);
    }
}

调用API如下:

  Widget getJsonPlaceHolders(BuildContext context) {

    return FutureBuilder<Response<Result<AllJsonData>>>(
      future: JsonPlaceHolderRequest.create().request(),
      builder: (context, snapshot) {
        if(snapshot.connectionState == ConnectionState.done) {
          if(snapshot.hasError) {
            return Center(
              child: Text(snapshot.error.toString(), textAlign: TextAlign.center,
                textScaleFactor: 1.3,) ,
            );
          }
          final results = snapshot.data?.body;
          if (results is Error) {
            return Center(
              child: Text(snapshot.error.toString(), textAlign: TextAlign.center,
                textScaleFactor: 1.3,) ,
            );
          }
          final query = (results as Success).value;
         // currentSearchList.addAll(query.hits);
          print('Total JSON PLACEHOLDER');
          return buildRecipeList(context, currentSearchList);
        } else {
          return CircularProgressIndicator();
        }
      },

    );
  }
4

0 回答 0