zoukankan      html  css  js  c++  java
  • flutter widget

    flutter三大金刚:widget/Element/RenderObject

    一个完整的idget工作流程:

    1.widget被加载时,创建出widget对应的element对象

    2.element通过rederobject实现绘制(实际看到的是renderobject绘制的画面)

    ⚠️:flutter中的widget可能被多个地方使用,而单个element只会被创建一次,所以widget和element是多对一的关系。

    而element和renderobject是一对一的关系。

    element就是buildcontext的实现类

    为什么要区分StatelessWidget和StatefulWidget,是因为如果widget不变,那么就使用statelesswidget。

    如果widget会变化,那么每次都重新生成太消耗性能。所以flutter将可变的widget定义为statefulwidget,它由widget(ui)和state(状态)两部分构成。

    其中widget负责实际的展示,state存储该widget的状态信息(在widget树中的位置/上下文等等)。

    改变了页面中的数据(state中的数据),需要刷新页面,那么只需要调用setState函数。

    它会调用build函数,按照state的当前数据重新生成一个widget。也就是说,state是复用的,widget始终是不可变的(因为更新直接丢弃旧的,生成新的)

    这也是为什么widget里面定义变量都写成final的原因(不可变)

  • 相关阅读:
    python两个dict相加
    rpm命令
    python logging模块不支持多进程写到一个log文件
    技术论坛地址收集
    visudo命令编辑修改/etc/sudoers配置文件
    健康是什么
    .net文件类型种种
    禁止脚本的运行
    静态页面的值传递
    datagrid数据导出到excel文件给客户端下载的几种方法 (转)
  • 原文地址:https://www.cnblogs.com/FdWzy/p/13366414.html
Copyright © 2011-2022 走看看