当前位置:   article > 正文

[Flutter]TextButton自定义样式_flutter textbutton

flutter textbutton

Flutter中,TextButton是一个简单的文本按钮,它遵循当前的Theme。如果你想要修改TextButton的样式,可以通过设置其style属性来实现,该属性接收一个ButtonStyle对象。

给TextButton和里面Text添加背景后,效果如下。可以看到它有一个最小宽度,对于短内容的Button就感觉有一个很宽的内边距了。

 自定义过后的样式如下

 下面介绍如何自定义

1. 使用ButtonStyle直接定义样式

  1. TextButton(
  2. onPressed: () {
  3. // 按钮点击事件
  4. },
  5. style: ButtonStyle(
  6. backgroundColor: MaterialStateProperty.all<Color>(Colors.blue), // 设置背景颜色
  7. padding: MaterialStateProperty.all<EdgeInsets>(EdgeInsets.zero), // 设置内边距为零
  8. minimumSize: MaterialStateProperty.all<Size>(Size(44, 30)),
  9. tapTargetSize: MaterialTapTargetSize.shrinkWrap,
  10. alignment: Alignment.center,
  11. shape: MaterialStateProperty.all<RoundedRectangleBorder>(
  12. RoundedRectangleBorder(
  13. borderRadius: BorderRadius.circular(10.0), // 设置圆角半径
  14. ),
  15. ),
  16. side: MaterialStateProperty.all<BorderSide>(
  17. BorderSide(width: 1.0, color: Colors.white), // 设置边框宽度和颜色
  18. ),
  19. iconColor: MaterialStateProperty.all<Color?>(Colors.white),
  20. iconSize: MaterialStateProperty.all(15),
  21. ),
  22. child: Row(
  23. mainAxisSize: MainAxisSize.min,
  24. children: [
  25. Icon(Icons.add), // 图标
  26. SizedBox(width: 5.0), // 图标和文本之间的间距
  27. Text('Button'), // 文本
  28. ],
  29. ),
  30. )

2. 使用TextButton.styleFrom静态方法

TextButton.styleFrom是一个便捷的静态方法,用于快速自定义按钮样式。

  1. TextButton(
  2. onPressed: () {
  3. // 按钮点击事件
  4. },
  5. style: TextButton.styleFrom(
  6. backgroundColor: Colors.blue,
  7. padding: EdgeInsets.zero,
  8. minimumSize: Size(60, 30),
  9. tapTargetSize: MaterialTapTargetSize.shrinkWrap,
  10. alignment: Alignment.centerLeft,
  11. shape: RoundedRectangleBorder(
  12. borderRadius: BorderRadius.circular(10.0), // 设置圆角半径
  13. ),
  14. side: BorderSide(width: 1.0, color: Colors.white), // 设置边框宽度和颜色
  15. iconColor: Colors.white,
  16. ),
  17. child: Row(
  18. mainAxisSize: MainAxisSize.min,
  19. children: [
  20. Icon(Icons.add), // 图标
  21. SizedBox(width: 5.0), // 图标和文本之间的间距
  22. Text('Button'), // 文本
  23. ],
  24. ),
  25. )

3. 覆盖Theme中的默认样式

如果你想要为应用中所有的TextButton设置统一的内边距,可以通过覆盖默认的Theme来实现。

  1. Theme(
  2. data: Theme.of(context).copyWith(
  3. textButtonTheme: TextButtonThemeData(
  4. style: ButtonStyle(
  5. ...
  6. ),
  7. //style: TextButton.styleFrom(
  8. // ...
  9. //),
  10. ),
  11. ),
  12. child: Row(
  13. mainAxisSize: MainAxisSize.min,
  14. children: [
  15. TextButton(
  16. onPressed: () { },
  17. child: Text('Button1'),
  18. ),
  19. TextButton(
  20. onPressed: () { },
  21. child: Text('Button2'),
  22. ),
  23. TextButton(
  24. onPressed: () { },
  25. child: Text('Button3'),
  26. ),
  27. ],
  28. ),
  29. )

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/302622
推荐阅读
相关标签
  

闽ICP备14008679号