flutter利用get中的GetConnect实现拦截请求

1、baseProvider.dart 文件,里面实现请求的拦截和响应的处理

import 'dart:convert';import 'package:company_manage_flutter/config/setting.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:get/get_connect/connect.dart';class BaseProvider extends GetConnect {@overridevoid onInit() {super.onInit();print('拦截器初始化');httpClient.baseUrl = ProjectConfig.baseUrl;// 请求拦截httpClient.addRequestModifier<void>((request) {print('====================请求拦截====================');// 获取 POST 请求的参数var uri = Uri.parse(request.url.toString());var extra = uri.queryParameters;if (extra["isShowLoading"] == "1") {EasyLoading.show(status: '请求中');}//  request.headers['Authorization'] = '12345678';return request;});// 响应拦截httpClient.addResponseModifier((request, response) {print('====================响应拦截====================');print(response.body);EasyLoading.dismiss();// 将 body 转换为 Map 类型return response;});}
}

2、封装接口文件userAPI.dart

import 'dart:convert';import 'package:company_manage_flutter/api/formateResponse.dart';
import 'package:company_manage_flutter/utils/baseProvider.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:get/get_connect/connect.dart';class UserApi extends BaseProvider {UserApi() {onInit();}//登录Future<List<dynamic>> loginAPI({Map<String, dynamic>? params}) async {var response = await post('/app/login', params, query: requestExtraParams);List<dynamic> result = formateResponse(response);return result;}
}

3、封装响应数据和请求参数

import 'dart:convert';import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:get_storage/get_storage.dart';List<dynamic> formateResponse(response) {Map<String, dynamic> result = jsonDecode(response.body.toString());print('返回结果${result}');if (response.statusCode == 200) {if (result["code"] != 200) {EasyLoading.showError(result["msg"]);return [result["msg"], null];} else {return [null, result];}} else {EasyLoading.showError('请求错误,请稍后再试!');return ["请求错误,请稍后再试", null];}
}Map<String, dynamic> requestExtraParams = {"isShowLoading": "1"};Map<String, dynamic> getTokenParams(Map<String, dynamic>? params) {GetStorage box = GetStorage();Map<String, dynamic> loginUser = box.read('loginUser');Map<String, dynamic> tokenParams = {"token": loginUser["token"],"uid": loginUser["uid"],};// 合并 params 和 tokenParamsMap<String, dynamic> mergedParams = {...params ?? {},...tokenParams,};return mergedParams;
}

4、具体使用

  	 params = {"login": "admin", "password": "admin"};List<dynamic> result = await userApi.loginAPI(params: params);if (result[0] != null) return;Map<String, dynamic> data = result[1];//1、把数据存储到story 和 状态中GetStorage box = GetStorage();box.write('loginUser', data);loginController.setLoginUser(data);Get.to(IndexPage());

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/3876.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Servlet和Tomcat运作过程

记录一下前后端请求交互过程&#xff08;不涉及Spring框架&#xff09;&#xff1a; 编写一个UserServlet 在web.xml文件中编写映射路径 编写前端

HTTP基础知识

1. HTTP常见的状态码有哪些&#xff1f; 常见状态码&#xff1a; 200&#xff1a;服务器已成功处理了请求。 通常&#xff0c;这表示服务器提供了请求的网页。 301 &#xff1a; (永久移动) 请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时&a…

2024 OceanBase 开发者大会:OceanBase 4.3正式发布,打造近PB级实时分析数据库

4月20日&#xff0c;2024 OceanBase开发者大会盛大召开&#xff0c;吸引了50余位业界知名的数据库专家和爱好者&#xff0c;以及来自全国各地的近600名开发者齐聚一堂。他们围绕一体化、多模、TP与AP融合等前沿技术趋势展开深入讨论&#xff0c;分享场景探索的经验和最佳实践&a…

【基础篇】Git 基础命令与核心概念

✅作者简介&#xff1a;大家好&#xff0c;我是小杨 &#x1f4c3;个人主页&#xff1a;「小杨」的csdn博客 &#x1f433;希望大家多多支持&#x1f970;一起进步呀&#xff01; 一&#xff0c;Git 初识 1.1&#xff0c;问题引入 不知道你工作或学习时&#xff0c;有没有遇到…

Flutter 从 Assets 中读取 JSON 文件:指南 [2024]

在本教程中&#xff0c;我们将探讨如何从 Flutter 项目中的 asset 中读取 JSON 文件。您将找到详细的解释、实际示例和最佳实践&#xff0c;使您的 JSON 文件处理顺利高效。那么&#xff0c;让我们深入了解 Flutter 和 JSON 的世界吧&#xff01; 从 asset 中读取 JSON 文件 …

mpv启动脚本功能

要配置mpv以启用脚本功能&#xff0c;您可以按照以下步骤进行操作&#xff1a; 确保您已经安装了mpv播放器。您可以从mpv官方网站&#xff08;https://mpv.io/&#xff09;下载并安装适合您操作系统的版本。 打开mpv的配置文件。在Windows上&#xff0c;配置文件位于%APPDATA%…

与 Apollo 共创生态:Apollo 七周年大会给带来的震撼

文章目录 一、七年蛰伏&#xff0c;Apollo 迎来“智变”时刻二、Apollo 企业生态计划与开放平台2.1 Apollo X 企业自动驾驶解决方案2.2 Apollo 开放平台携手伙伴共创生态 三、个人感悟 一、七年蛰伏&#xff0c;Apollo 迎来“智变”时刻 让我们把时间倒回到 2013 年&#xff0…

微服务之分布式理论概述

一、分布式技术相关的理论 CAP理论 CAP定理(CAP theorem)&#xff0c;⼜被称作布鲁尔定理(Eric Brewer)&#xff0c;1998年第⼀次提出. 最初提出是指分布式数据存储不可能同时提供以下三种保证中的两种以上: (1) ⼀致性(Consistency): 每次读取收到的信息都是最新的; (2) …

玩转手机在AidLux上安装宝塔面板

AidLux&#xff0c;手机不用刷机、不用root&#xff0c;直接在手机应用市场就能下载使用。 1.4G的应用包&#xff0c;看起来挺大的&#xff0c;那是因为内嵌了一套完整的AIoT应用开发和部署平台。 不仅Android手机可以玩&#xff0c;华为的Harmony系统也可以使用。 使用它最主…

【声网】实现web端与uniapp微信小程序端音视频互动

实现web端与uniapp微信小程序端音视频互动 利用声网实现音视频互动 开通声网服务 注册声网账号 进入Console 成功登录控制台后&#xff0c;按照以下步骤创建一个声网项目&#xff1a; 展开控制台左上角下拉框&#xff0c;点击创建项目按钮。 在弹出的对话框内&#xff0c;依…

C++性能优化实践 三

C性能优化实践 三 文章目录 一、C标准库线程间的通信二、内存屏障、获得与释放语义三、多线程优化总结 书接上回, 这篇文章继续来谈谈C 并发编程性能优化相关的内容。 参考文章: hhttps://boolan.com/ 先形象的说明一下并发与并行: 并发&#xff1a;类似与足球场踢足球, 大家为…

python版的openCV使用及下载

一、下载OpenCV模块 截止目前&#xff1a;现在OpenCV使用环境还是python3.8的版本所以咱们下载时记得用3.8版本的 终端下载&#xff1a;pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python 这是国内的镜像下载能快一些&#xff1b; 下载成功的标志&am…

Linux简单命令

目录 显示目录下的内容 ls 切换工作目录 cd 查看-当前工作目录pwd 创建-文件夹 mkdir 创建-文件 touch 查看-文件内容 cat 查看-分屏查看文件内容 more 删除-文件、文件夹 rm 复制-文件、文件夹 cp 移动-文件、文件夹 mv 查找-命令的程序文件存放处 which 查找-按文…

Linux平台Unity下RTMP|RTSP低延迟播放器技术实现

技术背景 国产操作系统对于确保信息安全、促进技术创新、满足特定需求以及推动经济发展等方面都具有重要意义&#xff0c;多以Linux为基础二次开发。2014年4月8日起&#xff0c;美国微软公司停止了对Windows XP SP3操作系统提供支持&#xff0c;这引起了社会和广大用户的广泛关…

js的基础知识

给元素添加事件监听器 addEventListener介绍 addEventListener() 方法用于向指定元素添加事件处理程序&#xff08;事件句柄handler&#xff09;。 参数1&#xff1a;事件名称必须。字符串&#xff0c;指定事件名。 注意: 不要使用 “on” 前缀。 例如&#xff0c;使用 click…

SCI一区级 | Matlab实现BES-CNN-GRU-Mutilhead-Attention多变量时间序列预测

SCI一区级 | Matlab实现BES-CNN-GRU-Mutilhead-Attention秃鹰算法优化卷积门控循环单元融合多头注意力机制多变量时间序列预测 目录 SCI一区级 | Matlab实现BES-CNN-GRU-Mutilhead-Attention秃鹰算法优化卷积门控循环单元融合多头注意力机制多变量时间序列预测预测效果基本介绍…

Unreal Engine创建Plugin

打开UE工程&#xff0c;点击编辑&#xff0c;选择插件 点击“新插件”按钮&#xff0c;选择“空白选项”填入插件名字"MultiPlayerPlugin"&#xff0c;填入插件作者、描述&#xff0c;点击“创建插件”按钮打开C工程&#xff0c;即可看到插件目录&#xff0c;编译C工…

Linux网络编程---多进/线程并发服务器

一、多进程并发服务器 实现一个服务器可以连接多个客户端&#xff0c;每当accept函数等待到客户端进行连接时 就创建一个子进程 思路分析&#xff1a; 核心思路&#xff1a;让accept循环阻塞等待客户端&#xff0c;每当有客户端连接时就fork子进程&#xff0c;让子进程去和客户…

2分钟自己写小游戏:使用js和css编写石头剪刀布小游戏、扫雷小游戏、五子棋小游戏。新手老手毕业论文都能用。

系列文章目录 【复制就能用1】2分钟玩转轮播图,unslider的详细用法 【复制就能用2】css实现转动的大风车&#xff0c;效果很不错。 【复制就能用3】2分钟自己写小游戏&#xff1a;剪刀石头布小游戏、扫雷游戏、五子棋小游戏 【复制就能用4】2024最新智慧医疗智慧医院大数据…

MySQL:ACCESS DENIED FOR USER‘ROOT‘@‘IP地址

起因是使用若依的环境连接数据库时报错&#xff1a;远程数据库连接异常&#xff0c;最终原因是密码错误&#xff0c;且看分解 07:12:06.895 [main] INFO c.r.RuoYiApplication - [logStartupProfileInfo,686] - The following 1 profile is active: "druid" 07:12:…