Flutter 6种构造函数详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flutter 6种构造函数详解相关的知识,希望对你有一定的参考价值。

参考技术A Flutter有生成构造函数、默认构造函数、命名构造函数、重定向构造函数、常量构造函数、工厂构造函数

生成构造函数是最常见的构造函数,即生成实体类对象。

如果未声明构造函数,则会提供默认构造函数。 默认构造函数没有参数,并调用父类无参数构造函数。

默认情况下,子类中的构造函数调用父类的未命名无参数构造函数。 父类的构造函数在子类构造函数体的开头被调用。 如果还使用初始化了列表,则会在调用父类构造函数之前执行。 执行顺序如下:

如果父类没有未命名的无参数构造函数,则必须手动调用父类中的一个构造函数。 在子类的构造函数体之后用冒号(:)指定父类构造函数

当需要定义一个有特别含义的构造函数的时候,可以通过命名构造 形式:构造函数.XXX来命名构造函数

有时构造函数需要重定向到同一个类中的另一个构造函数,在冒号后面用this:

如果你的类需要成为永远不会更改的对象,则可以使这些对象成为编译时常量。 定义const构造函数要确保所有实例变量都是final。

不用直接创建对象(可以通过调用其他构造函数创建)

Flutter-布局

参考技术A

flutter布局需要先了解flutter所有布局的widget,首先flutter布局分为Container、RenderObjectWidget和ParentDataWidget。而RenderObject中经常使用的有SingleChildRenderObjectWidget(单节点)和MultiChildRenderObjectWidget(多节点)。

flutter中基础的widget,可以为子节点设置内间距。当padding没有child的时候,它会产生一个宽为left+right,高为top+bottom的区域,当padding的child不为空的时候会将约束传递给child。一般在使用间距的地方使用。

设置child的对齐方式,并根据child的尺寸调整自身的尺寸。

设置透明度

用于矩形圆角裁剪组件

用于圆形裁剪,但是可以添加阴影和Z轴

给组件绘制区域大小

百分比布局,可以通过widthFactor或者heightFactor设置宽高占比

子组件叠加布局,也称绝对布局

mainAxisAlignment: start:顶头 center:居中 end:接尾 spaceAround:中间的孩子均分,两头的孩子空一半 spaceBetween:顶头接尾其他均分 spaceEvenly:均匀分布

crossAxisAlignment: start:顶头 center:居中 end:接尾 stretch:伸展

mainAxisSize: max:父容器没有约束的话,column自身会尽可能延伸 min:不会延伸,只会包裹自己

属性和column属性一致,只是方向不同,一个竖直方向一个水平方向。使用方法也类似。

Wrap可以实现流布局,单行的Wrap跟Row一样,单列的Wrap则跟Colum一样.但是Row和Column都是单行单列的,Wrap可以多行多列。

Wrap能做的事情,flow也能做。但是flow会比较复杂点。flow类似于OC中CollectionLayout,需要自己实现子组件的位置以及大小。但是flow的性能比较好,灵活。

自定义FlowDelegate

运行结果:

绝对定位布局,用于指定组件的具体位置

Expanded组件可以使row、column或者flex子组件在其主轴上展开并填充可用空间。如果多个组件展开的话,会按照比例分割。
Tip:Expanded组件要在row、column或者flex的子组件中使用。具有两个属性,child:子组件,flex:所占比例

以上是关于Flutter 6种构造函数详解的主要内容,如果未能解决你的问题,请参考以下文章

详解c++中类的六个默认的成员函数

详解c++中类的六个默认的成员函数

c++之构造函数,析构函数(五千字长文详解!)

Flutter 中的 initState 和类构造函数有啥区别?

JavaScript继承的6种方式

“用户”类没有默认构造函数-flutter