Flutter 页面跳转和数据传值 pop回指定页面(路由实践)

2023-10-26

flutter搭建app 感觉相对简化了很多,布局核心就是万事皆widget,在之前我们不管是iOS 安卓原生 还是rn 我们在页面跳转和回转,我们都要对页面进行管理,从iOS 到安卓 到rn  路由被强调话了,web前端的一些重要设计思想被借鉴,同事web也借鉴了原生移动的思想,好了说正事了,flutter的路由,你可以自己封装,设计路由,但是Google为我们设计了好的控件,这里用的比较多的就是MaterialApp,它也是个widget,需要强调的一点是它要被放在最里层,之后就是将你的其他页面控件交给他管理。好了我们看看核心代码,在代码里面详解。

首先我们需要添加我们页面:


//一般来说MaterialApp 这个是放到程序的入口,可以理解先把他放进栈底
class MyApp extends StatelessWidget {

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        // This is the theme of your application.
        //
        // Try running your application with "flutter run". You'll see the
        // application has a blue toolbar. Then, without quitting the app, try
        // changing the primarySwatch below to Colors.green and then invoke
        // "hot reload" (press "r" in the console where you ran "flutter run",
        // or simply save your changes to "hot reload" in a Flutter IDE).
        // Notice that the counter didn't reset back to zero; the application
        // is not restarted.
        primarySwatch: Colors.blue,
      ),
      //有home属性的话就从Home入口进去,没有添加'/'代表入口,后面标准写法'/'+你设置的页面标签名字
      routes: <String,WidgetBuilder>{
        "/":(BuildContext context)=>new MyHomePage(),
        "/home":(BuildContext context)=>new Home(),
        "/Login":(BuildContext context)=>new LoginVc(),
        "/scan":(BuildContext context)=>new ScanCodeVc(),
      },
    );
  }
}

我们看下页面跳转指定页面代码

//跳转指定页面,参数放在arguments中,通常是以map形势传过去
Navigator.pushNamed(context, '/scan',arguments:{'data':'hahahaha'});



//页面 接收参数代码
class ScanCodeVc extends StatefulWidget{
  // 名字必须一致(注意这样是获取不到参数,当时不是知道是怎么回事应该在build通过context拿到arguments)
  final String data;
   
  const HLScanCodeVc({Key key, this.data}) : super(key: key);
    .......
     

  @override
  Widget build(BuildContext context) {
    Map arguments = ModalRoute.of(context).settings.arguments;
    var uid = arguments['data'];  
    .........
    }

}

pop回指定的页面

//这里直接返回到root页面 文档上说会一直pop页面知道遇到指定的页面为止
//这种用到的地方还是挺多的比如 A-->B--->c--->d  d页面完成直接返回A,bc就直接pop出栈
Navigator.popUntil(context,  ModalRoute.withName('/'));

 

如果你只设计下一级的页面跳转和返回,你也不需要将页面提前放到路由上面,你可以这样做

//直接push
Navigator.push(context, new MaterialPageRoute(builder: (BuildContext context){
  return new LoginVc();
 }));


//直接pop 只能返回上一级
Navigator.pop(context,"返回");

最后说说我遇到的坑吧 在编译的时候有时你会报什么[ ,未识别的错误,但是开发环境并没有提示有什么错误,一编译就报错,这种我停止编译,关闭模拟器,然后清理一下,奇迹可以运行了,怀疑是缓存的原因吧。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flutter 页面跳转和数据传值 pop回指定页面(路由实践) 的相关文章

随机推荐

  • 1、VScode汉化以及如何设置跳转到函数定义

    一 汉化 1 首先打开软件 软件默认是英文配置状态 如图所示 2 使用快捷键 Ctrl Shift P 进入如下界面 3 然后在弹出的界面中 输入 configure language 然后选择 install additional lan
  • CocosCreator在电脑Web打印vConsole日志的问题

    忘了什么时候开始 Web端的日志打印的文件输入信息全是vconsole min js文件 很纠结啊有木有 完全不知道日志的出处 日志输入如以下图片 官方还没有给出对于这个问题的配置是怎么样解决的 所以我们自己搞定 我们进入CocosCrea
  • [linux kernel] 内核下RX8025对接系统时钟

    系统版本 Ubuntu18 04 64 编译器版本 gcc version 7 4 0 Ubuntu Linaro 7 4 0 1ubuntu1 18 04 1 uboot版本 2018 07 linux4sam 6 0 板子型号 at91
  • [JavaWeb] 登录页面记住密码,账号或密码错误

    个人主页 沫洺的主页 系列专栏 JavaWeb专栏 JavaSE专栏 Java基础专栏 vue3专栏 MyBatis专栏 Spring专栏 SpringMVC专栏 SpringBoot专栏 Docker专栏 Reids专栏 MQ专栏 Spr
  • 区块链概念介绍

    区块链定义 区块链是一些技术集成的 适用于多方博弈 由多方共同对数据背书的数据存储工具 区块链的核心技术包含块链式存储 点对点通讯 密码学 共识机制 智能合约等 区块链是利用块链式数据结构来验证与存储数据 利用分布式节点共识算法来生成和更新
  • myBatis的xml大于小于不等于模糊查询

    and o create time lt endTime jdbcType TIMESTAMP 小于 and o create time gt startTime jdbcType TIMESTAMP 大于 and i status fla
  • Multimedia Tools and Applications(MTAP)期刊投稿经验分享

    Multimedia Tools and Applications ISSN号 1380 7501 2022年影响因子 2 577 出版社 Springer US 学科分类 计算机科学 工程技术 中科院4区 JCR Q2 CCFC 我投递的
  • 达芬奇无法播放视频,黑屏,不能预览画面

    说一下其中一个原因 是因为用了像是xdisplay super display这类软件 他们会安装一个显卡驱动而这个驱动就会导致这个问题 方法很简单 在设备管理器里面 显示卡一览 卸载掉除了你的电脑显卡以外的虚拟显卡驱动
  • element ui 中table表格刷新、input输入框添加enter触发搜索、连续点击的处理办法

    8 25小结 1 table表格刷新 elementy ui有一个v loading 我们可以给它绑定一个布尔值 truer就是转圈圈 false就是停止转圈圈 在刷新按钮上绑定一个事件来控制这个布尔值的改变 但是需要加一个定时器才能看出来
  • spring-boot-maven-plugin爆红解决方案,亲测有效

    报错信息提示如下 Plugin org springframework boot spring boot maven plugin not found 我使用idea中的spring initialer 来创建的 maven项目 但是在下载
  • 揭秘——STL空间配置器

    为什么要有空间配置器呢 这主要是从两个方面来考虑的 1 小块内存带来的内存碎片问题 单从分配的角度来看 由于频繁分配 释放小块内存容易在堆中造成外碎片 极端情况下就是堆中空闲的内存总量满足一个请求 但是这些空闲的块都不连续 导致任何一个单独
  • java中常见的异常类型

    Throwable 类是 Java 语言中所有错误或异常的超类 只有当对象是此类 或其子类之一 的实例时 才能通过 Java 虚拟机或者 Java throw 语句抛出 类似地 只有此类或其子类之一才可以是 catch 子句中的参数类型 两
  • 基于MATLAB的多聚类相位展开算法实现

    基于MATLAB的多聚类相位展开算法实现 相位展开是一种常见的信号处理算法 用于从相位差模糊的信号中恢复出准确的相位信息 多聚类相位展开算法是相位展开的一种改进方法 能够有效处理多个相位聚类的情况 本文将介绍如何使用MATLAB实现多聚类相
  • 【转载】Parameter must be a descendant of this view问题的解决方案

    转载 原文链接为 http www cnblogs com monodin p 3675040 html 关于ViewFlow和GridView嵌套导致Parameter must be a descendant ofthis view问题
  • arcgis图不见了_arcgis的左边图层边栏不见了怎么弄出来

    1 要加载使用 空间分析模块 首先得在ArcMap中执行菜单命令 在扩展模块管理窗口中 将 空间分析 spatial analyst 前的检查框打勾 然后 在ArcMap 工具栏的空白区域点右键 在出现的右键菜单中找到 空间分析 spati
  • maven springmvc hibernate shiro 集成

    最近项目需要进行高要求的Web权限管理 在比较Spring security和Shiro之后由于Shiro更大的灵活度和更强的配置性选择了Shiro 不过官方的文档写的对于集成spring不太清楚 尤其是Realm怎样实现 因此 在查阅一系
  • pandas安装完成后,报错:ImportError

    安装完pandas后 在使用时 发现需要更新numpy 系统自带的版本是1 12 1 执行 pip install U numpy 安装成功 Traceback most recent call last File D Anaconda3
  • vue3 实现点击可左右滑动

    具体代码如下
  • WINDOWS的远程桌面。

    http baike baidu com view 372045 htm 1 远程桌面的功能 远程桌面连接组件是从Windows 2000 Server开始由微软公司提供的 在WINDOWS 2000 SERVER中他不是默认安装的 该组件
  • Flutter 页面跳转和数据传值 pop回指定页面(路由实践)

    flutter搭建app 感觉相对简化了很多 布局核心就是万事皆widget 在之前我们不管是iOS 安卓原生 还是rn 我们在页面跳转和回转 我们都要对页面进行管理 从iOS 到安卓 到rn 路由被强调话了 web前端的一些重要设计思想被