flutter: Provider的坑 --- 退出页面时,StatefulWidget又会build一遍?
具体代码如下:
_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一遍?相关推荐
- JS事件 卸载事件 当用户退出页面时(页面关闭、页面刷新等),触发onUnload事件,同时执行被调用的程序。注意:不同浏览器对onunload事件支持不同。...
卸载事件(onunload) 当用户退出页面时(页面关闭.页面刷新等),触发onUnload事件,同时执行被调用的程序. 注意:不同浏览器对onunload事件支持不同. 如下代码,当退出页面时,弹出 ...
- 微信小程序退出页面时清除定时器
由于小程序页面退出时,定时器和长连接等不会自动清除断开,所以需要我们在生命周期函数中手动清除 但是定时器定义在函数中,我们无法在函数外清除,所以为了解决这个问题,我们需要把定时器定义在data中 比如 ...
- 小程序退出页面时清除定时器
由于小程序页面退出时,定时器和长连接等不会自动清除断开,所以需要我们在生命周期函数中手动清除 但是定时器定义在函数中,我们无法在函数外清除,所以为了解决这个问题,我们需要把定时器定义在data中 比如 ...
- 小程序内使用setInterval()循环执行,退出页面时停止
正常使用setInterval()时,切换页面后会继续循环,今天碰到了,写下方法 data:{//data里面写一个表示循环的变量intervalinterval: "" }, o ...
- html离开页面时,js实现用户离开页面前提示是否离开此页面的方法(包括浏
本文实例讲述了js实现用户离开页面前提示是否离开此页面的方法(包括浏览器按钮事件).分享给大家供大家参考.具体如下: 用户离开页面前,提示是否离开此页面(包括浏览器按钮事件) 如果在退出页面时需要弹出 ...
- Flutter由其他页面回到当前页面时监听并刷新当前页面的内容
项目中经常遇到这样的场景,比如很多App都有的收藏.点赞列表等,当我们从收藏列表点击一个item项进入到详情页时,用户点击了取消收藏,那么当我们点击返回到收藏列表页时,App需要主动刷新收藏列表的数据 ...
- Flutter 集成腾迅 IM Demo 时不同的编译配置的连环坑 2021-12-17
java_objectc java 坑一 minSdkVersion 19 ➜ java_objectc flutter run Multiple devices found: sdk gphone ...
- Flutter Provider状态管理-Consumer
前言 如果对Consumer很了解的同学可以继续学习 Flutter Provider状态管理 - Selector 个人觉得Flutter的学习有三个很重要的阶段 widget的学习和使用 数据以及 ...
- Flutter Provider 异步通信、Provider状态管理
题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精. Flutter是谷歌推出的最新的移动开发框架. [x1]微信公众号的每日提醒 随时随记 每日积累 随心而过 [x2]各种系列的视频教程 ...
最新文章
- pytest fixture执行顺序
- Python–新一代编程语言
- 【转载保存】Java丨jsoup网络爬虫登录得到cookie并带上cookie访问
- thymeleaf html模块化,SpringBoot中使用Thymeleaf模板开发的后台管理框架
- Kubernetes详解(十)——Pod对象高级控制命令
- Cocos2d-x 3.0 开发(四)使用CocoStudio创建UI并载入到程序中
- python+selenium 使用for循环,遍历 定位 获取 单个元素中想要的值
- java找不到符号IOException_BufferWriterTest.java:找不到符号
- Vue中文数组根据文字首字母拼音排序、筛选
- 重发布直连路由到 OSPF
- python自动化测试-最常用的自动化测试框架
- 美国计算机硕士要读多久,去美国读研究生需要多久 各专业时长一览
- Instance Segmentation by Jointly Optimizing Spatial Embeddings and Clustering Bandwidth【论文解读】
- React Api请求最佳实践react-query3使用教程(比swr更好用更强大)
- position属性与z-index属性详解,如何比较z-index值确定覆盖关系,为何z-index属性不生效。
- 计算机网络的五层模型和七层模型
- 低能耗配电开关 USB过流保护芯片USB限流保护SY6280
- 金蝶旗舰版4.0 供应链期末结账提示内存溢出
- [MIP技术分享] 织梦/DEDECMS改造MIP教程以及下载2
- python爬取腾讯新闻_Python 实现腾讯新闻抓取