参数类型“日期时间?” 无法分配给参数类型“DateTime”

abh*_*nyu 2 dart flutter dart-null-safety

在《Flutter Apprentice First Edition》一书中,我有以下代码:

import 'package:flutter/painting.dart';
// 1
enum Importance { low, medium, high }
class GroceryItem {
// 2
final String id;
// 3
final String name;
final Importance importance;
final Color color;
final int quantity;
final DateTime date;
final bool isComplete;
...
Run Code Online (Sandbox Code Playgroud)

构建方法为

Widget buildDate() {
    final dateFormatter = DateFormat('MMMM dd h:mm a');
    final dateString = dateFormatter.format(item!.date);
    return Text(
      dateString,
      style: TextStyle(decoration: textDecoration),
    );
  }
Run Code Online (Sandbox Code Playgroud)

我有以下错误:

参数类型“日期时间?” 无法分配给参数类型“DateTime”。

abh*_*nyu 11

这消除了错误 -

final dateString = dateFormatter.format(item!.date as DateTime);
Run Code Online (Sandbox Code Playgroud)

  • 如果变量有可能变为 null,则不要使用“!”。使用默认值或使用“if null else”初始化变量。 (3认同)