如何滚动到水平ListView上的某个位置?

时间:2019-11-17 19:41:01

标签: listview flutter dart flutter-layout

我目前正在从事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天在“今天”之前。我可以滚动到右侧(即将到来的日期),但是不能滚动到左​​侧(先前的日期)。我需要一种方法来进行“约会”。

enter image description here

我的想法:

我认为我可以更改当前为3的值(在 _date 声明中)并进一步推动“ Today”。但是,如果这样做的话,我会从最初的角度松开“今天”。 我的想法是在构建方法结束后立即放置一个控制器并使它滚动到“ Today”位置,但是我不确定这是否是最好的解决方案,我也不知道该怎么做。

谢谢。

0 个答案:

没有答案