简介
Flutter 的 ListView、GridView 或强大的 CustomScrollView 等可滚动小部件无法嵌套内部滚动视图。
如果嵌套,内部滚动视图将依赖性滚动,这对用户来说不是很好。
NestedScrollView 为我们提供了另一种选择,但它不够灵活。例如,我们必须提供“header+body”小部件。
所以我制作了 nested_inner_scroll 库,灵感来自 NestedScrollView,该库具有以下功能:
- 内部滚动和外部滚动是独立的,当我们滚动一个时,另一个的位置不会受到影响。
- 当内部滚动到其边缘时,它可以触发外部滚动视图滚动。
- 支持嵌套fling效果,fling内部视图或外部视图时都很流畅。
用法
- 新的 NestedInnerScrollCoordinator 实例,它需要一个 ScrollController 作为父级。
- 将 NestedInnerScrollCoordinator.outController 作为 ScrollController 提供给外部视图。
- 为每个内部视图准备 Key 实例作为 scrollKey 属性。
- 将 NestedInnerScrollCoordinator.innerController 作为 ScrollController 提供给内部视图。
- 将每个内部视图包裹在 NestedInnerScrollChild 小部件中。
就是这样,然后你就可以拥有嵌套的内部滚动视图了。
您可以查看示例项目 main.dart 以获取更多信息。
其他提示
-
如果您想滚动内部视图,您需要通过 ScrollPosition 来实现。
_coordinator.getInnerPosition(innerViewKey)?.jumpTo(0) -
如果您想拥有下拉刷新功能,可以使用“pull_to_refresh_notification”库。
-
每个内部滚动视图都应具有固定高度。
问题
如果您在使用过程中遇到任何问题,请向我报告问题,并附上模板。