在Flutter中创建双向PageView滚动?

时间:2018-07-10 17:46:39

标签: widget scrollview flutter

如何在Flutter中实现双向页面滚动功能?给定Scaffold中的多个PageView似乎无效,嵌套的PageView也无效。我的感觉是NestedScrollView可能提供解决方案,但我一直在努力寻找实现方法。

1 个答案:

答案 0 :(得分:0)

多向PageView:

您可能为此创建一些技巧,即将页面数量设置为2000,然后将初始页面设置为1000。因此,创建具有1000 +/-左右滚动的PageView吗?

小部件:

@override
  Widget build(BuildContext context) {

    Future<void>.delayed(Duration.zero, () => _diaryBloc.buildComplete());

    return Container(
      height: MediaQuery.of(context).size.height,
      child: PageView.builder(
        controller: _diaryBloc.pageController,
        itemBuilder: (BuildContext context, int position) {
          return _buildPage(_diaryBloc.getDateFromPosition(position));
        },
        itemCount: 2000,
      ),
    );
  }

BLoC或其他控制器

  final PageController pageController = PageController();
  final int initialPage = 1000;

  Future<void> buildComplete() async {
    pageController.jumpToPage(initialPage);
  }

  DateTime getDateFromPosition(int position) {
    if (position < 0) {
      return currentDateTime.subtract(Duration(days: position - initialPage));
    } else {
      return currentDateTime.add(Duration(days: position - initialPage));
    }
  }

可能不是理想的选择,但是它非常简单,并且似乎运行良好。