当前位置: 首页 > news >正文

公司宣传网站建设淮安做网站需要多少钱

公司宣传网站建设,淮安做网站需要多少钱,wap网站使用微信登陆,公司注册资金减少意味着什么✅近期推荐#xff1a;求职神器 https://bbs.csdn.net/topics/619384540 #x1f525;欢迎大家订阅系列专栏#xff1a;flutter_鸿蒙next #x1f4ac;淼学派语录#xff1a;只有不断的否认自己和肯定自己#xff0c;才能走出弯曲不平的泥泞路#xff0c;因为平坦的大路… ✅近期推荐求职神器 https://bbs.csdn.net/topics/619384540 欢迎大家订阅系列专栏flutter_鸿蒙next 淼学派语录只有不断的否认自己和肯定自己才能走出弯曲不平的泥泞路因为平坦的大路太tm无趣了 写在前面 在现代应用中处理用户身份验证和缓存是非常重要的。Dio 是一个强大的 Dart HTTP 客户端支持多种功能例如请求拦截、响应拦截等。本文将详细讲解如何在 Flutter 中使用 Dio 封装网络请求并实现登录身份验证及免登录缓存功能。 一、引入 Dio 首先在 pubspec.yaml 文件中添加 Dio 依赖 dependencies:dio: ^5.0.0shared_preferences: ^2.0.0运行 flutter pub get 命令安装依赖。 二、创建 Dio 封装类 在 lib/services 目录下新建 network_service.dart 文件编写以下代码以封装 Dio 功能 import package:dio/dio.dart; import package:shared_preferences/shared_preferences.dart;class NetworkService {late Dio _dio;static const String _tokenKey auth_token;NetworkService() {_dio Dio(BaseOptions(baseUrl: https://api.example.com/, // 替换为你的 API 基础 URLconnectTimeout: 5000,receiveTimeout: 3000,));// 添加拦截器_dio.interceptors.add(InterceptorsWrapper(onRequest: (options, handler) async {final token await _getToken();if (token ! null) {options.headers[Authorization] Bearer $token; // 添加 Token 到请求头}print(请求: ${options.method} ${options.path});handler.next(options);},onResponse: (response, handler) {print(响应: ${response.statusCode} ${response.data});handler.next(response);},onError: (DioError e, handler) {print(错误: ${e.response?.statusCode} ${e.message});handler.next(e);},));}// 获取 TokenFutureString? _getToken() async {final prefs await SharedPreferences.getInstance();return prefs.getString(_tokenKey);}// 登录请求FutureResponse login(String username, String password) async {final response await _dio.post(/login, data: {username: username,password: password,});// 保存 Tokenawait _saveToken(response.data[token]);return response;}// 保存 TokenFuturevoid _saveToken(String token) async {final prefs await SharedPreferences.getInstance();await prefs.setString(_tokenKey, token);}// 退出登录Futurevoid logout() async {final prefs await SharedPreferences.getInstance();await prefs.remove(_tokenKey); // 移除 Token}// GET 请求FutureResponse get(String path, {MapString, dynamic? queryParameters}) async {return await _dio.get(path, queryParameters: queryParameters);}// POST 请求FutureResponse post(String path, {dynamic data}) async {return await _dio.post(path, data: data);} }代码详解 Token 存储 使用 shared_preferences 存储用户的 Token以便后续请求中使用。_getToken() 方法用于获取存储的 Token。 登录请求 login 方法发送用户名和密码进行身份验证成功后保存返回的 Token。 请求拦截 在请求拦截器中检查是否有 Token如果有则添加到请求头中。 退出登录 logout 方法移除存储的 Token以实现用户登出。 三、使用封装的 NetworkService 在 Flutter 应用中使用 NetworkService 进行身份验证非常简单。以下示例展示了如何创建一个登录界面。 1. 创建登录界面 在 lib/main.dart 文件中编写以下代码 import package:flutter/material.dart; import services/network_service.dart;class LoginPage extends StatefulWidget {override_LoginPageState createState() _LoginPageState(); }class _LoginPageState extends StateLoginPage {final NetworkService _networkService NetworkService();final TextEditingController _usernameController TextEditingController();final TextEditingController _passwordController TextEditingController();String _message ;void _login() async {try {final response await _networkService.login(_usernameController.text,_passwordController.text,);setState(() {_message 登录成功: ${response.data};});} catch (e) {setState(() {_message 登录失败: $e;});}}overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text(登录)),body: Padding(padding: const EdgeInsets.all(16.0),child: Column(children: [TextField(controller: _usernameController,decoration: InputDecoration(labelText: 用户名),),TextField(controller: _passwordController,decoration: InputDecoration(labelText: 密码),obscureText: true,),SizedBox(height: 20),ElevatedButton(onPressed: _login,child: Text(登录),),SizedBox(height: 20),Text(_message),],),),);} }void main() runApp(MaterialApp(home: LoginPage()));代码详解 输入框使用 TextField 组件获取用户名和密码。登录按钮点击按钮后调用 _login 方法进行登录。状态管理通过 setState 更新界面显示登录结果。 写在后面 通过封装 Dio我们实现了用户身份验证与 Token 的存储和使用。使用 shared_preferences 实现简单的免登录缓存机制提高用户体验。希望这篇博客能帮助你更好地在 Flutter 中使用 Dio 进行网络请求与身份验证。如有疑问或建议欢迎讨论
http://www.hkea.cn/news/14513348/

相关文章:

  • 石家庄网站建设哪家便宜产品宣传推广策划
  • 做付费下载的网站番禺怎样优化网站建设
  • 个人网站开发背景及意义华军软件园下载中心
  • 简单的手机网站模板下载太原模板建站平台
  • wordpress门户网站模板wordpress搜视网
  • 个人公司网站怎么做如何建立网站服务器
  • 家具企业网站模板深圳洛可可工业设计有限公司
  • 建网站打开需要验证新闻app开发
  • 做网站的软件软件开发培训机构哪些比较好
  • 百度提交链接seo优化排名
  • 国外做ppt网站山东网站备案注意事项
  • 医疗室内设计网站推荐肇庆网站搜索排名
  • o2o网站建设最好公司广告投放都有哪些平台
  • 怎么做虚拟的网站网站建设技术支持 会天下
  • 怎么改版网站网站建设公司的市场营销方案模板下载
  • 建网络商城网站吗深圳创业补贴政策2024最新
  • 大庆网站建设大庆WordPress留言板插件使用
  • 站长之家怎么查询网站哪家做的未来最吃香的十大行业2022
  • 长沙网站建设服务商南岸网站建设哪家好
  • 哪里可以做网站系统心雨在线高端网站建设专业
  • 浅谈网站规划建设与管理维护拼多多关键词排名查询工具
  • 建筑网格组织天津网站seo服务
  • 火狐 开发者 网站手机端官网设计
  • 中国制造网官方网站国际站如何查看网站服务器
  • wordpress 文章字体农产品网站建设及优化项目
  • 企业门户网站 源码百度搜索app免费下载
  • 温州营销网站公司vr网页播放器wordpress
  • 昆明做网站做的好的公司建立网上商城应考虑哪些问题
  • 东莞建网站的公司wordpress调用子栏目
  • 阎良网站建设做商务网站要多少钱