微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flutter TextButton 填充

如何解决Flutter TextButton 填充

Flutter 2.0 版本中,FlatButton 已替换为 TextButton

因此,padding 属性不再直接可用,而是作为 ButtonStyle 属性使用。

我的问题是,由于它不再作为 EdgeInsets 提供,我该如何设置?

TextButton(
   style: new ButtonStyle(
     padding: ???,),//padding: const EdgeInsets.all(0),//NOT AVAILABLE
   child: Text("Support",style: Theme.of(context).textTheme.headline2),onpressed: () => {Navigator.pushNamed(context,SupportScreen().routeName)},

解决方法

这是我的 TextButton 代码

Container(
    child: TextButton(
    style: ButtonStyle(
        backgroundColor:
            MaterialStateProperty.all<Color>(Colors.green),padding: MaterialStateProperty.all<EdgeInsets>(
            EdgeInsets.all(10)),),child: Text(
        "Login",style: TextStyle(
        height: 1.0,fontSize: 30,color: Colors.white,onPressed: () => {print("login")},

参见我使用 TextButton Widget 的 style 属性来插入内边距和背景 对于两者我都使用了 MaterialStateProperty.all

,

你可以这样做,例如:

TextButton(
              onPressed: () {},child: Text('Hello World'),style: TextButton.styleFrom(
                padding: EdgeInsets.fromLTRB(10,10,10),primary: Colors.teal,

TextButton.styleFrom() 参考文档: https://api.flutter.dev/flutter/material/TextButton-class.html

使用新按钮的示例和玩法: https://www.woolha.com/tutorials/flutter-using-textbutton-widget-examples

,

您可以为 MaterialStates 设置不同的值:

class TextButtonPadding extends StatelessWidget {
  EdgeInsets _getPadding(Set<MaterialState> states) {
    const interactiveStates = <MaterialState>{
      MaterialState.pressed,MaterialState.hovered,};
    if (states.any(interactiveStates.contains)) {
      return EdgeInsets.all(30.0);
    }
    return EdgeInsets.zero;
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        child: TextButton(
          style: ButtonStyle(
            padding: MaterialStateProperty.resolveWith(_getPadding),onPressed: () {},child: Text(
            'Text Button',);
  }
}

或者为所有 MaterialState 设置一个值:

class TextButtonPadding extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        child: TextButton(
          style: ButtonStyle(
            padding: MaterialStateProperty.all(
              EdgeInsets.all(30.0),);
  }
}

请参阅https://api.flutter.dev/flutter/material/MaterialStateProperty-class.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?