【问题标题】:Flutter give container rounded borderFlutter 给容器圆角边框
【发布时间】:2020-01-06 17:14:27
【问题描述】:

我正在制作Container(),我给了它一个边框,但如果有圆形边框会很好。

这就是我现在拥有的:

Container(
      width: screenWidth / 7,
      decoration: BoxDecoration(
        border: Border.all(
          color: Colors.red[500],
        ),
      ),
      child: Padding(
        padding: EdgeInsets.all(5.0),
        child: Column(
          children: <Widget>[
            Text(
              '6',
              style: TextStyle(
                  color: Colors.red[500],
                  fontSize: 25),
            ),
            Text(
             'sep',
              style: TextStyle(
                  color: Colors.red[500]),
            )
          ],
        ),
      ),
    );

我尝试将ClipRRect 放在上面,但这会将边框剪掉。有解决办法吗?

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    尝试使用来自BoxDecoration 的属性borderRadius

    类似

    Container(
      decoration: BoxDecoration(
        border: Border.all(
          color: Colors.red[500],
        ),
        borderRadius: BorderRadius.all(Radius.circular(20))
      ),
      child: ...
    )
    

    【讨论】:

    • BorderRadius.circular(20) 可以用作BorderRadius.all(Radius.circular(20))的简写
    【解决方案2】:

    让它完全循环:

    Container(
          decoration: BoxDecoration(
            shape: BoxShape.circle,
          ),
        )
    

    在选定的点使其成为一个圆圈:

    Container(
          decoration: BoxDecoration(
            borderRadius: BorderRadius.only(
                topRight: Radius.circular(40.0),
                bottomRight: Radius.circular(40.0),
                topLeft: Radius.circular(40.0),
                bottomLeft: Radius.circular(40.0)),
          ),
          child: Text("hello"),
        ),
    

      Container(
          decoration: BoxDecoration(
            borderRadius: BorderRadius.all(Radius.circular(20)),
          ),
          child: ...
        )
    

    【讨论】:

      【解决方案3】:

      你可以这样使用。如果你想要所有角落的边框,你可以像下面这样使用。

      Container(
        decoration: BoxDecoration(
          color: Colors.white,
          borderRadius: BorderRadius.all(
            Radius.circular(12.0),
          ),
        ),
      ),
      

      如果您只希望选定边的圆形边框,您可以使用如下所示。

      Container(
        decoration: BoxDecoration(
          color: Colors.white,
          borderRadius: BorderRadius.only(
            topLeft: Radius.circular(10),
            topRight: Radius.circular(10),
          ),
        ),
        child: Text('Text'),
      ),
      

      【讨论】:

        【解决方案4】:

        上述答案的增强。

        Container(
          decoration: BoxDecoration(
            border: Border.all(
              color: Colors.red[500],
            ),
           borderRadius: BorderRadius.circular(20) // use instead of BorderRadius.all(Radius.circular(20))
          ),
          child: ...
        )
        

        【讨论】:

        • 请不要只发布代码作为答案,还要解释您的代码的作用以及它如何解决问题的问题。带有解释的答案通常更有帮助,质量更高,更有可能吸引投票。
        • 对不起,我错过了。
        【解决方案5】:

        你可以使用ClipRRect小部件:

        ClipRRect (
          borderRadius: BorderRadius.circular(5.0),
          child: Container(
                            height: 25,
                            width: 40,
                            color: const Color(0xffF8742C),
                            child: Align(
                                alignment: Alignment.center,
                                child: Text("Withdraw"))),
                  )
        

        【讨论】:

          【解决方案6】:

          要制作一个完整的圆,只需使用 shape 属性:

          Container(
             padding: const EdgeInsets.all(4),
             decoration: BoxDecoration(
               shape: BoxShape.circle,
               color: Colors.black,
             ),                            
             child: Icon(
                Icons.add,
                size: 15.0,
                color: Colors.white,
               ),
                                         
                                          
          

          【讨论】:

            【解决方案7】:
            容器( 装饰:盒子装饰( 边界半径:边界半径.圆形(20.0), 边框:边框.all( 颜色:HexColor('#C88A3D'), 宽度:3.0 ) ), 孩子:容器( 装饰:新盒子装饰(边框半径: BorderRadius.circular(20.0), 颜色:Colors.white,), ) ),

            【讨论】:

              【解决方案8】:

              这里的关键是添加一个BorderRadius

              Container(    
                decoration: BoxDecoration(
                  border: Border.all(
                    color: Colors.red[340],
                   ),
                   borderRadius: BorderRadius.all(Radius.circular(35),
                 ),
                 child: `enter code here`
              ),
              

              【讨论】:

              • 虽然此代码可能会为问题提供解决方案,但最好添加有关其工作原理/方式的上下文。这可以帮助未来的用户学习并最终将这些知识应用到他们自己的代码中。解释代码时,您也可能会得到用户的积极反馈/赞成。
              【解决方案9】:

              只要把它放在 Container

              Container(
                decoration: BoxDecoration(
                  borderRadius: BorderRadius.all(Radius.circular(30))
                ),
              )
              

              【讨论】:

                猜你喜欢
                • 2017-12-30
                • 2010-09-24
                • 1970-01-01
                • 2021-06-22
                • 1970-01-01
                • 1970-01-01
                • 2022-11-10
                • 1970-01-01
                • 2019-07-16
                相关资源
                最近更新 更多