X_attachedController_animationControllerssizepixels sizeToPixels isAttached pixelsToSize animateTojumpToreset_assertAttached_attach_onExtentReplaced_detach_disposeAnimationControllersinitialChildSize minChildSize maxChildSizeexpandsnap snapSizessnapAnimationDuration controllershouldCloseOnMinExtentbuilder createStateextent minExtent maxExtent initialExtentcontextdebugFillDescription_cancelActivityminSizemaxSize initialSize _currentSizeavailablePixels hasDragged hasChangedisAtMinisAtMax currentSize currentPixelspixelSnapSizes startActivity addPixelDelta updateSizedisposecopyWith_scrollController_extent initState_impliedSnapSizesdidUpdateWidgetdidChangeDependenciesbuild_replaceExtent_snapSizeErrorMessageonPositionDetachedcreateScrollPositionpositiondetach_dragCancelCallback getExtent_ballisticControllerslistShouldScrollabsorb beginActivityapplyUserOffset_getCurrentSnapSize _isAtSnapSize _shouldSnap goBallisticdragchild _notifier _wasCalled sendReset _sendReset shouldResetvelocity minimumSpeed_pixelSnapSizedxisDonex _getSnapSize ScrollableWidgetBuilderDraggableScrollableControllerDraggableScrollableSheetDraggableScrollableNotification_DraggableSheetExtent_DraggableScrollableSheetState)_DraggableScrollableSheetScrollController'_DraggableScrollableSheetScrollPositionDraggableScrollableActuator!_DraggableScrollableActuatorState_ResetNotifier_InheritedResetNotifier_SnappingSimulation€Ð BuildContextScrollControllerAxisscrollController ScrollViewSingleChildScrollViewListViewGridViewWidgetStatebuild ListenableChangeNotifier kFlutterMemoryAllocationsEnabledmaybeDispatchObjectCreationSetAnimationControllerdoubleextent currentSize currentPixels sizeToPixelsScrollPositionbool hasClients pixelsToSizesnapFuture WidgetTester pumpAndSettlevoidDurationCurvedurationzero unboundedvsyncpositioncontextvalueaddgoIdle hasDragged hasChanged startActivity onCanceled isAnimatingstop addListener updateSizenotificationContext animateTo clampDoubleminSizemaxSizecurveinitialChildSizereset _currentSizenotifyListenersonPositionDetached disposeExtentdisposeremoveListeneranimationControllerclear ScrollablejumpToListTileScaffoldScrollBehaviorPointerDeviceKindmouse dragDevicesStatefulWidgetCenterListoverride NotificationNotificationListenerdepthsetStateFloatingActionButtonViewportNotificationMixinStringdebugFillDescription ValueNotifierinfinitydebugMaybeDispatchCreated VoidCallbackmaptoListcall minExtent maxExtent initialExtentshouldCloseOnMinExtentdispatchdebugMaybeDispatchDisposed snapSizessnapAnimationDuration initialSize initStatewidget minChildSize maxChildSize controller_attachindexlengthisEmptyfirstlastdidUpdateWidget_detachdidChangeDependencies shouldResetValueListenableBuildervalueListenablebuilder LayoutBuilderBoxConstraintsavailablePixels constraintsbiggestheightFractionallySizedBox heightFactor alignment Alignment bottomCenterchildexpandSizedBoxcopyWith_onExtentReplacedWidgetsBindinginstanceaddPostFrameCallback positions elementAt goBallistic debugLabelintasMapkeystoStringPrimaryScrollController ScrollPhysics ScrollContextphysicsapplyToAlwaysScrollableScrollPhysics oldPosition getExtent_cancelActivityoffset millisecondsCurveslineardetachScrollActivityViewportScrollPositionWithSingleContextpixelsabsorb_dragCancelCallbackballisticController beginActivityisAtMinisAtMax addPixelDeltaapplyUserOffsetfirstWhereOrNullsnapSizeabs toleranceFordistance SimulationinitialVelocity pixelSnapSizepixelSnapSizes toleranceClampingScrollSimulationvelocityobjectRuntimeTypesign isCompleted animateWithwhenCompleteOrCancelcontainsremoveDragDragStartDetailsdrag"dependOnInheritedWidgetOfExactType _sendResetnotifier hasListenersInheritedNotifier sendResetInheritedWidget _wasCalledinMillisecondsminmax indexWheresize ChangeNotifierStatefulWidget NotificationViewportNotificationMixinStateScrollControllerScrollPositionWithSingleContextInheritedNotifier Simulationø3ösÅ9BËqÿ¡™øÂÑ‚‚0‚3math‚3 dart:math‚="package:collection/collection.dart‚kpackage:flutter/foundation.dart‚–package:flutter/gestures.dart‚Á basic.dart‚× binding.dart‚ïframework.dartƒ inherited_notifier.dartƒ,layout_builder.dartƒKnotification_listener.dartƒqscroll_activity.dartƒ‘scroll_context.dartƒ°scroll_controller.dartƒÒscroll_notification.dartƒöscroll_physics.dart„scroll_position.dart„5(scroll_position_with_single_context.dart„iscroll_simulation.dart„‹value_listenable_builder.dartÀdüÀº„¸=€ˆ€§€©€Ú���K�x�œ�¿�ð‚‚‚‚:‚<‚j‚•‚¾‚À‚ւ+ƒJƒpƒ�ƒ¯ƒÑƒõ„„4„h„Š„³„µ„÷…E……„…Ô†#†<†_†®†°†Ü†á‡3‡ƒ‡Òˆ ˆˆ`ˆ¯ˆ´ˆþ‰N‰˜‰çŠ4ŠkŠ©Šå‹ ‹7‹p‹w‹|‹~‹ÁŒŒŒnŒƒŒ›ŒÐŒÕŒ×��)�A�x�}��Ö�üŽŽPŽUŽWŽºŽÝŽä�3�����ê�ì�I�q�‰�Ç�Ì�Α‘X‘_‘±’’’$’q’Ó“H“O“ž“¾“Å”&”]”d”­”ò••z•’•·•ß––Z–‘–™–Ζû—N—ƒ—·—ç—ÿ˜Z˜Š˜±˜¼˜Æ˜Î˜ø™'™K™�™š™£™Íš1šLšašišnšpš½š÷šþ›K›’›™›èœ;œTœ[œ¹œð��&�K�’�Õžž7žkž˜ž¥žèžðžõž÷Ÿ_ŸqŸ‰Ÿ¬Ÿ±Ÿ³ŸÏŸÜŸï S ® ¶ » ½¡ ¡¡<¡†¡Ž¡»¢¢T¢Y¢[¢�¢ï£A£Y£¥£÷¤A¤x¤’¤™¤ž¤ ¤Ð¤ê¥¥&¥w¥~¥£¥Ä¥É¥Ë¥ô¦H¦n¦u¦™¦ž¦¡¦£¦ò§4§9§}§‚§Æ¨¨i¨n¨»¨õ¨ú©D©–©åª3ª{ªÌªü««Q«�«ã¬1¬Q¬V¬Ÿ¬ñ­A­F­–­æ®4®N®S®h®m®¼¯¯X¯£¯õ°°°‡°Ô°Ù±.±n±é±î²N²S²À²Ñ³ ³X³|³Œ³®³Í³ë´´´1´R´h´‘´­´Ò´÷µ)µ[µ³µµ¶¶$¶+¶t¶Å··"·E·g·i·º·Ø·ß¸¸!¸#¸t¸’¸™¸¼¸Ú¸Ü¹.¹=¹D¹�¹ßººº7ºMºOº�ºÀºÇ»»k»¼»Ã¼¼r¼y¼È½½T½€½”½–½Ô½Û¾*¾v¾�¾”¾á¿4¿¿–¿�¿íÀ@*À@1À@~À@ÍÀAÀAAÀACÀAvÀA}ÀAÍÀBÀB,ÀB.ÀB{ÀB¯ÀB±ÀBÿÀC'ÀC.ÀC{ÀC²ÀCØÀCÚÀD(ÀDtÀDŒÀD¶ÀD¸ÀDÅÀEÀEÀE ÀEkÀE¨ÀEÉÀEÎÀFÀFgÀF¯ÀFùÀGEÀG�ÀG»ÀGÀÀHÀH^ÀH°ÀHþÀIIÀIšÀIëÀJ'ÀJ„ÀJÖÀJæÀJíÀK?ÀK�ÀKµÀKÐÀKîÀL ÀL.ÀLJÀLsÀL•ÀL·ÀLÜÀMÀM-ÀMYÀM[ÀM¨ÀMÀÀMÂÀM÷ÀNÀNÀN:ÀNUÀNWÀNŠÀN©ÀN«ÀNðÀN÷ÀOHÀO–ÀOÊÀOéÀOëÀP;ÀPxÀPÀPÉÀPïÀPñÀPþÀQ7ÀQeÀQ{ÀQâÀQêÀQïÀQòÀQôÀR1ÀRgÀR—ÀRœÀRéÀS9ÀS>ÀS‘ÀS–ÀSÁÀTÀT-ÀTHÀTdÀT€ÀT™ÀT·ÀT×ÀTøÀU!ÀU8ÀUOÀUxÀU–ÀU´ÀUÜÀVÀVNÀVyÀV£ÀVÎÀW ÀW%ÀW'ÀWIÀWKÀWdÀW}ÀW‘ÀW²ÀWÜÀWùÀXÀXLÀXgÀXiÀX±ÀXÅÀXÇÀYÀY%ÀYoÀYÀYÉÀZÀZhÀZ¶ÀZÞÀZòÀZôÀ[*À[`À[bÀ[“À[ÔÀ[ÖÀ\"À\$À\tÀ\«À\²À]À]SÀ]dÀ] À]¾À]áÀ]æÀ]èÀ^3À^mÀ^tÀ^¿À_ À_FÀ_qÀ_�À_¬À_ýÀ`À`7À`OÀ`pÀ`À`†À`ÃÀ`ÈÀ`ÊÀaÀa5Àa<ÀaŽÀa¥ÀaàÀb(ÀbVÀbeÀblÀb“Àb¹ÀbÔÀbïÀc Àc.ÀcGÀc~Àc˜Àc�ÀcŸÀcÇÀc÷ÀcüÀcþÀd$ÀdRÀdWÀdYÀdmÀdœÀd¹Àd¾ÀdÀÀdäÀeÀe Àe9Àe_Àe�Àe°ÀeÛÀeãÀfÀfÀf8ÀfKÀfhÀf�Àf¾ÀgÀg-ÀgXÀg¯Àg¹ÀgØÀg÷Àh.Àh6Àh;Àh>Àh@Àh�ÀhÕÀhüÀhþÀi Ài!Ài9Ài_Ài„Ài©ÀiÃÀiêÀj&ÀjSÀj‘Àj™ÀjîÀk"Àk'Àk)ÀkOÀkŸÀkØÀkçÀl4Àl ÀlªÀl¹ÀlùÀmNÀmXÀm_Àm­ÀmïÀn1Àn8ÀnNÀnžÀn»Ào ÀoÀoÀoÀo&ÀonÀo•ÀoËÀoóÀp)Àp0ÀpPÀpUÀpWÀpdÀp†ÀpªÀpãÀqÀq ÀqÀqÀq ÀqHÀqtÀq¢ÀqþÀrEÀrœÀrÒÀrúÀs*ÀsEÀsSÀsœÀs¨Às²ÀsìÀsôÀsùÀsûÀtÀtÀtBÀt\ÀtjÀt¢Àt©ÀtËÀtáÀtæÀtèÀu/ÀujÀu’Àu·ÀuÜÀuöÀvÀvYÀv†ÀvÄÀvÌÀwÀwqÀwšÀwæÀxÀxCÀxbÀxzÀxÑÀxúÀyHÀy’ÀyáÀz3ÀzgÀz²À{À{"À{^À{�À{ÁÀ{ÌÀ|À| À|À|À|FÀ|¨À|ëÀ}À}:À}CÀ}aÀ}sÀ}ÔÀ}úÀ}ÿÀ~À~À~VÀ~|À~�À~ÒÀ$À_ÀdÀsÀxÀÓÀìÀ€0À€‚À€—À€ãÀ�)À�+À�LÀ�qÀ�sÀ�€À�ÁÀ�ÝÀ�ùÀ‚À‚"À‚WÀ‚ŸÀ‚¸À‚ÙÀ‚ùÀƒÀƒÀƒÀƒÀƒNÀƒ|Àƒ¥ÀƒªÀƒ¬Àƒ¹ÀƒôÀ„6À„8À„JÀ„oÀ„�À„¯À„öÀ…À…TÀ…nÀ…ÆÀ…ÍÀ† À†%À†'À†4À†^À†À†œÀ†¡À†¤À†¦À†àÀ‡À‡À‡gÀ‡¶À‡ñÀˆ;ÀˆZÀˆ_ÀˆnÀˆsÀˆÑÀ‰*À‰WÀ‰tÀ‰‘À‰©À‰ÇÀ‰ÎÀ‰ÐÀ‰öÀŠ+ÀŠ~ÀЬÀŠ®ÀŠâÀŠäÀŠñÀ‹À‹2À‹\À‹^À‹œÀ‹«À‹²À‹´À‹âÀŒÀŒCÀŒJÀŒOÀŒQÀŒ^ÀŒ“ÀŒÄÀ�À�;À�BÀ�iÀ�nÀ�pÀ�}À�¥À�ÃÀ�ôÀŽ"ÀŽQÀŽ”ÀŽ¢ÀŽÇÀŽÎÀŽÓÀŽÕÀ�%À�TÀ�wÀ�¹À�ðÀ�5À�>À�CÀ�EÀ�À��À�ÐÀ�ÒÀ�ßÀ�óÀ‘GÀ‘mÀ‘tÀ‘˜À‘®À‘³À‘µÀ‘ÂÀ‘éÀ’À’JÀ’yÀ’�À’¬À’³À“À“(À“IÀ“KÀ“rÀ“ŠÀ“ÓÀ“üÀ”%À”IÀ”xÀ”¶À”æÀ”ðÀ”þÀ•MÀ•ŸÀ•ÍÀ– À–5À–RÀ–‚À–ŒÀ–“À–•À–ÕÀ—&À—CÀ—KÀ—€À—‚À—³À—ÆÀ˜ À˜=À˜À˜ÒÀ™$À™rÀ™“À™§À™ÓÀš+ÀšQÀšvÀš«ÀšõÀ›FÀ›fÀ›ŸÀ›ÀÀœÀœÀœ0Àœ9Àœ@ÀœBÀœ[ÀœvÀœ±ÀœõÀ�3À�]À�hÀ�sÀ�xÀ�zÀ�‡À�ÑÀž#ÀžRÀž‡ÀžŒÀž�Àž‘ÀžßÀŸÀŸÀŸgÀŸ¸À  À JÀ OÀ œÀ ìÀ¡?À¡‰À¡ÛÀ¢À¢YÀ¢¨À¢ÓÀ¢ÚÀ£À£LÀ£NÀ£ŸÀ£ßÀ£öÀ£øÀ¤GÀ¤gÀ¤nÀ¤¸À¥À¥À¥@À¥wÀ¥ÀÀ¥íÀ¥òÀ¥ôÀ¦À¦]À¦`À¦bÀ¦¸À¦îÀ¦ðÀ¦ýÀ§%À§tÀ§yÀ§{À§ˆÀ§œÀ§¶À§ÌÀ§ÑÀ§ÔÀ§ÖÀ¨À¨XÀ¨‡À¨�À¨ÊÀ©À© À©À©À©CÀ©JÀ©~À©šÀ©œÀ©ÎÀ©ÕÀªÀªÀª5ÀªJÀªQÀªiÀª�Àª“Àª˜Àª›Àª�ÀªèÀ«7À««À¬ À¬À¬>À¬@À¬ŒÀ¬¥À¬¬À¬ôÀ­'À­TÀ­�À­¸À­ÍÀ­ÔÀ®À®FÀ®ŠÀ®¿À®ÖÀ®ÛÀ®ÞÀ®àÀ¯À¯)À¯FÀ¯lÀ¯–À¯¼À¯ÒÀ¯ÚÀ°À° À°vÀ°ÓÀ°ÚÀ±0À±ƒÀ±®À±êÀ±øÀ²3À²:À²?À²AÀ²[À²zÀ²|À²ÉÀ²éÀ³À³À³>À³@À³MÀ³iÀ³‚À³“À³šÀ³°À³µÀ³·À³ÄÀ³âÀ´ À´À´À´À´8À´tÀ´°À´ëÀµ$ÀµBÀµIÀµbÀµgÀµiÀµ³ÀµûÀ¶À¶fÀ¶ÅÀ¶æÀ· À·À·OÀ·…À·¦À·¾À·ÅÀ¸ À¸CÀ¸›À¸×À¸õÀ¹À¹À¹(À¹/À¹oÀ¹‘À¹ÄÀ¹ËÀ¹øÀ¹ýÀº�^/// @docImport 'package:flutter/material.dart'; /// @docImport 'package:flutter_test/flutter_test.dart'; /// /// @docImport 'primary_scroll_controller.dart'; /// @docImport 'scroll_configuration.dart'; /// @docImport 'scroll_view.dart'; /// @docImport 'scrollable.dart'; /// @docImport 'single_child_scroll_view.dart'; /// @docImport 'viewport.dart';‚‚3‚<‚j‚•‚À‚ւ+ƒJƒpƒ�ƒ¯ƒÑƒõ„„4„h„Š Šç‹ЫЫ€Ï8/// Creates a controller for [DraggableScrollableSheet].‹«‹€>‹«ŒŒ‹úŒ‹û‹â‹ÃN‹âŒŒ€»Œ{T/// Get the current size (as a fraction of the parent height) of the attached sheet.ŒÙŒÙ€¢�7/// Get the current pixel height of the attached sheet.ŽYŽY���›�&/// Returns Whether any [DraggableScrollableController] objects have attached themselves to the /// [DraggableScrollableSheet]. /// /// If this is false, then members that interact with the [ScrollPosition], /// such as [sizeToPixels], [size], [animateTo], and [jumpTo], must not be /// called. �ì�ì �ó����€Ò�ßS/// Convert a sheet's size (fractional value of parent container height) to pixels.�_�_ �f�î�î€Ü�RY/// Convert a sheet's pixel height to size (fractional value of parent container height).•0•0 •7•>•>•P•Z•Z•i�Ð�Љœ•&„ /// Animates the attached sheet from its current size to the given [size], a /// fractional value of the parent container's height. /// /// Any active sheet animation is canceled. If the sheet's internal scrollable /// is currently animating (e.g. responding to a user fling), that animation is /// canceled as well. /// /// An animation will be interrupted whenever the user attempts to scroll /// manually, whenever another activity is started, or when the sheet hits its /// max or min size (e.g. if you animate to 1 but the max size is .8, the /// animation will stop playing when it reaches .8). /// /// The duration must not be zero. To jump to a particular value without an /// animation, use [jumpTo]. /// /// The sheet will not snap after calling [animateTo] even if [DraggableScrollableSheet.snap] /// is true. Snapping only occurs after user drags. /// /// When calling [animateTo] in widget tests, `await`ing the returned /// [Future] may cause the test to hang and timeout. Instead, use /// [WidgetTester.pumpAndSettle].œþœþ �šršr„�œ÷‚[/// Jumps the attached sheet from its current size to the given [size], a /// fractional value of the parent container's height. /// /// If [size] is outside of a the attached sheet's min or max child size, /// [jumpTo] will jump the sheet to the nearest valid size instead. /// /// Any active sheet animation is canceled. If the sheet's inner scrollable /// is currently animating (e.g. responding to a user fling), that animation is /// canceled as well. /// /// The sheet will not snap after calling [jumpTo] even if [DraggableScrollableSheet.snap] /// is true. Snapping only occurs after user drags.žùžù€¶Ÿfd/// Reset the attached sheet to its initial size (see: [DraggableScrollableSheet.initialChildSize]).ŸµŸµ�Ÿº Ì Ì: ö ¿ ¿�˜ Ä¢t¢t$¢Š¢]¢]‚?¢b¤°¤°¤µ¤Å¤¢¤¢�%¤§¥Í¥Í€Ï¥Ò†°†°ŸïŠqƒª/// Controls a [DraggableScrollableSheet]. /// /// Draggable scrollable controllers are typically stored as member variables in /// [State] objects and are reused in each [State.build]. Controllers can only /// be used to control one sheet at a time. A controller can be reused with a /// new sheet if the previous sheet has been disposed. /// /// The controller's methods cannot be used until after the controller has been /// passed into a [DraggableScrollableSheet] and the sheet has run initState. /// /// A [DraggableScrollableController] is a [Listenable]. It notifies its /// listeners whenever an attached sheet changes sizes. It does not notify its /// listeners when a sheet is first attached or when an attached sheet's /// parameters change without affecting the sheet's current size. It does not /// fire when [pixels] changes without [size] changing. For example, if the /// constraints provided to an attached sheet change.³`³x ³€³€ ³†³�³�³•³²³²³·³Ñ³Ñ³Ö³ï³ï³ô´´´ ´ ´ ´%´5´5´:´V´V´[´l´l"´q´•´•´£*³¨³Æ³å³ý´´Š´´´º´Î´È´»´Ë´Ù´ß´ó´í´à´ð´þµµ%µµµµ0µ6µWµHµ7µKµbµhµ¯µ‡µµiµ‚µ µŠµ¢µªµ«³ ³ ‚¥J/// Creates a widget that can be dragged and scrolled in a single gesture. ·Tµ·�­·T�w/// The initial fractional value of the parent container's height to use when /// displaying the widget. /// /// Rebuilding the sheet with a new [initialChildSize] will only move /// the sheet to the new value if the sheet has not yet been dragged since it /// was first built or since the last call to [DraggableScrollableActuator.reset]. /// /// The default value is `0.5`.¸·k€³¸€�/// The minimum fractional value of the parent container's height to use when /// displaying the widget. /// /// The default value is `0.25`.¸Ë¸%€²¸Ë€Œ/// The maximum fractional value of the parent container's height to use when /// displaying the widget. /// /// The default value is `1.0`.ºD¸Þ�lºD�B/// Whether the widget should expand to fill the available space in its parent /// or not. /// /// In most cases, this should be true. However, in the case of a parent /// widget that will position this one based on its desired size (such as a /// [Center]), this should be set to false. /// /// The default value is true.½�ºQƒ@½�ƒ/// Whether the widget should snap between [snapSizes] when the user lifts /// their finger during a drag. /// /// If the user's finger was still moving when they lifted it, the widget will /// snap to the next snap size (see [snapSizes]) in the direction of the drag. /// If their finger was still, the widget will snap to the nearest snap size. /// /// Snapping is not applied when the sheet is programmatically moved by /// calling [DraggableScrollableController.animateTo] or [DraggableScrollableController.jumpTo]. /// /// Rebuilding the sheet with snap newly enabled will immediately trigger a /// snap unless the sheet has not yet been dragged away from /// [initialChildSize] since first being built or since the last call to /// [DraggableScrollableActuator.reset].ÀA5½˜ƒ¦ÀA5ƒU/// A list of target sizes that the widget should snap to. /// /// Snap sizes are fractional values of the parent container's height. They /// must be listed in increasing order and be between [minChildSize] and /// [maxChildSize]. /// /// The [minChildSize] and [maxChildSize] are implicitly included in snap /// sizes and do not need to be specified here. For example, `snapSizes = [.5]` /// will result in a sheet that snaps between [minChildSize], `.5`, and /// [maxChildSize]. /// /// Any modifications to the [snapSizes] list will not take effect until the /// `build` function containing this widget is run again. /// /// Rebuilding with a modified or new list will trigger a snap unless the /// sheet has not yet been dragged away from [initialChildSize] since first /// being built or since the last call to [DraggableScrollableActuator.reset].ÀBÀAE€äÀB€²/// Defines a duration for the snap animations. /// /// If it's not set, then the animation duration is the distance to the snap /// target divided by the velocity of the widget.ÀB¢ÀB0|ÀB¢I/// A controller that can be used to programmatically control this sheet.ÀC¿ÀB³�"ÀC¿€ñ/// Whether the sheet, when dragged (or flung) to its minimum size, should /// cause its parent sheet to close. /// /// Set on emitted [DraggableScrollableNotification]s. It is up to parent /// classes to properly read and handle this value.ÀD¬ÀCÜ€×ÀD¬€¨/// The builder that creates a child to display in this widget, which will /// use the provided [ScrollController] to enable dragging and scrolling /// of the contents.ÀDºÀD»ÀDºÀDº_ÀD禣¦£žy²×‹ö/// A container for a [Scrollable] that responds to drag gestures by resizing /// the scrollable until a limit is reached, and then scrolling. /// /// {@youtube 560 315 https://www.youtube.com/watch?v=Hgw819mL_78} /// /// This widget can be dragged along the vertical axis between its /// [minChildSize], which defaults to `0.25` and [maxChildSize], which defaults /// to `1.0`. These sizes are percentages of the height of the parent container. /// /// The widget coordinates resizing and scrolling of the widget returned by /// builder as the user drags along the horizontal axis. /// /// The widget will initially be displayed at its initialChildSize which /// defaults to `0.5`, meaning half the height of its parent. Dragging will work /// between the range of minChildSize and maxChildSize (as percentages of the /// parent container's height) as long as the builder creates a widget which /// uses the provided [ScrollController]. If the widget created by the /// [ScrollableWidgetBuilder] does not use the provided [ScrollController], the /// sheet will remain at the initialChildSize. /// /// By default, the widget will stay at whatever size the user drags it to. To /// make the widget snap to specific sizes whenever they lift their finger /// during a drag, set [snap] to `true`. The sheet will snap between /// [minChildSize] and [maxChildSize]. Use [snapSizes] to add more sizes for /// the sheet to snap between. /// /// The snapping effect is only applied on user drags. Programmatically /// manipulating the sheet size via [DraggableScrollableController.animateTo] or /// [DraggableScrollableController.jumpTo] will ignore [snap] and [snapSizes]. /// /// By default, the widget will expand its non-occupied area to fill available /// space in the parent. If this is not desired, e.g. because the parent wants /// to position sheet based on the space it is taking, the [expand] property /// may be set to false. /// /// {@tool dartpad} /// /// This is a sample widget which shows a [ListView] that has 25 [ListTile]s. /// It starts out as taking up half the body of the [Scaffold], and can be /// dragged up to the full height of the scaffold or down to 25% of the height /// of the scaffold. Upon reaching full height, the list contents will be /// scrolled up or down, until they reach the top of the list again and the user /// drags the sheet back down. /// /// On desktop and web running on desktop platforms, dragging to scroll with a mouse is disabled by default /// to align with the natural behavior found in other desktop applications. /// /// This behavior is dictated by the [ScrollBehavior], and can be changed by adding /// [PointerDeviceKind.mouse] to [ScrollBehavior.dragDevices]. /// For more info on this, please refer to https://docs.flutter.dev/release/breaking-changes/default-scroll-behavior-drag /// /// Alternatively, this example illustrates how to add a drag handle for desktop applications. /// /// ** See code in examples/api/lib/widgets/draggable_scrollable_sheet/draggable_scrollable_sheet.0.dart ** /// {@end-tool}ÀK’ÀK±ÀK¹ÀK¹ÀKÇÀKÔÀKÔÀKâÀKòÀKòÀLÀLÀLÀLÀL2ÀL2ÀL@ÀLNÀLN"ÀLS%ÀLlÀLzÀL€ÀL‘ÀL…ÀL�ÀLˆÀLœÀL¢ÀL³ÀL­ÀL£ÀL°ÀL¾ÀLÄÀLØÀLÏÀLÅÀLÒÀLãÀLéÀMÀLôÀLêÀL÷ÀMÀMÀM)ÀMÀMÀM ÀM4ÀM:ÀMUÀMIÀM;ÀMLÀJ†ÀJ†‚Ñ€ü/// Creates a notification that the extent of a [DraggableScrollableSheet] has /// changed. /// /// All parameters are required. The [minExtent] must be >= 0. The [maxExtent] /// must be <= 1.0. The [extent] must be between [minExtent] and [maxExtent].ÀM·ÀM]`ÀM·I/// The current value of the extent, between [minExtent] and [maxExtent].ÀNÀMÄKÀN1/// The minimum value of [extent], which is >= 0.ÀNIÀN<ÀNI"/// The maximum value of [extent].ÀN™ÀNYMÀN™//// The initially requested value for [extent].ÀOßÀN­�9ÀOß�/// The build context of the widget that fired this notification. /// /// This can be used to find the sheet's render objects to determine the size /// of the viewport, for instance. A listener can only assume this context /// is live when it first gets the notification.ÀPÖÀOí€ÿÀPÖ€Ñ/// Whether the widget that fired this notification, when dragged (or flung) /// to minExtent, should cause its parent sheet to close. /// /// It is up to parent classes to properly read and handle this value.ÀQÀQÀQ'ÀPóÀPôÀPóÀPó€úÀQÀE ÀE ŒÐÀJ-„ò/// A [Notification] related to the extent, which is the size, and scroll /// offset, which is the position of the child list, of the /// [DraggableScrollableSheet]. /// /// [DraggableScrollableSheet] widgets notify their ancestors when the size of /// the sheet changes. When the extent of the sheet changes via a drag, /// this notification bubbles up through the tree, which means a given /// [NotificationListener] will receive notifications for all descendant /// [DraggableScrollableSheet] widgets. To focus on notifications from the /// nearest [DraggableScrollableSheet] descendant, check that the [depth] /// property of the notification is zero. /// /// When an extent notification is received by a [NotificationListener], the /// listener will already have completed build and layout, and it is therefore /// too late for that widget to call [State.setState]. Any attempt to adjust the /// build or layout based on an extent notification would result in a layout /// that lagged one frame behind, which is a poor user experience. Extent /// notifications are used primarily to drive animations. The [Scaffold] widget /// listens for extent notifications and responds by driving animations for the /// [FloatingActionButton] as the bottom sheet scrolls up.ÀT/ÀTD ÀTLÀTLÀTZÀThÀThÀTvÀT„ÀT„ÀT’ÀT�ÀT�ÀT«ÀT»ÀT»ÀTÉÀTÛÀTÛÀTàÀTüÀTü"ÀUÀU%ÀU%ÀU+ÀU<ÀU<ÀUBÀUSÀUS"ÀUX3ÀUqÀUÀU…ÀU’ÀUŽÀU†ÀU‘ÀU�ÀU£ÀU°ÀU¬ÀU¤ÀU¯ÀU»ÀUÁÀUØÀUÊÀUÂÀUÍÀUãÀUéÀVÀUöÀUêÀUùÀVÀV ÀV&ÀVÀV)ÀV6ÀV=ÀV7ÀV>ÀVJÀV?ÀVeÀVUÀVgÀVmÀVnÀV‹ÀV€ÀV˜ÀV�ÀV›ÀVµÀVªÀVÂÀV·ÀVÅÀT/ÀT/‚ô ÀW7ÀW)ÀW7ÀWZÀWMÀWZÀWsÀWfÀWsÀWŠÀWÀWŠÀW¦ÀW“ÀW¦ÀWÄÀW´%ÀWÄÀWëÀWÞÀWëÀXÀWû!ÀXÀX=ÀX!(ÀX=ÀXUÀXNÀXUÀX¸ÀX³ÀX¸ÀZåÀZàÀZåÀZöÀZö2ÀZÿÀ[,À[,2À[5À[dÀ[d-À[oÀ[•À[•=À[ À[ØÀ[ØHÀ[éÀ]zÀ]z À]�À\&À\&�¾À]k�-/// Start an activity that affects the sheet and register a cancel call back /// that will be called if another activity starts. /// /// The `onCanceled` callback will get called even if the subsequent activity /// started after this one finished, so `onCanceled` must be safe to call at /// any time.À_À_ À_&À_-À_-À_:À]êÀ]ê‚ÜÀ_�/// The scroll position gets inputs in terms of pixels, but the size is /// expected to be expressed as a number between 0..1. /// /// This should only be called to respond to a user drag. To update the /// size in response to a programmatic call, use [updateSize] directly.Àa·Àa·Àa¾ÀaÇÀaÇÀaÔÀ`ÌÀ`Ì‚ÏÀa¬€Ë/// Set the size to the new value. [newSize] should be a number between /// [minSize] and [maxSize]. /// /// This can be triggered by a programmatic (e.g. controller triggered) change /// or a user drag.ÀcµÀcµ Àc¼Àc¡Àc¡YÀc¨ÀdÀd ÀdÀdÀdUÀdÀd[Àd[aÀd`ÀdèÀdèÀdøÀeÀeÀeÀe$Àe$Àe2Àe=Àe=ÀeSÀecÀecÀesÀe…Àe…(Àe˜Àe´Àe´$ÀeÂÀdÂÀdƒwÀdØÀQôÀQô–HÀT‚/// Manages state between [_DraggableScrollableSheetState], /// [_DraggableScrollableSheetScrollController], and /// [_DraggableScrollableSheetScrollPosition]. /// /// The State knows the pixels available along the axis the widget wants to /// scroll, but expects to get a fraction of those pixels to render the sheet. /// /// The ScrollPosition knows the number of pixels a user wants to move the sheet. /// /// The [currentSize] will never be null. /// The [availablePixels] will never be null, but may be `double.infinity`.ÀhÁÀh’@ÀhÁÀhòÀh×"ÀhòÀiÀiÀiÀi‚%ÀiÀk+Àk+ƒêÀk8Ào=Ào=,Ào`ÀoÀoÀoÀo�8Ào-ÀpYÀpZÀpYÀpY€¶ÀpkÀq/Àq/Àq<ÀqÀqÀqÀq‚âÀq)ÀsýÀsþÀsýÀsý€çÀtÀtþÀtþ,Àu!ÀtêÀtê‡$ÀtïÀ|1À|1À|5À|À|�éÀ|Àh@Àh@•ÀÀhFÀ€åÀ�À�À�À�À€åÀ€åBÀ�CÀ�-À�CÀ�\À�N À�\Àƒ®Àƒ¯Àƒ®Àƒ®€†ÀƒçÀ�ÅÀ�ÅÀ�ÓÀ�áÀ�áÀ�ïÀ�ýÀ�ýÀ‚ À�uÀ�vÀ�uÀ�u��À�ªÀƒ1Àƒ1Àƒ>Àƒ Àƒ Àƒ Àƒ €žÀƒÀ„:À„:�éÀ„?À†BÀ†BÀ†QÀ†)À†*À†)À†)vÀ†;À~À~ˆžÀ€�‚„/// A [ScrollController] suitable for use in a [ScrollableWidgetBuilder] created /// by a [DraggableScrollableSheet]. /// /// If a [DraggableScrollableSheet] contains content that is exceeds the height /// of its container, this controller will allow the sheet to both be dragged to /// fill the container and then scroll the child content. /// /// See also: /// /// * [_DraggableScrollableSheetScrollPosition], which manages the positioning logic for /// this controller. /// * [PrimaryScrollController], which can be used to establish a /// [_DraggableScrollableSheetScrollController] as the primary controller for /// descendants.À‰,À‰SÀ‰[À‰[À‰jÀ‰xÀ‰xÀ‰‡À‰•À‰•À‰›À‰­À‰­À‰»À‰,À‰,€ À‰àÀ‰Ò!À‰àÀŠÀ‰ø0ÀŠÀŠyÀŠzÀŠdÀŠxÀŠeÀŠLÀŠ-NÀŠLÀŠ€ÀŠ€*ÀЉÀаÀа0ÀŠÊ ÀŠÿÀŠÿÀ‹ÀŠæÀŠçÀŠæÀŠæ�gÀŠøÀŒsÀŒsÀŒƒÀŒSÀŒTÀŒSÀŒS�ÀŒeÀ�”À�” À�›À�rÀ�sÀ�rÀ�r�_À�„À�VÀ�V€ëÀ�^À�GÀ�G6À�LÀ�ƒÀ�ƒKÀ�ˆÀ�ÔÀ�ÕÀ�ÔÀ�Ô€ÝÀ�æÀ‘ÕÀ‘ÕÀ‘ÜÀ‘·À‘¸À‘·À‘·‹¿À‘ÉÀ�“À�“À�¤À�­À�­À�ºÀ�|À�}À�|À�|�À�ŽÀ†¦À†¦—çÀˆ×‚/// A scroll position that manages scroll activities for /// [_DraggableScrollableSheetScrollController]. /// /// This class is a concrete subclass of [ScrollPosition] logic that handles a /// single [ScrollContext], such as a [Scrollable]. An instance of this class /// manages [ScrollActivity] instances, which changes the /// [_DraggableSheetExtent.currentSize] or visible content offset in the /// [Scrollable]'s [Viewport] /// /// See also: /// /// * [_DraggableScrollableSheetScrollController], which uses this as its [ScrollPosition].À£ À£'À£)À£) À£/À£4À£4À£BÀ¢[À¢[€ï€ž/// Creates a widget that can notify descendent [DraggableScrollableSheet]s /// to reset to their initial position. /// /// The [child] parameter is required.À£îÀ£P€£À£î€Š/// This child's [DraggableScrollableSheet] descendant will be reset when the /// [reset] method is applied to a context that includes it.À¥'À¥'À¥4À£úÀ£ú�öÀ¥!�/// Notifies any descendant [DraggableScrollableSheet] that it should reset /// to its initial position. /// /// Returns `true` if a [DraggableScrollableActuator] is available and /// some [DraggableScrollableSheet] is listening for updates, `false` /// otherwise.À¥öÀ¥÷À¥öÀ¥öeÀ¦&Àž‘Àž‘‡ÍÀ¢#ƒ}/// A widget that can notify a descendent [DraggableScrollableSheet] that it /// should reset its position to the initial state. /// /// The [Scaffold] uses this widget to notify a persistent bottom sheet that /// the user has tapped back if the sheet has started to cover more of the body /// than when at its initial position. This is important for users of assistive /// technology, where dragging may be difficult to communicate. /// /// This is just a wrapper on top of [DraggableScrollableController]. It is /// primarily useful for controlling a sheet in a part of the widget tree that /// the current code does not control (e.g. library code trying to affect a sheet /// in library users' code). Generally, it's easier to control the sheet /// directly by creating a controller and passing the controller to the sheet in /// its constructor (see [DraggableScrollableSheet.controller]).À¦ÛÀ¦éÀ¦êÀ¦ÏÀ¦º1À¦ÏÀ§ À§ À§À¦òÀ¦óÀ¦òÀ¦ò€…À§À§}À§~À§}À§}RÀ§�À¦bÀ¦b�pÀ¦hÀ¨‰À¨—À¨‰À¨‰€„À©’À©…À©€„À©…c/// Whether someone called [sendReset] or not. /// /// This flag should be reset after checking it.À©žÀ©ž€øÀª _/// Fires a reset notification to descendants. /// /// Returns false if there are no listeners.À§ÖÀ§Ö‚ÃÀ¨^/// A [ChangeNotifier] to use with [_InheritedResetNotifier] to notify /// descendants that they should reset to initial state.À«³À«ÊÀ«ÌÀ«ÌÀ«ÛÀ«âÀ«â&À¬ÀªêÀªê�!€¼/// Creates an [InheritedNotifier] that the [DraggableScrollableSheet] will /// listen to for an indication that it should reset itself back to [DraggableScrollableSheet.initialChildSize].À¬À¬+À¬À­À­À­À¬BÀ¬B‚—À­€§/// Specifies whether the [DraggableScrollableSheet] should reset to its /// initial position. /// /// Returns true if the notifier requested a reset, false otherwise.Àª�Àª�„?Àª£À¯À¯%À¯-À¯-À¯;À¯JÀ¯JÀ¯ZÀ¯pÀ¯p#À¯†À¯šÀ¯šÀ¯¤À¯ÀÀ¯ÀÀ¯ÆÀ¯À¯ƒ+À²PÀ²CÀ²PÀ²oÀ²]À²oÀ³À²ÿÀ²ë)À²ÿÀ³-À³ À³-À³YÀ³Y À³`À³BÀ³CÀ³BÀ³BqÀ³VÀ³ÒÀ³Ò À³ÙÀ³¹À³ºÀ³¹À³¹SÀ³ËÀ´(À´( À´/À´À´À´À´�SÀ´&À¶.À¶.À¶5À¶FÀ¶FÀ¶SÀ¶À¶ƒáÀ¶!À®àÀ®à‹À®æ„µ„µ�÷†D�/// The signature of a method that provides a [BuildContext] and /// [ScrollController] for building a widget that may overflow the draggable /// [Axis] of the containing [DraggableScrollableSheet]. /// /// Users should apply the [scrollController] to a [ScrollView] subclass, such /// as a [SingleChildScrollView], [ListView] or [GridView], to have the whole /// sheet be draggable.€²package:flutter/material.dart€ã&package:flutter_test/flutter_test.dart�"primary_scroll_controller.dart�Tscroll_configuration.dart��scroll_view.dart�¥scrollable.dart�Èsingle_child_scroll_view.dart�ù viewport.dart„¸=€ˆ€§€©€Ú���K�x�œ�¿�ð‚‚‚‚:‚<‚j‚•‚¾‚À‚ւ+ƒJƒpƒ�ƒ¯ƒÑƒõ„„4„h„Š„³„µ„÷…E……„…Ô†#†<†_†®†°†Ü†á‡3‡ƒ‡Òˆ ˆˆ`ˆ¯ˆ´ˆþ‰N‰˜‰çŠ4ŠkŠ©Šå‹ ‹7‹p‹w‹|‹~‹ÁŒŒŒnŒƒŒ›ŒÐŒÕŒ×��)�A�x�}��Ö�üŽŽPŽUŽWŽºŽÝŽä�3�����ê�ì�I�q�‰�Ç�Ì�Α‘X‘_‘±’’’$’q’Ó“H“O“ž“¾“Å”&”]”d”­”ò••z•’•·•ß––Z–‘–™–Ζû—N—ƒ—·—ç—ÿ˜Z˜Š˜±˜¼˜Æ˜Î˜ø™'™K™�™š™£™Íš1šLšašišnšpš½š÷šþ›K›’›™›èœ;œTœ[œ¹œð��&�K�’�Õžž7žkž˜ž¥žèžðžõž÷Ÿ_ŸqŸ‰Ÿ¬Ÿ±Ÿ³ŸÏŸÜŸï S ® ¶ » ½¡ ¡¡<¡†¡Ž¡»¢¢T¢Y¢[¢�¢ï£A£Y£¥£÷¤A¤x¤’¤™¤ž¤ ¤Ð¤ê¥¥&¥w¥~¥£¥Ä¥É¥Ë¥ô¦H¦n¦u¦™¦ž¦¡¦£¦ò§4§9§}§‚§Æ¨¨i¨n¨»¨õ¨ú©D©–©åª3ª{ªÌªü««Q«�«ã¬1¬Q¬V¬Ÿ¬ñ­A­F­–­æ®4®N®S®h®m®¼¯¯X¯£¯õ°°°‡°Ô°Ù±.±n±é±î²N²S²À²Ñ³ ³X³|³Œ³®³Í³ë´´´1´R´h´‘´­´Ò´÷µ)µ[µ³µµ¶¶$¶+¶t¶Å··"·E·g·i·º·Ø·ß¸¸!¸#¸t¸’¸™¸¼¸Ú¸Ü¹.¹=¹D¹�¹ßººº7ºMºOº�ºÀºÇ»»k»¼»Ã¼¼r¼y¼È½½T½€½”½–½Ô½Û¾*¾v¾�¾”¾á¿4¿¿–¿�¿íÀ@*À@1À@~À@ÍÀAÀAAÀACÀAvÀA}ÀAÍÀBÀB,ÀB.ÀB{ÀB¯ÀB±ÀBÿÀC'ÀC.ÀC{ÀC²ÀCØÀCÚÀD(ÀDtÀDŒÀD¶ÀD¸ÀDÅÀEÀEÀE ÀEkÀE¨ÀEÉÀEÎÀFÀFgÀF¯ÀFùÀGEÀG�ÀG»ÀGÀÀHÀH^ÀH°ÀHþÀIIÀIšÀIëÀJ'ÀJ„ÀJÖÀJæÀJíÀK?ÀK�ÀKµÀKÐÀKîÀL ÀL.ÀLJÀLsÀL•ÀL·ÀLÜÀMÀM-ÀMYÀM[ÀM¨ÀMÀÀMÂÀM÷ÀNÀNÀN:ÀNUÀNWÀNŠÀN©ÀN«ÀNðÀN÷ÀOHÀO–ÀOÊÀOéÀOëÀP;ÀPxÀPÀPÉÀPïÀPñÀPþÀQ7ÀQeÀQ{ÀQâÀQêÀQïÀQòÀQôÀR1ÀRgÀR—ÀRœÀRéÀS9ÀS>ÀS‘ÀS–ÀSÁÀTÀT-ÀTHÀTdÀT€ÀT™ÀT·ÀT×ÀTøÀU!ÀU8ÀUOÀUxÀU–ÀU´ÀUÜÀVÀVNÀVyÀV£ÀVÎÀW ÀW%ÀW'ÀWIÀWKÀWdÀW}ÀW‘ÀW²ÀWÜÀWùÀXÀXLÀXgÀXiÀX±ÀXÅÀXÇÀYÀY%ÀYoÀYÀYÉÀZÀZhÀZ¶ÀZÞÀZòÀZôÀ[*À[`À[bÀ[“À[ÔÀ[ÖÀ\"À\$À\tÀ\«À\²À]À]SÀ]dÀ] À]¾À]áÀ]æÀ]èÀ^3À^mÀ^tÀ^¿À_ À_FÀ_qÀ_�À_¬À_ýÀ`À`7À`OÀ`pÀ`À`†À`ÃÀ`ÈÀ`ÊÀaÀa5Àa<ÀaŽÀa¥ÀaàÀb(ÀbVÀbeÀblÀb“Àb¹ÀbÔÀbïÀc Àc.ÀcGÀc~Àc˜Àc�ÀcŸÀcÇÀc÷ÀcüÀcþÀd$ÀdRÀdWÀdYÀdmÀdœÀd¹Àd¾ÀdÀÀdäÀeÀe Àe9Àe_Àe�Àe°ÀeÛÀeãÀfÀfÀf8ÀfKÀfhÀf�Àf¾ÀgÀg-ÀgXÀg¯Àg¹ÀgØÀg÷Àh.Àh6Àh;Àh>Àh@Àh�ÀhÕÀhüÀhþÀi Ài!Ài9Ài_Ài„Ài©ÀiÃÀiêÀj&ÀjSÀj‘Àj™ÀjîÀk"Àk'Àk)ÀkOÀkŸÀkØÀkçÀl4Àl ÀlªÀl¹ÀlùÀmNÀmXÀm_Àm­ÀmïÀn1Àn8ÀnNÀnžÀn»Ào ÀoÀoÀoÀo&ÀonÀo•ÀoËÀoóÀp)Àp0ÀpPÀpUÀpWÀpdÀp†ÀpªÀpãÀqÀq ÀqÀqÀq ÀqHÀqtÀq¢ÀqþÀrEÀrœÀrÒÀrúÀs*ÀsEÀsSÀsœÀs¨Às²ÀsìÀsôÀsùÀsûÀtÀtÀtBÀt\ÀtjÀt¢Àt©ÀtËÀtáÀtæÀtèÀu/ÀujÀu’Àu·ÀuÜÀuöÀvÀvYÀv†ÀvÄÀvÌÀwÀwqÀwšÀwæÀxÀxCÀxbÀxzÀxÑÀxúÀyHÀy’ÀyáÀz3ÀzgÀz²À{À{"À{^À{�À{ÁÀ{ÌÀ|À| À|À|À|FÀ|¨À|ëÀ}À}:À}CÀ}aÀ}sÀ}ÔÀ}úÀ}ÿÀ~À~À~VÀ~|À~�À~ÒÀ$À_ÀdÀsÀxÀÓÀìÀ€0À€‚À€—À€ãÀ�)À�+À�LÀ�qÀ�sÀ�€À�ÁÀ�ÝÀ�ùÀ‚À‚"À‚WÀ‚ŸÀ‚¸À‚ÙÀ‚ùÀƒÀƒÀƒÀƒÀƒNÀƒ|Àƒ¥ÀƒªÀƒ¬Àƒ¹ÀƒôÀ„6À„8À„JÀ„oÀ„�À„¯À„öÀ…À…TÀ…nÀ…ÆÀ…ÍÀ† À†%À†'À†4À†^À†À†œÀ†¡À†¤À†¦À†àÀ‡À‡À‡gÀ‡¶À‡ñÀˆ;ÀˆZÀˆ_ÀˆnÀˆsÀˆÑÀ‰*À‰WÀ‰tÀ‰‘À‰©À‰ÇÀ‰ÎÀ‰ÐÀ‰öÀŠ+ÀŠ~ÀЬÀŠ®ÀŠâÀŠäÀŠñÀ‹À‹2À‹\À‹^À‹œÀ‹«À‹²À‹´À‹âÀŒÀŒCÀŒJÀŒOÀŒQÀŒ^ÀŒ“ÀŒÄÀ�À�;À�BÀ�iÀ�nÀ�pÀ�}À�¥À�ÃÀ�ôÀŽ"ÀŽQÀŽ”ÀŽ¢ÀŽÇÀŽÎÀŽÓÀŽÕÀ�%À�TÀ�wÀ�¹À�ðÀ�5À�>À�CÀ�EÀ�À��À�ÐÀ�ÒÀ�ßÀ�óÀ‘GÀ‘mÀ‘tÀ‘˜À‘®À‘³À‘µÀ‘ÂÀ‘éÀ’À’JÀ’yÀ’�À’¬À’³À“À“(À“IÀ“KÀ“rÀ“ŠÀ“ÓÀ“üÀ”%À”IÀ”xÀ”¶À”æÀ”ðÀ”þÀ•MÀ•ŸÀ•ÍÀ– À–5À–RÀ–‚À–ŒÀ–“À–•À–ÕÀ—&À—CÀ—KÀ—€À—‚À—³À—ÆÀ˜ À˜=À˜À˜ÒÀ™$À™rÀ™“À™§À™ÓÀš+ÀšQÀšvÀš«ÀšõÀ›FÀ›fÀ›ŸÀ›ÀÀœÀœÀœ0Àœ9Àœ@ÀœBÀœ[ÀœvÀœ±ÀœõÀ�3À�]À�hÀ�sÀ�xÀ�zÀ�‡À�ÑÀž#ÀžRÀž‡ÀžŒÀž�Àž‘ÀžßÀŸÀŸÀŸgÀŸ¸À  À JÀ OÀ œÀ ìÀ¡?À¡‰À¡ÛÀ¢À¢YÀ¢¨À¢ÓÀ¢ÚÀ£À£LÀ£NÀ£ŸÀ£ßÀ£öÀ£øÀ¤GÀ¤gÀ¤nÀ¤¸À¥À¥À¥@À¥wÀ¥ÀÀ¥íÀ¥òÀ¥ôÀ¦À¦]À¦`À¦bÀ¦¸À¦îÀ¦ðÀ¦ýÀ§%À§tÀ§yÀ§{À§ˆÀ§œÀ§¶À§ÌÀ§ÑÀ§ÔÀ§ÖÀ¨À¨XÀ¨‡À¨�À¨ÊÀ©À© À©À©À©CÀ©JÀ©~À©šÀ©œÀ©ÎÀ©ÕÀªÀªÀª5ÀªJÀªQÀªiÀª�Àª“Àª˜Àª›Àª�ÀªèÀ«7À««À¬ À¬À¬>À¬@À¬ŒÀ¬¥À¬¬À¬ôÀ­'À­TÀ­�À­¸À­ÍÀ­ÔÀ®À®FÀ®ŠÀ®¿À®ÖÀ®ÛÀ®ÞÀ®àÀ¯À¯)À¯FÀ¯lÀ¯–À¯¼À¯ÒÀ¯ÚÀ°À° À°vÀ°ÓÀ°ÚÀ±0À±ƒÀ±®À±êÀ±øÀ²3À²:À²?À²AÀ²[À²zÀ²|À²ÉÀ²éÀ³À³À³>À³@À³MÀ³iÀ³‚À³“À³šÀ³°À³µÀ³·À³ÄÀ³âÀ´ À´À´À´À´8À´tÀ´°À´ëÀµ$ÀµBÀµIÀµbÀµgÀµiÀµ³ÀµûÀ¶À¶fÀ¶ÅÀ¶æÀ· À·À·OÀ·…À·¦À·¾À·ÅÀ¸ À¸CÀ¸›À¸×À¸õÀ¹À¹À¹(À¹/À¹oÀ¹‘À¹ÄÀ¹ËÀ¹øÀ¹ýÀº DraggableScrollableControllerDraggableScrollableSheetDraggableScrollableNotification_DraggableSheetExtent_DraggableScrollableSheetState)_DraggableScrollableSheetScrollController'_DraggableScrollableSheetScrollPositionDraggableScrollableActuator!_DraggableScrollableActuatorState_ResetNotifier_InheritedResetNotifier_SnappingSimulationBû