当前位置: 首页 > 知识库问答 >
问题:

在Flutter中创建一个圆角按钮/带有边框半径的按钮

董飞
2023-03-14

我目前正在Flutter中开发一个Android应用程序。如何添加圆角按钮?

共有1个答案

仉宸
2023-03-14

1.解决方案汇总

不推荐使用FlatButtonRaisedButton

因此,您可以为TextButtonElevatedButton使用放在Style属性中的Shape

自Flutter 2.0以来有一些变化:

  • 样式:属性类型已更改为ButtonStyle
  • shape:属性类型已更改为MaterialStateProperty

2.圆角按钮

样式属性内部存在形状属性:

style: ButtonStyle(
  shape: MaterialStateProperty.all<RoundedRectangleBorder>(
    RoundedRectangleBorder(
      borderRadius: BorderRadius.circular(18.0),
      side: BorderSide(color: Colors.red)
    )
  )
)

方形按钮

对于方形按钮,可以使用elevatedbutton或以其他方式添加:

style: ButtonStyle(
  shape: MaterialStateProperty.all<RoundedRectangleBorder>(
    RoundedRectangleBorder(
      borderRadius: BorderRadius.zero,
      side: BorderSide(color: Colors.red)
    )
  )
)

完整示例

Row(
  mainAxisAlignment: MainAxisAlignment.end,
  children: [
    TextButton(
      child: Text(
        "Add to cart".toUpperCase(),
        style: TextStyle(fontSize: 14)
      ),
      style: ButtonStyle(
        padding: MaterialStateProperty.all<EdgeInsets>(EdgeInsets.all(15)),
        foregroundColor: MaterialStateProperty.all<Color>(Colors.red),
        shape: MaterialStateProperty.all<RoundedRectangleBorder>(
          RoundedRectangleBorder(
            borderRadius: BorderRadius.circular(18.0),
            side: BorderSide(color: Colors.red)
          )
        )
      ),
      onPressed: () => null
    ),
    SizedBox(width: 10),
    ElevatedButton(
      child: Text(
        "Buy now".toUpperCase(),
        style: TextStyle(fontSize: 14)
      ),
      style: ButtonStyle(
        foregroundColor: MaterialStateProperty.all<Color>(Colors.white),
        backgroundColor: MaterialStateProperty.all<Color>(Colors.red),
        shape: MaterialStateProperty.all<RoundedRectangleBorder>(
          RoundedRectangleBorder(
            borderRadius: BorderRadius.zero,
            side: BorderSide(color: Colors.red)
          )
        )
      ),
      onPressed: () => null
    )
  ]
)

 类似资料:
  • 如何将转换为带有圆边的按钮?我使用获得了圆角边框形状,但不知怎么需要给边框着色。

  • 如何创建类似于< code > floating action button 的东西?

  • 我有一个按钮,我给了角半径属性。在xml代码中,应用程序似乎是弯曲的,但当我运行应用程序时,按钮是矩形的。 我也用材质按钮代替了这个按钮,但还是发生了同样的事情。它在XML设计中似乎是弯曲的,但在应用程序中却不是。

  • 下面的屏幕截图显示了对1的测试。我想使矩形外的组件的角完全透明 但是,当父面板上有红色背景(或任何非标准颜色)时,您可以看到这种方法的缺点。拐角默认为默认面板颜色(最容易在中看到)。 最终,我希望它能用于父容器中的非标准颜色,但它的部分灵感来自于我需要做什么才能用渐变绘制复制此组件? 有人知道如何让这些角落透明吗? 而是为JTextArea的内部填充设计的,带有背景图像(