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

山西笑傲网站建设推广拓者吧室内设计吧

山西笑傲网站建设推广,拓者吧室内设计吧,企业信用信息查询公示系统陕西,wordpress 空白前言 GetX 中间件#xff08;Middleware#xff09;是 GetX 框架中的一种机制#xff0c;用于在页面导航时对用户进行权限控制、数据预加载、页面访问条件设置等。通过使用中间件#xff0c;可以有效地控制用户的访问流程#xff0c;并在适当条件下引导用户到所需页面。 这…前言 GetX 中间件Middleware是 GetX 框架中的一种机制用于在页面导航时对用户进行权限控制、数据预加载、页面访问条件设置等。通过使用中间件可以有效地控制用户的访问流程并在适当条件下引导用户到所需页面。 这篇文文章主要介绍下GetX中间件的用法。 一、中间件的作用 中间件可用于以下场景 权限控制例如判断用户是否登录如果未登录则跳转到登录页面。数据预加载在页面进入前进行数据的加载和检查。访问条件控制例如限制页面访问的时间或条件。 二、使用 GetMiddleware 的基本步骤 1. 创建一个继承自 GetMiddleware 的自定义中间件类。 2. 在类中重写 redirect、onPageCalled、onPageDispose 等方法以便在导航时执行相应逻辑。 3. 在 GetPage 的 middlewares 参数中加入自定义的中间件类实现页面访问的中间件逻辑。 三、GetMiddleware 常用方法 方法 作用说明redirect重定向页面到其他路由。通常用于在进入页面前进行权限判断返回 RouteSettings 对象指定重定向页面返回 null 则不重定向。onPageCalled在页面被调用时触发适合用于进行数据预加载。onPageDispose在页面被销毁时触发用于清理资源。onBindingsStart在页面绑定Bindings初始化时触发适合进行依赖注入等操作。onPageBuildStart在页面构建前触发。onPageBuilt 在页面构建完成后触发。 四、中间件实现登录检查的例子 我们可以通过下面的一个例子来看一下GetX中间件的用法。 在我们的实例代码中我们会实现以下功能 用户未登录时访问个人资料页面会跳转到登录页面。登录后直接跳转到个人资料页面点击退出登录后再返回登录页面。 图1.使用GetX实现中间件登陆 我们看一下具体的实现步骤 1.创建 AuthController AuthController 用于管理用户的登录状态并保存状态信息例如通过 SharedPreferences。 import package:get/get.dart; import package:shared_preferences/shared_preferences.dart;class AuthController extends GetxController {var isLoggedIn false.obs;// 初始化控制器检查登录状态FutureAuthController init() async {final prefs await SharedPreferences.getInstance();isLoggedIn.value prefs.getBool(isLoggedIn) ?? false;return this;}void login() async {isLoggedIn.value true;final prefs await SharedPreferences.getInstance();await prefs.setBool(isLoggedIn, true); // 保存登录状态}void logout() async {isLoggedIn.value false;final prefs await SharedPreferences.getInstance();await prefs.remove(isLoggedIn); // 清除登录状态} } 2.创建中间件 AuthMiddleware import package:get/get.dart; import auth_controller.dart;class AuthMiddleware extends GetMiddleware {overrideRouteSettings? redirect(String? route) {final authController Get.findAuthController();// 如果用户未登录则重定向到登录页面return authController.isLoggedIn.value ? null : const RouteSettings(name: /login);} } 3.设置路由 在 main.dart 中定义路由和页面导航逻辑并将 AuthMiddleware 添加到 ProfilePage 的路由中。 import package:flutter/material.dart; import package:get/get.dart; import auth_controller.dart; import auth_middleware.dart; import get_middle_ware_home_page.dart; import login_page.dart; import profile_page.dart;void main() async {WidgetsFlutterBinding.ensureInitialized();await Get.putAsync(() AuthController().init()); // 初始化 AuthControllerrunApp(MyApp()); }class MyApp extends StatelessWidget {overrideWidget build(BuildContext context) {return GetMaterialApp(initialRoute: /, // 初始路由getPages: [GetPage(name: /, page: () const GetMiddleWareHomePage()),GetPage(name: /login, page: () LoginPage()),GetPage(name: /profile, page: () ProfilePage(), middlewares: [AuthMiddleware()]),],);} } 4.创建各个页面 get_middle_ware_home_page.dart import package:flutter/material.dart; import package:get/get.dart;class GetMiddleWareHomePage extends StatelessWidget {const GetMiddleWareHomePage({super.key});overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: const Text(Home Page)),body: Center(child: ElevatedButton(onPressed: () {Get.toNamed(/profile); // 导航到 Profile 页面},child: const Text(Go to Profile),),),);} } profile_page.dart import package:flutter/material.dart; import package:get/get.dart; import auth_controller.dart;class ProfilePage extends StatelessWidget {const ProfilePage({super.key});overrideWidget build(BuildContext context) {final authController Get.findAuthController();return Scaffold(appBar: AppBar(title: const Text(Profile Page),actions: [IconButton(icon: const Icon(Icons.logout),onPressed: () {authController.logout();Get.offAllNamed(/login); // 退出后跳转到登录页面},),],),body: const Center(child: Text(Welcome to your profile!)),);} } login_page.dart import package:flutter/material.dart; import package:get/get.dart; import auth_controller.dart;class LoginPage extends StatelessWidget {LoginPage({super.key});final AuthController authController Get.find();overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: const Text(Login Page)),body: Center(child: ElevatedButton(onPressed: () {authController.login();Get.offAllNamed(/profile); // 登录后直接跳转到 Profile 页面},child: const Text(Login),),),);} }
http://www.hkea.cn/news/14400841/

相关文章:

  • 网站建设的需求新手学网络运营要多久
  • 吴川网站建设余姚网站建设维护最新招聘信息
  • 电影网站如何做会同县做网站
  • 景观设计师如何做网站wordpress折叠菜单插件
  • 自适应网站建设哪家好代理网站是什么
  • 域名有关的网站wordpress网站搭建教程视频
  • 专业做化妆品的网站有哪些合肥模板建站多少钱
  • 企业网站改一下多少钱织梦个人网站模版
  • 贵州住房和城乡建设厅网站网站建设违约合同
  • 网站怎么做才是对搜索引擎友好重庆电商网站建设费用
  • 网站建设与企业管理心得体会name域名的网站
  • 网站域名备案注册证书wordpress 回收站在哪个文件夹
  • 给一个公司做网站需要什么内容做图像网站
  • 企业网站建设专业wordpress 留言页面
  • 企业网站策划案模板大连专业企业建站找哪家
  • 房地产网站cms贵阳公司电话号码大全
  • 模型网站大全免费怎样做影视网站不侵权
  • 如何攻击织梦做的网站方法html5在线代码编辑器
  • 自助建站系统搭建网站wordpress更改页面设置
  • 自己怎么手机做网站wordpress实现pdf浏览器
  • 西宁手机网站微站建设wordpress 提问
  • 电子商务网站建设ppt模板广州网站建设新锐
  • 电子商务网站开发实例做新媒体应该关注什么网站
  • 网站备案包括哪些宁夏做网站
  • 有趣的网站代码wordpress squarespace
  • 杭州国外网站推广公司怎么做自己的音乐网站
  • 电子商务网站建设的大纲手机微网站开发的目的和意义
  • 随州网站建设便宜寿光建设网站
  • 废橡胶网站建设wordpress 申请表单
  • 网站设计培训费用是多少企业展厅设计公司有哪些