Flutter 项目实战 Dio网络请求 四
在Flutter项目中,我们可以使用Dio库来处理网络请求。以下是一个使用Dio进行网络请求的示例代码:
import 'package:dio/dio.dart';
class ApiService {
static final BaseOptions options = BaseOptions(
baseUrl: 'https://api.example.com',
connectTimeout: 5000,
receiveTimeout: 3000,
);
static final Dio dio = Dio(options);
// 获取用户信息
Future<User> getUserInfo(String userId) async {
try {
Response response = await dio.get('/users/$userId');
return User.fromJson(response.data);
} catch (e) {
print('获取用户信息失败: $e');
return null;
}
}
// 发送登录请求
Future<UserLoginResponse> login(String username, String password) async {
try {
Response response = await dio.post('/login', data: {
'username': username,
'password': password,
});
return UserLoginResponse.fromJson(response.data);
} catch (e) {
print('登录失败: $e');
return null;
}
}
}
class User {
final String id;
final String name;
User({this.id, this.name});
factory User.fromJson(Map<String, dynamic> json) {
return User(
id: json['id'],
name: json['name'],
);
}
}
class UserLoginResponse {
final String token;
UserLoginResponse({this.token});
factory UserLoginResponse.fromJson(Map<String, dynamic> json) {
return UserLoginResponse(
token: json['token'],
);
}
}
在这个示例中,我们定义了一个名为ApiService
的类,它包含了两个方法getUserInfo
和login
,分别用于获取用户信息和执行登录操作。这两个方法都返回一个Future,这意味着它们是异步执行的,并且可能在将来某个时间返回结果。
User
和UserLoginResponse
类用于序列化API响应数据。这些类提供了从JSON转换为Dart对象的方法,使得处理和操作数据变得更加容易。
请注意,这只是一个示例,您可能需要根据您的实际API端点和数据结构进行调整。
评论已关闭