flutter - 小部件在第二次运行时为图标添加了额外的填充?
问题描述
我有一个显示日期选择器、图标和一些文本的日期选择器小部件。一些可选文本被传递到文本部分,因此根据调用它的位置,这是它的唯一区别。现在在某个页面上,这个 Widget 被调用了两次,但是在第二次,图标的左边距比第一次多。这个填充不应该在那里。两者之间唯一的区别是给每一个的可选文本,这似乎有足够的空间。我附上了代码和它的图像。感谢任何可以就如何摆脱额外间距提供一些建议的人!
这是呈现日期选择器、图标和文本的小部件。
class DatePicker extends StatefulWidget {
final String optionalText;
DatePicker({Key key, @required this.optionalText}) : super(key: key);
@override
_DatePickerState createState() => _DatePickerState();
}
class _DatePickerState extends State<DatePicker> {
DateTime selectedDate = DateTime.now();
@override
Widget build(BuildContext context) {
return Container(
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Container(
width: MediaQuery.of(context).size.width * .50,
height: MediaQuery.of(context).size.height * .07,
child: Padding(
padding: EdgeInsets.fromLTRB(33, 0, 5, 0),
child: RaisedButton(
color: Colors.white,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10)),
child: dateHyphenReplacer(selectedDate),
onPressed: () => _selectDate(context),
),
),
),
Padding(
padding: EdgeInsets.fromLTRB(5, 10, 0, 10),
child: Icon(
Icons.calendar_today,
color: Colors.white,
size: 30,
),
),
Container(
child: Padding(
padding: EdgeInsets.all(8.0),
child: Text(
'Choose ${widget.optionalText} Date',
style: TextStyle(
color: Colors.white,
fontStyle: FontStyle.italic,
fontFamily: 'Montserrat',
fontSize: 16),
),
),
),
],
),
);
}
Future<void> _selectDate(BuildContext context) async {
final DateTime picked = await showDatePicker(
context: context,
initialDate: selectedDate,
firstDate: DateTime(2015, 8),
lastDate: DateTime(2101));
if (picked != null && picked != selectedDate)
setState(() {
selectedDate = picked;
});
}
dateHyphenReplacer(date){
date = formatDate(date, [mm, '/',dd,'/',yy]);
return Text('$date', style: TextStyle(color: Colors.blue, fontSize: 20));
}
}
这是他们被称为的地方
Container(
child: DatePicker(optionalText: "Start")
),
SizedBox(height: 10),
Container(
child: DatePicker(optionalText: "End"),
),
解决方案
这是因为 MainAxisAlignment.spaceBetween 和两个文本的长度不同,因此它似乎有不同的填充。使用 MainAxisAlignment.start 你就会明白了。
编辑:错字
推荐阅读
- svelte - 我有一个关于 js 交互的 sapper 导出问题
- reactjs - 在反应中添加具有行跨度的行
- docker - Docker-Compose 不能在 Docker Apple Silicon Tech Preview 中运行?(苹果硅m1)
- ssh - 修改您在其上进行 SSH 远程处理的机器的主机名。重新连接失败
- python - 鉴于要分发的值是非数字的,如何将数据帧从长更改为宽?
- flutter - 谷歌地图中的中心标记和用户位置颤动
- bootstrap-4 - 具体怎么设置
- 在右侧的导航栏中?
- python - “AttributeError:‘list’对象没有‘replace’属性
- python-3.x - AttributeError:“NoneType”对象没有属性“编码”(Binance)
- python-3.x - SQLAlchemy:表有多个外键约束关系