【问题标题】:Color vs Colors in FlutterFlutter 中的颜色与颜色
【发布时间】:2020-06-12 20:38:29
【问题描述】:

我正在像这样用颤振写一个函数

Expanded playButton({Color colorName, int buttonNumber, int soundNumber}) {
  return Expanded(
    child: FlatButton(
      color: colorName,
      onPressed: () {
        final player = AudioCache();
        player.play('note$soundNumber.wav');
      },
      child: Text(
        '> PLAY $buttonNumber',
        style: TextStyle(
          fontSize: 35.0,
          color: Colors.white,
        ),
      ),
    ),
  );
}

为什么参数应该是 Color colorName 而不是 Colors colorName。 因为我们使用 color: Colors.teal 来定义颜色。

【问题讨论】:

  • 从快速搜索Colors class 可以很容易地看到,Colors 是“代表 Material Design 调色板的颜色和 ColorSwatch 常量”的类。在这里提问之前,您应该尝试搜索您的答案。

标签: flutter dart


【解决方案1】:

我认为Colors 类是Color 类的程序员友好包装器。 在Colors类的源代码中可以看到:

class Colors {
  // This class is not meant to be instatiated or extended; this constructor
  // prevents instantiation and extension.
  // ignore: unused_element
  Colors._();

  /// Completely invisible.
  static const Color transparent = Color(0x00000000);

...
}

这里的“Colors”类定义了一个变量transparent,我们可以像这样轻松地使用它

...
Container(
      color: Colors.transparent,
)
...

因此,您始终使用 Color 实例作为“颜色”,因此您必须将变量定义为 Color 实例,即使您使用 Colors 类包装器也是如此。

【讨论】:

    【解决方案2】:

    颜色是 Color 类的预定义实例。

    是这样的…… 颜色之于颜色,就像梅赛德斯之于汽车一样。不是每辆车都是梅赛德斯。并不是每个 Color 对象都是 Colors 对象。

    顺便说一句,您可以使用 Color 来获得您想要的确切颜色,例如...

    const color = const Color(0xffb74093);
    

    所以它比颜色更通用

    【讨论】:

      猜你喜欢
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 2012-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-30
      • 1970-01-01
      相关资源
      最近更新 更多