在 DateTime.parse() 中允许空字符串

时间:2021-07-30 18:18:38

标签: flutter dart-null-safety

我正在尝试将包含日期的字符串格式化为不同的日期格式。我从 Firestore 文档中获取数据。当我将数据拉入我的 Flutter 应用程序的 UI 时,我想将其转换为 DateTime 类型,以便我可以对其进行不同的格式化。 编辑我添加了建议的编辑。

if (trxnProvider.sellerDisclosure24a != null && trxnProvider.sellerDisclosure24a != "") {
                final String? sellerDisclosure24a = trxnProvider.sellerDisclosure24a;
                _dt = DateTime.parse(sellerDisclosure24a);
                sellerDisclosure24aController.text = DateFormat('EE,  MM-dd-yyyy').format(_dt) ?? "";
              } else {
                sellerDisclosure24aController.text = "";
              }

但是,我在这一行收到以下错误

_dt = DateTime.parse(trxnProvider.sellerDisclosure24a);

参数类型“字符串?”不能分配给参数类型“字符串”。 (文档) 'sellerDisclosure24a' 指的是一个属性,所以它不能被提升。参见 http://dart.dev/go/non-promo-property (trxn_provider.dart:55)。

我尝试添加两个“?”和 ”!”但我仍然收到错误。我如何处理这个空安全问题?如您所见,我正在检查数据是否存在。

1 个答案:

答案 0 :(得分:1)

只需创建 trxnProvider.sellerDisclosure24a 的本地副本并使用它:

// A local copy!
final String? sellerDisclosure24a = trxnProvider.sellerDisclosure24a;

if (sellerDisclosure24a != null && sellerDisclosure24a != "") {
  _dt = DateTime.parse(sellerDisclosure24a);
  sellerDisclosure24aController.text = DateFormat('EE,  MM-dd-yyyy').format(_dt) ?? "";
} else {
  sellerDisclosure24aController.text = "";
}
相关问题