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

网站首页样式电子图书网站开发的目的

网站首页样式,电子图书网站开发的目的,wordpress更改主题名称,wordpress打开慢目录 初始化构造函数initStatedidChangeDependencies 运行时builddidUpdateWidget 组件移除deactivatedisposereassemble 函数生命周期说明#xff1a;实际场景App生命周期 前言#xff1a;生命周期是一个组件加载到卸载的整个周期#xff0c;熟悉生命周期可以让我们在合适的… 目录 初始化构造函数initStatedidChangeDependencies 运行时builddidUpdateWidget 组件移除deactivatedisposereassemble 函数生命周期说明实际场景App生命周期 前言生命周期是一个组件加载到卸载的整个周期熟悉生命周期可以让我们在合适的时机做该做的事情 flutter中的State生命周期和android以及React Native的生命周期类似。 大致可以分为3个阶段 初始化运行时状态变化组件移除 初始化 State初始化时会依次执行 构造函数 initState didChangeDependencies Widget build , 此时页面加载完成。 然后我们看一下每个函数的意义 构造函数 调用次数1次 这个函数严格意义上来讲不属于生命周期的一部分因为这个时候State的widget属性为空无法在构造函数中访问widget的属性 。但是构造函数必然是要第一个调用的。可以在这一部分接收前一个页面传递过来的数据。 initState Called when this object is inserted into the tree. 调用次数1次 当插入渲染树的时候调用这个函数在生命周期中只调用一次。这里可以做一些初始化工作比如初始化State的变量。 didChangeDependencies Called when a dependency of this [State] object changes. 初始化时在initState()之后立刻调用 当依赖的InheritedWidget rebuild,会触发此接口被调用 实测在组件可见状态变化的时候会调用 运行时 build 调用次数多次 初始化之后开始绘制界面当setState触发的时候会再次被调用 didUpdateWidget Called whenever the widget configuration changes. 祖先节点rebuild widget时调用 .当组件的状态改变的时候就会调用didUpdateWidget. 理论上setState的时候会调用但我实际操作的时候发现只是做setState的操作的时候没有调用这个方法。而在我改变代码hot reload时候会调用 didUpdateWidget 并执行 build… 实际上这里flutter框架会创建一个新的Widget,绑定本State并在这个函数中传递老的Widget。 这个函数一般用于比较新、老Widget看看哪些属性改变了并对State做一些调整。 需要注意的是涉及到controller的变更需要在这个函数中移除老的controller的监听并创建新controller的监听。 组件移除 组件移除例如页面销毁的时候会依次执行deactivate dispose deactivate Called when this object is removed from the tree. 在dispose之前会调用这个函数。当组件卸载时会先一步dispose调用。 dispose Called when this object is removed from the tree permanently. 调用次数1次 一旦到这个阶段组件就要被销毁了这个函数一般会移除监听清理环境。 reassemble hot reload调用 函数生命周期说明 实际场景 假设我们从A页面跳转到B页面 那么AB页面的生命周期会是怎样的呢 B页面进入初始化状态依次执行4个函数构造函数 initState didChangeDependencies Widget build , 此时页面加载完成,进入运行态。 此时A页面依次执行deactivate build函数。注意 此时A页面并未卸载。 然后我们假设B页面只有一个按钮点击B页面中的按钮改变按钮的文字会执行widget的build方法 (理论上也应该执行didUpdateWidget但我这里没有)。 这时我们点击返回键从B页面返回到A页面。 A页面重新显示B页面开始卸载。 那么A先执行activate build 然后B页面依次执行deactivate dispose 。 此时A页面进入运行态B页面移除。 Tips: 下面内容来自咸鱼技术团队. 当ListView中的item滚动出可显示区域的时候item会被从树中remove掉此item子树中所有的state都会被disposestate记录的数据都会销毁item滚动回可显示区域时会重新创建全新的state、element、renderobject 使用hot reload功能时要特别注意state实例是没有重新创建的如果该state中存在一下复杂的资源更新需要重新加载才能生效那么需要在reassemble()添加处理不然当你使用hot reload时候可能会出现一些意想不到的结果例如要将显示本地文件的内容到屏幕上当你开发过程中替换了文件中的内容但是hot reload没有触发重新读取文件内容页面显示还是原来的旧内容. didChangeDependencies有两种情况会被调用。 创建时候在initState 之后被调用 在依赖的InheritedWidget发生变化的时候会被调用 正常的退出流程中会执行deactivate然后执行dispose。但是也会出现deactivate以后不执行dispose直接加入树中的另一个节点的情况。 这里的状态改变包括两种可能1.通过setState内容改变 2.父节点的state状态改变导致孩子节点的同步变化。 App生命周期 需要指出的是如果想要知道App的生命周期,那么需要通过WidgetsBindingObserver的didChangeAppLifecycleState 来获取。通过该接口可以获取是生命周期在AppLifecycleState类中。常用状态包含如下几个 一个实际场景中的例子 在不考虑suspending的情况下从后台切入前台生命周期变化如下: AppLifecycleState.inactive-AppLifecycleState.resumed; 从前台压后台生命周期变化如下 AppLifecycleState.inactive-AppLifecycleState.paused; class _MyWalletScreenState extends StateMyWalletScreenwith WidgetsBindingObserver {overridevoid initState() {super.initState();WidgetsBinding.instance.addObserver(this);}overridevoid dispose() {WidgetsBinding.instance.removeObserver(this);super.dispose();} void didChangeAppLifecycleState(AppLifecycleState state) async {if (state AppLifecycleState.resumed) {getData();}} }
http://www.w-s-a.com/news/537704/

相关文章:

  • 制作网站要多少钱seo是如何优化
  • 求个网站2020急急急做金融网站拘留多久
  • 网站后台管理系统怎么进seo网络推广外包公司
  • 中山市 做网站网站建设如何上传文件
  • 网站呢建设公众号制作要求
  • 网站备案证明在自己电脑上做网站
  • 沈阳旅游团购网站建设怎么制作网站搜索窗口
  • 做化学合成的网站有哪些枣庄住房和城乡建设局网站
  • 天猫优惠券网站怎么做的网络连接
  • 保定网站建设多少钱公司网页网站建设+ppt模板下载
  • 用户上传商品网站用什么做建设跳转公积金网站
  • 买程序的网站上海市网站建设公司
  • 南通网站建设排名公司哪家好wordpress网站图片迁移
  • 河南省汝州文明建设门户网站博客网站建设源码
  • 单位建设网站的请示手机移动端网站案例
  • 国内做网站的企业网站结构有哪些类型
  • 南通网站建设制作公司苏州好的网站公司名称
  • 咸阳做网站开发公司哪家好珠海公司制作网站
  • 深圳网站建设好不好医疗网站前置审批
  • 做ic什么网站好安溪网站建设
  • 网站建设 慕课企业文化标语经典
  • 做短视频的网站都有哪些简约 时尚 高端 网站建设
  • 浦口区网站建设售后服务建设一个网站多少钱
  • 做个小网站大概多少钱广州h5网站
  • 360免费建站视频wordpress标签显示图片
  • 创建简易个人网站国外做网站被动收入
  • 轻定制网站建设网页培训哪个机构好
  • 青岛海诚互联做网站好吗计算机软件开发培训机构
  • 德钦网站建设如何在网站上做用工登记
  • 创意品牌网站云服务