Function 如何将函数变量传递给省道颜色

Function 如何将函数变量传递给省道颜色,function,dart,Function,Dart,我想创建一个省道函数,该函数将生成一个将播放注释但在函数调用中使用变量来设置关键点颜色的。下面是我的快照,但它会生成异常: :18:21:错误:找不到Getter:“$kcolor”。 颜色:颜色。$kcolor, ^^^^^^^ }如果给定包含其名称的字符串,则要查找Color的静态成员 Dart不支持这一点。使用运行时字符串(或符号)引用源名称是反射。只能使用反射库dart:mirrors,而flatter不提供该库(大多数其他dart平台也不提供) 如果需要将字符串转换为颜色,则需要首先构

我想创建一个省道函数,该函数将生成一个将播放注释但在函数调用中使用变量来设置关键点颜色的。下面是我的快照,但它会生成异常:

:18:21:错误:找不到Getter:“$kcolor”。 颜色:颜色。$kcolor, ^^^^^^^


}

如果给定包含其名称的字符串,则要查找
Color
的静态成员

Dart不支持这一点。使用运行时
字符串
(或
符号
)引用源名称是反射。只能使用反射库
dart:mirrors
,而flatter不提供该库(大多数其他dart平台也不提供)

如果需要将字符串转换为颜色,则需要首先构建转换表。比如:

const colorMap={
“口音”:颜色。口音,
“琥珀色”:颜色。琥珀色,
“amberAccent”:颜色。amberAccent,
“黑色”:颜色。黑色,
“黑色12”:颜色。黑色12,
“black26”:颜色。black26,
“black38”:颜色。black38,
“black45”:颜色。black45,
“black54”:颜色,
“black87”:颜色。black87,
“蓝色”:颜色。蓝色,
“blueAccent”:Colors.blueAccent,
“蓝灰色”:颜色。蓝灰色,
“棕色”:颜色,
“青色”:Colors.cyan,
“cyanAccent”:Colors.cyanAccent,
“深橙色”:颜色。深橙色,
“deepOrangeAccent”:Colors.deepOrangeAccent,
“深紫色”:颜色。深紫色,
“深紫色”:颜色。深紫色,
“绿色”:颜色。绿色,
“greenAccent”:颜色。greenAccent,
“灰色”:颜色。灰色,
“靛蓝”:颜色。靛蓝,
“indigoAccent”:颜色。indigoAccent,
“浅蓝色”:颜色。浅蓝色,
“lightBlueAccent”:Colors.lightBlueAccent,
“浅绿色”:颜色。浅绿色,
“lightGreenAccent”:颜色。lightGreenAccent,
“石灰”:颜色。石灰,
“limeacent”:Colors.limeacent,
“橙色”:颜色。橙色,
“orangeAccent”:Colors.orangeAccent,
“粉红”:颜色。粉红,
“pinkAccent”:颜色。pinkAccent,
“原色”:颜色。原色,
“紫色”:颜色。紫色,
“紫红色”:颜色。紫红色,
“红色”:颜色。红色,
“redAccent”:Colors.redAccent,
“teal”:Colors.teal,
“tealacent”:颜色。tealacent,
“透明”:颜色。透明,
“白色”:颜色。白色,
“白色10”:颜色。白色10,
“白色12”:颜色。白色12,
“白色24”:颜色。白色24,
“白色30”:颜色。白色30,
“white38”:颜色。white38,
“white54”:颜色。white54,
“白色60”:颜色。白色60,
“白色70”:颜色。白色70,
“黄色”:颜色。黄色,
“yellowAccent”:颜色。yellowAccent,
};
然后你可以写:

colorMap[kcolor]

省道颜色始终具有int值,您可以像这样使用它
Colors.redAccent.value
。 通过这个属性,你可以像这样修改你的函数

FlatButton buildKey({int notenum, int kcolor, double hedgeInset, String ttitle}) {
onPressed() {playSound(notenum);}
child: Card(
  color: Color(kcolor),//you can turn value of color to back to system color like this
  margin: EdgeInsets.symmetric(vertical: 10.0,
      horizontal: hedgeInset),
  child: ListTile(
    title: Text(
      ttitle,
    )
  )
);

在我看来,这看起来很像python字典。python字典是地图,所以这并不奇怪。它看起来也与JavaScript对象相同,类似于Perl哈希、Groovy映射或Swift字典。大多数现代语言都有一些键/值集合文字。
FlatButton buildKey({int notenum, int kcolor, double hedgeInset, String ttitle}) {
onPressed() {playSound(notenum);}
child: Card(
  color: Color(kcolor),//you can turn value of color to back to system color like this
  margin: EdgeInsets.symmetric(vertical: 10.0,
      horizontal: hedgeInset),
  child: ListTile(
    title: Text(
      ttitle,
    )
  )
);