具体代码如下:

  _changeLocation(BuildContext context) async {// 1、异步的,通过await等待CityPage页面退出返回数据CityModel city = await NavigatorRoute.pushName(context, CityPage.routeName);if (city == null) {return;}// 2、这里用到了Provider,其中调用了notifyListeners(),通知监听者更新context.read<LangProvider>().setCityModel(city);}setCityModel(CityModel city) {_cityModel = city;notifyListeners();}

这里的坑点在于,CityPage中并没有监听LangProvider,但却在退出页面,走到setCityModel方法时,又build了一遍,导致页面退出过程中出现异常,页面飘红,虽然只是一闪而逝,并没有对功能造成影响,但个人感觉很不爽!

通过调试,发现问题出现在Route里面,在notifyListeners时,CupertinoPageRoute的build又会走一遍,页面又被创建了。

case CityPage.routeName:return CupertinoPageRoute(settings: RouteSettings(name: settings.name),builder: (context) {// push的时候会走一次,在pop后,notifyListeners时又走了一次return CityPage();},);

具体原因不明…

解决方案暂为:

_changeLocation(BuildContext context) async {CityModel city = await NavigatorRoute.pushName(context, CityPage.routeName);if (city == null) {return;}// 延迟设置下,否则退出来的页面会飘红Future.delayed(Duration(seconds: 1),(){context.read<LangProvider>().setCityModel(city);});}

flutter: Provider的坑 --- 退出页面时,StatefulWidget又会build一遍?相关推荐

  1. JS事件 卸载事件 当用户退出页面时(页面关闭、页面刷新等),触发onUnload事件,同时执行被调用的程序。注意:不同浏览器对onunload事件支持不同。...

    卸载事件(onunload) 当用户退出页面时(页面关闭.页面刷新等),触发onUnload事件,同时执行被调用的程序. 注意:不同浏览器对onunload事件支持不同. 如下代码,当退出页面时,弹出 ...

  2. 微信小程序退出页面时清除定时器

    由于小程序页面退出时,定时器和长连接等不会自动清除断开,所以需要我们在生命周期函数中手动清除 但是定时器定义在函数中,我们无法在函数外清除,所以为了解决这个问题,我们需要把定时器定义在data中 比如 ...

  3. 小程序退出页面时清除定时器

    由于小程序页面退出时,定时器和长连接等不会自动清除断开,所以需要我们在生命周期函数中手动清除 但是定时器定义在函数中,我们无法在函数外清除,所以为了解决这个问题,我们需要把定时器定义在data中 比如 ...

  4. 小程序内使用setInterval()循环执行,退出页面时停止

    正常使用setInterval()时,切换页面后会继续循环,今天碰到了,写下方法 data:{//data里面写一个表示循环的变量intervalinterval: "" }, o ...

  5. html离开页面时,js实现用户离开页面前提示是否离开此页面的方法(包括浏

    本文实例讲述了js实现用户离开页面前提示是否离开此页面的方法(包括浏览器按钮事件).分享给大家供大家参考.具体如下: 用户离开页面前,提示是否离开此页面(包括浏览器按钮事件) 如果在退出页面时需要弹出 ...

  6. Flutter由其他页面回到当前页面时监听并刷新当前页面的内容

    项目中经常遇到这样的场景,比如很多App都有的收藏.点赞列表等,当我们从收藏列表点击一个item项进入到详情页时,用户点击了取消收藏,那么当我们点击返回到收藏列表页时,App需要主动刷新收藏列表的数据 ...

  7. Flutter 集成腾迅 IM Demo 时不同的编译配置的连环坑 2021-12-17

    java_objectc java 坑一 minSdkVersion 19 ➜ java_objectc flutter run Multiple devices found: sdk gphone ...

  8. Flutter Provider状态管理-Consumer

    前言 如果对Consumer很了解的同学可以继续学习 Flutter Provider状态管理 - Selector 个人觉得Flutter的学习有三个很重要的阶段 widget的学习和使用 数据以及 ...

  9. Flutter Provider 异步通信、Provider状态管理

    题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精. Flutter是谷歌推出的最新的移动开发框架. [x1]微信公众号的每日提醒 随时随记 每日积累 随心而过 [x2]各种系列的视频教程 ...

最新文章

  1. pytest fixture执行顺序
  2. Python–新一代编程语言
  3. 【转载保存】Java丨jsoup网络爬虫登录得到cookie并带上cookie访问
  4. thymeleaf html模块化,SpringBoot中使用Thymeleaf模板开发的后台管理框架
  5. Kubernetes详解(十)——Pod对象高级控制命令
  6. Cocos2d-x 3.0 开发(四)使用CocoStudio创建UI并载入到程序中
  7. python+selenium 使用for循环,遍历 定位 获取 单个元素中想要的值
  8. java找不到符号IOException_BufferWriterTest.java:找不到符号
  9. Vue中文数组根据文字首字母拼音排序、筛选
  10. 重发布直连路由到 OSPF
  11. python自动化测试-最常用的自动化测试框架
  12. 美国计算机硕士要读多久,去美国读研究生需要多久 各专业时长一览
  13. Instance Segmentation by Jointly Optimizing Spatial Embeddings and Clustering Bandwidth【论文解读】
  14. React Api请求最佳实践react-query3使用教程(比swr更好用更强大)
  15. position属性与z-index属性详解,如何比较z-index值确定覆盖关系,为何z-index属性不生效。
  16. 计算机网络的五层模型和七层模型
  17. 低能耗配电开关 USB过流保护芯片USB限流保护SY6280
  18. 金蝶旗舰版4.0 供应链期末结账提示内存溢出
  19. [MIP技术分享] 织梦/DEDECMS改造MIP教程以及下载2
  20. python爬取腾讯新闻_Python 实现腾讯新闻抓取

热门文章

  1. android系统system镜像解包打包制作过程
  2. 海康SDK的NET_DVR_GET_FTPCFG_V40
  3. 农历公历万年历互查系统
  4. Cache poisoning
  5. SQLserver获取汉字的拼音码和五笔码
  6. C语言实现可伸缩的栈结构
  7. SQL50题(MySQL)
  8. 红皮书再总结——实例一
  9. docker 导致宿主机重启的解决方法
  10. 微信或QQ屏蔽域名,爆红域名如何在微信打开,如何进行微信域名防封?