Flutter didUpdateWidget 的使用问题 ( 为什么不建议重写)

2023-05-16

简单总结

以我的认知:

  1. 不要重写 didUpdateWidget
  2. 你需要重写,是否是你设计有问题
  3. 你确定要重写,且设计没问题。评论下大佬,我也学下这种case。

总结:

  1. 不要依赖于 didUpdateWidget 去发起UI状态变更,因为它的发起是不可控的。
    • 也就是不要重写,如果有必须重写的case 我们可以讨论下
  2. 状态的变更,应该依赖于 明确的指令
    • 主动调用 ViewModel的notification
    • Data驱动UI状态改变:
      • 在ViewModel中设置相应数据(开关、字符串…),
      • 先改变数据,然后notify
      • Widget被标记,下个周期就会build。在build方法中读取 ViewModel中的数值.
  3. 如果你重写了 didUpdateWidget 去改变UI状态,那就应该保证 它在任意时间、频率 去调用,都没问题。

原因:

  • 父Widget调用 setState, 就会引起子Widget的 didUpdateWidget 被调用。
    • 首先父widget,不关心子Widget didUpdateWidget 里干了什么,所以他可以随意更新,导致didUpdateWidget被任意 时间、频率 调用。
  • 即便你知道了 父Widget 什么时候调用,那父Widget的父Widget呢?父父父Widget呢?
  • didUpdateWidget 之后 会调用build方法,所以如果你Widget传参变更了,他就会变更状态。

那什么时候该用呢

  • 嗯说是换监听的时候用,但我没实际遇到 这种case,就先不写了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flutter didUpdateWidget 的使用问题 ( 为什么不建议重写) 的相关文章

随机推荐

  • dependencyManagement和dependencies的区别

    dependencyManagement和dependencies的区别 参考 xff1a http zhaoshijie iteye com blog 2094478 pom xml中build标签 cpf2016的博客 CSDN博客 还
  • VScode播放网易云音乐(详细讲解)

    步骤 安装插件 xff1a VSC Netease Music 按shift 43 ctrl 43 p xff0c 输入 nete 出现下图 在按shift 43 ctrl 43 p xff0c 输入 nete 即可选择播放音乐 xff08
  • 安装和配置openssl

    Steps to download compile and install are as follows Note Replace 0 9 8e with your version number Downloading OpenSSL Ru
  • 自定义异常的使用

    下面是定义一个自定义异常的例子 xff0c 开发中可以以此作为参考 xff0c 根据项目需求编写自己的异常类 package com thinkgem wlw modules job service 自定义异常要继承 Exception 类
  • Ant中的classpath配置和使用

    Ant手册中配置classpath采用classpath标签 xff0c 可是我发现这样配置总是不好用 xff0c 还是直接用path设置classpath 一 xff09 设置classpath的方法 lt path id 61 34 p
  • 在运行jar包中正确读取资源文件

    可能有不少初学者会有这样的困惑 xff1a 在你的代码里调用了一些资源文件 xff0c 如图片 xff0c 音乐等 xff0c 在调试环境或单独运行的时候可以正常显示或播放 xff0c 而一旦打包到jar文件中 xff0c 这些东东就再也出
  • Ant发布war包时,任务卡住不动也不报错

    使用ant给项目发布环境时 xff0c 任务卡住不动也不报错 xff0c 在网上查询了些资料 xff0c 估计是ant执行任务时虚拟机内存不够用 针对这个问题 xff0c 可以通过以下两种方法解决 xff1a 1 xff09 在javac节
  • Oracle函数:sys_connect_by_path

    Oracle函数 sys connect by path 主要用于树查询 层次查询 以及 多列转行 其语法一般为 xff1a select sys connect by path column name 39 connect symbol
  • JVM(Java虚拟机)中进程工作目录讲解

    每次我们用Java命令运行我们的Java程序 xff0c 都会在JVM中开启一个进程 xff0c 对于每一个进程 xff0c 都会有一个相对应的工作目录 xff0c 这个工作目录在虚拟机初始化的时候就已经设置好了 xff0c 默认的情况下
  • Java调用外部程序命令时线程阻塞问题分析

    文章参考 http www qqread com java 2010 05 w493489 html 今天要写个远程重启服务的功能 xff0c 为了开发速度 xff0c 暂时定为Java代码 43 WMIC命令的方法 xff0c 简单的说
  • 打造一台“苹果范儿”的 Linux 系统,桌面美化攻略来了~

    点击关注公众号 xff0c 实用技术文章及时了解 目录 前言参考文章1 安装工具gnome tweaks2 修改窗口的按钮位置3 安装gnome扩展并设置4 美化桌面主题5 美化图标6 美化光标7 美化桌面背景 xff0c 锁屏和登陆页面8
  • Android中的onConfigurationChanged方法没有被调用的原因

    在 Android中的onConfigurationChanged方法没有被调用的原因有很多 而刚入门是经常犯的两个错误直接导致onConfigurationChanged方法没有被调用 下面看看程序 package cn com impo
  • 31岁转行的我

    2011年从一所普通二本师范大学毕业后先后从事了两年的教育工作 xff0c 但都没有挣到钱 xff0c 12年从深圳回到西安 xff0c 参加了几次公务员和事业单位的招考 xff0c 几次因0 1分的微小差距与国家饭碗擦肩而过 后来决定不再
  • 吴军老师《给中学生/大学生的书单》----Yohao整理

    2018 7 27记录 span class hljs code 给中学生的书单 span 一 文学类 18本 span class hljs code 1 金庸和琼瑶各一本 长篇的比短篇的好 span span class hljs co
  • javaweb利用钉钉机器人向钉钉群推送消息(解决中文乱码)

    可以参考 官方文档 xff1a https open doc dingtalk com docs doc htm spm 61 a219a 7629140 0 0 karFPe amp treeId 61 257 amp articleId
  • HDFS命令

    HDFS命令 1 hdfs基本操作 HDFS命令有两种风格 xff1a hadoop fs开头的 hdfs dfs开头的 两种命令均可使用 xff0c 效果相同 1 1 常用命令 如何查看hdfs或hadoop子命令的帮助信息 xff0c
  • 【Http2特性——Binary framing layer--push---HPACK】

    google文档 Http2 http2 引入了不兼容的new binary framing layer 所以大版本号增加了除非使用tcp socket xff0c 否则看不出http的版本区别 指Http向上层暴露的API接口一致 xff
  • 【《架构整洁之道》 读书笔记1----从部署的角度看依赖翻转】

    前言 看 架构整洁之道 之前 xff0c 依赖翻转理解 xff1a 依赖于抽象 xff0c 而不是依赖于实现 抽象 xff1a 比如水果店Apple Banana xff0c 抽象个水果接口 IFruit xff0c 用 IFruit 接口
  • 【架构 Flutter实践 Clean架构 && TDD测试驱动开发---1.0】

    2022 11 12 补充 最近在开发中尝试用了clean架构 xff0c 感觉就是 麻烦 太多模板代码 xff0c 很容易过度开发 我认为了解这些理念是很重要的 xff0c 但应该跟随你的项目 流程 进行调整 裁剪 如果你们的流程是 服务
  • Flutter didUpdateWidget 的使用问题 ( 为什么不建议重写)

    简单总结 以我的认知 xff1a 不要重写 didUpdateWidget你需要重写 xff0c 是否是你设计有问题你确定要重写 xff0c 且设计没问题 评论下大佬 xff0c 我也学下这种case 总结 xff1a 不要依赖于 didU