flutter 组件构造函数
类的构造函数是用来创建类实例。
dart中的构造函数看起来比较复杂,下面我们解析一个flutter组件的构造函数:
-
const 构造函数
-
可选参数、命名参数
构造函数特殊的函数,所以dart函数中知识同样适用。如图所示,参数在一个大括号中,这些都是可选参数。而且除了
Key key
参数,其他都是简写,下面介绍。 -
参数赋值语法糖
this.appBar
都是简写:展开如下:
PreferredSizeWidget appBar
,但是要在构造函数体中,将参数复制给实例变量。如下是官方的例子解释:
class Point { num x, y; Point(num x, num y) { this.x = x; this.y = y; }}复制代码
class Point { num x, y; Point(this.x, this.y);}复制代码
参考
- https://www.dartlang.org/guides/language/language-tour#constructors
-
参数默认值
这是参数复制和参数默认值设置综合的效果:
如果展开如下:
bool resizeToAvoidBottomPadding:true复制代码
参考
- https://www.dartlang.org/guides/language/language-tour#optional-parameters
-
初始化列表和输入校验
在括号之后是一个冒号,在冒号之后是一个用逗号分开的列表,其中包括三部分内容,
-
对输入参数的校验
-
对实例变量的初始化,当前类没有。主要初始化实例变量
: fontFamily = package == null ? fontFamily : 'packages/$package/$fontFamily',
package
为参数,fontFamily
为实例变量,初始化。 -
父类构造函数的调用
-
-
父类函数调用
在初始化列表的末尾,构造函数函数体的开始,调用父类的构造函数。
-
https://www.dartlang.org/guides/language/language-tour#optional-parameters