flutter/examples/api/lib/widgets
Kate Lovett 27caa7fed9
Add ScrollController.onAttach & onDetach, samples/docs on listening/getting scrolling info (#124823)
This PR does a couple of things!

https://user-images.githubusercontent.com/16964204/231897483-416287f9-50ce-468d-a714-2a4bc0f2e011.mov

![Screenshot 2023-04-13 at 3 24 28 PM](https://user-images.githubusercontent.com/16964204/231897497-f5bee17d-43ed-46e5-acd7-e1bd64768274.png)

Fixes #20819 
Fixes #41910 
Fixes #121419

### Adds ScrollController.onAttach and ScrollController.onDetach

This resolves a long held pain point for developers. When using a scroll controller, there is not scroll position until the scrollable widget is built, and almost all methods of notification are only triggered when scrolling happens. Adding these two methods will help developers gain access to the scroll position when it is created. A common workaround for this was using a post frame callback to access controller.position after the first frame, but this is ripe for issues such as having multiple positions attached to the controller, or the scrollable no longer existing after that post frame callback. I think this can also be helpful for folks to debug cases when the scroll controller has multiple positions attached.

In particular, this also resolves this commented case: https://github.com/flutter/flutter/issues/20819#issuecomment-417784218
The isScrollingNotifier is hard for developers to access.

### Docs & samples

I was surprised we did not have samples on scroll notification or scroll controller, so I overhauled it and added a lot of docs on all the different ways to access scrolling information, when it is available and how they differ.
2023-05-15 21:01:06 +00:00
..
actions Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
animated_grid Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
animated_list Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
animated_size Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
animated_switcher Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
app Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
async Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
autocomplete Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
autofill Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
basic Fix MultiChildLayoutDelegate.hasChild doc (#126433) 2023-05-11 14:59:07 +00:00
binding Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
color_filter Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
dismissible Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
drag_target Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
editable_text Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
focus_manager Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
focus_scope Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
focus_traversal Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
form Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
framework Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
gesture_detector Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
hardware_keyboard Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
heroes Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
image Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
implicit_animations Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
inherited_model Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
inherited_notifier Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
inherited_theme Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
interactive_viewer Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
layout_builder Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
magnifier Remove dead code (#126266) 2023-05-09 15:47:16 +00:00
media_query Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
navigator Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
nested_scroll_view Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
notification_listener Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
overflow_bar Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
overlay Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
overscroll_indicator Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
page_storage Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
page_view Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
preferred_size Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
restoration Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
restoration_properties Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
routes Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
scroll_position Add ScrollController.onAttach & onDetach, samples/docs on listening/getting scrolling info (#124823) 2023-05-15 21:01:06 +00:00
scroll_view Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
scrollbar Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
shared_app_data Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
shortcuts Add CallbackShortcuts example (#123944) 2023-04-05 22:17:59 +00:00
single_child_scroll_view Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
sliver Sliver Cross Axis Group (#123862) 2023-04-28 23:41:58 +00:00
sliver_fill Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
slotted_render_object_widget Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
table Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
tap_region Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
text Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
text_magnifier Remove dead code (#126266) 2023-05-09 15:47:16 +00:00
transitions Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
tween_animation_builder Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
undo_history Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00
will_pop_scope Rename Sample classes (#124080) 2023-04-04 20:34:29 +00:00