dart 构造函数中的括号是什么

for*_*orJ 6 dart flutter

@immutable
abstract class MyGithubReposState extends Equatable {
  MyGithubReposState([List props = const []]) : super(props);
}
Run Code Online (Sandbox Code Playgroud)

我在我使用的库之一中看到了上面的代码。是什么[List props = const []]意思?道具清单清单?

Vru*_*tel 10

这是可选参数,如下所述。

\n
    \n
  • 函数可以有两种类型的参数:\n必需的可选的
  • \n
\n

首先列出必需的参数,然后列出任何可选参数。可选参数可以是命名参数或位置参数。

\n
    \n
  • 可选参数可以是命名参数或位置参数,但不能同时是两者。
  • \n
\n

命名参数

\n

调用函数时,可以使用 paramName: value 指定命名参数。例如:

\n
\n

这是函数的调用

\n
\n
enableFlags(bold: true, hidden: false);\n
Run Code Online (Sandbox Code Playgroud)\n

定义函数时,使用 {param1, param2, \xe2\x80\xa6} 指定命名参数:

\n
\n

这就是我们定义它们的方式

\n
\n
/// Sets the [bold] and [hidden] flags ...\nvoid enableFlags({bool bold, bool hidden}) {...}\n
Run Code Online (Sandbox Code Playgroud)\n

位置参数

\n

将一组函数参数包装在 [] 中将它们标记为可选位置参数:

\n
String say(String from, String msg, [String device]) {\n  var result = \'$from says $msg\';\n  if (device != null) {\n    result = \'$result with a $device\';\n  }\n  return result;\n}\n
Run Code Online (Sandbox Code Playgroud)\n
\n

这样我们就可以通过两种方式调用这个函数

\n
\n

没有可选的位置参数

\n
say(\'Bob\', \'Howdy\')\n
Run Code Online (Sandbox Code Playgroud)\n

具有可选的位置参数

\n
say(\'Bob\', \'Howdy\', \'smoke signal\')\n
Run Code Online (Sandbox Code Playgroud)\n

参考这里

\n