如何在Dart中定义空的DateTime?
Dart中定义可空DateTime的解决方法
在Dart里处理"空的DateTime",核心是利用空安全特性或者指定默认值,下面是几种实用方案:
直接使用可空类型(推荐,Dart 2.12+)
空安全推出后,最简单的方式就是给DateTime加上?标记为可空类型,这样变量可以直接赋值为null:DateTime? myDateTime; // 初始值就是null // 后续可以正常赋值为DateTime对象 myDateTime = DateTime.now(); // 也能重新设为null myDateTime = null;使用时记得做空检查,比如用
if (myDateTime != null)或者空断言myDateTime!(确保非空时使用)。用默认时间值替代null
如果不想用可空类型,可以定义一个代表"未设置"的默认时间,比如纪元起始时间DateTime(0):DateTime myDateTime = DateTime(0); // 使用时判断是否为默认值 if (myDateTime == DateTime(0)) { // 处理未设置的逻辑 } else { // 处理正常时间逻辑 }也可以根据业务需求自定义一个特殊时间,比如
DateTime(1970, 1, 1, 0, 0, 0)。使用Optional类(不推荐,已被可空类型替代)
早期Dart没有空安全时常用Optional类包装,但现在官方更推荐可空类型,仅作参考:import 'dart:core'; Optional<DateTime> optionalDateTime = Optional.empty(); // 赋值时用of方法 optionalDateTime = Optional.of(DateTime.now()); // 判断是否有值 if (optionalDateTime.isPresent) { DateTime value = optionalDateTime.value; }
内容的提问来源于stack exchange,提问作者barış erkuş
相关产品推荐
相关产品推荐

