Flutte 的问号和感叹号

4 min read
  • String a = b ?? 'hello';

如果b等于null,则a将赋值为hello

  • b ??= 'hello';

如果b为null的情况下,b等于hello。如果不为null则不作任何操作

  • a?.p
  • a?.m()

如果a为空,则直接返回null不执行后边的操作

如果你确定一个可为空类型的表达式不是空的,你可以添加!来让Dart把它当作不为空的。

mixin SingleTickerProviderStateMixin<T extends StatefulWidget> on State<T> implements TickerProvider {
Ticker? _ticker;

  @override
  Ticker createTicker(TickerCallback onTick) {
    ...
    _ticker = Ticker(onTick, debugLabel: kDebugMode ? 'created by $this' : null);
    return _ticker!;
  }
...
}