Flutter 在Dart中,以Classname为前缀的类常量语法是什么意思?
虽然我认为自己熟悉编程语言Dart,但我还是在for Bloc中偶然发现了以下语法:Flutter 在Dart中,以Classname为前缀的类常量语法是什么意思?,flutter,dart,Flutter,Dart,虽然我认为自己熟悉编程语言Dart,但我还是在for Bloc中偶然发现了以下语法: class AuthenticationState extends Equatable { const AuthenticationState._({ this.status = AuthenticationStatus.unknown, this.user = User.empty, }); const AuthenticationState.unknown() : this._
class AuthenticationState extends Equatable {
const AuthenticationState._({
this.status = AuthenticationStatus.unknown,
this.user = User.empty,
});
const AuthenticationState.unknown() : this._();
const AuthenticationState.authenticated(User user)
: this._(status: AuthenticationStatus.authenticated, user: user);
const AuthenticationState.unauthenticated()
: this._(status: AuthenticationStatus.unauthenticated);
final AuthenticationStatus status;
final User user;
@override
List<Object> get props => [status, user];
}
这是一个命名的构造函数。在dart中,您可以通过两种方式定义构造函数,使用ClassName或ClassName.someOtherName
EG:考虑你有一个名为2变量的人,名字和卡号。每个人都有名字,但卡号不是必需的。在这种情况下,如果您实现了默认构造函数,则必须对其进行初始化,如下所示:
Person("Name", "");
因此,如果您想添加一些语法糖,可以添加一个命名构造函数,如下所示:
class Person {
String name;
String carNumber;
// Constructor creates a person with name & car number
Person(this.name, this.carNumber);
// Named constructor that only takes name and sets carNumber to ""
Person.withOutCar(String name): this(name, "");
// Named constructor with no arguments, just assigns "" to variables
Person.unknown(): this("", "");
}
您可以初始化对象,如:
Person.withOutCar("Name");
在上面的示例中,命名的构造函数被重定向到实际的构造函数,并带有预定义的默认值
您可以在此处阅读有关命名构造函数的更多信息:
Person.withOutCar("Name");