Flutter网络服务插件flutter_network_service的使用
Flutter网络服务插件flutter_network_service的使用
🎖 安装
- 首先,打开你的
pubspec.yaml
文件并添加依赖:flutter_network_service:
- 运行
flutter pub get
来更新包的依赖。
⚡️ 导入
- 在你的代码中使用它。首先导入该包:
import 'package:flutter_network_service/HttpNetworkService.dart';
🎮 代码使用
然后在你的代码中这样使用:
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:flutternetworkservicehandler/src/http_network_service.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
[@override](/user/override)
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
List _usersList = [];
var errorMessage = 'Can\'t proceed request';
void _showErrorDialog(String message) {
showDialog(
context: context,
builder: (ctx) => AlertDialog(
title: Text('Error Occured'),
content: Text(message),
actions: <Widget>[
ElevatedButton(
onPressed: () {
Navigator.of(ctx).pop();
},
child: Text('OK!'),
)
],
),
);
}
Future getUsersData() async {
try {
// 初始化HttpNetwork服务
await HttpNetworkService.init(
baseUrl: 'https://jsonplaceholder.typicode.com',
);
// 然后这样使用
final responseUsersList = await HttpNetworkService.getRequest(
uri: '/users', // 注意这里的uri应该是正确的路径
// 选项从dio包中导入。
options: Options(headers: {
"Content-Type": "application/json",
}),
);
for (var items in responseUsersList) {
print(items);
_usersList.add({
'id': items['id'],
'username': items['username'],
'website': items['website'],
});
}
} catch (error) {
errorMessage = error.toString();
_showErrorDialog(
errorMessage,
);
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
body: FutureBuilder(
future: getUsersData(),
builder: (ctx, snapshot) =>
snapshot.connectionState == ConnectionState.waiting
? Center(
child: CircularProgressIndicator(),
)
: snapshot.data == null
? Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(
Icons.error,
size: 75,
color: Colors.red,
),
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
errorMessage.toUpperCase(),
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 16.0,
fontWeight: FontWeight.w700,
),
),
),
],
),
)
: ListView.builder(
itemCount: _usersList.length,
itemBuilder: (ctx, i) => ListTile(
title: Text(_usersList[i]['username']),
subtitle: Text(_usersList[i]['website']),
leading: CircleAvatar(
child: FittedBox(
child: Text(
_usersList[i]['id'].toString(),
),
),
),
trailing: Icon(
Icons.arrow_forward_ios,
),
),
),
),
);
}
}
更多关于Flutter网络服务插件flutter_network_service的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter网络服务插件flutter_network_service的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
flutter_network_service
是一个用于简化 Flutter 应用中网络请求的插件。它提供了一种简单的方式来执行 HTTP 请求,并处理响应。以下是如何使用 flutter_network_service
插件的步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 flutter_network_service
插件的依赖:
dependencies:
flutter:
sdk: flutter
flutter_network_service: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来安装依赖。
2. 导入插件
在你的 Dart 文件中导入 flutter_network_service
插件:
import 'package:flutter_network_service/flutter_network_service.dart';
3. 初始化网络服务
你可以通过创建一个 NetworkService
实例来初始化网络服务:
final networkService = NetworkService();
4. 发送 GET 请求
使用 get
方法来发送 GET 请求:
Future<void> fetchData() async {
final url = 'https://jsonplaceholder.typicode.com/posts';
final response = await networkService.get(url);
if (response.statusCode == 200) {
print('Response data: ${response.body}');
} else {
print('Request failed with status: ${response.statusCode}');
}
}
5. 发送 POST 请求
使用 post
方法来发送 POST 请求:
Future<void> postData() async {
final url = 'https://jsonplaceholder.typicode.com/posts';
final body = {
'title': 'foo',
'body': 'bar',
'userId': 1,
};
final response = await networkService.post(url, body: body);
if (response.statusCode == 201) {
print('Response data: ${response.body}');
} else {
print('Request failed with status: ${response.statusCode}');
}
}
6. 处理错误
你可以使用 try-catch
块来处理可能发生的错误:
Future<void> fetchDataWithErrorHandling() async {
final url = 'https://jsonplaceholder.typicode.com/posts';
try {
final response = await networkService.get(url);
if (response.statusCode == 200) {
print('Response data: ${response.body}');
} else {
print('Request failed with status: ${response.statusCode}');
}
} catch (e) {
print('Error: $e');
}
}
7. 自定义请求头
你可以通过 headers
参数来添加自定义请求头:
Future<void> fetchDataWithCustomHeaders() async {
final url = 'https://jsonplaceholder.typicode.com/posts';
final headers = {
'Authorization': 'Bearer your_token',
'Content-Type': 'application/json',
};
final response = await networkService.get(url, headers: headers);
if (response.statusCode == 200) {
print('Response data: ${response.body}');
} else {
print('Request failed with status: ${response.statusCode}');
}
}
8. 设置超时
你可以通过 timeout
参数来设置请求超时时间:
Future<void> fetchDataWithTimeout() async {
final url = 'https://jsonplaceholder.typicode.com/posts';
final timeout = Duration(seconds: 5);
try {
final response = await networkService.get(url, timeout: timeout);
if (response.statusCode == 200) {
print('Response data: ${response.body}');
} else {
print('Request failed with status: ${response.statusCode}');
}
} catch (e) {
print('Error: $e');
}
}