当前位置:  开发笔记 > 编程语言 > 正文

按钮宽度匹配父级:颤动

如何解决《按钮宽度匹配父级:颤动》经验,为你挑选了5个好方法。

我是Flutter的新手,所以我想知道如何设置宽度以匹配父布局宽度

 new Container(
              width: 200.0,
              padding: const EdgeInsets.only(top: 16.0),
              child: new RaisedButton(
                child: new Text(
                    "Submit",
                    style: new TextStyle(
                      color: Colors.white,
                    )
                ),
                colorBrightness: Brightness.dark,
                onPressed: () {
                  _loginAttempt(context);
                },
                color: Colors.blue,
              ),
            ),

我对Expanded标签知之甚少,但Expanded扩展视图向两个方向,我不知道该怎么做.如果你知道,请帮助我,先谢谢你.



1> Rémi Roussel..:

正确的解决方案是使用SizedBox.expand小部件,该小部件强制其child匹配其父级的大小.

SizedBox.expand(
  child: RaisedButton(...),
)

有许多替代方案,允许或多或少的定制:

SizedBox(
  width: double.infinity,
  // height: double.infinity,
  child: RaisedButton(...),
)

或使用 ConstrainedBox

ConstrainedBox(
    constraints: const BoxConstraints(minWidth: double.infinity),
    child: RaisedButton(...),
)


SizedBox.expand将使按钮占据全宽和高度,这不是问题.问题是关于一个覆盖全宽而不是高度的按钮.

2> Günter Zöchb..:

可以使用ButtonThemewith 提供size属性minWidth: double.infinity

ButtonTheme(
  minWidth: double.infinity,
  child: MaterialButton(
    onPressed: () {},
    child: Text('Raised Button'),
  ),
),

或者在https://github.com/flutter/flutter/pull/19416登陆后

MaterialButton(
  onPressed: () {},
  child: SizedBox.expand(
    width: double.infinity, 
    child: Text('Raised Button'),
  ),
),



3> Vinoth Kumar..:
    new Container {
         width: double.infinity,
         child: new RaisedButton(...),
    }



4> maheshmnj..:

最简单的方法是使用包装在容器内的FlatButton,默认情况下,Button会采用其父控件的大小,并为容器分配所需的宽度。

            Container(
                  color: Colors.transparent,
                  width: MediaQuery.of(context).size.width,
                  height: 60,
                  child: FlatButton(
                    shape: new RoundedRectangleBorder(
                      borderRadius: new BorderRadius.circular(30.0),
                    ),
                    onPressed: () {},
                    color: Colors.red[300],
                    child: Text(
                      "Button",
                      style: TextStyle(
                        color: Colors.black,
                        fontFamily: 'Raleway',
                        fontSize: 22.0,
                      ),
                    ),
                  ),
                )

上面的小部件产生以下输出



5> Mohit Suthar..:

经过研究,我找到了解决方案,并感谢@GünterZöchbauer,

我用列而不是容器和

将属性设置为CrossAxisAlignment.stretch列以填充Button的父对象

    new Column(
              crossAxisAlignment: CrossAxisAlignment.stretch,
              children: [
                new RaisedButton(
                  child: new Text(
                      "Submit",
                      style: new TextStyle(
                        color: Colors.white,
                      )
                  ),
                  colorBrightness: Brightness.dark,
                  onPressed: () {
                    _loginAttempt(context);
                  },
                  color: Colors.blue,
                ),
              ],
            ),


“列” /“行”不应用于单子布局。请改用单子代。如`Align`,`SizedBox`等。
推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有