【问题标题】:Can I use the width in a flutter widget我可以在颤振小部件中使用宽度吗
【发布时间】:2021-08-07 22:17:12
【问题描述】:

我对 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(),
            ),
          )
        ));
  }
}

【问题讨论】:

标签: flutter flutter-layout


【解决方案1】:

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

  @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(),
            ),
          )
        ));
  }

【讨论】:

    猜你喜欢
    • 2020-07-29
    • 2021-04-01
    • 2021-12-13
    • 2020-08-02
    • 2020-06-03
    • 2021-01-26
    • 2018-05-10
    • 2020-04-30
    相关资源
    最近更新 更多