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

Flutter第十六节-----路由管理(2)

一.命名路由传递参数

●作用:通过路由传递参数是实现页面间数据通信的常用方式
●传递参数(命名路由):Navigator.pushNamed(context,地址,arguments:{参数)
●接收参数(命名路由):ModalRoute.of(context)?.settings.arguments
●接收时机:initState获取不到路由参数,放置在Future.microtask(异步微任务)中

import 'package:dio/dio.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; void main(List<String> args) { runApp(MainPage()); } class MainPage extends StatelessWidget { const MainPage({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return MaterialApp( home: ListPage(), initialRoute: "/list", routes: { "/list": (context) => ListPage(), "/detail": (context) => DetailPage(), }, ); } } class ListPage extends StatefulWidget { ListPage({Key? key}) : super(key: key); @override _ListPageState createState() => _ListPageState(); } class _ListPageState extends State<ListPage> { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text("列表页")), body: ListView.builder( itemCount: 100, padding: EdgeInsets.all(10), itemBuilder: (BuildContext context, int index) { return GestureDetector( //用于识别用户的按下 onTap: () { Navigator.pushNamed( context, "/detail", arguments: {"id": index + 1}, ); // Navigator.push( // context, // MaterialPageRoute(builder: (context) => DetailPage()), // ); }, child: Container( height: 100, margin: EdgeInsets.only(top: 10), color: Colors.blue, alignment: Alignment.center, child: Text( '列表项${index + 1}', style: TextStyle(color: Colors.white, fontSize: 16), ), ), ); }, ), ); } } class DetailPage extends StatefulWidget { DetailPage({Key? key}) : super(key: key); @override _DetailPageState createState() => _DetailPageState(); } class _DetailPageState extends State<DetailPage> { @override String _id = ""; void initState() { // TODO: implement initState super.initState(); Future.microtask(() { if (ModalRoute.of(context) != Null) { Map<String, dynamic> params = ModalRoute.of(context)!.settings.arguments as Map<String, dynamic>; print(params["id"]); _id = params["id"].toString(); setState(() {}); } }); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text("详情页")), body: Center( child: Column( children: [ TextButton( onPressed: () { Navigator.pop(context); }, child: Text("列表页$_id"), ), TextButton( onPressed: () { Navigator.pop(context); }, child: Text("返回上一个页面"), ), ], ), ), ); } }

二.基础路由传递参数

●传递参数(基础路由):通过组件构造函数传递参数-(父传子)
●接收参数(基础路由):通过组件构造函数接收参数-(父传子)
●接收时机:initState可获取到基础路由的构造函数传参

http://www.jsqmd.com/news/1247885/

相关文章:

  • AI生成网站架构解析与开发效率提升
  • 美度中国售后服务中心完整地址与热线电话实地考察报告_多信源验证(2026年7月最新) - 亨得利官方服务中心
  • Lotus扩散模型在单目深度估计中的应用与优化
  • 2026 推荐六盘水非急救长途转运|正规救护车跨省护送服务 - 官方推广
  • 2026年经典爬虫案例专栏|第1篇:Python爬虫基础入门与环境搭建
  • Java 二分查找实现(附完整思路)
  • 本体语义AI:让机器真正“读懂“业务的钥匙
  • 亲身探访绍兴亨得利名表服务中心|全新地址及售后电话(2026年7月更新) - 亨得利官方
  • 2026 推荐舟山非急救长途转运|正规救护车跨省护送服务 - 官方推广
  • 嵌入式Flash性能优化:预取缓冲与镜像模式实战解析
  • Flutter第十七节-----路由管理(3)
  • 幼儿园工作总结模板:PDCA循环与数据可视化实践
  • 032、YOLOv8改进实战:TripletAttention三重注意力机制原理与C2f_Triplet模块代码实现
  • Python毕设项目:基于 Python 的数字化音乐资源管理与播放平台 个性化音乐收藏与播放记录系统 (源码+文档,讲解、调试运行,定制等)
  • AI社交平台如何提升工作与学习效率
  • 卡萨帝冰箱CASARTE推出全国统一24小时售后服务电话人工上线2026最新公布 - 优企名品
  • AIGC助手如何提升内容创作效率与质量
  • 安阳文峰区新房除甲醛怎么选?多家深度对比测评,靠谱除醛门店首选安阳森家环保 - 专注室内空气检测治理
  • WT7015三功能手电筒芯片WT7015
  • 独立站供应链协同与订单履约效率研究——基于BBWEYY一体化后台的考察,含零代码SAAS、AI编程、源码定制交付
  • AI智能体的核心能力与工程实现详解
  • 深入解析MSPM0 RTC寄存器:从原理到实战,解决嵌入式时钟开发难题
  • AI大模型就业市场分析与技能指南
  • 想给爸妈补补身体,哪种奶源可追溯的羊奶粉靠谱一点 - 资讯在线
  • 深度学习模型压缩:稀疏计算与结构化剪枝实践
  • 形态学实战:基于形态学的图像噪声去除优化
  • 万国手表回收2026吉林市须知|毓典寄卖行本地实体回收门店 - 毓典寄卖行
  • 2026江苏公考备战,选对“封闭式基地班“到底有多重要?
  • 摄像头频繁重启、关键录像凭空消失?一份企业监控运维排障 + 改造全流程手册!
  • 技术解析|Google Gemini 3.6 正式发布!推理、代码、多模态全方位技术升级