所有内容首发微信公众号【WEB前端李志杰】,欢迎关注、点赞并转发!

Flutter中的默认导航分成两种,一种是命名的路由,一种是构建路由。

一、命名路由传参

应用入口处定义路由表

class MyApp extends StatelessWidget {const MyApp({Key? key}) : super(key: key);@overrideWidget build(BuildContext context) {return MaterialApp(debugShowCheckedModeBanner: false, // 隐藏预览中的debugtitle: 'Flutter Demo',routes: {'/': (context) => const HomePage(),"menu": (context) => const MenuPage()},);}
}
// 定义HomePage
class HomePage extends StatelessWidget {const HomePage({Key? key}) : super(key: key);@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: const Text("登录"),),body: ElevatedButton(onPressed: () async {// 实现路由跳转var result = await Navigator.pushNamed(context, 'menu',arguments: {'name': 'title'});print(result);},child: const Text('登录'),),);}
}
// 定义MenuPage
class MenuPage extends StatelessWidget {const MenuPage({Key? key}) : super(key: key);@override// 接收传参Widget build(BuildContext context) {dynamic argumentsData = ModalRoute.of(context)?.settings.arguments;return Scaffold(appBar: AppBar(title: Text('菜单' + argumentsData.toString()),),body: ElevatedButton(onPressed: () {Navigator.pop(context, {'name': "Navigator.pop传参"});},child: const Text("返回"),),);}
}

二、构建路由传参

从HomePage页面跳转MenuPage页面时,携带参数

第一种方式:

// 定义HomePage
class HomePage extends StatelessWidget {const HomePage ({Key? key}) : super(key: key);@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: const Text("登录"),),body: ElevatedButton(onPressed: () {// 实现路由跳转Navigator.push(context,MaterialPageRoute(builder: (context) => const MenuPage(title: '菜单123',), // 需要跳转的页面), // 修改路由的名称、信息等);},child: const Text('登录'),),);}
}
// 定义MenuPage
class MenuPage extends StatelessWidget {// 定义接收的字段final String title;const MenuPage({Key? key, required this.title}) : super(key: key);@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text(title),),body: ElevatedButton(onPressed: () {Navigator.pop(context);},child: const Text("返回"),),);}
}

第二种方式:

// 定义HomePage
class HomePage extends StatelessWidget {const HomePage({Key? key}) : super(key: key);@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: const Text("登录"),),body: ElevatedButton(onPressed: () {// 实现路由跳转Navigator.push(context,MaterialPageRoute(builder: (context) => const MenuPage(),// 修改路由的名称、信息等settings: const RouteSettings(name: '菜单', arguments: {"name": '123'}) // 需要跳转的页面),);},child: const Text('登录'),),);}
}
// 定义MenuPage
class MenuPage extends StatelessWidget {const MenuPage({Key? key}) : super(key: key);@override// 接收传参Widget build(BuildContext context) {dynamic argumentsData = ModalRoute.of(context)?.settings.arguments;return Scaffold(appBar: AppBar(title: Text('菜单' + argumentsData.toString()),),body: ElevatedButton(onPressed: () {Navigator.pop(context);},child: const Text("返回"),),);}
}

从MenuPage页面返回HomePage页面时,携带参数

// 定义HomePage
class HomePage extends StatelessWidget {const HomePage ({Key? key}) : super(key: key);;@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: const Text("登录"),),body: ElevatedButton(onPressed: () async {// 实现路由跳转var result = await Navigator.push(context,MaterialPageRoute(builder: (context) => const MenuPage(),),);print(result);},child: const Text('登录'),),);}
}
// 定义MenuPage
class MenuPage extends StatelessWidget {const MenuPage({Key? key}) : super(key: key);@override// 接收传参Widget build(BuildContext context) {return Scaffold(appBar: AppBar(title: const Text('菜单'),),body: ElevatedButton(onPressed: () {Navigator.pop(context, {'name': "Navigator.pop传参"});},child: const Text("返回"),),);}
}

往期内容:

【Vue】在Vite+Vue3.0中使用jsx语法开发。

【Vite+vue3】vue3当中keep-alive的使用

【微信公众号开发系列文章】一、微信公众号开发环境搭建

【微信公众号开发系列文章】二、Access token相关操作

Flutter Navigator路由传参相关推荐

  1. Flutter路由传参

    Flutter路由传参 1.普通路由 2.路由拦截onGenerateRoute 1.普通路由 //main.dart routes: routes, // 路由跳转 onTap: () {// 跳转 ...

  2. Flutter 路由传参配置

    Flutter 路由传参配置 在项目目录routers有一个Routers.dart文件(代码如下) import 'package:cai_customer/pages/orderDetail/De ...

  3. 微信小程序的路由跳转、路由传参

    1.路由跳转 声明式:就是指标签实现的跳转方式: 编程式:就是指js事件实现的跳转方式: 原生js跳转:(2种) 声明式:a标签              属性 href 编程式:location  ...

  4. 几个经常用到的angular路由Router、ActivatedRoute 知识点:嵌套路由、路由跳转、路由传参、路由参数获取

    深度玩家可移步Angular - 常见路由任务 1.嵌套路由 const routes: Routes = [{path: 'first',component: FirstComponent,//同步 ...

  5. Vue教程6【完结】【vue-router】路由,路由传参,编程式路由导航,缓存路由组件,路由守卫,路由模式,vue ui组件库

    vue-router 了解 vue插件库,用来实现SPA应用(单页面) 整个页面只有一个完整的页面 点击页面中导航链接,不会刷新页面,只做局部更新 数据通过ajax请求 路由的理解 一组映射关系(ke ...

  6. vue 路由传参 params 与 query两种方式的区别(转载)

    vue 路由传参 params 与 query两种方式的区别 初学vue的时候,不知道如何在方法中跳转界面并传参,百度过后,了解到两种方式,params 与 query.然后,错误就这么来了:  ro ...

  7. Vue 踩坑日志 - 有关路由传参的坑

    1.有关路由传参 vue中当通过params传过去的参数刷新页面以后会消失,所以可以用query传参.但此时又会出现另一个坑,刷新后数据仍在.但这是针对单个的某个变量的. 如果传入一个对象的话,刷新页 ...

  8. react更改路由入参_react怎么路由传参?

    react路由传参(4种方式) 1.通过params传参(刷新页面后参数不消失,参数会在地址栏显示) 路由页面: //注意要配置 /:id 路由跳转并传递参数:链接方式:XX //或: XXjs方式: ...

  9. vue2.0父向子传参,子向父传参,路由传参

    父向子传值: //父组件 <selectionGroup v-for="item in tab" :item="item"></selecti ...

  10. vue 如何将参数放到连接上_通过Vue路由传参的两种方式及Vue组件中接收参数的方式...

    1. Vue传参方式 1.1 通过动态路由传参 我们经常需要把某种模式匹配到的所有路由,全都映射到同个组件.例如,我们有一个 User 组件,对于所有 ID 各不相同的用户,都要使用这个组件来渲染.那 ...

最新文章

  1. [wcf]入门.3.4
  2. securecrt 连接配置存放目录_SecureCRT 迁移到新环境,导出配置文件目录 转(示例代码)...
  3. QT学习:Qt 5.11.1+OpenCV (含Contrib)-3.4.3环境搭建
  4. 【开发者的精进】 数据驱动下的程序设计
  5. Windows下如何搭建Gradle环境?
  6. 屠呦呦3年后再上热搜:女先生,世无双!
  7. error C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead.
  8. 【英语学习】【Level 07】U08 Old Stories L5 Fulfilling a life goal
  9. 搭建自己的Nuget服务器
  10. Codeforces Round #179 (Div. 2): D. Greg and Graph(Floyd)
  11. 笔记本电脑VGA与DVI接口的区别(转)
  12. 2018春江苏省计算机等级考试,2018年春季江苏省计算机等级考试报名通知
  13. VMware安装Windows Server 2003提示Operating System not found
  14. 扩展欧几里得算法——java
  15. 2200p如何连接wifi打印_柯尼卡美能达2200P打印机使用介绍
  16. 西门子PLC1200模拟量功能案例
  17. 软件测试提交bug意思,软件测试bug定义及分类
  18. 零基础学习PS——#photoshop# 的167个技能!
  19. 体积小性能强悍能吃鸡的电脑主机 NUC8I7HVK
  20. VMware Workstation 与 Device/Credential Guard 不兼容解决方案

热门文章

  1. 2020入侵防御系统(IPS)TOP10
  2. 七天玩转Redis | Day5、Java操作Redis
  3. php ios表情包,php处理APP中emoji表情包的方法
  4. 马哥SRE第八周课程作业
  5. cs224w(图机器学习)2021冬季课程学习笔记15 Frequent Subgraph Mining with GNNs
  6. 神奇魔方html5游戏在线玩,神奇的魔方
  7. 高频PCB设计设计技巧简述
  8. 十大api接口平台(接口商)
  9. 5年 Android 面试题
  10. 分享一款统计手机使用时间的APP,帮助集中注意力,拒绝手机上瘾,支持双端