Flutter中GetX系列九--路由/页面跳转,传值,中间件(GetPage)

这篇具有很好参考价值的文章主要介绍了Flutter中GetX系列九--路由/页面跳转,传值,中间件(GetPage)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.页面传值跳转和中间件(GetPage)使用代码

import 'package:flutter/material.dart';
import 'package:flutterlianxi/login_VC.dart';
import 'package:get/get.dart';
import 'routers.dart';

void main() {
  runApp(GetMaterialApp(
    home: BottomAppBarDemo(),
    //设置初始化路由
    initialRoute: "/",
    //全部配置页面跳转的动画(是安卓的风格还是ios的风格)
    defaultTransition: Transition.rightToLeft,
    //设置路由地址
    getPages: RoutersPageVC.routers,
  ));
}


class BottomAppBarDemo extends StatelessWidget {
  const BottomAppBarDemo({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("首页"),
      ),
      body: Column(
        children: [
          //普通页面跳转
          ElevatedButton(
              onPressed: () {
                //带参数传值跳转
                Get.toNamed("/login_VC", arguments: {"dataId": "2345"});

                //Get.back();//返回上一级页面

                // Get.offAll(Tabs());//返回到跟路由

                //Get.off(LoginVC());//跳转的页面没有返回按钮 
              },
              child: const Text("路由跳转")),
          const SizedBox(
            height: 20,
          ),
          //中间件页面跳转
          ElevatedButton(
              onPressed: () {
               //在跳转的时候可以根据条件判断,不满足条件的时候跳转到其他页面
                Get.toNamed("/shop_VC");
              },
              child: const Text("中间件页面跳转")),
        ],
      ),
    );
  }
}
1.1.使用to方法实现页面基本跳转
import './Home.dart';
ElevatedButton(
            onPressed: () async {
              Get.to(Home());
            },
            child: Text("跳转到首页")),
 1.2.使用Get.toNamed()跳转到命名路由

系统跳转方式

//系统跳转方式
Navigator.pushNamed(context, "/login")
 Getx跳转方式

//没有携带参数
Get.toNamed("/login");
//携带参数
Get.toNamed("/shop",arguments: { "id":20 });


//接收参数,可以直接通过Get.arguments

print(Get.arguments);
1.3.返回上一级页面Get.back()

系统跳转方式

Navigator.of(context).pop();
Getx跳转方式​​​​​​​
 Get.back();
1.4.返回到根路由

系统跳转方式

ElevatedButton(
            onPressed: () async {
              Navigator.of(context).pushAndRemoveUntil(
                  MaterialPageRoute(builder: (BuildContext context) {
                return const Tabs(index: 4);
              }), (route) => false);
            },
            child: Text("跳转到首页")),
      ),

  Getx跳转方式

Get.offAll( const Tabs(index: 4));
1.5.跳转到下一个页面的,但是没有返回按钮(一般应用于闪屏页,登录页面等)
Get.off(Login());

2. 设置路由的封装类

main类中的RoutersPageVC.routers封装文章来源地址https://www.toymoban.com/news/detail-596442.html

import 'package:get/get.dart';
import './login_VC.dart';
import './shop_VC.dart';
import './middle_VC.dart';

class RoutersPageVC {
  static final routers = [
    GetPage(
        name: "/login_VC",
        page: () => const LoginVC(),
        transition: Transition.leftToRight //设置单个页面跳转的方式
        ),
    GetPage(
        name: "/shop_VC",
        page: () => const ShopPageVC(),
        middlewares: [MiddlePageVC()],//设置中间件(GetPage),可以根据优先级设置多个中间件
        ),
  ];
}

3.路由封装类中的中间件 MiddlePageVC类的封装

import 'package:flutter/material.dart';
import 'package:get/get.dart';
import './login_VC.dart';

//中间件(GetPage):可以做一些权限的判断.例如用户在跳转到支付页面,这个时候用户没有登录,就可以使用中间件的方式进行判断,先让用户跳转到中间件页面.具体使用详情如下:

class MiddlePageVC extends GetMiddleware {
  //需要继承GetMiddleware

  @override
//需要实现系统的该方法
  RouteSettings? redirect(String? route) {
    // return null;表示跳转到以前的路由
    //根据条件进行判断,满足条件进行跳转,否则不进行跳转
    return RouteSettings(name: "/login_VC",arguments: {});
  }
}

4.跳转到对应页面时候,传递值的接收

import 'package:flutter/material.dart';
import 'package:get/get.dart';

class LoginVC extends StatefulWidget {
  const LoginVC({super.key});

  @override
  State<LoginVC> createState() => _LoginVCState();
}

class _LoginVCState extends State<LoginVC> {
  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    //直接通过Get就可以获取上一个页面传值
    print("获取传值:${Get.arguments["dataId"]}");
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("登录页面导航"),
      ),
      body: Container(
        child: Text("登录页面"),
      ),
    );
  }
}

到了这里,关于Flutter中GetX系列九--路由/页面跳转,传值,中间件(GetPage)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • flutter使用getx进行数据状态管理,实现页面响应式

    无论是什么样的应用,都还是需要最基础的数据来支撑的,而且不同的页面之间可能需要共享数据状态,这就显得数据状态管理非常有必要了。因为我这里使用了get依赖库,所以就可以直接在项目中使用getx来管理状态,不想再使用别的框架了。而且getx使用起来也挺方便的。

    2024年01月22日
    浏览(45)
  • Flutter中GetX系列六--GetxController/GetView使用详情

    在实际的项目开发过程中,我们不可能把UI代码、业务逻辑都放在一起处理,这样对项目的架构、代码的可读性、后期的维护将会是致命的,好在 GetX 为我们提供了 GetxController , GetxController 主要的作用是用于UI代码与业务逻辑分离开来。 这里主要讲解使用 GetxController 动态获取

    2024年02月10日
    浏览(52)
  • 初识express/路由/中间件

                                     ​​​​​​​        

    2024年02月11日
    浏览(64)
  • GO——gin中间件和路由

    中间件 参考:https://learnku.com/articles/66234 结构 中间件是函数 中间件函数被放在调用链上 调用链的末尾是路由path对应的函数 执行过程 net/http包调用到gin的serverHTTP 参考:go/pkg/mod/github.com/gin-gonic/gin@v1.7.7/gin.go:506 通过path找到路由对应的处理链,赋值给context 参考:go/pkg/mod/git

    2024年01月17日
    浏览(42)
  • 【node.js从入门到精通】使用express创建web服务器,路由,进行中间件的创建链接路由及其他中间件

    目录 前言 初识express 使用express创建基本的web服务器 初识express路由 路由匹配概念 路由模块化 中间件 中间件和路由的区别 定义中间件函数 中间件作用   局部生效中间价 中间件分类  1.应用级别中间件  2.路由级别的中间件  3.错误级别中间件  4.内置中间件  5.自定义中间

    2024年02月02日
    浏览(55)
  • 消息中间件系列 - RocketMQ

    本内容仅用于个人学习笔记,如有侵扰,联系删除 【尚硅谷】RocketMQ教程丨深度掌握MQ消息中间件_哔哩哔哩_bilibili 1 、MQ简介 MQ , Message Queue ,是一种提供 消息队列服务 的中间件,也称为消息中间件,是一套提供了消息生产、存储、消费全过程API的软件系统。消息即数据。

    2024年02月16日
    浏览(73)
  • PHP Laravel 路由、中间件、数据库等例子

    以下是使用Laravel框架时的一些常见示例: 1. 路由(Routes): // 定义基本路由 Route::get(\\\'/home\\\', \\\'HomeController@index\\\'); // 带有参数的路由 Route::get(\\\'/user/{id}\\\', \\\'UserController@show\\\'); // 路由组 Route::middleware([\\\'auth\\\'])-group(function () {     Route::get(\\\'/dashboard\\\', \\\'DashboardController@index\\\');     Route::pos

    2024年02月16日
    浏览(59)
  • express学习笔记5 - 自定义路由异常处理中间件

    修改router/index.js,添加异常处理中间件 完整代码 创建 utils/constant:(为了方便后期统一维护,单独拉出来定义) 然后刷新http://localhost:8000/user  这就完成了

    2024年02月14日
    浏览(48)
  • Go学习第十七章——Gin中间件与路由

    Gin框架允许开发者在处理请求的过程中,加入用户自己的钩子(Hook)函数。这个钩子函数就叫中间件,中间件适合处理一些公共的业务逻辑,比如登录认证、权限校验、数据分页、记录日志、耗时统计等 即比如,如果访问一个网页的话,不管访问什么路径都需要进行登录,

    2024年02月07日
    浏览(47)
  • RabbitMQ系列教程消息中间件技术精讲

    作者:禅与计算机程序设计艺术 消息中间件(Message Queue,MQ)是一种分布式应用间通信的组件。它可以在不同的系统之间传递消息、数据或指令。在现代IT架构中,越来越多的应用需要相互通信,所以出现了消息队列的概念。RabbitMQ是一个开源的AMQP实现,是一个可靠、可扩展

    2024年02月06日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包