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的新功能:
排列只能出现在能够优雅处理的位置
接收零个或多个值。没有彻底检修机器
语言的执行模型,并将其转换为图标(我发现
奇怪的吸引力,但可能不实用…,没有太多
许多符合该约束的地方。基本上是集合文字
也许还有位置参数列表。(我写过,但它相当复杂,所以我们没有这么做,至少没有
现在。)
该建议没有完全涵盖您想要的内容,即将
映射
扩展到可选的命名参数中。它不起作用的原因是无法以这种方式对参数进行类型检查。即使映射有typemap
,并且所有命名参数都有typeint
,我们仍然无法检查映射中的符号是否对应于方法参数。实际上,这只是一个等待发生的运行时错误。如果我们有构造函数分解(我们应该),那么您可能会执行Function.apply(Text、[Text],textOptions)
。遗憾的是,您还不能删除构造函数,因此必须创建一个函数来转发所有参数。