被 child 容器破坏的容器的装饰边框半径

Decoration borderradius of container destroyed by child container

我得到了这个代码

Container(
  width: 100.w,
  decoration: BoxDecoration(
      borderRadius: BorderRadius.only(topLeft: Radius.circular(12.sp), topRight: Radius.circular(12.sp)), color: Colors.green),
  child: UnconstrainedBox(
    alignment: Alignment.centerLeft,
      child: Container(
          padding: EdgeInsets.all(12.sp),
          child: Text(
            "my Text",
            style: TextStyle(fontSize: 12.sp),
          ))),
),

结果是:

现在我想让我的 child 容器具有另一种背景颜色,采用 parent 容器的特定宽度。我使用这段代码(unconstrainedbox 这样我的宽度就不会自动变为 100%):

Container(
  width: 100.w,
  decoration: BoxDecoration(
      borderRadius: BorderRadius.only(topLeft: Radius.circular(12.sp), topRight: Radius.circular(12.sp)), color: Colors.green),
  child: UnconstrainedBox(
    alignment: Alignment.centerLeft,
      child: Container(
        color: Colors.red,
        width: 75.w,
          padding: EdgeInsets.all(12.sp),
          child: Text(
            "my Text",
            style: TextStyle(fontSize: 12.sp),
          ))),
),

结果是:

我需要 parent 容器的 borderradius 占主导地位,而不是 'destroyed' child。我怎样才能做到这一点?我不能只向 child 添加相同的装饰,因为宽度会动态增长,在某些时候它几乎会达到 100%,这会导致右侧出现问题。

尝试对父容器使用 shape : Boxshape.circle 参数 否则在容器的 clipbehaviour 中给出 clip.hardEdge 以便父容器保持其边界半径。

这可以通过容器中的 clipBehavior 属性 来实现。

更新代码:

Container(
  width: 100.w,
  clipBehavior: Clip.hardEdge,
  decoration: BoxDecoration(
      borderRadius: BorderRadius.only(topLeft: Radius.circular(12.sp), topRight: Radius.circular(12.sp)), color: Colors.green),
  child: UnconstrainedBox(
    alignment: Alignment.centerLeft,
      child: Container(
        color: Colors.red,
        width: 75.w,
          padding: EdgeInsets.all(12.sp),
          child: Text(
            "my Text",
            style: TextStyle(fontSize: 12.sp),
          ))),
),

输出:

据我了解,您想将子边框设置为父边框,而不使用装饰。为此,使用 ClipRRect 小部件包裹您的 UnconstrainedBox 并添加边框半径。这将掩盖你的问题。

这是一个例子:

ClipRRect(
  borderRadius: BorderRadius.only(topLeft: Radius.circular(12),),
  child: UnconstrainedBox(
            alignment: Alignment.centerLeft,
            child: Container(color: Colors.red, width: 75, padding: EdgeInsets.all(12),
            child: Text("my Text", style: TextStyle(fontSize: 12),))),),