【发布时间】:2021-10-29 14:09:30
【问题描述】:
我在网站上编写了一个程序,我在其中使用虚拟 API - https://reqres.in/
现在,我正在制作一个 Http 服务文件,我在其中使用 getRequest 函数从 json 文件中获取响应,但我无法得到它。
这是文件-
import 'package:dio/dio.dart';
class HttpService {
Dio? _dio;
final baseURL="https://reqres.in/";
HttpService() {
_dio=Dio(BaseOptions(
baseUrl: baseURL,
));
initializeInterceptors();
}
Future<Response> getRequest(String endPoint) async {
Response response;
try {
print("Getting response");
response = await _dio!.get(endPoint);
print("Got response");
} on DioError catch (e) {
print("Getting endpoint request failed");
print(e.message);
throw Exception(e.message);
}
print("Returning Response");
return response;
}
initializeInterceptors() {
_dio?.interceptors.add(InterceptorsWrapper(
onError: (dioError, errorInterceptorHandler) {
print(dioError.message);
},
onRequest: (requestOptions, requestInterceptorHandler) {
print("${requestOptions.method} | ${requestOptions.path}");
print("No error, request is successful");
},
onResponse: (response, responseInterceptorHandler) {
print(response.data);
print("We have got the response");
}
));
}
}
我在这个文件中使用这个函数,第 26 行:
import 'package:dio/dio.dart';
import 'package:dio_basics/http_service.dart';
import 'package:dio_basics/model/single_user_response.dart';
import 'package:dio_basics/model/user.dart';
import 'package:flutter/material.dart';
class SingleUserScreen extends StatefulWidget {
@override
_SingleUserScreenState createState() => _SingleUserScreenState();
}
class _SingleUserScreenState extends State<SingleUserScreen> {
HttpService? http;
SingleUserResponse? singleUserResponse;
User? user;
bool isLoading = false;
Future getUser() async {
Response response;
try {
isLoading = true;
print("into get user");
response = await http!.getRequest("/api/users?page=2");
isLoading = false;
print("Got Response");
if (response.statusCode == 200) {
print("Response is ok");
setState(() {
singleUserResponse = SingleUserResponse.fromJson(
response.data); //To convert into map of <string dynamic>
user = singleUserResponse!.user;
if (user == null) {
print("User is null");
}
});
} else {
print("Problem with status Code");
}
} on Exception catch (e) {
isLoading = false;
print(e.toString());
}
}
@override
void initState() {
http=HttpService();
super.initState();
getUser();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Single User'),
),
body: isLoading
? const Center(
child: CircularProgressIndicator(),
)
: user != null ? Container(
width: double.infinity,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Image.network(user!.avatar??""),
const SizedBox(
height: 16.0,
),
Text(
"Hello ${user!.firstName} ${user!.lastName}"
)
],
),
) : const Center(child: Text('User is null'),),
);
}
}
这是输出日志-
into get user
Getting response
GET | /api/users?page=2
No error, request is successful
谁能告诉我,我的代码有什么错误,或者我做错了什么?
【问题讨论】:
标签: flutter rest dart httprequest backend