Jon*_*vin 13 datetime dart flutter
我有下面的状态,并想在构造函数中设置 DateTime 的默认值。我希望将当前日期作为默认日期,但我不确定这是否可能,因为它需要保持不变。
该DateTime.now()函数或例如DateTime.utc(1989, 11, 9)也不起作用,但是否有另一种方法来分配默认日期时间?
class CreateDidState {
final String firstname;
final String lastName;
final String email;
final String phoneNumber;
final DateTime dateOfBirth;
final String sex;
final String address;
final String city;
final String state;
final String postalCode;
final String country;
CreateDidState(
{this.firstname = "",
this.lastName = "",
this.email = "",
this.phoneNumber = "",
this.dateOfBirth = DateTime.now(), //The default value of an optional parameter must be constant.
this.sex = "",
this.address = "",
this.city = "",
this.state = "",
this.postalCode = "",
this.country = ""});
}
Run Code Online (Sandbox Code Playgroud)
jul*_*101 28
问题是它DateTime.now()不是一个常量,这是有道理的,因为常量意味着可以在编译程序时确定该值,因此DateTime如果此构造函数被标记为 ,我们将在编译程序时获得该值const。
正如您收到的错误所示,您必须使用常量评估值作为默认值。但我们可以通过这样做来解决这个问题:
class CreateDidState {
final String firstname;
final String lastName;
final String email;
final String phoneNumber;
final DateTime dateOfBirth;
final String sex;
final String address;
final String city;
final String state;
final String postalCode;
final String country;
CreateDidState(
{this.firstname = "",
this.lastName = "",
this.email = "",
this.phoneNumber = "",
DateTime? dateOfBirth,
this.sex = "",
this.address = "",
this.city = "",
this.state = "",
this.postalCode = "",
this.country = ""})
: this.dateOfBirth = dateOfBirth ?? DateTime.now();
}
Run Code Online (Sandbox Code Playgroud)
我们在这里所做的是将参数声明dateOfBirth为可为空值 ( DateTime?)。由于命名参数的默认值是,null这意味着我们不需要指定任何默认值。
但我们仍然希望类字段dateOfBirth是一个不可为空的值。所以我从参数中删除了 ,this.因此该构造函数参数与类变量没有关系。
然后,我将以下代码添加到构造函数的类初始值设定项部分(此代码作为创建对象的一部分运行,并允许使用值初始化类变量):
: this.dateOfBirth = dateOfBirth ?? DateTime.now();
Run Code Online (Sandbox Code Playgroud)
这意味着我们希望类变量dateOfBirth(我们用来this.告诉两个具有相同名称的变量分开)具有表达式 的值dateOfBirth ?? DateTime.now()。
这??意味着我们返回左侧的值,除非该值为null。如果null,我们返回右侧的值。因此,如果dateOfBirth是null(如果我们没有给参数赋予值,因为null是默认值,就会发生这种情况),我们使用 . 创建的值DateTime.now()。
| 归档时间: |
|
| 查看次数: |
9631 次 |
| 最近记录: |