Dart 确保类中的可选布尔值不为空

Has*_*sen 2 null class dart flutter

由于它是一个可选值,它有时会为空,那么如何避免它抛出错误呢?这是唯一的方法吗?

class QText extends StatelessWidget {
  QText(this.text, this.size, [this.bold]);

  final String text;
  final double size;
  bool bold;

  @override
  Widget build(BuildContext context) {
    bold = (bold == null) ? false : bold;
    return Whatever..
  }
}
Run Code Online (Sandbox Code Playgroud)

我想这样做,但当然它不起作用:

class QText extends StatelessWidget {
  QText(this.text, this.size, [this.bold]);

  final String text;
  final double size;
  final bool bold ?? false;

  @override
  Widget build(BuildContext context) {
    return Whatever..
  }
}
Run Code Online (Sandbox Code Playgroud)

Hem*_*Raj 6

由于字段是最终尝试在构造函数初始化期间传递默认值。

还要添加一条assert语句以确保它永远不会初始化为null.

例子:

class QText extends StatelessWidget {
  QText(this.text, this.size, [this.bold = false]) : assert(bold != null);

  final String text;
  final double size;
  final bool bold;

  @override
  Widget build(BuildContext context) {}
}
Run Code Online (Sandbox Code Playgroud)

希望有帮助!