a class method named ._() function in dart?

8

I've seen this code can anyone please explain to me what the AppTheme._() means, as I've read about its singleton class in dart but I really can't understand how it works.

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);

  ...
}
flutter
dart
asked on Stack Overflow Sep 10, 2019 by Shadi Ossaili • edited May 14, 2020 by Yashwardhan Pauranik

1 Answer

12

AppTheme._(); is a named constructor (another examples might be the copy constructor on some objects in the Flutter framework: ThemeData.copy(...);).

In dart, if the leading character is an underscore, then the function/constructor is private to the library. That's also the case here, and the underscore is also the only character, so I'd imagine whoever wrote this constructor didn't plan for that constructor to ever be called at all.

The AppTheme._(); isn't necessary unless you don't want AppTheme to ever be accidentally instantiated using the implicit default constructor.

answered on Stack Overflow Sep 10, 2019 by Sub 6 Resources • edited Sep 10, 2019 by Sub 6 Resources

User contributions licensed under CC BY-SA 3.0