我正在尝试将一个小部件置于底部中心位于一个列的底部,但它始终与左侧对齐。
return new Column(
new Stack(
new Positioned(
bottom: 0.0,
new Center(
new Container(),
),
),
),
);
Positioned的存在迫使Container向左,而不是居中。但是,删除Positioned会将Container置于中间位置。
答案 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.0
和Positioned
。
答案 3 :(得分:7)
我使用了这种方法
我想要的是,一个layout
总是在底部,但是每当键盘弹出时,layout
也会出现在上方
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中添加Align
或Positioned
并根据需要设置位置,您可以添加多个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", ,
)
),
)
],
)
)
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)