Flutter之GetX之路由管理
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());
别名导航
可以创建一个路由表,给每一个页面创建一个别名
通过在GetMaterialApp的getPage添加
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之路由管理的更多相关文章
- Flutter 应用入门:路由管理
路由(Route)在移动开发中通常指页面(Page),这跟web开发中单页应用的Route概念意义是相同的,Route在Android中通常指一个Activity,在iOS中指一个ViewContro ...
- 6.2.初识Flutter应用之路由管理
路由管理 路由(Route)在移动开发中通常指页面(Page),这跟web开发中单页应用的Route概念意义是相同的,Route在Android中通常指一个Activity,在iOS中指一个ViewC ...
- flutter最简单轻量便捷的路由管理方案NavRouter
大家好,我是CrazyQ1,今天给大家推荐一个路由管理方案,用的非常不错的,叫nav_router. 项目地址是:https://github.com/fluttercandies/nav_route ...
- Flutter中的普通路由与命名路由(Navigator组件)
Flutter 中的路由通俗的讲就是页面跳转.在 Flutter 中通过 Navigator 组件管理路由导航.并提供了管理堆栈的方法.如:Navigator.push 和 Navigator.pop ...
- Flutter 中的基本路由
Flutter 中的路由通俗的讲就是页面跳转.在 Flutter 中通过 Navigator 组件管理路由导航,并提供了管理堆栈的方法.如:Navigator.push 和 Navigator.pop ...
- Flutter 中的普通路由、普通路由传值、 命名路由、命名路由传值
一.Flutter 中的路由 Flutter 中的路由通俗的讲就是页面跳转.在 Flutter 中通过 Navigator 组件管理路由导航.并提供了管理堆栈的方法.如:Navigator.push ...
- WebApp中的页面生命周期及路由管理
最近切换到一个新项目,使用的技术栈是Require+Backbone,鉴于对鞋厂webapp框架的了解,发现这个新项目有些缺陷,主要是单纯依赖Backbone造成的,也就是Backbone的好和坏都在 ...
- Springcloud Gateway 路由管理
Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开 ...
- vue路由管理-保留滚动位置功能、按需加载模块名自定义
路由管理:保留滚动位置 其实现与组件的keep-alive相关,仅设置了keep-aive的页面,实施保留回退位置能力. keep-alive介绍 作用 把切换出去的组件保留在内存中,可以保留它的状态 ...
- 谈谈后台服务的RPC和路由管理
版权声明:本文由廖念波原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/147 来源:腾云阁 https://www.qclo ...
随机推荐
- Python 潮流周刊#71:PyPI 应该摆脱掉它的赞助依赖(摘要)
本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...
- PHP运算符优先级(摘自在线工具)
PHP运算符优先级 结合方向 运算符 附加信息 非结合 clone new clone 和 new 左 [ array() 非结合 ++ -- 递增/递减运算符 非结合 ~ - (int) (floa ...
- 介绍this指向问题
this是js底层定义的变量,代表了代码的指向环境 a 函数的this是window b 方法的this是调用的对象 c 构造函数和原型对象上的方法的this指向实例化对象 d 箭头函数不会自己创建t ...
- vue3读取所有的vue文件
- 9. JS的数据类型,区别
js 有2大数据类型分类 : 基本数据类型: 1. string 字符串 使用单.双引号包裹,或者使用反引号包裹 2. number 数字类型 3. boolean 布尔值 true false 4. ...
- Kubernetes 对接 GlusterFS 磁盘扩容实战
前言 知识点 定级:入门级 使用 Heketi Topology 扩容磁盘 使用 Heketi CLI 扩容磁盘 实战服务器配置 (架构 1:1 复刻小规模生产环境,配置略有不同) 主机名 IP CP ...
- SSIS连接Oracle问题汇总
一.未安装Oracle客户端 错误提示:Test connection failed because of an error in initializing provider. 未找到 Oracle ...
- .NET 9 中没有 wasi 实验性支持
2023年10月份写个一篇<本计划在 .NET 8 中推出的 WASI 推迟到 .NET 9>[1],根据此问题,在 .NET 9 RTM 中似乎不会有wasi-experimental, ...
- 题解: CF768D Jon and Orbs
题解:CF768D Jon and Orbs 一句话题面:有k种不同的物品,每天等概率任取一种(不一定是新的种类).q组询问,每组给出一个p,问取完这k件物品的概率不小于\(\frac{p}{2000 ...
- Anaconda安装流程
参考这篇博客,自己做一个记录而已anaconda安装 https://blog.csdn.net/Q_fairy/article/details/129158178