【问题标题】:How to set corner radius based on size on a widget with dynamic size in Flutter如何在 Flutter 中根据大小在具有动态大小的小部件上设置角半径
【发布时间】:2023-03-23 23:10:01
【问题描述】:

如何使用公式radius = hight/2 确定在其子元素之后调整大小的按钮上的小部件的圆角半径?

在这种情况下,孩子是一个文本,可以和传递的字符串一样长。

这就是我得到的。 我将 hight 和 maxWidth 设置为零以包装文本大小,但在应用角半径时我无法找到测量宽度的方法。

ButtonTheme(
  height: 0,
  minWidth: 0,
  shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(width/2)), //how can i calculate width?
  child: RaisedButton(
    onPressed: onPress,
    child: Text('Some String of variable length'),
  ),
);

我已经在网上搜索过,但没有任何结果。

【问题讨论】:

  • 我已将其从按钮中移出,以便在同一个小部件中收集所有变量。这两种方式都没有区别。
  • 参见StadiumBorder 实现
  • 谢谢。它做我需要的,但不是我想要的。真的希望我能以某种方式得到孩子的大小。
  • 用 LayoutBuilder 包裹 RaisedButton,你将拥有 constraints 参数和大小
  • 我这样做了,但约束 maxWidth 和 maxHeight 显示了我认为是其父容器的内容。在这种情况下,它所在的卡。

标签: flutter flutter-layout cornerradius


【解决方案1】:

正如@pskink 所说,您可以使用StadiumBorder

适合体育场形边框的边框(带有半圆的框 两端)在它应用到的小部件的矩形内。

这里是一个例子,在TextField上写多行看看结果:

Center(
  child: Container(
    decoration: ShapeDecoration(
      shape: StadiumBorder(
        side: BorderSide(width: 2.0),
      ),
    ),
    child: TextField(
      textAlign: TextAlign.center,
      minLines: 1,
      maxLines: 100,
    ),
  ),
)

【讨论】:

猜你喜欢
  • 2019-02-14
  • 2021-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-08
  • 2021-12-27
  • 2011-03-17
相关资源
最近更新 更多