Flutter网络请求Dio库的使用及封装方法
发表于:2024-11-14 作者:千家信息网编辑
千家信息网最后更新 2024年11月14日,这篇文章主要讲解了"Flutter网络请求Dio库的使用及封装方法",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Flutter网络请求Dio库的使用及
千家信息网最后更新 2024年11月14日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安全错误
数据库的锁怎样保障安全
手机版最简单的服务器
安卓里面的数据库怎么找回来
嵌入式软件开发实验总结
软件开发行业客户
德清县手机app软件开发
sql数据库没有分段
重要期间网络安全保障工作总结
网络安全学院院训
网络技术试卷职高
独立软件开发 盈利化
c 使用数据库语句
软件开发企业项目立项流程
浙江省互联网新科技
国科起航软件开发
plsql备份远程数据库
服务器群
广播站网络技术问题
上海软件开发外企
网络安全漫画简单的
日本代理服务器ip免费
数据库做好怎么保存到桌面文件夹
软件开发工程师优势
表示数据库连接的对象
网络安全的感悟
谷歌商店怎么更改服务器地址
sql 数据库数据导出
手机服务器出问题是怎么回事
软件开发网站内容描述
信息与网络技术基础测试
源代码服务器管理制度