Flutter网络请求插件quick_request的使用
Flutter网络请求插件quick_request的使用
quick_request
Flutter包允许你快速且简便地进行HTTP请求。通过使用http
包,你可以以简单有效的方式执行API请求。
特性
- 简单的HTTP请求(GET、POST、PUT、PATCH、DELETE)
ResponseModel
类用于处理响应- 自动编码和解码JSON数据
使用方法
GET请求
Future<ResponseModel> fetchPosts() async {
return await QuickRequest().request(
url: "https://api.example.com/posts",
requestMethod: RequestMethod.GET,
);
}
POST请求
Future<ResponseModel> createPost(Map<String, dynamic> data) async {
return await QuickRequest().request(
url: "https://api.example.com/posts",
body: data,
requestMethod: RequestMethod.POST,
);
}
PUT请求
Future<ResponseModel> updatePost(int id, Map<String, dynamic> data) async {
return await QuickRequest().request(
url: "https://api.example.com/posts/$id",
body: data,
requestMethod: RequestMethod.PUT,
);
}
DELETE请求
Future<ResponseModel> deletePost(int id) async {
return await QuickRequest().request(
url: "https://api.example.com/posts/$id",
requestMethod: RequestMethod.DELETE,
);
}
PATCH请求
Future<ResponseModel> patchPost(int id, Map<String, dynamic> data) async {
return await QuickRequest().request(
url: "https://api.example.com/posts/$id",
body: data,
requestMethod: RequestMethod.PATCH,
);
}
带有授权的请求
Future<ResponseModel> fetchSecurePosts() async {
String? token = LocalManager().getStringValue(LocalManagerKeys.accessToken);
return await QuickRequest().request(
url: "https://api.example.com/secure-posts",
bearerToken: token,
requestMethod: RequestMethod.GET,
);
}
带查询参数的GET请求
Future<ResponseModel> fetchPostsWithQueryParameters() async {
return await QuickRequest().request(
url: "https://api.example.com/posts",
queryParameters: {
"userId": "1",
},
requestMethod: RequestMethod.GET,
);
}
示例PATCH请求
Future<ResponseModel> patchPostExample(int postId, String newTitle) async {
return await QuickRequest().request(
url: "https://api.example.com/posts/$postId",
body: {"title": newTitle},
requestMethod: RequestMethod.PATCH,
);
}
使用alert_craft的示例
Future<void> _fetchData() async {
final apiRequest = QuickRequest();
try {
final response = await apiRequest.request(
url: 'https://api.example.com/posts/1',
requestMethod: RequestMethod.GET,
);
if (!response.error) {
setState(() {
ShowAlert().showToastMessage(type: 1, title: "成功", description: "response.data");
});
} else {
setState(() {
ShowAlert().showAlertDialog(type: 1, title: "错误", description: "response.message");
});
}
} catch (e) {
setState(() {
_responseMessage = '异常: $e';
});
}
}
安装
要将quick_request
包添加到你的项目中,在pubspec.yaml
文件中包含以下行:
dependencies:
quick_request: ^0.0.1
示例代码
以下是一个完整的示例代码,展示了如何在Flutter应用中使用quick_request
插件来发送POST、PUT和DELETE请求。
import 'package:flutter/material.dart';
import 'package:quick_request/request.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Quick Request 示例',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const HomePage(),
);
}
}
class HomePage extends StatefulWidget {
const HomePage({super.key});
[@override](/user/override)
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
// 用于在屏幕上显示返回值的变量
String _responseMessage = '尚未获取数据';
/// 发送POST请求(添加数据)。
Future<void> _createData() async {
final apiRequest = QuickRequest();
try {
final response = await apiRequest.request(
url: 'https://jsonplaceholder.typicode.com/posts', // API URL(POST)
requestMethod: RequestMethod.POST,
body: {
'title': '新文章',
'body': '这是用POST方法创建的新文章',
'userId': 1,
},
);
if (!response.error!) {
setState(() {
_responseMessage = 'POST 成功: ${response.data}';
});
} else {
setState(() {
_responseMessage = 'POST 错误: ${response.message}';
});
}
} catch (e) {
setState(() {
_responseMessage = 'POST 异常: $e';
});
}
}
/// 发送PUT请求(更新现有数据)。
Future<void> _updateData() async {
final apiRequest = QuickRequest();
try {
final response = await apiRequest.request(
url: 'https://jsonplaceholder.typicode.com/posts/1', // API URL(PUT)
requestMethod: RequestMethod.PUT,
body: {
'id': 1,
'title': '已更新的文章',
'body': '此文章已用PUT方法更新',
'userId': 1,
},
);
if (!response.error!) {
setState(() {
_responseMessage = 'PUT 成功: ${response.data}';
});
} else {
setState(() {
_responseMessage = 'PUT 错误: ${response.message}';
});
}
} catch (e) {
setState(() {
_responseMessage = 'PUT 异常: $e';
});
}
}
/// 发送DELETE请求(删除数据)。
Future<void> _deleteData() async {
final apiRequest = QuickRequest();
try {
final response = await apiRequest.request(
url: 'https://jsonplaceholder.typicode.com/posts/1', // API URL(DELETE)
requestMethod: RequestMethod.DELETE,
);
if (!response.error!) {
setState(() {
_responseMessage = 'DELETE 成功: ${response.data}';
});
} else {
setState(() {
_responseMessage = 'DELETE 错误: ${response.message}';
});
}
} catch (e) {
setState(() {
_responseMessage = 'DELETE 异常: $e';
});
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Quick Request 示例'), // 应用程序标题
),
body: Center(
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
_responseMessage, // API返回的消息在这里显示
style: const TextStyle(fontSize: 18),
textAlign: TextAlign.center,
),
const SizedBox(height: 20),
ElevatedButton(
onPressed: _createData, // 用于POST请求
child: const Text('发送POST请求'),
),
ElevatedButton(
onPressed: _updateData, // 用于PUT请求
child: const Text('发送PUT请求'),
),
ElevatedButton(
onPressed: _deleteData, // 用于DELETE请求
child: const Text('发送DELETE请求'),
),
],
),
),
),
);
}
}
更多关于Flutter网络请求插件quick_request的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter网络请求插件quick_request的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
quick_request
是一个 Flutter 插件,旨在简化网络请求的过程。它提供了简洁的 API,使得开发者可以快速、方便地进行 HTTP 请求。以下是如何使用 quick_request
插件的详细步骤。
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 quick_request
插件的依赖。
dependencies:
flutter:
sdk: flutter
quick_request: ^1.0.0 # 请使用最新版本
然后,运行 flutter pub get
来获取依赖。
2. 导入插件
在你的 Dart 文件中导入 quick_request
插件。
import 'package:quick_request/quick_request.dart';
3. 发起请求
quick_request
提供了多种请求方法,包括 GET
、POST
、PUT
、DELETE
等。以下是使用示例:
GET 请求
void fetchData() async {
var response = await QuickRequest.get(
url: 'https://jsonplaceholder.typicode.com/posts',
);
if (response.statusCode == 200) {
print('Data fetched successfully: ${response.body}');
} else {
print('Failed to load data');
}
}
POST 请求
void postData() async {
var response = await QuickRequest.post(
url: 'https://jsonplaceholder.typicode.com/posts',
body: {
'title': 'foo',
'body': 'bar',
'userId': 1,
},
);
if (response.statusCode == 201) {
print('Data posted successfully: ${response.body}');
} else {
print('Failed to post data');
}
}
PUT 请求
void updateData() async {
var response = await QuickRequest.put(
url: 'https://jsonplaceholder.typicode.com/posts/1',
body: {
'id': 1,
'title': 'foo',
'body': 'bar',
'userId': 1,
},
);
if (response.statusCode == 200) {
print('Data updated successfully: ${response.body}');
} else {
print('Failed to update data');
}
}
DELETE 请求
void deleteData() async {
var response = await QuickRequest.delete(
url: 'https://jsonplaceholder.typicode.com/posts/1',
);
if (response.statusCode == 200) {
print('Data deleted successfully');
} else {
print('Failed to delete data');
}
}
4. 其他功能
quick_request
还支持设置请求头、请求超时、处理 JSON 数据等功能。
设置请求头
var response = await QuickRequest.get(
url: 'https://jsonplaceholder.typicode.com/posts',
headers: {
'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json',
},
);
处理 JSON 数据
var response = await QuickRequest.get(
url: 'https://jsonplaceholder.typicode.com/posts/1',
);
if (response.statusCode == 200) {
var jsonData = response.json; // 自动将响应体转换为 JSON
print('Title: ${jsonData['title']}');
}
5. 错误处理
你可以使用 try-catch
块来捕获请求过程中可能出现的异常。
try {
var response = await QuickRequest.get(
url: 'https://jsonplaceholder.typicode.com/posts/1',
);
print('Response: ${response.body}');
} catch (e) {
print('Error: $e');
}