简介

Flutter 的 ListView、GridView 或强大的 CustomScrollView 等可滚动小部件无法嵌套内部滚动视图。
如果嵌套,内部滚动视图将依赖性滚动,这对用户来说不是很好。

NestedScrollView 为我们提供了另一种选择,但它不够灵活。例如,我们必须提供“header+body”小部件。
所以我制作了 nested_inner_scroll 库,灵感来自 NestedScrollView,该库具有以下功能:

  1. 内部滚动和外部滚动是独立的,当我们滚动一个时,另一个的位置不会受到影响。
  2. 当内部滚动到其边缘时,它可以触发外部滚动视图滚动。
  3. 支持嵌套fling效果,fling内部视图或外部视图时都很流畅。

用法

  1. 新的 NestedInnerScrollCoordinator 实例,它需要一个 ScrollController 作为父级。
  2. 将 NestedInnerScrollCoordinator.outController 作为 ScrollController 提供给外部视图。
  3. 为每个内部视图准备 Key 实例作为 scrollKey 属性。
  4. 将 NestedInnerScrollCoordinator.innerController 作为 ScrollController 提供给内部视图。
  5. 将每个内部视图包裹在 NestedInnerScrollChild 小部件中。
    就是这样,然后你就可以拥有嵌套的内部滚动视图了。
    您可以查看示例项目 main.dart 以获取更多信息。

其他提示

  1. 如果您想滚动内部视图,您需要通过 ScrollPosition 来实现。
    _coordinator.getInnerPosition(innerViewKey)?.jumpTo(0)

  2. 如果您想拥有下拉刷新功能,可以使用“pull_to_refresh_notification”库。

  3. 每个内部滚动视图都应具有固定高度。

问题

如果您在使用过程中遇到任何问题,请向我报告问题,并附上模板。

描述

最小代码示例

flutter doctor -v 信息

GitHub

查看 Github