【问题标题】:Flutter ScrollController position in NestedScrollViewFlutter ScrollController 在 NestedScrollView 中的位置
【发布时间】:2019-05-16 23:09:11
【问题描述】:

我有一个NestedScrollView,其中包含一个SliverAppBar 和一个TabBarView,每个选项卡都包含一个无限加载列表。现在我只有一个ScrollController 附加到NestedScrollView,并且列表小部件读取此控制器的滚动位置。

无限加载逻辑使用controller.position.extentAfter 来决定何时从 API 获取数据。但是有多个标签,我得到错误

ScrollController 附加到多个滚动视图。

我尝试阅读有关 controller.positions 的信息,但无法理解可用的 2 行文档。我的问题是,是否可以在 TabBarView 中访问每页的滚动位置,或者我应该为每个位置使用单独的 ScrollController 而忘记正确滚动条子?

【问题讨论】:

标签: flutter


【解决方案1】:

您不能对不同的滚动视图使用相同的控制器。这就是您收到此错误“ScrollController attach to multiple scroll views.”的原因 但是,您可以监听 PrimaryScrollController 并更新无限列表以从 API 获取更多数据。如果您查看 NestedScrollView 的代码,您会在其中找到 PrimaryScrollController。

NestedScrollView(
  body: Builder(builder: (BuildContext context) {
    final innerScrollController = PrimaryScrollController.of(context);
    // Use the innerScrollController to listen to the scrolling.
    // This would be your controller for list. You can listen to this controller to know whether the list has reached maxScrollExtent and fetch data from API.
    }),
 );

For reference:

[body] 构建在提供与 [NestedScrollView] 的滚动控制器交互的 [PrimaryScrollController] 的上下文中。因此,不应为 [body] 内的任何 [ListView] 或其他基于 [Scrollable] 的小部件指定使用 [NestedScrollView] 滚动的显式 [ScrollController],而是允许其默认为由提供的 [PrimaryScrollController] [NestedScrollView]。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-14
    • 2018-09-28
    • 2020-06-03
    • 2021-02-06
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    相关资源
    最近更新 更多