我可以在颤振小部件中使用宽度吗

时间:2021-05-18 16:24:27

标签: flutter flutter-layout

我对 Flutter 很陌生,所以请耐心等待。我想知道我是否可以在 build 方法中检索和使用小部件的宽度。下面的 RoundButton 小部件说明了使用宽度可能有用的两种情况:

  • 将宽度显示为文本
  • 要创建圆形容器,我可以使用 radius=width/2(注意:我知道这可以使用 shape: BoxShape.circle 来完成,因此这只是一个示例,其中宽度可能有用)

所以我有两个问题:

  • 是否可以获取小部件的宽度
  • 如果是这样,您能否概述如何做到这一点?
class RoundButton extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return Container(
        decoration: BoxDecoration(color: Colors.white),
        child: Container (
            decoration: BoxDecoration(
              border: Border.all(width: 6, color: Colors.green),
              borderRadius: const BorderRadius.all(const Radius.circular(**width**/2)),
              //shape: BoxShape.circle,
            ),

            child: Center (
              child: Text(
              "w="+**width**.toString(),
            ),
          )
        ));
  }
}

1 个答案:

答案 0 :(得分:0)

显然,这可以在没有 LayoutBuilder 的情况下使用下面的代码完成。请注意,必须删除 const 行上的两个 borderRadius

  @override
  Widget build(BuildContext context) {
    RenderBox rb = context.findRenderObject() as RenderBox;
    final Size size = rb?.size ?? Size.zero;
    return Container(
        decoration: BoxDecoration(color: Colors.white),
        child: Container (
            decoration: BoxDecoration(
              border: Border.all(width: 6, color: Colors.green),
              borderRadius: BorderRadius.all(Radius.circular(size.width.toInt()/2)),
              //shape: BoxShape.circle,
            ),

            child: Center (
              child: Text(
              "w="+size.height.toString(),
            ),
          )
        ));
  }