super和Key在颤振中起什么作用?

时间:2019-03-03 12:00:11

标签: dart flutter

飞镖类中的超级关键字和关键词做什么? 下面的代码就是一个例子:

class CardTitle extends StatelessWidget {
  final String title;

  const CardTitle(this.title, **{Key key}**) : **super(key: key)**;

2 个答案:

答案 0 :(得分:3)

Error: ENOTEMPTY: directory not empty, rmdir 'C:\Users\Admin\AppData\Local\Temp\runtimeDir11923-7308-1ed73lj.8p03\framework\app\libs\runtime-libs' at Object.fs.rmdirSync (fs.js:846:18) at rmkidsSync (C:\Users\Admin\AppData\Roaming\npm\node_modules\nativescript\node_modules\temp\node_modules\rimraf\rimraf.js:247:11) at rmdirSync (C:\Users\Admin\AppData\Roaming\npm\node_modules\nativescript\node_modules\temp\node_modules\rimraf\rimraf.js:237:7) at fixWinEPERMSync (C:\Users\Admin\AppData\Roaming\npm\node_modules\nativescript\node_modules\temp\node_modules\rimraf\rimraf.js:150:5) at rimrafSync (C:\Users\Admin\AppData\Roaming\npm\node_modules\nativescript\node_modules\temp\node_modules\rimraf\rimraf.js:216:26) at C:\Users\Admin\AppData\Roaming\npm\node_modules\nativescript\node_modules\temp\node_moules\rimraf\rimraf.js:245:5 用于调用基类的构造函数。因此,在您的示例中,super的构造函数正在调用CardTitle的构造函数。

StatelessWidget是Flutter中用于标识窗口小部件的一种类型,并允许Flutter知道何时在树中移动的窗口小部件与先前在不同位置的窗口小部件相同。这里有关于按键的精彩视频:https://www.youtube.com/watch?v=kn0EOS-ZiIc

答案 1 :(得分:1)

用作小部件,元素和语义节点的标识符。您通常不需要使用键,框架会为您处理并在内部使用它们来区分小部件。有关它们的更多信息,请参见: https://flutter.dev/docs/development/ui/widgets-intro#keys

关于超级关键字:

在您的示例中,我们看到CardTitle小部件扩展了超类statelesswidget,并且在其构造函数中,“:”启动了“初始化列表”,即用逗号分隔的表达式列表,这些表达式在超类的构造函数之前执行,因此也在执行之前构造函数体。

在您问题的示例中,传递给构造函数的键参数被转发到超类的未命名构造函数的命名参数键。