Flutter 小部件在第二次运行时为图标添加额外的填充?
我有一个用于日期选择器的小部件,它显示一个日期选择器、一个图标和一些文本。一些可选文本被传递到文本部分,因此根据调用它的位置,这是唯一的区别。现在,在某个页面上,这个小部件被调用了两次,但在第二次调用时,图标左侧的填充比第一次调用时多。这个填充物不应该在那里。两者之间唯一的区别是给每个人的可选文本,似乎有足够的空间。我已经附上了代码和它的图像。感谢任何人谁可以提供一些建议,如何摆脱额外的间距 这是呈现日期选择器、图标和文本的小部件Flutter 小部件在第二次运行时为图标添加额外的填充?,flutter,Flutter,我有一个用于日期选择器的小部件,它显示一个日期选择器、一个图标和一些文本。一些可选文本被传递到文本部分,因此根据调用它的位置,这是唯一的区别。现在,在某个页面上,这个小部件被调用了两次,但在第二次调用时,图标左侧的填充比第一次调用时多。这个填充物不应该在那里。两者之间唯一的区别是给每个人的可选文本,似乎有足够的空间。我已经附上了代码和它的图像。感谢任何人谁可以提供一些建议,如何摆脱额外的间距 这是呈现日期选择器、图标和文本的小部件 class DatePicker extends Statef
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));
}
}
这是因为MainAxisAlignment.spaceBetween和两个文本的长度不同,因此它似乎有不同的填充。使用MainAxisAlignment.start,您就会明白
编辑:打字错误这是因为MainAxisAlignment.spaceBetween和两个文本的长度不同,因此似乎有不同的填充。使用MainAxisAlignment.start,您就会明白 编辑:打字错误
Container(
child: DatePicker(optionalText: "Start")
),
SizedBox(height: 10),
Container(
child: DatePicker(optionalText: "End"),
),