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

免费的ppt模板下载网站有哪些焦作市网站建设科技

免费的ppt模板下载网站有哪些,焦作市网站建设科技,站长工具app,购物商场网站开发过程详细说明一 Widget Element RenderObject 之间的关系 1 Widget 在Flutter 中#xff0c;万物皆是Widget,无论是可见的还是功能型的。一切都是Widget. 官方文档中说的Widget 使用配置和状态来描述View 界面应该长什么样子。 它不仅可以表示UI元素#xff0c;也可以表示一些功能性的…一  Widget Element RenderObject 之间的关系 1   Widget 在Flutter 中万物皆是Widget,无论是可见的还是功能型的。一切都是Widget. 官方文档中说的Widget 使用配置和状态来描述View 界面应该长什么样子。 它不仅可以表示UI元素也可以表示一些功能性的组件如用于手势检测的 GestureDetector、用于APP主题数据传递的Theme、布局元素等等 两个重要的方法 一个是通过 createElement 来创建 Element 对象的 一个是根据 key 来决定更新行为的 canUpdate 方法。 在这个方法中会对比runtimeType 也就是widget 的类型和 key 是否相同 immutable abstract class Widget extends DiagnosticableTree {/// Initializes [key] for subclasses.const Widget({this.key});final Key? key;protectedfactoryElement createElement();/// A short, textual description of this widget.overrideString toStringShort() {final String type objectRuntimeType(this, Widget);return key null ? type : $type-$key;}overridevoid debugFillProperties(DiagnosticPropertiesBuilder properties) {super.debugFillProperties(properties);properties.defaultDiagnosticsTreeStyle DiagnosticsTreeStyle.dense;}overridenonVirtualbool operator (Object other) super other;overridenonVirtualint get hashCode super.hashCode;static bool canUpdate(Widget oldWidget, Widget newWidget) {return oldWidget.runtimeType newWidget.runtimeType oldWidget.key newWidget.key;}// Return a numeric encoding of the specific Widget concrete subtype.// This is used in Element.updateChild to determine if a hot reload modified the// superclass of a mounted elements configuration. The encoding of each Widget// must match the corresponding Element encoding in Element._debugConcreteSubtype.static int _debugConcreteSubtype(Widget widget) {return widget is StatefulWidget? 1: widget is StatelessWidget? 2: 0;} } 2   Element Element 就是一个Widget 的实例在树中详细的位置。 An instantiation of a Widget at a particular location in the tree 3 RenderObject 渲染树上的一个对象。负责具体布局和绘制这些事情。 4 结合图说一下其三者的关系 从创建到渲染的流程 根据Widget 生成Element,然后创建响应的RenderObject并且关联到Element.renderObject 属性。最后再通过RenderObject 来完成布局和绘制。 依赖关系 Element 树根据Widget 树生成而渲染树又依赖于widget 树。 5 一些小问题 5.1  widget 和 element 是一一对应的吗 为什么 答:是一一对应的。 因为 abstract class Widget 本身是一个抽象类这个抽象类中有一个抽象方法叫做createElement子类必须实现这个抽象方法所以是一一对应的。 5.2 widget 和 renderObject 是一一对应的吗 为什么 答不是的 因为只有这个widget 继承自RenderObjectWidget 的时候才会有对应的renderObject 像类似 Padding , Row,SizedBox,Center 这种组件继承自RenderObjectWidget的组件会有一一对应的关系 //class Padding extends SingleChildRenderObjectWidget// Padding();// class Flex extends MultiChildRenderObjectWidget// Row() 5.3 BuildContext 是什么 答是Element不管是StatefulWidget 还是StatelessWidget 都会重写父类的build 方法 build 方法传入的一个参数叫做BuildContext, 我们拿StatelessWidget来说其本身创建一个StatelessElement,而在这个Element内部重写StatelessElement父类的build方法而在这个build方法内部会调用_widget.build 方法并且把this传递进去。那么这个this 就是element 。 /// An [Element] that uses a [StatelessWidget] as its configuration. class StatelessElement extends ComponentElement {/// Creates an element that uses the given widget as its configuration.StatelessElement(StatelessWidget super.widget);overrideWidget build() (widget as StatelessWidget).build(this);overridevoid update(StatelessWidget newWidget) {super.update(newWidget);assert(widget newWidget);_dirty true;rebuild();} }5.4 Widget 频繁更改创建是否会影响性能复用和更新机制是什么样的 不会影响性能因为只是一些配置信息没有有布局渲染到页面上去。中间层Element 会通过widget 的runtimeType 和 Key 来对比是否进行更新操作。 5.5 Build 方法会在什么时候调用 Element 创建完毕之后会调用mount 方法对于非渲染的ComponentElement 来说mount主要执行的是Widget 中的build 方法。在StatelessElement 中直接使用的是 widget.build(this), 而在StatefullWidget 方法中通过的是state.build(this)。在StatefulElement 这个类中 初始化列表的给state 进行了赋值操作。通过widget调用createState方法之后把state赋值给自己的_state 属性。 StatefulElement(StatefulWidget widget) : _state widget.createState(), 5.6 createState 方法什么时候调用 答创建Element 的时候。 Flutter 会在遍历 Widget 树时调用 Widget 里面的 createElement 方法去生成对应节点的 Element 对象同时执行 StatefulWidget 里面的 createState 方法创建 state并且赋值给 Element 里的 _state 属性当前 widget 也同时赋值给了 state 里的_widgetstate 里面有个 widget 的get 方法可以获取到 _widget 对象。
http://www.w-s-a.com/news/94383/

相关文章:

  • 020网站开发微信公众号直接链接网站怎么做
  • 学做烘焙的网站某网站注册需要邮箱是怎么弄
  • 网站的特效代码公司网站开发的工作内容
  • 网站制作哪家好商城网站建设预算要多少钱
  • 怎么做律所的官方网站微网站可以做商城吗
  • 通用网站后台管理系统(php版)网站备案ip查询网站查询
  • 制作网站代码吗江阴网站建设推广
  • 汕头建网站wordpress文章网址采集
  • 十大景观设计网站用vue框架做的网站
  • 福建省建设监理网官方网站做外贸网站卖什么东西好
  • 公司做网站排名东莞关键词优化推广
  • 连云港做企业网站公司全网营销与seo
  • 电子毕业设计代做网站wordpress 插件放在那
  • 黄石规划建设局网站怎么做存储网站
  • 网站安装wordpress滨江网站建设
  • 河南官网网站建设一般使用的分辨率显示密度是
  • dedecms新网站 上传到万网的空间宝洁公司网站做的怎么样
  • 网站建设语录优惠券的网站怎么做的
  • 白山市住房和建设局网站有实力高端网站设计地址
  • 沧州网站建设制作设计优化深圳网站自然优化
  • 企业做网站 乐云seowordpress中修改html
  • 网站细节门户wordpress主题下载
  • 全景网站模版wordpress套餐
  • 华为云建网站dw制作一个手机网站模板
  • 定陶菏泽网站建设河北新出现的传染病
  • 商业网站建设案例教程郑州服装网站建设公司
  • 网站内容怎么做专业的企业管理软件
  • 深圳网站制作公司排名微网站和微信公共平台的区别
  • 权威的唐山网站建设扁平网站欣赏
  • 网站外链建设工作计划应用公园app免费制作