颤动:尝试将列中的项目置于底部中心,但它保持左对齐

时间:2017-08-18 00:06:30

标签: footer centering flutter

我正在尝试将一个小部件置于底部中心位于一个列的底部,但它始终与左侧对齐。

return new Column(
  new Stack(
    new Positioned(
      bottom: 0.0, 
      new Center(
        new Container(),
      ),
    ),
  ),
); 

Positioned的存在迫使Container向左,而不是居中。但是,删除Positioned会将Container置于中间位置。

11 个答案:

答案 0 :(得分:41)

Align是要走的路,你只有一个孩子。

如果你有更多,请考虑做这样的事情:

return new Column(
  crossAxisAlignment: CrossAxisAlignment.center,
  mainAxisSize: MainAxisSize.max,
  mainAxisAlignment: MainAxisAlignment.end,
  children: <Widget>[
      //your elements here
  ],
);

答案 1 :(得分:15)

最简单,最正确的方法-使用Spacer()

示例:

Column(
    children: [
      SomeWidgetOnTheTop(),
      Spacer(),
      SomeCenterredBottomWidget(),
    ],
);

答案 2 :(得分:12)

1)您可以使用Align小部件,FractionalOffset.bottomCenter

2)您还可以在left: 0.0中设置right: 0.0Positioned

答案 3 :(得分:7)

我使用了这种方法

我想要的是,一个layout总是在底部,但是每当键盘弹出时,layout也会出现在上方

enter image description here

body: Container(
        color: Colors.amber,
        height: double.maxFinite,
        child: new Stack(
          //alignment:new Alignment(x, y)
          children: <Widget>[
            new Positioned(
              child: myWidget(context, data.iconName, Colors.red),
            ),
            new Positioned(
              child: new Align(alignment: FractionalOffset.bottomCenter,child: myWidget(context, data.iconName, Colors.green)),
            )
          ],
        ),
      ),

答案 4 :(得分:4)

Expanded(
            child: Align(
              alignment: FractionalOffset.bottomCenter,
              child: Padding(
                padding: EdgeInsets.only(bottom: 10.0),
                child: //Your widget here,
              )
            ),
          )

答案 5 :(得分:2)

要轻松做到这一点,最好使用Stack。创建一个Stack,然后在Stack中添加AlignPositioned并根据需要设置位置,您可以添加多个Container

Container
  child: Stack(
    children: <Widget>[
      Align(
         alignment: FractionalOffset.center,
         child: Text(
            "₹ 1000",
         )
      ),
      Positioned(
        bottom: 0,
        child: Container(
           width: double.infinity,
           height: 30,
           child: Text(
             "Balance", ,
           )
         ),
       )
    ],
  )
)

enter image description here

Stack一个小部件,用于将其子级相对于其框的边缘定位。

Stack类非常有用,如果您想以简单的方式重叠多个子级,例如,将一些文本和图像重叠在渐变上,并在底部附加一个按钮。

答案 6 :(得分:0)

在SingleChildScrollView()小部件中包装容器。这样,当弹出键盘时它就不会出现在上方。

答案 7 :(得分:0)

只需扩展答案即可:

  • Spacer是一个没有人提及的选项;如果您不想使用Positioned / Align,则可以使用它。
  • 如果您要指定父级中子级的对齐方式,请使用
  • Align。在Stack
  • 内部直接使用
  • Positioned与Align类似,但仅直接在Stack下工作。

答案 8 :(得分:0)

除了堆栈: 为了避免在键盘上漂浮容器,请使用

return Scaffold(
    appBar: getAppBar(title),
    resizeToAvoidBottomInset: false,
    body:

答案 9 :(得分:0)

def get_index_of_word(word:str, wordlist:list):
    for entry in wordlist:
        splitted_list = entry.split(",")
        entry_word = splitted_list[0]
        if word == entry_word:
            return int(splitted_list[1])
    return None

答案 10 :(得分:0)

使用 Expanded() 设计一切是最简单的方法之一enter image description here

Column(
            children: [
              Expanded(
                child: Placeholder(),
                flex: 1,
              ),
              Expanded(
                child:  Placeholder(),
                flex: 10,
              ),
              Expanded(
                flex: 2,
                child: Placeholder(),
              )
            ],
          ),