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