美文网首页
2020-11-03

2020-11-03

作者: 詹姆斯洪尼古拉斯利 | 来源:发表于2020-11-03 10:40 被阅读0次

    Flutter 学习打卡

    StatelessWidget, StatefullWidget

    StatelessWidget 无状态widget

    StatefullWidget 有状态widget

    <font color=ff4747> 无状态 </font>Widget, 一旦创建过后, 其状态不允许改动, 不可调用setState()刷新状态.(注: 只限制本身不可改变, 其父/子 widget 不会限制).

    <font color=ff4747> 有状态 </font>Widget, 创建过后, 可以通过setState()方法来改变其状态.

    StatelessWidget 的实现

    <font color=666666>在需要实现一个StatelessWidget组件的时候,声明一个class类StateLessDemo需要通过extends继承StatelessWidget,然后实现build方法,就可以创建一个无状态的Widget。这个Widget创建完成后,Widget的状态就固定了,当前Widget就是一个无状态的,当前Widget
    的内容固定,不可更改。

    注意: 如果无状态Widget里面有子Widget,并且子Widget是有状态的,则子Widget的内容是可以通过setState来更改的。无状态Widget影响的仅仅是自己是无状态的,不回影响他的父Widget和子Widget。

    无状态Widget是不能调用setState函数</font>

    StatefullWidget 的实现

    <font color=666666>StatefulWidget组件的实现相对于StatelessWidget来说,复杂那么一点点。首先也是要通过extends继承StatefulWidget,然后实现State createState()函数,实现createState的过程中,可以通过State来集成一个有状态的Widget。</font>


    Container 的decoration 属性

    decoration可以设置边框、背景色、背景图片、圆角等属性,非常实用。对于transform这个属性,一般有过其他平台开发经验的,都大致了解,这种变换,一般不是变换的实际位置,而是变换的绘制效果,也就是说它的点击以及尺寸、间距等都是按照未变换前的。
    但需要注意的是 deoration和 color: 背景颜色不能共存,二者同时只能有一个


    Expanded

    Expanded这个控件会把同级别的控件,在父控件中填充满整个父控件。

    Expanded组件可以使Row、Column、Flex等子组件在其主轴方向上展开并填充可用空间(例如,Row在水平方向,Column在垂直方向)。如果多个子组件展开,可用空间会被其flex factor(表示扩展的速度、比例)分割。

    Expanded组件必须用在Row、Column、Flex内,并且从Expanded到封装它的Row、Column、Flex的路径必须只包括StatelessWidgets或StatefulWidgets组件(不能是其他类型的组件,像RenderObjectWidget,它是渲染对象,不再改变尺寸了,因此Expanded不能放进RenderObjectWidget)。

    注意一点:在Row中使用Expanded的时候,无法指定Expanded中的子组件的宽度width,但可以指定其高度height。同理,在Column中使用Expanded的时候,无法指定Expanded中的子组件的高度height,可以指定宽度width。


    GridView, ListView

    GridView 将 widgets 排列为可滚动的网格. 与iOS中CollectionView类似

    ListView 将widget排列为可滚动列表, 与 tableView类似

    相关文章

      网友评论

          本文标题:2020-11-03

          本文链接:https://www.haomeiwen.com/subject/jzdbvktx.html