GetX 为我们封装了 Navigation ,无需 context 可进行跳转,使用 GetX 进行路由跳转非常的简单,
只需要调用 Get.to() 即可进行路由跳转, GetX 路由跳转简化了跳转动画设置 、动画时长定义、动画
曲线设置

Get.to()实现普通路由跳转

一、设置应用程序入口
当我们导入依赖后,在应用程序顶层把 GetMaterialApp 作为顶层,如下所示
import 'package:flutter/material.dart';
import 'package:get/get.dart'; void main() {
runApp(MyApp());
} class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return GetMaterialApp( //重点
title: "GetX",
home: Scaffold(
appBar: AppBar(
title: Text("GetX Title"),
),
),
);
}
}
二、调用to方法切换路由
        ElevatedButton(
onPressed: () async {
Get.to(KidPage()); //页面跳转
// Get.to("/page");
},
child: const Text("GetX中路由跳转")
)

调用Get.toNamed()跳转到命名路由

以前
Navigator.pushNamed(context, "/login");
使用Getx后
Get.toNamed("/login");

Get.toNamed("/shop",arguments: {
"id":20
});

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

以前
Navigator.of(context).pop();
使用Getx后
Get.back();

Get.offAll(); 返回到根

以前
Navigator.of(context).pushAndRemoveUntil(
MaterialPageRoute(builder: (BuildContext context) {
return const Tabs(index: 4);
})
, (route) => false);
使用Getx后
Get.offAll( const Tabs(index: 4));

Get.off(NextScreen());

进入下一个页面,但没有返回上一个页面的选项(用于闪屏页,登录页面等)。
Get.off(NextScreen());

Flutter Getx 配置路由以及动画

GetX可以使用之前命名路由的 onGenerateRoute 也可以使用 getPages 来配置路由;

一、defaultTransition可以配置默认动画
class MyApp extends StatelessWidget {
const MyApp({super.key}); @override
Widget build(BuildContext context) {
return GetMaterialApp(
debugShowCheckedModeBanner: false, //去除debug图标
theme: ThemeData(primarySwatch: Colors.red),
initialRoute: "/",
defaultTransition: Transition.rightToLeftWithFade, //默认动画效果
getPages: [ //配置路由
GetPage(name: "/", page: () => const MypageGet()),
GetPage(name: "/MyHomePage", page: () => const MyHomePage()),
],
);
}
}
二、GetPage 可以配置动态路由
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return GetMaterialApp(
debugShowCheckedModeBanner: false,
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
appBarTheme: const AppBarTheme(
centerTitle: true,
)),
initialRoute: "/",
defaultTransition: Transition.rightToLeftWithFade, //页面跳转动画
getPages: [ //配置路由
GetPage(name: "/", page: () => const Tabs()),
GetPage(name: "/login", page: () => const LoginPage()),
GetPage(
name: "/registerFirst",
page: () => const RegisterFirstPage(),
transition: Transition.rightToLeft), //页面跳转动画
GetPage(
name: "/registerSecond", page: () => const RegisterSecondPage()),
GetPage(name: "/registerThird", page: () => const RegisterThirdPage()),
GetPage(name: "/shop", page: () => const ShopPage()),
],
);
}
}
三、Getx 路由跳转传值以及接受数据
路由配置
getPages: [
...
GetPage(name: "/shop", page: () => const ShopPage()),
...
],
跳转传值
Get.toNamed("/shop",arguments: {
"id":20
});
接受数据
print(Get.arguments);
print(Get.arguments['id']);

Flutter Getx 路由抽离

新建routes.dart
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:xcx_flutter/page/getX/getx.dart';
import 'package:xcx_flutter/page/homepage.dart'; class APPage {
static final routes = [
GetPage(name: "/", page: () => const MypageGet()),
GetPage(name: "/MyHomePage", page: () => const MyHomePage()),
];
}
入口
class MyApp extends StatelessWidget {
const MyApp({super.key}); @override
Widget build(BuildContext context) {
return GetMaterialApp(
debugShowCheckedModeBanner: false, //去除debug图标
theme: ThemeData(primarySwatch: Colors.red),
initialRoute: "/",
getPages: APPage.routes,
// home: MypageGet(),
);
}
}

Flutter Getx 中间件配置

新建shopMiddleware.dart
import 'package:flutter/cupertino.dart';
import 'package:get/get.dart';
class ShopMiddleWare extends GetMiddleware {
@override
// 优先级越低越先执行
int? get priority => -1;
@override
RouteSettings redirect(String ? route){
print("——————————中间件打印————————————");
print(route);
return const RouteSettings(name: '/KidPage');
}
}
GetPage配置路由
class APPage {
static final routes = [
GetPage(name: "/", page: () => const MypageGet()),
GetPage(
name: "/MyHomePage",
page: () => const MyHomePage(),
middlewares: [ShopMiddleWare()]), //中间件使用
// KidPage
GetPage(name: "/KidPage", page: () => const KidPage()),
];
}

Flutter Getx 路由管理的更多相关文章

  1. Flutter 应用入门:路由管理

    路由(Route)在移动开发中通常指页面(Page),这跟web开发中单页应用的Route概念意义是相同的,Route在Android中通常指一个Activity,在iOS中指一个ViewContro ...

  2. 6.2.初识Flutter应用之路由管理

    路由管理 路由(Route)在移动开发中通常指页面(Page),这跟web开发中单页应用的Route概念意义是相同的,Route在Android中通常指一个Activity,在iOS中指一个ViewC ...

  3. flutter最简单轻量便捷的路由管理方案NavRouter

    大家好,我是CrazyQ1,今天给大家推荐一个路由管理方案,用的非常不错的,叫nav_router. 项目地址是:https://github.com/fluttercandies/nav_route ...

  4. Flutter GetX使用---简洁的魅力!

    前言 使用Bloc的时候,有一个让我至今为止十分在意的问题,无法真正的跨页面交互!在反复的查阅官方文档后,使用一个全局Bloc的方式,实现了"伪"跨页面交互,详细可查看:flutt ...

  5. 【源码篇】Flutter GetX深度剖析 | 我们终将走出自己的路(万字图文)

    前言 人心中的成见是一座大山,任你怎么努力都休想搬动. 这是电影<哪吒>里申公豹说的一句话,也是贯彻整部电影的一个主题:或许这句话引起了太多人的共鸣:35岁职场危机,大厂卡本科学历,无房无 ...

  6. WebApp中的页面生命周期及路由管理

    最近切换到一个新项目,使用的技术栈是Require+Backbone,鉴于对鞋厂webapp框架的了解,发现这个新项目有些缺陷,主要是单纯依赖Backbone造成的,也就是Backbone的好和坏都在 ...

  7. Springcloud Gateway 路由管理

    Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开 ...

  8. (转)flutter 新状态管理方案 Provide (一)-使用

    flutter 新状态管理方案 Provide (一)-使用     版权声明:本文为博主原创文章,基于CC4.0协议,首发于https://kikt.top ,同步发于csdn,转载必须注明出处! ...

  9. vue路由管理-保留滚动位置功能、按需加载模块名自定义

    路由管理:保留滚动位置 其实现与组件的keep-alive相关,仅设置了keep-aive的页面,实施保留回退位置能力. keep-alive介绍 作用 把切换出去的组件保留在内存中,可以保留它的状态 ...

  10. 谈谈后台服务的RPC和路由管理

    版权声明:本文由廖念波原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/147 来源:腾云阁 https://www.qclo ...

随机推荐

  1. Capture Data.dmg

    苹果apple mac 系统检测  日常分析  软件 https://gigafiles.apple.com/#/download 现有文件可供下载. 备注 Capture Data 9.9.0 Th ...

  2. the solution of Mining Your Own Business

    the description of problem (我看的是 PDF 里面的原题所以这里描述会和题目不一样,但是大意一致) 给定一个未必连通的无向图,问最少在几个点设置出口,可以保证任意一个点坍塌 ...

  3. C#软件架构设计原则

    软件架构设计原则 学习设计原则是学习设计模式的基础.在实际的开发过程中,并不是一定要求所有的代码都遵循设计原则,而是要综合考虑人力.成本.时间.质量,不刻意追求完美,要在适当的场景遵循设计原则.这体现 ...

  4. 轻松掌握组件启动之Redis单机、主从、哨兵、集群配置

    单机配置启动 Redis安装 下载地址:http://redis.io/download 安装步骤: 1: 安装gcc编译器:yum install gcc 2: 将下载好的redis‐5.0.3.t ...

  5. WPF绘图(一):几何(Geometry)与形状(Shape)

    1. Geometry 在数学中,我们可以用一个方程描述圆:x2+y2=25.这个方程描述的是,一个半径为5,中心点在(0,0)的圆.这种纯数学的描述就是Geometry(几何). 但此时,这个&qu ...

  6. LVS负载均衡概念+三种模式

    1.LVS负载均衡概念剖解: 1)LVS技术全称:Linux virtual Server ,Linux虚拟机服务器集群,1998由章文嵩博士设计.并且开源的,是中国最早的开源软件项目之一.   2) ...

  7. 每天5分钟复习OpenStack(八)存储虚拟化

    KVM存储虚拟化是通过存储池(Storage Pool)和卷(Volume)来管理的.Storage Pool 是宿主机上可以看到的一片存储空间,可以是多种类型,Volume 是在 Storage P ...

  8. games101-1 光栅化与光线追踪中的空间变换

    在学习了一些games101的课程之后,我还是有点困惑,对于计算机图形学的基础知识,总感觉还是缺乏一些更加全面的认识,幸而最*在做games101的第五次作业时,查询资料找到了scratchpixel ...

  9. CSS display属性的作用

    作者:WangMin 格言:努力做好自己喜欢的每一件事 网页上的每个元素都是一个矩形框.CSS中的display属性决定了矩形框的行为.display属性是我们在前端开发中常常使用的一个属性. dis ...

  10. Apache Hudi Timeline:支持 ACID 事务的基础

    Apache Hudi 维护在给定表上执行的所有操作的Timeline(时间线),以支持以符合 ACID 的方式高效检索读取查询的数据. 在写入和表服务期间也会不断查阅时间线,这是表正常运行的关键. ...