{"id":13491187,"url":"https://github.com/fluttercandies/extended_nested_scroll_view","last_synced_at":"2025-05-16T10:05:53.469Z","repository":{"id":38325078,"uuid":"170705062","full_name":"fluttercandies/extended_nested_scroll_view","owner":"fluttercandies","description":"extended nested scroll view to fix following issues.  1.pinned sliver header issue  2.inner scrollables in tabview sync issue  3.pull to refresh is not work. 4.do without ScrollController in NestedScrollView's body","archived":false,"fork":false,"pushed_at":"2025-04-20T12:27:39.000Z","size":2908,"stargazers_count":622,"open_issues_count":17,"forks_count":128,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-05-16T10:05:01.211Z","etag":null,"topics":["flutter","nestedscrollview","pinned-sliver-headers","tabview-sync-issue"],"latest_commit_sha":null,"homepage":"","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fluttercandies.png","metadata":{"files":{"readme":"README-ZH.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"custom":"http://zmtzawqlp.gitee.io/my_images/images/qrcode.png"}},"created_at":"2019-02-14T14:34:49.000Z","updated_at":"2025-05-09T02:14:32.000Z","dependencies_parsed_at":"2023-02-16T07:00:52.046Z","dependency_job_id":"abbb65d2-3b8d-4293-aa0c-c584db70f40b","html_url":"https://github.com/fluttercandies/extended_nested_scroll_view","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fluttercandies%2Fextended_nested_scroll_view","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fluttercandies%2Fextended_nested_scroll_view/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fluttercandies%2Fextended_nested_scroll_view/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fluttercandies%2Fextended_nested_scroll_view/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fluttercandies","download_url":"https://codeload.github.com/fluttercandies/extended_nested_scroll_view/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254509476,"owners_count":22082891,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["flutter","nestedscrollview","pinned-sliver-headers","tabview-sync-issue"],"created_at":"2024-07-31T19:00:54.377Z","updated_at":"2025-05-16T10:05:53.463Z","avatar_url":"https://github.com/fluttercandies.png","language":"Dart","funding_links":["http://zmtzawqlp.gitee.io/my_images/images/qrcode.png"],"categories":["Packages","Dart"],"sub_categories":[],"readme":"# extended_nested_scroll_view\n\n[![pub package](https://img.shields.io/pub/v/extended_nested_scroll_view.svg)](https://pub.dartlang.org/packages/extended_nested_scroll_view) [![GitHub stars](https://img.shields.io/github/stars/fluttercandies/extended_nested_scroll_view)](https://github.com/fluttercandies/extended_nested_scroll_view/stargazers) [![GitHub forks](https://img.shields.io/github/forks/fluttercandies/extended_nested_scroll_view)](https://github.com/fluttercandies/extended_nested_scroll_view/network)  [![GitHub license](https://img.shields.io/github/license/fluttercandies/extended_nested_scroll_view)](https://github.com/fluttercandies/extended_nested_scroll_view/blob/master/LICENSE)  [![GitHub issues](https://img.shields.io/github/issues/fluttercandies/extended_nested_scroll_view)](https://github.com/fluttercandies/extended_nested_scroll_view/issues) \u003ca href=\"https://qm.qq.com/q/ZyJbSVjfSU\"\u003e![FlutterCandies QQ 群](https://img.shields.io/badge/dynamic/yaml?url=https%3A%2F%2Fraw.githubusercontent.com%2Ffluttercandies%2F.github%2Frefs%2Fheads%2Fmain%2Fdata.yml\u0026query=%24.qq_group_number\u0026label=QQ%E7%BE%A4\u0026logo=qq\u0026color=1DACE8)\n\n文档语言: [English](README.md) | [中文简体](README-ZH.md)\n\n扩展NestedScrollView来修复了下面的问题\n\n1.[pinned的Header的问题](https://github.com/flutter/flutter/issues/22393)\n\n2.[body里面TabView列表滚动同步，互相影响的问题](https://github.com/flutter/flutter/issues/21868)\n\n3.在NestedScrollView的body中不通过设置ScrollController(设置了会跟内部Controller冲突)来完成下拉刷新，增量加载，滚动到顶部\n\n[掘金](https://juejin.im/post/5bea43ade51d45544844010a)\n\n[Web demo for ExtendedNestedScrollView](https://fluttercandies.github.io/extended_nested_scroll_view/)\n\n- [extended\\_nested\\_scroll\\_view](#extended_nested_scroll_view)\n- [Example for issue 1](#example-for-issue-1)\n- [Example for issue 2](#example-for-issue-2)\n  - [ExtendedVisibilityDetector](#extendedvisibilitydetector)\n- [Do without ScrollController in NestedScrollView's body](#do-without-scrollcontroller-in-nestedscrollviews-body)\n- [☕️Buy me a coffee](#️buy-me-a-coffee)\n# Example for issue 1\n\n 在pinnedHeaderSliverHeightBuilder回调中设置全部pinned的header的高度，\n demo里面高度为 状态栏高度+SliverAppbar的高度\n``` dart\n var tabBarHeight = primaryTabBar.preferredSize.height;\n      var pinnedHeaderHeight =\n          //statusBar height\n          statusBarHeight +\n              //pinned SliverAppBar height in header\n              kToolbarHeight;\n\n return NestedScrollView(\n        pinnedHeaderSliverHeightBuilder: () {\n          return pinnedHeaderHeight;\n        },\n       \n```\n# Example for issue 2\n\n我们通常使用下面的方法来保持列表的滚动状态: \n\n| 场景                          | onlyOneScrollInBody | 描述                                                                                                                    |\n| ----------------------------- | ------------------- | ----------------------------------------------------------------------------------------------------------------------- |\n| AutomaticKeepAliveClientMixin | true                | ScrollPosition 不会被释放, 将 onlyOneScrollInBody 设置为 true， 这样我们才能知道哪个列表是当前活动的.                   |\n| PageStorageKey                | false               | ScrollPosition 会被释放, PageStorageKey 只是记录了滚动状态, ExtendedNestedScrollView 中的  scroll positions 只会有一个. |\n\n\n\n``` dart\n    ExtendedNestedScrollView(\n       onlyOneScrollInBody: true,\n    )\n``` \n## ExtendedVisibilityDetector\n\n提供 ExtendedVisibilityDetector 组件来指出当前可见的列表\n\n``` dart\n   ExtendedVisibilityDetector(\n      uniqueKey: const Key('Tab1'),\n      child: ListView(),\n   )\n```\n\n# Do without ScrollController in NestedScrollView's body\n\n因为无法给NestedScrollView的body中的列表设置ScrollController(这样会破坏NestedScrollView内部的InnerScrollController的行为)，所以我这里给大家提供了Demos来展示怎么不通过ScrollController来完成\n\n* [下拉刷新](https://github.com/fluttercandies/extended_nested_scroll_view/tree/master/example/lib/pages/complex/pull_to_refresh.dart)\n  \n* [增量加载](https://github.com/fluttercandies/extended_nested_scroll_view/tree/master/example/lib/pages/complex/load_more.dart) \n  \n* [滚动到顶部](https://github.com/fluttercandies/extended_nested_scroll_view/tree/master/example/lib/pages/complex/scroll_to_top.dart) \n\n* [动态改变PinnedHeaderHeight](https://github.com/fluttercandies/extended_nested_scroll_view/tree/master/example/lib/pages/simple/dynamic_pinned_header_height.dart) \n\n# ☕️Buy me a coffee\n\n![img](http://zmtzawqlp.gitee.io/my_images/images/qrcode.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffluttercandies%2Fextended_nested_scroll_view","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffluttercandies%2Fextended_nested_scroll_view","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffluttercandies%2Fextended_nested_scroll_view/lists"}