首页 > 解决方案 > Dart - null 感知运算符,为什么!需要吗?

问题描述

我们有:

final Widget? body;

稍后在代码中:

final content = Column(
  children: [
    ...items,
    if (body != null) body!
  ],
);

为什么我必须!在正文之后添加符号?

没有!我收到:

元素类型“小部件?” 不能分配给列表类型“小部件”。

在 pubspec.yaml

environment:
  sdk: '>=2.12.0-0 <3.0.0'

标签: flutterdart

解决方案


变量或函数后面的感叹号表示可空变量或函数转换为不可空值。因为您可能知道小部件不能为空。

const insets = EdgeInsets.all(10.0);
Widget? widget1 = insets;
Widget widget2 = insets;
assert(widget1! == widget2);


推荐阅读