卡片宽度与父级匹配:颤动

Posted

技术标签:

【中文标题】卡片宽度与父级匹配:颤动【英文标题】:Card width match with parent : flutter 【发布时间】:2019-07-15 01:35:01 【问题描述】:

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

new Scaffold(
    body: new Container(
  decoration: new BoxDecoration(color: AppColors.hoBlue),
  child: Padding(
    padding: EdgeInsets.all(20.0),
    child: new Center(
        child: Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        Stack(
          children: <Widget>[
            Row(
              children: <Widget>[
                Expanded(
                  child: Padding(
                    padding: EdgeInsets.all(20.0),
                    child: Card(
                      child: Padding(
                          padding: EdgeInsets.fromLTRB(20, 0.0, 20.0,20.0),
                          child: Column(
                            children: <Widget>[
                               Card(
                                    elevation: 10.0,
                                    child: Padding(
                                      padding: EdgeInsets.all(20.0),
                                      child:
                                      Text("Sign Up Here"),
                                    ),
                                  ),
                              TextField(
                                decoration: InputDecoration(
                                  labelText: "Email",
                                  hintText: "example@mail.com",
                                ),
                                autofocus: true,
                              ),
                              TextField(
                                decoration: InputDecoration(
                                  labelText: "Password",
                                ),
                                autofocus: true,
                              ),
                              SizedBox(
                                width: double.infinity,
                                // height: double.infinity,
                                child: new RaisedButton(
                                  color: AppColors.hoBlue,
                                  child: Text(
                                    "Sign In",
                                    style: TextStyle(
                                      color: Colors.white,
                                      fontFamily: 'Raleway',
                                      fontSize: 22.0,
                                    ),
                                  ),
                                  onPressed: () => print('Sign In'),
                                ),
                              )
                            ],
                          )),
                    ),
                  ),
                ),
              ],
            )
          ],
        ),
      ],
    )),
  ),
));

Result From Code Above

我需要帮助才能与父母一起制作卡片叠 Result I want

我已经尝试使用堆栈,但结果卡父卡与第一张卡重叠。

我对 Expanded 标签了解一点,但是 Expanded expand view to both方向,我不知道该怎么做。如果您知道,请帮助我,提前致谢。

【问题讨论】:

【参考方案1】:

只需将卡片放入容器中

Padding(
            padding: EdgeInsets.all(20),
            child: Container(
              height: 50,
              width: double.infinity,
              child: Card(
                child: Align(
                    alignment: Alignment.centerLeft,
                    child: Text("Edit Profile")),
              ),
            ),
          )

【讨论】:

【参考方案2】:

使用Material 小部件,其使用方式与卡片相同...并且始终采用与其父类相同的完整宽度和高度...

【讨论】:

【参考方案3】:

如果您想调整或更改卡片视图然后只需将 Card 放入 Container 视图中,然后调整您的容器大小。 此链接将对您有所帮助:https://***.com/a/50017126/7418129

【讨论】:

【参考方案4】:

您不需要 Stack 来获得该视图 - 可以使用 ColumnMaterial 小部件来完成。

return Scaffold(
        body: new Container(
      decoration: new BoxDecoration(color: Colors.blue),
      child: new Center(
          child: MergeSemantics(
            child: Padding(
              padding: const EdgeInsets.all(16.0),
              child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        crossAxisAlignment: CrossAxisAlignment.stretch,
        children: <Widget>[
              Card(
                child: Column(
                  crossAxisAlignment: CrossAxisAlignment.stretch,
                  children: <Widget>[
                    Material(
                      elevation: 24.0,
                      child: Padding(
                        padding: const EdgeInsets.all(20.0),
                        child: Text("Sign Up Here"),
                      ),
                    ),
                    Padding(
                        padding: EdgeInsets.fromLTRB(20, 10.0, 20.0, 20.0),
                        child: Column(
                          crossAxisAlignment: CrossAxisAlignment.stretch,
                          children: <Widget>[
                            TextField(
                              decoration: InputDecoration(
                                labelText: "Email",
                                hintText: "example@mail.com",
                              ),
                              autofocus: true,
                            ),
                            TextField(
                              decoration: InputDecoration(
                                labelText: "Password",
                              ),
                              autofocus: true,
                            ),
                            SizedBox(
                              width: double.infinity,
                              // height: double.infinity,
                              child: new RaisedButton(
                                color: Colors.blue,
                                child: Text(
                                  "Sign In",
                                  style: TextStyle(
                                    color: Colors.white,
                                    fontFamily: 'Raleway',
                                    fontSize: 22.0,
                                  ),
                                ),
                                onPressed: () => print('Sign In'),
                              ),
                            )
                          ],
                        )),
                  ],
                ),
              ),
        ],
      ),
            ),
          )),
    ));

输出:

【讨论】:

Link 到 Material 小部件。

以上是关于卡片宽度与父级匹配:颤动的主要内容,如果未能解决你的问题,请参考以下文章

css 下拉菜单与父级相同的宽度

使 QMenu 具有与父级相同的宽度(QPushButton)

在与父级末尾对齐的图标左侧设置 EditText 的宽度

FrameLayout 高度与父级不匹配

RelativeLayout 中的 ImageView 与父级不匹配

BottomAppBar backgrounTint 与父级不正确匹配并显示在屏幕的一半