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

flutter路由传参接收时机

@overridevoidinitState(){super.initState();// 这里没有使用微任务,而是用的0帧Future.delayed(Duration.zero,(){dynamicobj=ModalRoute.of(context)?.settings.arguments;if(obj!=null){classId=obj["classId"];title=obj["title"];needPop=true;}else{classId=widget.classId;title=widget.title;}loadData(update:true);});}
// 使用微任务String_routeGetArguments="";@overridevoidinitState(){super.initState();/// 异步微任务接收Future.microtask((){if(ModalRoute.of(context)!=null){Map<String,dynamic>params=ModalRoute.of(context)!.settings.argumentsasMap<String,dynamic>;_routeGetArguments=params["index"].toString();///更新视图,要不然UI中不会显示出来,记住一定要写setState((){});}else{print("获取不到路由参数");}});}

在Flutter中,这里使用Future.delayed(Duration.zero)而不是微任务,主要是出于构建上下文生命周期的考虑。

为什么使用Future.delayed(Duration.zero)

  1. 避免在build期间访问路由参数

    • initState()中,widget尚未完成首次构建
    • 直接访问ModalRoute.of(context)可能会因为context还未完全建立而返回null
    • Future.delayed(Duration.zero)将执行推迟到当前帧构建完成后
  2. 确保context可用

    // 这样可能无法正确获取路由参数dynamicobj=ModalRoute.of(context)?.settings.arguments;// 可能为null// 使用延迟确保context已准备好Future.delayed(Duration.zero,(){dynamicobj=ModalRoute.of(context)?.settings.arguments;// 更安全});

微任务 vs 延迟零秒的区别

  • 微任务(scheduleMicrotask):在当前事件循环的微任务队列中执行,比UI渲染优先级更高
  • Future.delayed(Duration.zero):在下一个事件循环中执行,确保当前widget构建过程已完成

为什么不是微任务

在这个场景下,使用微任务可能过早执行,因为widget可能还在构建过程中。而Future.delayed(Duration.zero)确保在widget完全构建后再执行参数获取,这样ModalRoute.of(context)能够正确获取到路由参数。

这种方式是Flutter中处理"需要等待widget构建完成后再执行"的常见模式。

http://www.zskr.cn/news/157672.html

相关文章:

  • springboot基于vue框架的车牌识别的停车场管理系统(支持调用本地摄像头拍照识别)_0gw4421r
  • Open-AutoGLM模型高效推理技巧(99%的人不知道的优化秘诀)
  • PaddlePaddle槽位填充Slot Filling信息抽取实战
  • 智普清言AutoGLM究竟有多强?:3大核心技术解析与未来趋势预测
  • 智谱Open-AutoGLM PC安装踩坑总结,5大常见问题一次性解决
  • 【Open-AutoGLM调用全攻略】:无需API也能高效集成的5种实战方案
  • PaddlePaddle语音唤醒Hotword Detection低延迟实现
  • 智普轻言Open-AutoGLM深度拆解(90%人不知道的5个关键技术细节)
  • 【Open-AutoGLM模型实战指南】:手把手教你快速部署在线推理服务
  • springboot基于vue的摄影跟拍预约系统_0370ky6v
  • 2025薪酬绩效推荐企业TOP5权威榜单:专业的薪酬绩效咨询公司甄选指南 - mypinpai
  • CRMEB-PHP商品规格系统开发指南:多规格、多价格、多库存实现方案
  • 2025国内最新运动面料品牌 TOP5 评测!广州等地区优质供应商及厂家权威榜单发布,科技赋能重构运动服饰材料生态 - 全局中转站
  • 2025年专业文博展馆设计公司口碑排行榜,盛世笔特口碑出众 - myqiye
  • 智谱Open-AutoGLM核心技术解密(仅限早期开发者掌握)
  • Open-AutoGLM中的wegrl到底是什么:5大应用场景全面解读
  • 别再手动写代码了,Open-AutoGLM已上线GitHub,10倍提效不是梦!
  • 手把手教你调用Open-AutoGLM开放接口,新手也能10分钟上手
  • Open-AutoGLM性能优化秘籍(99%开发者忽略的3个关键点)
  • 为什么顶级科技公司都在秘密布局Open-AutoGLM?真相终于曝光
  • 2025最新!9个AI论文软件测评:本科生毕业论文写作全攻略
  • 2025年浙江靠谱老房翻新公司年度排名,二手房老房翻新哪家强? - 工业品牌热点
  • PaddlePaddle遥感图像分析土地利用分类
  • 2025年上海进出口权办理、营业执照加急办理公司推荐 - 工业设备
  • AI缺陷检测质量管控系统:给生产线装上“永不疲倦的质检员”
  • PaddlePaddle正则化技术应用:防止模型过拟合的有效方法
  • 2025最新!9款AI论文工具测评:本科生毕业论文写作全攻略
  • Java SpringBoot+Vue3+MyBatis 集团门户网站系统源码|前后端分离+MySQL数据库
  • AI质量管控系统:让产品缺陷无处藏身的“智能质检员
  • 教师薪酬管理系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】