Flutter网络清理与优化插件clean_network的使用
Clean Network
CleanNetwork
是一个封装了 dio
和 gql
的工具,用于简化网络请求的处理。
开始使用
1. 添加依赖
在 pubspec.yaml
文件中添加以下依赖:
dependencies:
clean_network: latest
2. 导入包
在你的 Dart 文件中导入 clean_network
包:
import 'package:clean_network/clean_network.dart';
3. 在依赖注入中初始化
使用 injectable
进行依赖注入,并初始化 CleanClient
:
import 'package:clean_network/clean_network.dart';
import 'package:injectable/injectable.dart';
@module
abstract class ThirdPartyModules {
@lazySingleton
CleanClient get client => CleanClient(
options: const CleanBaseOptions(
baseUrl: 'https://jsonplaceholder.typicode.com', // 基础URL
headers: {
'Content-Type': 'application/json', // 请求头
},
),
);
}
4. 创建远程数据源
创建一个抽象类和实现类来处理具体的网络请求:
import 'package:clean_network/clean_network.dart';
import 'package:example/src/features/posts/data/models/post_model.dart';
import 'package:injectable/injectable.dart';
// 定义接口
abstract class PostSource {
CleanResponse<List<PostModel>> getPosts(); // 获取所有帖子
CleanResponse<PostModel> getSinglePost(int id); // 获取单个帖子
}
// 实现接口
@LazySingleton(as: PostSource)
class PostSourceImpl extends BaseSource implements PostSource {
PostSourceImpl(super.client);
@override
CleanResponse<List<PostModel>> getPosts() {
return get( // 发送GET请求获取所有帖子
'/posts',
onSuccess: PostModel.fromJsonList, // 成功时解析响应
);
}
@override
CleanResponse<PostModel> getSinglePost(int id) {
return get( // 发送GET请求获取单个帖子
'/posts/$id',
onSuccess: PostModel.fromJson, // 成功时解析响应
);
}
}
5. 创建仓库
创建一个仓库类来管理业务逻辑:
import 'package:example/src/core/network/base.dart';
import 'package:example/src/features/posts/data/models/post_model.dart';
import 'package:example/src/features/posts/data/source/post_source.dart';
import 'package:example/src/features/posts/domain/repository/post_repository.dart';
import 'package:injectable/injectable.dart';
@LazySingleton(as: PostRepository)
class PostRepositoryImpl extends BaseRepository implements PostRepository {
final PostSource _postSource;
PostRepositoryImpl(this._postSource);
@override
EitherResponse<List<PostModel>> getPosts() {
return handleNetwork(_postSource.getPosts); // 处理网络请求并返回结果
}
@override
EitherResponse<PostModel> getSinglePost(int id) {
return handleNetwork(
() => _postSource.getSinglePost(id), // 处理网络请求并返回结果
);
}
}
示例代码
请参考以下示例代码,了解如何使用 clean_network
插件进行网络清理与优化:
示例
请参阅 example/README.md 获取完整的示例。
更多关于Flutter网络清理与优化插件clean_network的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复