我目前正在从事Flutter项目。 我正在基于此https://pub.dev/packages/date_picker_timeline(为制作此文件的人大喊大叫)构建日期选择器小部件。
这就是我到目前为止所拥有的:
@override
Widget build(BuildContext context) {
return Container(
padding: EdgeInsets.fromLTRB(8, 0, 8, 0),
height: 80,
child: ListView.builder(
itemCount: _itemCount,
scrollDirection: Axis.horizontal,
itemBuilder: (context, index) {
DateTime _date = DateTime.now().add(Duration(days: index - 3));
DateTime date = new DateTime(_date.year, _date.month, _date.day);
return GestureDetector(
child: Container(
decoration: boxDecoration(index),
child: Padding(
padding: const EdgeInsets.fromLTRB(16, 8, 16, 8),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Text(
DateFormat("MMM", Intl.defaultLocale)
.format(date)
.toUpperCase(), // Month
style: styleWeekDayAndMonth(index, indexChosen)),
Text(date.day.toString(), // Day
style: styleDay(index, indexChosen)),
Text(DateFormat("E", Intl.defaultLocale)
.format(date)
.toUpperCase(), // WeekDay
style: styleWeekDayAndMonth(index, indexChosen))
],
),
),
),
onTap: () {
if (index != indexChosen) {
setState(() {
indexChosen = index;
});
}
},
);
},
),
);
}
问题是我只有3天在“今天”之前。我可以滚动到右侧(即将到来的日期),但是不能滚动到左侧(先前的日期)。我需要一种方法来进行“约会”。
我的想法:
我认为我可以更改当前为3的值(在 _date 声明中)并进一步推动“ Today”。但是,如果这样做的话,我会从最初的角度松开“今天”。 我的想法是在构建方法结束后立即放置一个控制器并使它滚动到“ Today”位置,但是我不确定这是否是最好的解决方案,我也不知道该怎么做。
谢谢。