路由使用

英文文档参考,既然要get的使用,就需要首先再入口处使用 GetMaterialApp

示例代码仓库

1. GetMaterialApp

GetMaterialApp常用配置参数说明

配置同 MaterialApp 差不多

可选参数名 描述 类型
title 是应用程序的描述 String
defaultTranstion 路由的过渡效果 Transition枚举
initialRoute 默认选中的路由页面 字符串,或者页面类名
unknownRoute 路由找不到显示的页面 GetPage
getPages 路由表配置 List
routingCallback 路由监听回调函数 (Routing route) => { }

1.1 过渡效果配置参数说明

枚举值 描述 使用
fade 从底部向上淡入,从上边向底部淡出 Transition.fade
fadeIn 平面式的淡入淡出 同上
rightToLeft 从右侧向左滑入
leftToRight 从左侧向右滑入
upToDown 从顶部向下进入
downToUp 从下向上进入
rightToLeftWithFade 从右侧带上黑色透明蒙层效果向左滑入
leftToRightWithFade 从左侧带上黑色透明蒙层效果向右滑入
zoom 放大缩小的缩放效果
topLevel 顶部突然放大到正常效果
noTransition 没有过渡效果
cupertino 风格的过渡效果(左右进入退出)
cupertinoDialog ios风格的效果(上下进入退出效果)
size 渐隐渐现效果
native flutter 自带的过渡效果

2. 配置路由和过渡效果

void main() {runApp(GetMaterialApp(debugShowCheckedModeBanner: false,title: "Application",defaultTransition: Transition.fade,initialRoute: "/",// unknownRoute: GetPage(name: '/notfound', page: () => UnknownRoutePage())getPages: [GetPage(name: '/', page: () => HomePage()),GetPage(name: '/mine', page: () => MinePage()),],),);
}

2.1 给某个页面配置过渡效果

GetPage(name: '/mine',page: () => MinePage(),transition: Transition.zoom,
),

3. 路由跳转

3.1 普通直接跳转

MaterialButton(onPressed: () {Get.to(MinePage());},color: Colors.blue,textColor: Colors.white,child: Text("跳转到mine-page"),
)

3.2 命名路由跳转

MaterialButton(onPressed: () {Get.toNamed("/mine");},color: Colors.blue,textColor: Colors.white,child: Text("跳转到mine-page"),
)

3.3 返回上个页面

MaterialButton(onPressed: () {Get.back();},color: Colors.blue,textColor: Colors.white,child: Text("返回上个页面"),
),

3.4 Get.off() | Get.offAll() 跳转页面

  • Get.off() 导航到下一个页面并删除前一个页面

  • Get.offAll() 导航到下一个页面并删除以前所有的页面

  • 该方法和 Get.to() 实现的效果一样, 但是使用此方法跳转后,在下一个页面,不能再返回前一个页面,

  • 可以用在 登录页,获取退出页面,这样登录后,或者退出页面后,就不能再返回到前一个页面

MaterialButton(onPressed: () {Get.off(MinePage());},color: Colors.blue,textColor: Colors.white,child: Text("Get.off跳转"),
)

3.5 普通跳转传参

使用 arguments传参数和arguments参数接收

// 传参
MaterialButton(onPressed: () {Get.to(MinePage(), arguments: '我是参数');},color: Colors.blue,textColor: Colors.white,child: Text("跳转传参"),
)

接收参数

class MinePage extends StatelessWidget {@overrideWidget build(BuildContext context) {// 接收参数String name = Get.arguments;print("参数:$name");return Scaffold(appBar: AppBar(title: Text("路由管理"),centerTitle: true,),);}
}

3.6 命名路由传参

MaterialButton(onPressed: () {Get.toNamed('/mine?name=李四');},color: Colors.blue,textColor: Colors.white,child: Text("命名路由传参"),
)

接收参数

class MinePage extends StatelessWidget {@overrideWidget build(BuildContext context) {// 接收参数 Map类型String name = Get.parameters['name'];print("参数:$name");return Scaffold(appBar: AppBar(title: Text("路由管理"),centerTitle: true,),);}
}

3.7 命名路由动态传参

第一步:定义动态命名路由

  GetPage(name: "/mine/:id", page: () => MinePage()),

第二步:跳转

MaterialButton(onPressed: () {// 不允许传中文,会报错Get.toNamed("/mine/123123");//  Get.toNamed("/mine/中");},color: Colors.blue,textColor: Colors.white,child: Text("命名路由动态传参"),
)

第三步:接收参数

String id = Get.parameters['id'];
print("参数:$id");

3.8 返回上个页面立即接收携带回来的参数

一块使用 await Get.to() 和 Get.back(result: 456) 实现

  • 第一步:跳转某个页面,并接受数据
MaterialButton(onPressed: () async {var data = await Get.to(MinePage());// 上个页面返回后,立即拿到数据,456print(data);},color: Colors.blue,textColor: Colors.white,child: Text("await Get.to"),
)
  • 第二步:携带参数返回上个页面
MaterialButton(onPressed: () {// 返回携带参数Get.back(result: 456);},color: Colors.blue,textColor: Colors.white,child: Text("返回上个页面"),
),

3.9 Get.offNamed 和 Get.offAllNamed

Get.offNamed () 命名路由导航到下一个页面并删除前一个页面

MaterialButton(onPressed: () {Get.offNamed ("/mine");},color: Colors.blue,textColor: Colors.white,child: Text("Get.offNamed"),
)

4. 路由中间件routingCallback

routingCallback: 路由监听回调

  GetMaterialApp(debugShowCheckedModeBanner: false,title: "Application",defaultTransition: Transition.fade,initialRoute: "/",getPages: [GetPage(name: '/', page: () => HomePage()),GetPage(name: "/mine/:id", page: () => MinePage()),GetPage(name: "/news", page: () => NewsPage()),GetPage(name: '/mine',page: () => MinePage(),transition: Transition.zoom,),],routingCallback: (Routing route) {print(route.current);},),

5. snackbar 提示框

配置参数太多,就自己看文档吧

MaterialButton(onPressed: () {Get.snackbar(Get.snackbar("提示", // title"我是提示的信息", // messageicon: Icon(Icons.home), // 头部的图标shouldIconPulse: true,barBlur: 10,colorText: Colors.white, // 字体颜色isDismissible: true,snackPosition: SnackPosition.BOTTOM, // 显示的位置duration: Duration(seconds: 3), // 显示时长titleText: Text("自定义标题"), // 会覆盖掉 第一个 title的参数的效果messageText: Text("自定义提示语"), // 会覆盖掉 第二个 message的参数的效果maxWidth: 200.2, // 提示框的最大宽度margin: EdgeInsets.all(100), // 提示框距离四周的距离padding: EdgeInsets.all(10), // 提示框的内边距borderRadius: 20.2, // 提示框四周的圆角borderColor: Colors.red, // 提示框边框的颜色,必须和borderWidth一块用,单独使用会报错borderWidth: 2.2, // 提示框边框大小backgroundColor: Colors.black54, // 背景色leftBarIndicatorColor: Colors.blue, // 左侧边上一条竖杆的背景色,并不是边框boxShadows: [BoxShadow(color: Colors.red, offset: Offset(10, 20)),], // 添加阴影效果onTap: (GetBar<Object> a) {print(a);}, // 提示框点击回调););},color: Colors.red,textColor: Colors.white,child: Text("snackbar"),
),

6. dialogs 弹窗

6.1 默认弹窗效果

  • Get.defaultDialog() 打开弹窗

  • 关闭弹窗: 调用路由的 Get.back() 进行关闭, 配置太多了,自己看源码吧

MaterialButton(onPressed: () {Get.defaultDialog(title: "您确定要这样吗", // 弹窗的标题titleStyle: TextStyle(color: Colors.blue), // 弹窗的标题的样式onConfirm: () => Get.back(), // 确定回调onCancel: () => Get.back(), // 取消的回调confirmTextColor: Colors.purple, // 确定按钮的回调字体颜色cancelTextColor: Colors.red, // 取消的回调字体颜色textConfirm: "确定", // 确定按钮 文字textCancel: "取消", // 取消按钮 文字confirm: Text("自定义确定按钮"), // 自定义确定按钮, 需要自己写关闭函数,比较灵活cancel: MaterialButton(onPressed: Get.back,color: Colors.blue,child: Text("自定义取消按钮"),), // 自定义取消按钮middleTextStyle: TextStyle(color: Colors.blue,), // 中间的提示语的样式,自定义content参数时无效middleText: "Dialog made in 3 lines of code", // 中间的提示语backgroundColor: Colors.greenAccent, // 整个背景色buttonColor: Colors.red, // 确定按钮的背景色,自定义按钮时无效radius: 5, // 弹窗的圆角效果actions: [Icon(Icons.ac_unit),Icon(Icons.ac_unit),Icon(Icons.ac_unit),Icon(Icons.ac_unit),], // 同appBar上action 效果一样content:Text("我是自定义中间显示的widget"), // 自定义中间显示的UI,会覆盖掉middleText的效果);},color: Colors.red,textColor: Colors.white,child: Text("打开默认的Dialogs"),
),

6.2 自定义的弹窗

  • 默认高度铺满全屏 Get.dialog()
MaterialButton(onPressed: () {Get.dialog(Container(color: Colors.black26,child: Text("我是文字"),),);},color: Colors.red,textColor: Colors.white,child: Text("打开自定义的Dialogs"),
),

6.3 generalDialog 弹窗

  • 效果同自定义弹窗,也是铺满全屏
Get.generalDialog(pageBuilder: (BuildContext context,Animation<double> animation,Animation<double> secondaryAnimation) {return Container(color: Colors.red,);},
);

7. bottomSheet

  • 调用 Get.back() 关闭弹窗
Get.bottomSheet(Container(child: Wrap(children: <Widget>[ListTile(leading: Icon(Icons.music_note),title: Text('Music'),onTap: () {Get.back()}),ListTile(leading: Icon(Icons.videocam),title: Text('Video'),onTap: () {},),],),),backgroundColor: Colors.green, // 底部bottomSheet的背景色elevation: 10.0,);
);

Getx - 如何使用路由管理页面相关推荐

  1. 爆破无线路由器管理页面登录密码

    爆破无线路由器管理页面登录密码 使用BurpSuite爆破路由器管理密码 主要步骤: 1:输入任意密码,使用Proxy模块截取cookie 2:使用Decoder转码分析cookie 3:设定cook ...

  2. Flutter 全能型选手GetX —— 路由管理

    使用篇   简介 依赖管理 路由管理 状态管理 主题配置 多语言配置 离线缓存 网络请求  原理篇 从源码看Getx的依赖原理  一.Getx 路由基本使用 1.普通路由 Get.to(SecondP ...

  3. Flutter路由管理和页面参数的传递(获取返回)

    前言 在做 Flutter 开发的时候所有的页面以及页面上的元素都变成了 Widget ,创建一个页面或者视图直接 new 一个新的 widget 就可以,相关的参数我们可以直接通过构造函数直接传递. ...

  4. Flutter路由管理和接收页面的返回值

    Flutter使用Navigator进行路由管理. 跳转页面 使用Navigator的push方法进行跳转.可以看到总共有6个push方法 1.push(route) 通过路由跳转 通过路由进行跳转 ...

  5. Bolt 的 Flutter 路由管理实践(页面解耦,流程控制、功能拓展等)

    在各大移动开发框架(Android.iOS.Flutter.React Native-)中,路由管理始终是 UI 架构最具热议的话题之一. 一大原因就是应用程序的页面会 不可避免的多,我们可以使用 B ...

  6. Flutter路由管理和页面参数的传递(源码分析)

    前言 上一篇 Flutter路由管理和页面参数的传递(获取&返回) 文章中我们讲述了这么用代码实现 Flutter 中页面参数的传递,这一篇我们用源码分析一下 Navigator 为什么可以进 ...

  7. 水星路由器登录界面找不到服务器,水星路由器管理页面怎么登陆不进去? | 192路由网...

    正在情况下,在浏览器中输入melogin.cn,就可以进入水星路由器的管理页面.如果在浏览器中输入melogin.cn后,无法进入水星路由器的管理页面,请按照下面的步骤进行操作. 注意: 如果你在浏览 ...

  8. dvwa页面打不开的原因_路由器管理页面打不开怎么办? | 192路由网

    如果打不开路由器的管理页面,就无法对路由器进行设置,这非常的糟糕. 为了帮助大家解决这个问题,鸿哥特意整理了这篇文章,来详细的介绍路由器管理页面打不开的解决办法,请按照下面的步骤进行操作. 1. 你的 ...

  9. 08-HR-权限管理模块(给员工分配角色,权限点管理页面开发,给角色分配权限,前端权限-页面访问权(路由),前端权限-按钮操作权)

    权限管理模块 RBAC的权限设计思想 采用方案: RBAC的权限模型,RBAC(Role-Based Access control) ,也就是基于角色的权限分配解决方案 权限控制目标:不同的用户登录系 ...

最新文章

  1. 争议中挺进全新里程——中国“超级对撞机”《概念设计报告》发布侧记
  2. 2015#183;Fool#39;s Day#183;NND
  3. 把CentOS启动进度条替换为详细信息
  4. html解析的简单方式,HTML解析看我就够了,不依赖任何第三方,两个方法搞定
  5. VTK:Points之ExtractSurfaceDemo
  6. 浅谈RTS游戏网络同步:3种同步机制模式的实现
  7. 嵌入式NVR发展浅析
  8. IDEA的debug方法头坑
  9. 深入理解javascript内部原理(2): 变量对象(Variable object)
  10. Win10,Python 3.6环境下安装PyQt4
  11. Excel公式不自动计算出结果
  12. 轮子王-原创数据结构-V2.0--内存//二级指针//小样儿练习
  13. 通过Adblock关闭网站上百度分享的方法
  14. win7装xp双系统_UEFI新PC装Win7 32位系统:巧用”硬盘保护卡“解决
  15. 类美团外卖、骑手、类快递取餐柜、整合菜品供应商、前厅、后厨、配送、智能厨电设备的智慧餐饮业务
  16. Elasticsearch 6.4 索引时执行脚本报错
  17. 正交函数(orthogonal functions)
  18. 2021龙川隆师中学高考成绩查询入口,2020重庆高考成绩查询系统入口官网
  19. Origin如何绘制三维图形?
  20. ORM框架Peewee(四改)

热门文章

  1. Panda3D 是一个用于 Python 和 C++ 程序的 3D 渲染和游戏开发框架。
  2. 从0到10W粉,这一年我在csdn的成长之路
  3. Koalas - 入门基本操作
  4. 考研不歧视双非的院校计算机专业,21考研,保护一志愿不歧视“双非”的30所学校,值得收藏!...
  5. arcEngine开发之查询相关接口
  6. 以HT82K629B为主控的程序员专用CV键盘(无需代码烧写)
  7. PDF文件中插入图片(图章)
  8. Line Phone概念手机的设计感悟
  9. 关于应用RestHighLevelClient操作ElasticSearch出现“远程主机强迫关闭一个现有连接”的问题探究
  10. 计算机视觉之--使用opencv生成简笔画小视频