当前位置: 首页 > news >正文

flutter路由跳转

Navigator.of(context).push(); //路由跳转(模块方式)

Navigator.of(context).push(MaterialPageRoute(builder: (BuildContext context) {return const Page() ;//Page()指页面},
))

Navigator.pushNamed(context, "/") //路由跳转(路由方式)

Navigator.pop(context)//返回上级

路由对象  widget

获取/使用路由参数 (widget.id / widget.title)     使用${widget.title}

1.基本路由

button按钮点击跳转示例(传参)

//button按钮点击事件  
//在button页面内引入Page 
//import './page.dart';
IconButton(onPressed: () => {Navigator.of(context).push(MaterialPageRoute(builder: (BuildContext context)=>const PageWidget(title:'小刀刀',id:12);))},icon: const Icon(Icons.keyboard_arrow_right), //设置图标
)//page页面
import 'package:flutter/material.dart';class PageWidget extends StatefulWidget {final String title;final int id;const PageWidget({super.key, this.title = "我是系统设置", required this.id});@overrideState<PageWidget> createState() => _PageWidgetState();
}class _PageWidgetState extends State<PageWidget> {String str = '';@overridevoid initState() {super.initState();//根据传递的id参数, 格式化数据str = "传递参数为${widget.id}";}@overrideWidget build(BuildContext context) {return Scaffold(floatingActionButton: FloatingActionButton(onPressed: () => Navigator.pop(context),child: const Icon(Icons.arrow_left_outlined),),appBar: AppBar(title: const Text("路由传参"),centerTitle: true,),body: Center(child: Text("${widget.title}:$str",style: const TextStyle(color: Colors.pink))),);}
}

2.命名路由-不携带参数

Navigator.pushNamed(context, "/") //路由跳转(路由方式)

在main.dart的MaterialApp的routes中配置整体路由 格式routes:{key:()=>Widget(),....}

initialRoute默认路由

//main.dart
void main() {runApp(MaterialApp(title: 'contaniner', initialRoute: "/", routes: {"/": (context) => const HomeWidget(),"/page": (context) => const PageWidget(),}));
}//home.dartimport 'package:flutter/material.dart';class HomeWidget extends StatefulWidget {const HomeWidget({super.key});@overrideState<HomeWidget> createState() => _HomeWidgetState();
}class _HomeWidgetState extends State<HomeWidget> {@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: const Text("首页"),centerTitle: true,),body: ElevatedButton(onPressed: () => Navigator.pushNamed(context, "/page"),child: const Text("我是命名路由"),),);}
}//page页面
import 'package:flutter/material.dart';class PageWidget extends StatefulWidget {const PageWidget({super.key});@overrideState<PageWidget> createState() => _PageWidgetState();
}class _PageWidgetState extends State<PageWidget> {@overrideWidget build(BuildContext context) {return Scaffold(floatingActionButton: FloatingActionButton(onPressed: () => Navigator.pop(context),child: const Icon(Icons.arrow_left_outlined),),appBar: AppBar(title: const Text("命名路由"),centerTitle: true,),body: Center(child: Text("我是Page页面")),);}
}

3.命名路由-传参

注意点:

A.创建路由Map

B.main.dart的MaterialApp添加onGenerateRoute

C.接收使用参数:

final Map arguments;

const PageWidget({super.key, required this.arguments });

print(widget.arguments);

//main.dart
import 'package:flutter/material.dart';
import './router/page.dart';
import './router/home.dart';void main() {runApp(MyApp());
}class MyApp extends StatelessWidget {const MyApp({super.key});@overrideWidget build(BuildContext context) {final Map _routerMap = {"/": (context) => HomeWidget(),"/page": (context, {arguments}) => PageWidget(arguments: arguments),};return MaterialApp(title: 'contaniner',initialRoute: "/",onGenerateRoute: (RouteSettings settings) {//settings.name 路由地址//settings.arguments  携带参数// 统一处理final String? name = settings.name;final Function? pageContentBuilder = _routerMap[name];if (pageContentBuilder != null) {if (settings.arguments != null) {final Route route = MaterialPageRoute(builder: (context) =>pageContentBuilder(context, arguments: settings.arguments));return route;} else {final Route route = MaterialPageRoute(builder: (context) => pageContentBuilder(context));return route;}}return null;},);}
}//home.dartimport 'package:flutter/material.dart';class HomeWidget extends StatefulWidget {const HomeWidget({super.key});@overrideState<HomeWidget> createState() => _HomeWidgetState();
}class _HomeWidgetState extends State<HomeWidget> {@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: const Text("首页"),centerTitle: true,),body: ElevatedButton(onPressed: () => Navigator.pushNamed(context, "/page",arguments: {"title": '我是命名路由传值', "id": 20}),child: const Text("我是命名路由传参"), //设置图标),);}
}//page.dart
import 'package:flutter/material.dart';class PageWidget extends StatefulWidget {//接收参数final Map arguments;const PageWidget({super.key, required this.arguments });@overrideState<PageWidget> createState() => _PageWidgetState();
}class _PageWidgetState extends State<PageWidget> {@overridevoid initState() {super.initState();// str = "传递参数为${widget.id}";print(widget.arguments);}@overrideWidget build(BuildContext context) {return Scaffold(floatingActionButton: FloatingActionButton(onPressed: () => Navigator.pop(context),child: const Icon(Icons.arrow_left_outlined),),appBar: AppBar(title: const Text("Page页面"),centerTitle: true,),body:  Text("${widget.arguments}"),);}
}

相关文章:

flutter路由跳转

Navigator.of(context).push(); //路由跳转(模块方式) Navigator.of(context).push(MaterialPageRoute(builder: (BuildContext context) {return const Page() ;//Page()指页面}, )) Navigator.pushNamed(context, "/") //路由跳转(路由方式) Navigator.pop(cont…...

微服务项目小结1

01.微服务的概念 单体、分布式、集群 (面试用到)微服务把之前的大的应用&#xff0c;按照业务功能拆分成若干个小的模块&#xff0c;每个模块都是独立的开发&#xff0c;测试&#xff0c;上线&#xff0c;维护缺点: 开发成本高&#xff0c;众多服务出错的处理(容错),分布式事务…...

【小熊猫 ide】更新支持mingw 支持c++20

没有format 头文件 GCC版本对C++的支持情况即使我使用11,也没有format 头文件小熊猫 ide https://wwe.lanzoui.com/b01os0mwd最新11可以自己更新https://royqh1979.gitee.io/redpandacpp/docsy/docs/gcc13 才支持format [7GCC 13 has added support for std::format.](https:/…...

ESD保护二极管ESD9B3.3ST5G 以更小的空间实现强大的保护 车规级TVS二极管更给力

什么是汽车级TVS二极管&#xff1f; TVS二极管是一种用于保护电子电路的电子元件。它主要用于电路中的过电压保护&#xff0c;防止电压过高而损坏其他部件。TVS二极管通常被称为“汽车级”是因为它们能够满足汽车电子系统的特殊要求。 在汽车电子系统中&#xff0c;由于车辆启…...

SAP BTP云上一个JVM与DB Connection纠缠的案例

前言 最近在CF (Cloud Foundry) 云平台上遇到一个比较经典的案例。因为牵扯到JVM &#xff08;app进程&#xff09;与数据库连接两大块&#xff0c;稍有不慎&#xff0c;很容易引起不快。 在云环境下&#xff0c;有时候相互扯皮的事蛮多。如果是DB的问题&#xff0c;就会找DB…...

Linux进程的基本概念

冯诺依曼体系结构 我们常见的计算机&#xff0c;如笔记本。我们不常见的计算机&#xff0c;如服务器&#xff0c;大部分都遵守冯诺依曼体系。 截至目前&#xff0c;我们所认识的计算机&#xff0c;都是有一个个的硬件组件组成 输入单元&#xff1a;包括键盘 , 鼠标&#xf…...

设计模式深度解析:AI如何影响装饰器模式与组合模式的选择与应用

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》《MYSQL应用》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 AI如何影响装饰器模式与组合模式的选择与应用 在今天这个快速发展的技术时代&#…...

JAVA面试大全之微服务篇

目录 1、Spring Cloud 1.1、什么是微服务?谈谈你对微服务的理解? 1.2、什么是Spring Cloud? 1.3、springcloud中的组件有那些? 1.4、具体说说SpringCloud主要项目...

WiFiSpoof for Mac wifi地址修改工具

WiFiSpoof for Mac&#xff0c;一款专为Mac用户打造的网络隐私守护神器&#xff0c;让您在畅游互联网的同时&#xff0c;轻松保护个人信息安全。 软件下载&#xff1a;WiFiSpoof for Mac下载 在这个信息爆炸的时代&#xff0c;网络安全问题日益凸显。WiFiSpoof通过伪装MAC地址&…...

14 - grace数据处理 - 泄露误差改正 - 空域滤波法(Mascon法)

@[TOC](grace数据处理 - 泄露误差改正 - 空域滤波法(Mascon法)) 空域法的基本思想是假设地面某区域的质量变化是由一系列位置已知、质量未知的质量块(小范围区域)引起的,那么将GRACE反演的结果归算到n个质量块上的过程就是泄露信号恢复的过程。个人理解是这样的:假定已知研…...

openGauss MySQL兼容性增强

MySQL兼容性增强 可获得性 本特性自openGauss 3.0.0版本开始引入。 特性简介 本特性主要从以下几方面增强openGauss与MySQL的兼容性&#xff08;只列举部分典型语法&#xff0c;详情请参见《数据迁移指南》中“MySQL兼容性说明”章节&#xff09;&#xff1a;。 支持用户锁…...

【跟小嘉学 Linux 系统架构与开发】二、Linux发型版介绍与基础常用命令介绍

系列文章目录 【跟小嘉学 Linux 系统架构与开发】一、学习环境的准备与Linux系统介绍 【跟小嘉学 Linux 系统架构与开发】二、Linux发型版介绍与基础常用命令介绍 文章目录 系列文章目录[TOC](文章目录) 前言一、 Linux 发行版(Linux distribution)介绍二、Centos 虚拟机初始化…...

EMD关于信号的重建,心率提取

关于EMD的俩个假设&#xff1a; IMF 有两个假设条件&#xff1a; 在整个数据段内&#xff0c;极值点的个数和过零点的个数必须相等或相差最多不能超过一 个&#xff1b;在任意时刻&#xff0c;由局部极大值点形成的上包络线和由局部极小值点形成的下包络线 的平均值为零&#x…...

HEVC的Profile和Level介绍

文章目录 HEVCProfile&#xff08;配置&#xff09;&#xff1a;Level&#xff08;级别&#xff09;&#xff1a;划分标准 HEVC HEVC&#xff08;High Efficiency Video Coding&#xff09;&#xff0c;也称为H.265&#xff0c;是一种视频压缩标准&#xff0c;旨在提供比先前的…...

Springboot Thymeleaf 实现数据添加、修改、查询、删除

1、引言 在Spring Boot中使用Thymeleaf模板引擎实现数据的添加、修改、查询和删除功能&#xff0c;通常步骤如下&#xff1a; 在Controller类中&#xff0c;定义处理HTTP请求的方法。创建Thymeleaf模板来处理表单的显示和数据的绑定。 2、用户数据添加 1、 在Controller类中…...

关于 UnityEditorWindow

想要使用UnityEditorWindow作为调试窗口吗&#xff1f; 这样做可以很方便的针对游戏中的重要对象做调试。 但是有一个很不方便的地方&#xff0c;OnGUI 的刷新频率不高&#xff0c;或者说需要鼠标点击之后才会重绘&#xff0c;如何解决这一问题&#xff1f; 可以如下操作&am…...

小狐狸JSON-RPC:wallet_addEthereumChain(添加指定链)

wallet_addethereumchain&#xff08;添加网络&#xff09; var res await window.ethereum.request({"method": "wallet_addEthereumChain","params": [{"chainId": "0x64", // 链 ID &#xff08;必填&#xff09;"…...

Pandas | value_counts() 的详细用法

value_counts() 函数得作用 用来统计数据表中&#xff0c;指定列里有多少个不同的数据值&#xff0c;并计算每个不同值有在该列中的个数&#xff0c;同时还能根据指定得参数返回排序后结果。 返回得是Series对象 value_counts(values,sortTrue, ascendingFalse, normalizeFal…...

上岸美团了!

Hello&#xff0c;大家好&#xff0c;最近春招正在如火如荼&#xff0c;给大家分享一份美团的面经&#xff0c;作者是一份某双非的硕&#xff08;只如初见668&#xff09;&#xff0c;刚刚通过了美团的3轮面试&#xff0c;已经拿到offer&#xff0c;以下是他的一些分享。 一面&…...

Gemma开源AI指南

近几个月来&#xff0c;谷歌推出了 Gemini 模型&#xff0c;在人工智能领域掀起了波澜。 现在&#xff0c;谷歌推出了 Gemma&#xff0c;再次引领创新潮流&#xff0c;这是向开源人工智能世界的一次变革性飞跃。 与前代产品不同&#xff0c;Gemma 是一款轻量级、小型模型&…...

Qwen3-32B内容创作应用:自动生成文案、报告、邮件

Qwen3-32B内容创作应用&#xff1a;自动生成文案、报告、邮件 1. 为什么选择Qwen3-32B进行内容创作 在当今内容为王的时代&#xff0c;企业每天都需要产出大量高质量的文字内容。从营销文案到产品说明&#xff0c;从客户邮件到内部报告&#xff0c;文字创作已经成为企业运营中…...

ComfyUI-Easy-Use:如何高效管理GPU资源并优化深度学习推理性能

ComfyUI-Easy-Use&#xff1a;如何高效管理GPU资源并优化深度学习推理性能 【免费下载链接】ComfyUI-Easy-Use In order to make it easier to use the ComfyUI, I have made some optimizations and integrations to some commonly used nodes. 项目地址: https://gitcode.c…...

COMSOL:模拟多尺度扩散模型下的流体运动与浆液扩散

COMSOL COMSOL模拟不同扩散模型下煤粒吸附/解吸扩 散 comsol仿真模拟电双层纳米电极&#xff0c;扩散双电层耦 合了Nernst-Planck方程和泊松方程。 comsol二 氧化碳混相驱替&#xff0c;多孔介质驱替&#xff0c;油气&#xff0c;扩散&#xff0c; 考虑浓度变化&#xff0c;速度…...

DanKoe 视频笔记:重塑自我:如何摆脱糟糕的生活状态

在本教程中&#xff0c;我们将探讨为何生活可能陷入困境&#xff0c;并学习如何通过一系列有意识的微小选择、提升个人标准以及利用互联网的力量来重塑自我&#xff0c;最终走上价值创造者的道路。我们将分析问题的根源&#xff0c;并提供具体的行动步骤。 微小的选择&#xf…...

AI漫剧软件2025推荐,助力漫画创作高效产出

AI漫剧软件2025推荐&#xff0c;助力漫画创作高效产出在当今数字化时代&#xff0c;AI漫剧软件市场正蓬勃发展。据中国动漫协会《2025中国动漫产业发展报告》显示&#xff0c;2025年AI漫剧软件市场规模同比增长了45%&#xff0c;越来越多的创作者开始借助此类软件提升创作效率。…...

新手零基础入门:跟着快马生成的互动教程完成jdk17下载安装与第一个程序

作为一名Java初学者&#xff0c;第一次接触JDK安装可能会觉得有些迷茫。最近我在InsCode(快马)平台上尝试了一个JDK17安装教程项目&#xff0c;整个过程比我预想的要简单很多。下面就把我的学习笔记分享给大家&#xff0c;希望能帮助到同样刚入门的朋友。 JDK17下载步骤 首先需…...

Figma进阶协作与组件化实战

要系统掌握 Figma 的进阶功能&#xff0c;需要从协作、组件化、交互、变量化和设计系统等多个维度深入学习。这些功能共同构成了高效、专业设计工作流的核心。以下将结合具体操作和案例&#xff0c;详细解析关键进阶功能的使用方法。 一、高效协作与文件管理 Figma 的核心优势…...

用UE5动画蒙太奇制作连招系统:三连击案例+特效通知完整流程

UE5连招系统深度实战&#xff1a;从动画蒙太奇到特效联动的全流程设计 在动作角色扮演游戏&#xff08;ARPG&#xff09;开发中&#xff0c;连招系统是战斗体验的核心支柱。想象一下这样的场景&#xff1a;玩家按下攻击键触发第一段斩击&#xff0c;在收招前0.2秒内再次输入&a…...

零基础部署Ostrakon-VL-8B:用Chainlit前端,轻松实现智能图片分析

零基础部署Ostrakon-VL-8B&#xff1a;用Chainlit前端&#xff0c;轻松实现智能图片分析 1. 为什么你需要Ostrakon-VL-8B&#xff1f; 想象一下&#xff0c;你经营着一家连锁便利店&#xff0c;每天需要检查几十家门店的商品陈列、价格标签和卫生状况。传统方法是让店长拍照发…...

终极CoreUI Bootstrap管理模板:5个导航组件实战技巧提升用户体验

终极CoreUI Bootstrap管理模板&#xff1a;5个导航组件实战技巧提升用户体验 【免费下载链接】coreui-free-bootstrap-admin-template coreui/coreui-free-bootstrap-admin-template: CoreUI-Free-Bootstrap-Admin-Template 是一套免费的Bootstrap 4/5管理模板&#xff0c;包含…...