布尔参数作为 null 传递给小部件

时间:2021-01-07 18:29:01

标签: flutter dart

我将 true 传递给小部件以计算按钮的边框半径。出于某种原因,round 作为 null 传递,下一个简化代码中的三元返回 25。我做错了什么?

CustomButton(
   height: 60.0,
   round: true,
);
class CustomButton extends StatelessWidget {
  CustomButton({
    @required this.height,
    this.round,
  });

  final height;
  final round;

  @override
  Widget build(context) {
    return CustomElevation(
      child: RawMaterialButton(
        shape: RoundedRectangleBorder(
          borderRadius: BorderRadius.all(
            Radius.circular(round == true ? height / 2 : 25),
          ),
        ),
      ),
    );
  }
}

1 个答案:

答案 0 :(得分:0)

CustomButton(
   height: 60.0,
   round: true,
);
<块引用>

首先,round == true 和 round 完全一样。接下来,您可能应该向圆形变量添加一个“bool”注释。然后还要意识到如果该小部件被重建,我不确定 round 是否保持其价值,除非您将其置于有状态小部件的状态 (mention)

<块引用>

第二,尝试使用 null-type safe,这样可以防止可空性

<块引用>

第三,如果一个参数请求double值,使用double值,而不是整数

class CustomButton extends StatelessWidget {
  CustomButton({
    @required this.height,
    this.round,
  });

  final double height;
  final bool round;

  @override
  Widget build(context) {
    return CustomElevation(
      child: RawMaterialButton(
        shape: RoundedRectangleBorder(
          borderRadius: BorderRadius.all(
            Radius.circular((round ?? false) ? height / 2.0 : 25.0),
          ),
        ),
      ),
    );
  }
}