dart中名为._()函数的类方法?

Sha*_*ili 5 dart flutter

香港专业教育学院看到这段代码,任何人都可以向我解释一下它的AppTheme._()含义,因为我在dart中了解了它的单例类,但我真的不明白它的工作原理。

class AppTheme {
  AppTheme._();

  static const Color notWhite = Color(0xFFEDF0F2);
  static const Color nearlyWhite = Color(0xFFFEFEFE);
  static const Color white = Color(0xFFFFFFFF);
  static const Color nearlyBlack = Color(0xFF213333);

.
.
.
.
}
Run Code Online (Sandbox Code Playgroud)

Sub*_*ces 39

AppTheme._();是一个命名构造函数(另一个例子可能是 Flutter 框架中某些对象的复制构造函数:)ThemeData.copy(...);

在 dart 中,如果前导字符是下划线,则函数/构造函数是库私有的。这里也是这种情况,下划线也是唯一的字符,所以我想写这个构造函数的人根本不打算调用那个构造函数。

AppTheme._();,除非你不想AppTheme永远使用隐含的默认构造函数被意外实例化是没有必要的。

  • 这有点不准确。前导下划线使名称对*库*私有,这*通常*(但并非总是)意味着对文件私有。此外,省略 `AppTheme._()` 并不完全相同;正如您所说,它的存在是为了防止“AppState”被实例化。如果没有构造函数,那么就会有一个隐式的默认构造函数。 (4认同)

jos*_*lly 12

它是为了使类不可实例化。

更多关于https://www.woolha.com/tutorials/dart-prevent-instantiation-of-class#:~:text=Creating%20Private%20Constructor%20to%20Prevent, (下划线)%20which%20means% 20private 。

另外,我认为这总结了为什么我们首先需要它“如果一个类有一个或多个私有构造函数并且没有公共构造函数,则其他类(嵌套类除外)无法创建此类的实例。”来自https://learn .microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/private-constructors