在标题和文本字段之间没有呈现填充?
在Flutter中,有时候在标题和文本框之间设置间距时,会出现间距无法渲染的问题。下面提供了一些解决方法:
1. 使用Container并设置高度:
Column(
children:
Widget1(),
Container(height: 10), // 设置高度
Widget2(),
],
)
2. 使用Spacer:
Column(
children:
Widget1(),
Spacer(), // 使用Spacer
Widget2(),
],
)
3. 使用Expanded:
Column(
children:
Widget1(),
Expanded(child: SizedBox()), // 使用Expanded
Widget2(),
],
)
4. 使用mainAxisAlignment属性:
Column(
mainAxisAlignment: MainAxisAlignment.spaceAround, // 设置mainAxisAlignment
children:
Widget1(),
Widget2(),
],
)
5. 使用Wrap:
Wrap(
direction: Axis.vertical, // 确保设置这个属性
spacing: 20, // 设置间距
children:
Widget1(),
Widget2(),
],
)
以上是一些解决该问题的方法,对应的代码可以在以下链接中找到:[Space between Column's children in Flutter](https://stackoverflow.com/questions/52774921)
问题的原因是在代码中使用了SizedBox组件来设置头部和文本字段之间的间距,但是代码中写错了组件的名称,导致无法渲染出间距。解决方法是将代码中的"Sizedbox"改为"SizedBox",并且在height属性中设置所需的间距值。
修正后的代码如下:
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
body: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Image.asset(
"assets/Login_Photo.jpg",
height: MediaQuery.of(context).size.height * 0.4,
width: MediaQuery.of(context).size.width,
fit: BoxFit.cover,
),
Padding(
padding: const EdgeInsets.all(50.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'Login',
style: TextStyle(
fontSize: 35,
fontFamily: 'Avenir',
fontWeight: FontWeight.w900,
),
),
SizedBox(height: 10), // 修改此处的组件名称
Row(
padding: const EdgeInsets.all(50.0),
children:
Expanded(
child: TextField(
decoration: InputDecoration(hintText: "Email Address"),
),
),
],
),
],
),
),
],
),
);
}
感谢回答,但是这似乎不起作用...会抛出错误。我之前也尝试了你提供的方式,但是没有成功。还有其他的想法吗?
问题的原因是在文本框(TextField)和标题(Text)之间的padding没有显示出来。这是因为在代码中,padding是被应用在包含文本框和标题的Column组件上的,而不是直接应用在Row组件上。
要解决这个问题,可以将Row组件包裹在一个Container组件中,并在Container组件上应用padding。下面是修改后的代码:
Widget build(BuildContext context) {
return Scaffold(
body: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Image.asset(
"assets/Login_Photo.jpg",
height: MediaQuery.of(context).size.height * 0.4,
width: MediaQuery.of(context).size.width,
fit: BoxFit.cover,
),
Padding(
padding: const EdgeInsets.all(50.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'Login',
style: TextStyle(
fontSize: 35,
fontFamily: 'Avenir',
fontWeight: FontWeight.w900,
),
),
Container(
margin: EdgeInsets.only(top: 10, left: 0, right: 0, bottom: 0),
child: Container(
padding: const EdgeInsets.all(50.0),
child: Row(
children: [
Expanded(
child: TextField(
decoration: InputDecoration(hintText: "Email Address"),
),
),
],
),
),
),
],
),
)
],
),
);
}
通过在Container组件中添加padding,我们成功地解决了padding没有显示的问题。现在,文本框和标题之间有了正确的padding。