范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

你真的用对了Provider吗?可能你正在用它毁了App的性能

  对于Flutter开发的工程师们,肯定是对Provider很熟悉.
  这个是官方推荐的一个状态管理插件.对于 Flutter应用 Provider的出现是提高App性能一剂良药,也是管理状态的良好工具,可是Provider真的就是一个没有副作用的状态管理利器吗? 非也! 甚至他会毁掉你的App!
  完全无必要的无脑使用
  首先我们以一个widgets树为例来解说:
  图例说明:
  上图中 我们Widgets 分别是一个Root视图;还有 4个 子Widgets, 分别是:
  - Text
  - Chart1
  - Chart2
  - ListView
  子Widgets 它们分别对应数据源是:
  - $text
  - $chartData1
  - $chartData2
  - $list
  现在清楚我们的Widgets树层级结构和数据来源,我们开始使用Provider来进行 状态管理 ;首先我们应该在根Widget中设置 ChangeNotifierProvider 用来包裹数据源和组件视图;然后创建ChangeNotifier关联数据和变化通知;最后子视图就可以跨层级使用 ChangeNotifierProvider 包裹的数据源.简单说明一下代码逻辑:我们来看一下例子:
  构建一个ChangeNotifier:``` class ModelNotifier extends ChangeNotifier {   var text;   var chartData1;   var chartData2;   var list;   updateText(newText) {       text = newText ;       notifyListeners();   }   ...省略其余更新函数...   // 获取远程数据源 	getRemoteData() {} } ps: 伪代码 ```
  这是一个简单的页面级的例子:``` ... 省略非关键代码 return ChangeNotifierProvider( 	create: (context) => CartModel(), 	child: const RootWidget( 			Consumer(Text($text)), 			Collection(         Consumer(Chart1($chartData1)),         Consumer(Chart2($chartData2)), 			), 			Consumer(ListView($list)), 			), 		) ... 省略非关键代码 ps: 伪代码 ```
  以上我们将伪代码也粘贴了出来, 现在我们来演示一下数据从远程过来之后,Provider更新数据状态进而更新UI的流程.
  首先,假设这是一个接口返回回来的数据,这个时候 我们将 一并获取:$text、$chartData1、$chartData2、$list的数据,那么我们想要更新4个子Widget 就必须分别调用updateText以及其他的更新视图的函数,并传递从接口获取到新的数据;这个时候我们就会发现,Provider的使用就变的没有任何意义,甚至拖沓了更新UI的时间, 我们完全可以不使用Provider 处理数据,完全可以在根视图中采用 setStates 函数来刷新整个层级树,以为此时的Provider做的事情也是刷新整个层级树视图.所以分析可以知道有几个不合理的点:一个接口就获取到所有数据更新数据源的时候没有判断数据的更新内容
  改良
  我们就针对两个问题进行处理,第一我们分别对接口进行拆分若干:
  1. 获取Text 内容
  2. 获取 两个 Charts 的内容
  3. 获取 ListView 的内容
  这样我们可以在获取某些数据的时候对部分组件进行更新,且在同一时间减少了整体渲染带来的大量性能损耗.
  其次,对新数据的检查也是有必要的额,首先我们要增加数据新旧检验的机制,在通过检验,新数据符合渲染条件,就通知更新,否则就放弃本次的更新,这样也在一定程度上减少渲染次数.
  总结
  Provider的合理使用是提高整体性能的保证,我们在很多的静态数据面前,其实是没有使用Provider的必要的,甚至在一些只是更新数据而不涉及UI更新的地方也需要使用注意使用Provider的非更新UI机制用法,其次就是 针对接口的调整,在庞大的数据集合中,合理地拆分接口数据可以减少对流量的浪费.也可以让用户体验更上一个台阶.

90远红外蓄热棉马甲,带来寒冬温暖的呵护贝贝穿过自发热的保暖套装,喜欢接触听起来就科技感十足的服饰,最近朋友推荐一款90分远红外蓄热棉马甲,听着很炫,一起来看看吧这款马甲采用远红外功能的蓄热里布,内里选用在光照射下升温幅灵魂舞者扎堆,苏宁广场舞大赛top10芜湖占据半壁江山广场舞大家并不陌生,而中老年人和青少年一起跳广场舞却很少见,如果全国各地,男女老少全民参与的广场舞大赛,就更是罕见了!眼下,这样的稀奇事儿却正在你的身边发生。近日,苏宁易购舞出我世惊喜!二十多年后再读围城时隔20多年漫长岁月重新打开一本书,如同打开另一个完全不一样的感悟世界。最近有幸重新阅读了钱钟书老先生的围城,让我久久不能平静,因为它是一部以看似超然调侃语调述说人生无奈的笑面悲剧翰宇药业战略调整完成,多肽药物有望相继迎来收获期8月27日晚间,翰宇药业(300199。SZ)发布2021半年度报告,上半年公司实现营业收入36,618万元,净利润2,564万元,经营活动净现金流9,346万元。受部分老产品降价郑爽1。6亿片酬到表亲1。6万医疗费泪奔所想到的郑爽1。6亿片酬与表亲为1万6医疗费的泪奔所想到的。郑爽代孕风波后,事件持续发酵余温未散,张恒又再度爆料,郑爽收取1。6亿高价片酬。而且,为了逃避限薪令,郑爽方将片酬1。6亿拆分为华为nova9和红米K30S这两款手机,买哪款更好?2021年九月份华为如约给广大消费者带来了一款名为华为Nova9的手机机型,那么有就有小伙伴会问了华为nova9和红米K30S相比较该如何选择呢?关于这个问题,大家首先要问一下自己魅族18X和小米11青春版价格差不多,该如何选?细心的小伙伴一定会发现,这两款手机的机身都是非常轻薄的而且价格也差不多。那么应该如何从这两款手机中选择出一款适合自己的呢?就小芳个人而言,魅族18X这款手机的性价比更高就是了。但是oppoK9pro和红米K30S价格差别不大,该如何选?根据买新不买旧的原则,小芳个人是会更加推荐大家购oppoK9pro买这款手机的。不过话又说回来,每个人的需求是会存在差异的。那么做出的最终购机决定也是会有所不同的。鉴于这个情况小芳魅族18S和华为nova8Pro之间,选择哪款更合适?根据买新不买旧的原则,小芳个人是更加推荐大家购买魅族18S这款手机的。不过每个人的需求是不一样的,那么适合他的手机也是会有所不同的。鉴于这种情况,小芳建议大家还是要将自身的需求以及红米k40游戏版和iqooneo5相比较,该如何选?如果非要在这两款手机中选择一款手机进行购买,我个人是更加倾向于iqooneo5这款手机会更多一些的。我给到大家的理由有以下几点,大家不妨参考一下。理由一iqooneo5这款手机的屏新国都多轨拉动业绩增长,积极布局数字人民币试点新国都(300130)于10月26日发布了三季度报,报告显示公司2021年前三季度实现营业收入25。75亿元,同比增长40。37实现毛利润约5。69亿元,同比增长16。78实现净利
999元学生党主机搭配(上)如今的电子产品更新换代很快,如今intel跟AMD两家大厂每年的发布会都打的如火如荼,苏妈拳打intel脚踢英伟达,即便是两家每年新发布最入门的cpu搭配主板想要组合一台机箱价格也如何满足日益增强的个性化零售需求?斑马新一代智能终端给你答案在数字化的洪流之中,企业的商业模式也在发生着深刻变化。通过数字化升级,企业可以提供更高效的解决方案,覆盖和满足原有的商业痛点或隐藏的核心商业诉求。而现实情况是,组织到数字世界的旅程串起全网通5G和视频,面向年轻人的潮牌中兴天机Axon11SE问世6月1日,中兴手机举行线上新品发布会,正式推出新一代5G视频手机中兴天机Axon11SE5G,这也是国内首款支持四大运营商全频段全网通的5G双模手机。5G超级天线,更全更快更稳随着保利威企业直播高峰论坛开幕浪潮已至,企业直播迎来新增长8月20日,由保利威主办的2020年企业直播高峰论坛在上海开幕。保利威有赞百度SAPToBCGO致趣百川等300多家企业机构15演讲嘉宾和行业专家齐聚一堂,共襄盛会。本届论坛主题为群情振奋!史上最好看的手机横空出世,库克哭晕一款突如其来的发布会,落幕在了今天,小米正式发布了小米Civi。一款专为女性所打造的手机,就这样出现了在我们眼前。而此次小米civi作为女性手机,最大的亮点无疑就是颜值和自拍了!此哪些手机可以被称之为神机?iPhone4上榜,剩下这两款有争议在各种数码产品中,我们手中的手机,或许是更新换代速度最快的产品。原因很简单,第一,它的使用频率高,也因此更容易遭遇各种意外而提前寿终正寝。第二,科技进步速度快,更多更好更先进的手机从生态赋能到生态共享苏宁智能宣布五项Biu共享政策7月31日,第二届苏宁智能Biu生态大会在UDE2020国际显示博览会现场顺利举行。大会现场,苏宁发布了小Biu智慧屏Pro,以及全新的Biu开放战略,并与博泰车联网涂鸦智能等签署RFID高精度利器,斑马技术新型ATR7000RTLS读取器提升资产智能化通常来说,技术重要的并不只是技术本身,还有它的落地和应用价值。2020第十四届国际物联网博览会上,斑马技术公司携其一系列广泛的物联网解决方案亮相,覆盖医疗保健行政制造运输物流与零售顶尖云原生技术汇聚,KubeCon2020云原生线上峰会亮点频出2020年7月30日,由云原生基金会(CNCF)主办的世界顶级开源技术盛会CloudNativeOpenSourceVirtualSummitChina2020中国线上峰会第一天的苏宁小Biu智慧屏Pro问世主打多模态智慧交互7月31日,苏宁举办第二届Biu生态大会。会上,苏宁智能终端公司副总裁常江发布新一代智慧屏Pro。新品搭载了1080PAI全自动升降式摄像头,开发多模态智慧交互,内置AIoT智慧互融合工匠精神与前沿技术,戴森发布DigitalSlim轻量级无绳吸尘器今日,戴森DigitalSlim轻量无绳吸尘器于中国市场全球首发。它是戴森无绳吸尘器中重量最轻的一款产品,搭配吸头后仅重1。5千克,重量减轻30体积减小20,性能却依旧强劲。作为一