【问题标题】:Creating bidirectional PageView scrolling in Flutter?在 Flutter 中创建双向 PageView 滚动?
【发布时间】:2018-12-18 15:50:57
【问题描述】:

您将如何在 Flutter 中实现双向页面滚动功能?给定 Scaffold 中的多个 PageViews 似乎不起作用,嵌套的 PageViews 也不起作用。我的感觉是 NestedScrollView 可能会提供一个解决方案,但我正在努力找出实现。

【问题讨论】:

标签: widget scrollview flutter


【解决方案1】:

多方向页面浏览:

您可能会为此创建某种诡计,即将页面数量设置为 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));
    }
  }

可能不是最理想的,但非常简单,似乎效果很好。

【讨论】:

    猜你喜欢
    • 2020-02-04
    • 2019-08-13
    • 1970-01-01
    • 2021-11-08
    • 2019-05-23
    • 2020-12-14
    • 1970-01-01
    • 2019-05-20
    • 1970-01-01
    相关资源
    最近更新 更多