Flutter 边框半径不适用于容器小部件内部

Flutter 边框半径不适用于容器小部件内部,flutter,Flutter,边框半径不适用于子容器内部。 尝试使用SizedBox和Stack小部件。 我需要集装箱内的边界视图 Scaffold( appBar: AppBar( title: new Text("ListView"), ), body: Center( child: Padding( padding: EdgeInsets.all(15.0), child: Container( decoration: BoxDec

边框半径不适用于子
容器内部
。
尝试使用
SizedBox
Stack
小部件。 我需要集装箱内的边界视图

Scaffold(
  appBar: AppBar(
    title: new Text("ListView"),
  ),
  body: Center(
      child: Padding(
        padding: EdgeInsets.all(15.0),
        child: Container(
            decoration: BoxDecoration(
                borderRadius: BorderRadius.circular(15.0),
                border: Border.all(
                    color: Colors.green,
                    width: 2.0
                )
            ),
            child: Container(
              color: Colors.red,
            )
        ),
      )
  )
)

我猜您的容器可能不可见,因为它没有子级/高度/宽度

尝试将一些
文本作为子项添加,或者如果希望它展开,可以使用强制


请参见边框上的示例。

用以下内容替换代码

Scaffold(
appBar: AppBar(
title: new Text("ListView"),
),
body: Center(
  child: Padding(
    padding: EdgeInsets.all(15.0),
    child: Container(
        decoration: BoxDecoration(
            borderRadius: BorderRadius.circular(15.0),
            border: Border.all(
                color: Colors.green,
                width: 2.0
            )
        ),
        child: Container(
              decoration: new BoxDecoration(borderRadius: 
        BorderRadius.circular(15.0),
                        color: Colors.red,),
                    )
    ),
  )
)
)

装饰
画在孩子的后面。如果您希望在容器的子容器前面应用装饰,请使用
foregroundevision

脚手架(
appBar:appBar(
标题:新文本(“列表视图”),
),
正文:中(
孩子:填充(
填充:所有边缘设置(15.0),
子:容器(
前场装饰:盒子装饰(
边界半径:边界半径。圆形(15.0),
边界:边界(
颜色:颜色。绿色,
宽度:2.0
)
),
子:容器(
颜色:颜色,红色,
)
),
)
)
)
上面的代码在子容器前面绘制边框。请注意,即使使用
前台装饰
子容器也会有尖角

如果希望子容器具有圆角,则需要对子容器应用
borderRadius
,或者使用与父容器具有相同边界半径的
ClipRRect

decoration: BoxDecoration(
                              gradient: new LinearGradient(
                                begin: Alignment.topCenter,
                                end: Alignment.bottomCenter,
                                stops: [0.02, 0.02],
                                colors: [Colors.red, Colors.white],
                              ),
                              borderRadius: BorderRadius.all(Radius.circular(10)),
                              color: Colors.white,
                              boxShadow: [
                                BoxShadow(color: Colors.grey, blurRadius: 5.0),
                              ],
                            ),
而不是

容器

小部件使用

ClipRRect

之前(不工作):

之后:

Center(
        child: ClipRRect(
          borderRadius: getAllRoundedBorderRadius(),
          child: Hero(
            tag: "CossackHero",
            child: TweenImage(
              last: AssetImage("images/background/cossack_0.jpg"),
              first: AssetImage("images/background/c_cossack_0.jpg"),
              duration: 2,
              height: height,
            ),
          ),
        ),
      ),
试试这个, 使用
ClipRRect
并嵌套在另一个
容器中
,现在可以添加非统一边框

Container(
                    decoration: BoxDecoration(
                      color: Colors.white,
                      borderRadius: BorderRadius.circular(10),
                      boxShadow: [BoxShadow(color: Colors.black12, blurRadius: 5)],
                    ),
                    child: ClipRRect(
                      borderRadius: BorderRadius.circular(10),
                      child: Container(
                        padding: EdgeInsets.all(20),
                        decoration: BoxDecoration(
                          border: Border(
                            left: BorderSide(color: Colors.indigo, width: 5),
                          ),
                        ),
                        child: Column(
                          mainAxisSize: MainAxisSize.min,
                          children: <Widget>[
                            Icon(Icons.home),
                            Text("Home"),
                          ],
                        ),
                      ),
                    ),
                  )
容器(
装饰:盒子装饰(
颜色:颜色,白色,
边界半径:边界半径。圆形(10),
boxShadow:[boxShadow(颜色:Colors.black12,模糊半径:5)],
),
孩子:ClipRRect(
边界半径:边界半径。圆形(10),
子:容器(
填充:边缘设置。全部(20),
装饰:盒子装饰(
边界:边界(
左侧:边框(颜色:Colors.indigo,宽度:5),
),
),
子:列(
mainAxisSize:mainAxisSize.min,
儿童:[
图标(Icons.home),
文本(“主页”),
],
),
),
),
)

屏幕截图:


使用
ClipRRect
(使用2
容器

ClipRRect(
边界半径:边界半径。圆形(16),
子:容器(
宽度:100,
身高:100,
颜色:颜色,黑色,
子:容器(
保证金:全部(8),
颜色:颜色,蓝色,
),
),
)

不带
ClipRRect
(使用1
容器

容器(
宽度:100,
身高:100,
装饰:盒子装饰(
边界半径:边界半径。圆形(16),
边界:边界(
颜色:颜色,黑色,
宽度:4,
),
颜色:颜色,蓝色,
),
)

边框可见。子窗口小部件的边界半径存在问题。下面是图像链接。在子窗口小部件中,未应用我给出的父窗口小部件边框@Marcinzałek已经定义了父容器的边界。是否需要在子容器中再次添加@ZulfiqarBorderRadius属性定义小部件的形状,而不是其周围的线条。如果在父窗口小部件上使用borderRadius,则子窗口小部件不会继承该属性,因此它将以默认矩形绘制。如果你想让它有圆角边框,你也必须指定它。ClipRRect with borderRadius是我找到的最好的解决方案,真的谢谢:)
Container(
                    decoration: BoxDecoration(
                      color: Colors.white,
                      borderRadius: BorderRadius.circular(10),
                      boxShadow: [BoxShadow(color: Colors.black12, blurRadius: 5)],
                    ),
                    child: ClipRRect(
                      borderRadius: BorderRadius.circular(10),
                      child: Container(
                        padding: EdgeInsets.all(20),
                        decoration: BoxDecoration(
                          border: Border(
                            left: BorderSide(color: Colors.indigo, width: 5),
                          ),
                        ),
                        child: Column(
                          mainAxisSize: MainAxisSize.min,
                          children: <Widget>[
                            Icon(Icons.home),
                            Text("Home"),
                          ],
                        ),
                      ),
                    ),
                  )