GetX之路由管理

GetX有一套完整的路由管理,并且不需要context上下文,API非常简洁

直接导航

导航到新的页面

Get.to(NextScreen());

返回,此方法可以用于关闭SnackBars、Dialogs、BottomSheets或任何你通常会用Navigator.pop(context)关闭的东西。

Get.back();

进入下一个页面并将上一个页面移除

Get.off(NextScreen());

进入下一个页面并将之前所有的路由移除

Get.offAll(NextScreen());

带参数

从A页面到B页面

Get.to(B(), arguments: "data")

在B页面接收参数

final data = Get.parameters

回传数据到A页面

Get.back(result: "result")

在A页面接收从B页面传回来的数据,因为Get.to本身是一个Future,可以通过await或者.then方法获取

final res = await Get.to(const WNEmptyPage());

或者

Get.to(const WNEmptyPage())?.then((value) { print(value); });

和原生API的对比


// 默认的Flutter导航
Navigator.of(context).push(
context,
MaterialPageRoute(
builder: (BuildContext context) {
return HomePage();
},
),
); // 使用Flutter语法获得,而不需要context。
navigator.push(
MaterialPageRoute(
builder: (_) {
return HomePage();
},
),
); // get语法 (这要好得多)
Get.to(HomePage());

别名导航

可以创建一个路由表,给每一个页面创建一个别名

通过在GetMaterialAppgetPage添加

void main() {
runApp(
GetMaterialApp(
initialRoute: '/',
getPages: [
GetPage(name: 'homePage', page: () => MyHomePage()),
],
)
);
}

也可以在onGenerateRoute中定义

onGenerateRoute: (settings) {
final args = settings.arguments;
switch (settings.name) {
case "homePage":
return CupertinoPageRoute(
builder: (BuildContext context) => MyHomePage(),
settings: settings);
}
}

此回调会带有一个setting参数,可以在里面获取对应路由的别名,传进来的参数等

使用就直接在之前的API上加上Named后缀

Get.to对应

Get.toNamed("/NextScreen");

Get.off对应

Get.offNamed("/NextScreen");

Get.offAll对应

Get.offAllNamed("/NextScreen");

如果找不到对应别名的路由,可能没有在路由表中没有注册,就可以在GetMaterialApp定义一个unknownPage

unknownRoute: GetPage(name: 'unknownPage', page: () => const UnknownPage())

或者是通过回调的方式

onUnknownRoute: (settings) {
return CupertinoPageRoute(
builder: (BuildContext context) => const UnknownPage(),
settings: settings);
}

传输数据也是差不多的

Get.toNamed("/NextScreen", arguments: 'Get is the best');

print(Get.arguments);
//Get is the best

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中的普通路由与命名路由(Navigator组件)

    Flutter 中的路由通俗的讲就是页面跳转.在 Flutter 中通过 Navigator 组件管理路由导航.并提供了管理堆栈的方法.如:Navigator.push 和 Navigator.pop ...

  5. Flutter 中的基本路由

    Flutter 中的路由通俗的讲就是页面跳转.在 Flutter 中通过 Navigator 组件管理路由导航,并提供了管理堆栈的方法.如:Navigator.push 和 Navigator.pop ...

  6. Flutter 中的普通路由、普通路由传值、 命名路由、命名路由传值

    一.Flutter 中的路由 Flutter 中的路由通俗的讲就是页面跳转.在 Flutter 中通过 Navigator 组件管理路由导航.并提供了管理堆栈的方法.如:Navigator.push ...

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

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

  8. Springcloud Gateway 路由管理

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

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

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

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

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

随机推荐

  1. Python 潮流周刊#71:PyPI 应该摆脱掉它的赞助依赖(摘要)

    本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...

  2. PHP运算符优先级(摘自在线工具)

    PHP运算符优先级 结合方向 运算符 附加信息 非结合 clone new clone 和 new 左 [ array() 非结合 ++ -- 递增/递减运算符 非结合 ~ - (int) (floa ...

  3. 介绍this指向问题

    this是js底层定义的变量,代表了代码的指向环境 a 函数的this是window b 方法的this是调用的对象 c 构造函数和原型对象上的方法的this指向实例化对象 d 箭头函数不会自己创建t ...

  4. vue3读取所有的vue文件

  5. 9. JS的数据类型,区别

    js 有2大数据类型分类 : 基本数据类型: 1. string 字符串 使用单.双引号包裹,或者使用反引号包裹 2. number 数字类型 3. boolean 布尔值 true false 4. ...

  6. Kubernetes 对接 GlusterFS 磁盘扩容实战

    前言 知识点 定级:入门级 使用 Heketi Topology 扩容磁盘 使用 Heketi CLI 扩容磁盘 实战服务器配置 (架构 1:1 复刻小规模生产环境,配置略有不同) 主机名 IP CP ...

  7. SSIS连接Oracle问题汇总

    一.未安装Oracle客户端 错误提示:Test connection failed because of an error in initializing provider. 未找到 Oracle ...

  8. .NET 9 中没有 wasi 实验性支持

    2023年10月份写个一篇<本计划在 .NET 8 中推出的 WASI 推迟到 .NET 9>[1],根据此问题,在 .NET 9 RTM 中似乎不会有wasi-experimental, ...

  9. 题解: CF768D Jon and Orbs

    题解:CF768D Jon and Orbs 一句话题面:有k种不同的物品,每天等概率任取一种(不一定是新的种类).q组询问,每组给出一个p,问取完这k件物品的概率不小于\(\frac{p}{2000 ...

  10. Anaconda安装流程

    参考这篇博客,自己做一个记录而已anaconda安装 https://blog.csdn.net/Q_fairy/article/details/129158178