Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 为什么我不能在这种情况下使用扩展运算符?_Dart_Flutter - Fatal编程技术网

Dart 为什么我不能在这种情况下使用扩展运算符?

Dart 为什么我不能在这种情况下使用扩展运算符?,dart,flutter,Dart,Flutter,我正在编写一个扩展无状态小部件的类,它的构建方法返回Text()widget。我需要将来自Map中构造函数的文本选项(对齐、阶梯等)传递给它。为什么我不能像这样使用spread操作符 final Map textOptions; final String text; build(BuildContext context) { return Text(text, ...textOptions) } 我不认为spread运算符可以与List和数组[1,2,3] 也许您可以先将映射转换为列

我正在编写一个扩展无状态小部件的类,它的构建方法返回
Text()
widget。我需要将来自
Map
中构造函数的文本选项(对齐、阶梯等)传递给它。为什么我不能像这样使用
spread
操作符

final Map textOptions;
final String text;

build(BuildContext context) {
    return Text(text, ...textOptions)
}

我不认为spread运算符可以与
List
和数组
[1,2,3]


也许您可以先将映射转换为列表,然后使用扩展运算符。

您当前只能对集合文本使用扩展运算符(
[]
对于
列表
{}
对于
映射
设置

通过介绍Dart 2.3的新功能:

排列只能出现在能够优雅处理的位置 接收零个或多个值。没有彻底检修机器 语言的执行模型,并将其转换为图标(我发现 奇怪的吸引力,但可能不实用…,没有太多 许多符合该约束的地方。基本上是集合文字 也许还有位置参数列表。(我写过,但它相当复杂,所以我们没有这么做,至少没有 现在。)


该建议没有完全涵盖您想要的内容,即将
映射
扩展到可选的命名参数中。

它不起作用的原因是无法以这种方式对参数进行类型检查。即使映射有type
map
,并且所有命名参数都有type
int
,我们仍然无法检查映射中的符号是否对应于方法参数。实际上,这只是一个等待发生的运行时错误。如果我们有构造函数分解(我们应该),那么您可能会执行
Function.apply(Text、[Text],textOptions)
。遗憾的是,您还不能删除构造函数,因此必须创建一个函数来转发所有参数。