Flutter Stateless 的构造函数

基本解析

一般构造函数都是这样的:

class ArticleYoutubeAvatar extends StatelessWidget {
  const ArticleYoutubeAvatar({Key key}) : super(key: key);
}

https://dart.dev/guides/language/language-tour#constructors

看下 dart 的构造函数的说明就知道了, 这里弄了一个语法糖:

class Point {
  num x, y;

  Point(num x, num y) {
    // There's a better way to do this, stay tuned.
    this.x = x;
    this.y = y;
  }
}

简化成了

class Point {
  num x, y;

  // Syntactic sugar for setting x and y
  // before the constructor body runs.
  Point(this.x, this.y);
}

个人觉得这个语法糖没必要, 降低了可读性

{}括起来表示是一个命名参数

所有的 widget 构造函数都需要一个默认的 key 参数: {Key key}, flutter 会自动送进来, 用于标识组件的唯一身份, 可以不用管.

构造函数后面跟着的奇怪冒号, 这是 initializer-list

是指在运行这个函数前, 先运行后面的函数, 并且会使用已经被改变的参数传回前面的, 再运行前面的函数. 这里用来优先运行 supser 的构造函数.

传入参数

class ArticleYoutubeAvatar extends StatelessWidget {
  const ArticleYoutubeAvatar({String youtubeURL, String avatar, Key key})
      : super(key: key);
}

在构造函数里添加就好, 一般都沿用命名参数, 是 Wdiget 的时候指定传进来也比较稳妥