gitextract_0cpp3x9p/ ├── .github/ │ ├── FUNDING.yml │ └── workflows/ │ ├── assign-issue.yml │ ├── code-analysis.yml │ └── deploy.yml ├── .gitignore ├── .packages ├── CHANGELOG.md ├── CODEOWNERS ├── LICENSE ├── README-zh.md ├── README.md ├── analysis_options.yaml ├── example/ │ ├── .gitignore │ ├── .metadata │ ├── README.md │ ├── analysis_options.yaml │ ├── android/ │ │ ├── .gitignore │ │ ├── app/ │ │ │ ├── build.gradle │ │ │ └── src/ │ │ │ ├── debug/ │ │ │ │ └── AndroidManifest.xml │ │ │ ├── main/ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ ├── kotlin/ │ │ │ │ │ └── com/ │ │ │ │ │ └── example/ │ │ │ │ │ └── example/ │ │ │ │ │ └── MainActivity.kt │ │ │ │ └── res/ │ │ │ │ ├── drawable/ │ │ │ │ │ └── launch_background.xml │ │ │ │ ├── drawable-v21/ │ │ │ │ │ └── launch_background.xml │ │ │ │ ├── values/ │ │ │ │ │ └── styles.xml │ │ │ │ └── values-night/ │ │ │ │ └── styles.xml │ │ │ └── profile/ │ │ │ └── AndroidManifest.xml │ │ ├── build.gradle │ │ ├── gradle/ │ │ │ └── wrapper/ │ │ │ └── gradle-wrapper.properties │ │ ├── gradle.properties │ │ └── settings.gradle │ ├── ios/ │ │ ├── .gitignore │ │ ├── Flutter/ │ │ │ ├── AppFrameworkInfo.plist │ │ │ ├── Debug.xcconfig │ │ │ └── Release.xcconfig │ │ ├── Podfile │ │ ├── Runner/ │ │ │ ├── AppDelegate.swift │ │ │ ├── Assets.xcassets/ │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ └── Contents.json │ │ │ │ └── LaunchImage.imageset/ │ │ │ │ ├── Contents.json │ │ │ │ └── README.md │ │ │ ├── Base.lproj/ │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ └── Main.storyboard │ │ │ ├── Info.plist │ │ │ └── Runner-Bridging-Header.h │ │ ├── Runner.xcodeproj/ │ │ │ ├── project.pbxproj │ │ │ ├── project.xcworkspace/ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ └── xcshareddata/ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ └── WorkspaceSettings.xcsettings │ │ │ └── xcshareddata/ │ │ │ └── xcschemes/ │ │ │ └── Runner.xcscheme │ │ └── Runner.xcworkspace/ │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata/ │ │ ├── IDEWorkspaceChecks.plist │ │ └── WorkspaceSettings.xcsettings │ ├── lib/ │ │ ├── common/ │ │ │ └── route/ │ │ │ ├── navigation_service.dart │ │ │ ├── route.dart │ │ │ └── router_config.dart │ │ ├── features/ │ │ │ ├── custom_scrollview/ │ │ │ │ ├── custom_scrollview_demo/ │ │ │ │ │ ├── custom_scrollview_center_demo_page.dart │ │ │ │ │ ├── custom_scrollview_demo_page.dart │ │ │ │ │ └── multi_sliver_demo_page.dart │ │ │ │ └── sliver_appbar_demo/ │ │ │ │ └── sliver_appbar_demo_page.dart │ │ │ ├── gridview/ │ │ │ │ ├── gridview_ctx_demo/ │ │ │ │ │ └── gridview_ctx_demo_page.dart │ │ │ │ ├── gridview_custom_demo/ │ │ │ │ │ └── gridview_custom_demo_page.dart │ │ │ │ ├── gridview_demo/ │ │ │ │ │ └── gridview_demo_page.dart │ │ │ │ ├── gridview_fixed_height_demo/ │ │ │ │ │ └── gridview_fixed_height_demo_page.dart │ │ │ │ ├── horizontal_gridview_demo/ │ │ │ │ │ └── horizontal_gridview_demo_page.dart │ │ │ │ └── sliver_grid_demo/ │ │ │ │ └── sliver_grid_demo_page.dart │ │ │ ├── home/ │ │ │ │ └── home_page.dart │ │ │ ├── listview/ │ │ │ │ ├── horizontal_listview_demo/ │ │ │ │ │ └── horizontal_listview_page.dart │ │ │ │ ├── infinite_listview_demo/ │ │ │ │ │ └── infinite_listview_page.dart │ │ │ │ ├── listview_ctx_demo/ │ │ │ │ │ └── listview_ctx_demo_page.dart │ │ │ │ ├── listview_custom_demo/ │ │ │ │ │ └── listview_custom_demo_page.dart │ │ │ │ ├── listview_demo/ │ │ │ │ │ └── listview_demo_page.dart │ │ │ │ ├── listview_dynamic_offset/ │ │ │ │ │ └── listview_dynamic_offset_page.dart │ │ │ │ ├── listview_fixed_height_demo/ │ │ │ │ │ └── listview_fixed_height_demo_page.dart │ │ │ │ └── sliver_list_demo/ │ │ │ │ └── sliver_list_demo_page.dart │ │ │ ├── nested_scrollview/ │ │ │ │ ├── nested_scrollview_demo/ │ │ │ │ │ └── nested_scrollview_demo_page.dart │ │ │ │ └── nested_scrollview_tab_bar_view_demo/ │ │ │ │ ├── header/ │ │ │ │ │ └── nested_scrollview_tab_bar_view_demo_header.dart │ │ │ │ ├── logic/ │ │ │ │ │ ├── nested_scrollview_tab_bar_view_demo_logic.dart │ │ │ │ │ ├── nested_scrollview_tab_bar_view_demo_logic_floating_action_btn.dart │ │ │ │ │ ├── nested_scrollview_tab_bar_view_demo_logic_observer.dart │ │ │ │ │ ├── nested_scrollview_tab_bar_view_demo_logic_scroll_type_switch.dart │ │ │ │ │ └── nested_scrollview_tab_bar_view_demo_logic_tab_bar.dart │ │ │ │ ├── page/ │ │ │ │ │ └── nested_scrollview_tab_bar_view_demo_page.dart │ │ │ │ ├── state/ │ │ │ │ │ └── nested_scrollview_tab_bar_view_demo_state.dart │ │ │ │ └── widget/ │ │ │ │ ├── nested_scrollview_tab_bar_view_demo_floating_action_btn.dart │ │ │ │ ├── nested_scrollview_tab_bar_view_demo_header_list_sliver.dart │ │ │ │ ├── nested_scrollview_tab_bar_view_demo_scroll_type_switch.dart │ │ │ │ ├── nested_scrollview_tab_bar_view_demo_tab1_view.dart │ │ │ │ ├── nested_scrollview_tab_bar_view_demo_tab2_view.dart │ │ │ │ ├── nested_scrollview_tab_bar_view_demo_tab3_view.dart │ │ │ │ └── nested_scrollview_tab_bar_view_demo_tabbar.dart │ │ │ ├── pageview/ │ │ │ │ └── pageview_demo/ │ │ │ │ ├── pageview_demo_page.dart │ │ │ │ ├── pageview_parallax_item_listener_page.dart │ │ │ │ └── pageview_parallax_page.dart │ │ │ └── scene/ │ │ │ ├── anchor_demo/ │ │ │ │ ├── anchor_page.dart │ │ │ │ └── anchor_waterfall_page.dart │ │ │ ├── azlist_demo/ │ │ │ │ ├── azlist_cursor.dart │ │ │ │ ├── azlist_index_bar.dart │ │ │ │ ├── azlist_item_view.dart │ │ │ │ ├── azlist_model.dart │ │ │ │ └── azlist_page.dart │ │ │ ├── chat_demo/ │ │ │ │ ├── helper/ │ │ │ │ │ └── chat_data_helper.dart │ │ │ │ ├── model/ │ │ │ │ │ └── chat_model.dart │ │ │ │ ├── page/ │ │ │ │ │ ├── chat_gpt_page.dart │ │ │ │ │ └── chat_page.dart │ │ │ │ └── widget/ │ │ │ │ ├── chat_item_widget.dart │ │ │ │ └── chat_unread_tip_view.dart │ │ │ ├── detail/ │ │ │ │ ├── header/ │ │ │ │ │ └── detail_header.dart │ │ │ │ ├── logic/ │ │ │ │ │ ├── detail_logic.dart │ │ │ │ │ ├── detail_logic_config.dart │ │ │ │ │ ├── detail_logic_list_view.dart │ │ │ │ │ └── detail_logic_nav_bar.dart │ │ │ │ ├── model/ │ │ │ │ │ └── detail_nav_bar_tab_model.dart │ │ │ │ ├── page/ │ │ │ │ │ └── detail_page.dart │ │ │ │ ├── state/ │ │ │ │ │ ├── detail_state.dart │ │ │ │ │ ├── detail_state_config.dart │ │ │ │ │ ├── detail_state_list_view.dart │ │ │ │ │ └── detail_state_nav_bar.dart │ │ │ │ └── widget/ │ │ │ │ ├── detail_config_view.dart │ │ │ │ ├── detail_list_item_wrapper.dart │ │ │ │ ├── detail_list_view.dart │ │ │ │ ├── detail_nav_bar.dart │ │ │ │ └── list_item/ │ │ │ │ ├── detail_list_module1.dart │ │ │ │ ├── detail_list_module2.dart │ │ │ │ ├── detail_list_module3.dart │ │ │ │ ├── detail_list_module4.dart │ │ │ │ ├── detail_list_module5.dart │ │ │ │ ├── detail_list_module6.dart │ │ │ │ ├── detail_list_module7.dart │ │ │ │ └── detail_list_module8.dart │ │ │ ├── expandable_carousel_slider_demo/ │ │ │ │ └── expandable_carousel_slider_demo.dart │ │ │ ├── image_tab_demo/ │ │ │ │ └── image_tab_page.dart │ │ │ ├── scrollview_form_demo/ │ │ │ │ └── scrollview_form_demo_page.dart │ │ │ ├── video_auto_play_list/ │ │ │ │ ├── video_list_auto_play_page.dart │ │ │ │ └── widgets/ │ │ │ │ └── video_widget.dart │ │ │ ├── visibility_demo/ │ │ │ │ ├── mixin/ │ │ │ │ │ └── visibility_exposure_mixin.dart │ │ │ │ └── page/ │ │ │ │ ├── visibility_listview_page.dart │ │ │ │ └── visibility_scrollview_page.dart │ │ │ ├── waterfall_flow_demo/ │ │ │ │ ├── waterfall_flow_grid_item_view.dart │ │ │ │ ├── waterfall_flow_page.dart │ │ │ │ ├── waterfall_flow_swipe_view.dart │ │ │ │ └── waterfall_flow_type.dart │ │ │ └── waterfall_flow_fixed_height_demo/ │ │ │ └── waterfall_flow_fixed_height_page.dart │ │ ├── main.dart │ │ ├── typedefs.dart │ │ ├── utils/ │ │ │ ├── keyboard.dart │ │ │ ├── random.dart │ │ │ └── snackbar.dart │ │ └── widgets/ │ │ ├── animation.dart │ │ └── sliver.dart │ ├── linux/ │ │ └── flutter/ │ │ ├── generated_plugin_registrant.cc │ │ ├── generated_plugin_registrant.h │ │ └── generated_plugins.cmake │ ├── macos/ │ │ ├── .gitignore │ │ ├── Flutter/ │ │ │ ├── Flutter-Debug.xcconfig │ │ │ ├── Flutter-Release.xcconfig │ │ │ └── GeneratedPluginRegistrant.swift │ │ ├── Podfile │ │ ├── Runner/ │ │ │ ├── AppDelegate.swift │ │ │ ├── Assets.xcassets/ │ │ │ │ └── AppIcon.appiconset/ │ │ │ │ └── Contents.json │ │ │ ├── Base.lproj/ │ │ │ │ └── MainMenu.xib │ │ │ ├── Configs/ │ │ │ │ ├── AppInfo.xcconfig │ │ │ │ ├── Debug.xcconfig │ │ │ │ ├── Release.xcconfig │ │ │ │ └── Warnings.xcconfig │ │ │ ├── DebugProfile.entitlements │ │ │ ├── Info.plist │ │ │ ├── MainFlutterWindow.swift │ │ │ └── Release.entitlements │ │ ├── Runner.xcodeproj/ │ │ │ ├── project.pbxproj │ │ │ ├── project.xcworkspace/ │ │ │ │ └── xcshareddata/ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ └── xcshareddata/ │ │ │ └── xcschemes/ │ │ │ └── Runner.xcscheme │ │ └── Runner.xcworkspace/ │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata/ │ │ └── IDEWorkspaceChecks.plist │ ├── pubspec.yaml │ ├── test/ │ │ └── widget_test.dart │ ├── web/ │ │ ├── index.html │ │ └── manifest.json │ └── windows/ │ ├── .gitignore │ ├── CMakeLists.txt │ ├── flutter/ │ │ ├── CMakeLists.txt │ │ ├── generated_plugin_registrant.cc │ │ ├── generated_plugin_registrant.h │ │ └── generated_plugins.cmake │ └── runner/ │ ├── CMakeLists.txt │ ├── Runner.rc │ ├── flutter_window.cpp │ ├── flutter_window.h │ ├── main.cpp │ ├── resource.h │ ├── runner.exe.manifest │ ├── utils.cpp │ ├── utils.h │ ├── win32_window.cpp │ └── win32_window.h ├── lib/ │ ├── scrollview_observer.dart │ └── src/ │ ├── common/ │ │ ├── models/ │ │ │ ├── observe_displaying_child_model.dart │ │ │ ├── observe_displaying_child_model_mixin.dart │ │ │ ├── observe_find_child_model.dart │ │ │ ├── observe_model.dart │ │ │ ├── observe_scroll_child_model.dart │ │ │ ├── observe_scroll_to_index_result_model.dart │ │ │ ├── observer_handle_contexts_result_model.dart │ │ │ └── observer_index_position_model.dart │ │ ├── observer_controller.dart │ │ ├── observer_listener.dart │ │ ├── observer_notification_result.dart │ │ ├── observer_typedef.dart │ │ ├── observer_widget.dart │ │ ├── observer_widget_scope.dart │ │ ├── observer_widget_tag_manager.dart │ │ └── typedefs.dart │ ├── gridview/ │ │ ├── grid_observer_controller.dart │ │ ├── grid_observer_notification_result.dart │ │ ├── grid_observer_view.dart │ │ └── models/ │ │ ├── gridview_observe_displaying_child_model.dart │ │ └── gridview_observe_model.dart │ ├── listview/ │ │ ├── list_observer_controller.dart │ │ ├── list_observer_notification_result.dart │ │ ├── list_observer_view.dart │ │ └── models/ │ │ ├── listview_observe_displaying_child_model.dart │ │ └── listview_observe_model.dart │ ├── notification.dart │ ├── observer_core.dart │ ├── sliver/ │ │ ├── models/ │ │ │ ├── sliver_observer_observe_result_model.dart │ │ │ ├── sliver_viewport_observe_displaying_child_model.dart │ │ │ └── sliver_viewport_observe_model.dart │ │ ├── sliver_observer_controller.dart │ │ ├── sliver_observer_listener.dart │ │ ├── sliver_observer_notification_result.dart │ │ └── sliver_observer_view.dart │ └── utils/ │ ├── observer_utils.dart │ └── src/ │ ├── chat/ │ │ ├── chat_observer_scroll_physics.dart │ │ ├── chat_observer_scroll_physics_mixin.dart │ │ ├── chat_scroll_observer.dart │ │ ├── chat_scroll_observer_model.dart │ │ └── chat_scroll_observer_typedefs.dart │ ├── extends.dart │ ├── log.dart │ ├── nested_scroll_util.dart │ ├── observer_utils.dart │ └── slivers.dart ├── listview_observer.iml ├── pubspec.yaml └── test/ ├── chat_scroll_observer_test.dart ├── grid_observer_test.dart ├── list_observer_test.dart ├── observer_utils_test.dart └── sliver_observer_test.dart