Flutter网络请求Dio库的使用及封装方法
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章主要讲解了"Flutter网络请求Dio库的使用及封装方法",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Flutter网络请求Dio库的使用及
千家信息网最后更新 2025年01月19日Flutter网络请求Dio库的使用及封装方法
这篇文章主要讲解了"Flutter网络请求Dio库的使用及封装方法",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Flutter网络请求Dio库的使用及封装方法"吧!
Dart语言内置的HttpClient
实现了基本的网络请求相关的操作。但HttpClient
本身功能较弱,很多网络请求常用功能都不支持,因此在实际项目中,我们更多是使用dio库实现网络请求。
注:Flutter
官网同样推荐在项目中使用Dio
库。
Dio文档地址: pub.dev地址:dio | Dart Package
一、项目目录结构
文件夹 | 功能 |
---|---|
components | 放置全局共用组件 |
router | 全局路由管理 |
service | 管理接口请求并对返回数据进行处理,复杂功能逻辑处理 |
store | provider全局状态管理 |
utile | 工具类,例如:接口请求工具类,数据持久化工具类,加密解密工具类…… |
views | 界面管理,实现界面UI绘制的代码逻辑 |
二、封装思路:
1、在DioRequest
工具类中统一初始化网络请求常见配置,实现请求拦截器、响应拦截器以及错误处理。
2、统一在service
中管理接口请求,并且对返回的数据根据实际需求进行处理,如果数据的修改需要更新UI或者需要全局共享该数据,可以结合provider
实现。
三、添加依赖
在pubspec.yaml文件中添加所需要的第三方依赖库
dev_dependencies: flutter_test: sdk: flutter # The "flutter_lints" package below contains a set of recommended lints to # encourage good coding practices. The lint set provided by the package is # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. flutter_lints: ^1.0.0 # 数据请求 dio: ^4.0.4
四、简单实现网络请求
在utils
目录中新建dio_request.dart
文件实现DioRequest
网络请求的工具类。
import 'package:dio/dio.dart';/// dio网络请求配置表 自定义class DioConfig { static const baseURL = 'http://117.34.71.31:8081/paas-admin'; //域名 static const timeout = 10000; //超时时间} // 网络请求工具类class DioRequest { late Dio dio; static DioRequest? _instance; /// 构造函数 DioRequest() { dio = Dio(); dio.options = BaseOptions( baseUrl: DioConfig.baseURL, connectTimeout: DioConfig.timeout, sendTimeout: DioConfig.timeout, receiveTimeout: DioConfig.timeout, contentType: 'application/json; charset=utf-8', headers: {}); /// 请求拦截器 and 响应拦截机 and 错误处理 dio.interceptors.add(InterceptorsWrapper(onRequest: (options, handler) { print("\n================== 请求数据 =========================="); print("url = ${options.uri.toString()}"); print("headers = ${options.headers}"); print("params = ${options.data}"); return handler.next(options); }, onResponse: (response, handler) { print("\n================== 响应数据 =========================="); print("code = ${response.statusCode}"); print("data = ${response.data}"); print("\n"); handler.next(response); }, onError: (DioError e, handler) { print("\n================== 错误响应数据 ======================"); print("type = ${e.type}"); print("message = ${e.message}"); print("\n"); return handler.next(e); })); } static DioRequest getInstance() { return _instance ??= DioRequest(); }}
五、实现登录注册服务
在lib
下新建service
目录,并在service
目录中新建login.dart
文件。
import 'dart:convert';import 'package:cyber_security/utils/http.dart';class LoginService { /// 获取用户数据中心列表 static FuturegetDataCenter() async { var response = await DioRequest.getInstance().dio.get('/getDataCenter'); var data = jsonDecode(response.toString()); return data['dataCenterList']; } /// 登录接口 static login(value) async { var response = await DioRequest.getInstance() .dio .post('/sys/login', queryParameters: value); var data = jsonDecode(response.toString()); /// 对返回的身份凭证全局持久化存储 return data['key']; } /// 获取权限列表 static menuNav() async { var response = await DioRequest.getInstance().dio.get('/sys/menu/nav'); var data = jsonDecode(response.toString()); return data['key']; }}
六、使用service服务
@override void initState() { // TODO: implement initState super.initState(); /// 请求用户数据中心数据 LoginService.getDataCenter().then((value) { setState(() { _dataCenterList = value; }); }); }
感谢各位的阅读,以上就是"Flutter网络请求Dio库的使用及封装方法"的内容了,经过本文的学习后,相信大家对Flutter网络请求Dio库的使用及封装方法这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
网络
数据
工具
封装
全局
处理
管理
方法
功能
接口
文件
目录
错误
项目
拦截器
学习
内容
地址
实际
思路
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发费构成
山东软件开发制作
腾讯从事软件开发么
医学类数据库项目设计
重庆渝北食堂配送软件开发
网络安全手抄报简单漂亮8k纸
重庆服务器服务
北京网络技术信息报价
青岛亿云网络技术有限公司
三台服务器做集群
深圳比亚迪软件开发工资
公司网站的数据库
电子软件开发发展状况
网络安全反思会
狒狒莫古力服务器限制新角色
网络技术发展的基本趋势
服务器电源输出引脚定义
广州华戴网络技术
学生网络安全知识培养计划
视频服务器源码
网络安全2020企业排名
新乡市川海网络技术靠谱吗
服务器怎么接入互联网
数据库期末试题最新
合肥市网络安全攻防大赛
服务器好还是机房好
大话广西游合并服务器
工作日历 数据库 设计
数据库查询空值语法
第五重连服务器