Update: 2026-06-21 18:58:05

This commit is contained in:
Hamza-Ayed
2026-06-21 18:58:13 +03:00
parent b492b5076b
commit e73be65a72
8755 changed files with 92977 additions and 99 deletions
@@ -0,0 +1,675 @@
€…␍axisDirection
controllerphysicsviewportBuilderincrementCalculatorexcludeFromSemanticshitTestBehaviorsemanticChildCountdragStartBehavior␍restorationIdscrollBehavior clipBehavioraxis createStatedebugFillPropertiesmaybeOfof"recommendDeferredLoadingForContext␍ensureVisible
scrollablepositionupdateShouldNotify _positionresolvedPhysics_physicsdeltaToScrollOrigin_effectiveScrollControllervsyncdevicePixelRatio_devicePixelRationotificationContextstorageContext_persistedScrollOffset_configuration_fallbackScrollController_mediaQueryGestureSettings_updatePosition restoreState
saveOffset initStatedidChangeDependencies_shouldUpdatePositiondidUpdateWidgetdispose_scrollSemanticsKeysetSemanticsActions_gestureDetectorKey_ignorePointerKey_gestureRecognizers_shouldIgnorePointer _lastCanDrag_lastAxisDirection
setCanDragsetIgnorePointer_drag_hold_handleDragDown_handleDragStart_handleDragUpdate_handleDragEnd_handleDragCancel _disposeHold _disposeDrag#_targetScrollOffsetForPointerScroll_pointerSignalEventDelta_receivedPointerSignal_handlePointerScroll _handleScrollMetricsNotification _buildChromebuild_performEnsureVisiblestatechild registrar_selectionDelegate_kDefaultDragTargetSize%_kDefaultSelectToScrollVelocityScalar␍_autoScroller_scheduledLayoutChange _currentDragStartRelatedToOrigin_currentDragEndRelatedToOrigin_selectionStartsInScrollable_scheduleLayoutChange!_selectableStartEdgeUpdateRecords_selectableEndEdgeUpdateRecordsdidChangeSelectableshandleClearSelectionhandleSelectionEdgeUpdate_inferPositionRelatedToOrigin"_updateDragLocationsFromGeometrieshandleSelectAllhandleSelectWordhandleGranularlyExtendSelection"handleDirectionallyExtendSelection _jumpToEdge_globalPositionInScrollable_dragTargetFromEventdispatchSelectionEventToChildensureChildUpdatedallowImplicitScrollingcreateRenderObjectupdateRenderObject_allowImplicitScrolling_semanticChildCount_onScrollToOffsetdescribeSemanticsConfiguration
_innerNodeassembleSemanticsNodeclearSemanticscreateDefaultValuedidUpdateValuefromPrimitives toPrimitivesenablednone␍weightedEventweightedContinuousfreediagonalDragBehaviorhorizontalDetailsverticalDetails_verticalFallbackController_horizontalFallbackController_verticalOuterScrollableKey_horizontalInnerScrollableKeyverticalScrollablehorizontalScrollabletwoDimensionalScrollable␍horizontalKey
lockedAxislastDragOffset_evaluateLockedAxisverticalOuterKeyViewportBuilderTwoDimensionalViewportBuilder_EnsureVisibleResults
Scrollable_ScrollableScopeScrollableState_ScrollableSelectionHandler _ScrollableSelectionHandlerState%_ScrollableSelectionContainerDelegate_getDeltaToScrollOrigin_ScrollSemantics_RenderScrollSemantics_RestorableScrollOffsetDiagonalDragBehaviorTwoDimensionalScrollableTwoDimensionalScrollableState_TwoDimensionalScrollableScope_VerticalOuterDimension_VerticalOuterDimensionState_HorizontalInnerDimension_HorizontalInnerDimensionState�Ÿ ToleranceWidget BuildContextViewportOffsetListFuturevoidViewportListViewGridViewCustomScrollViewof␍ensureVisibleSingleChildScrollViewShrinkWrappingViewportScrollControllerScrollPositionPageViewPageController PageStoragekeepScrollOffsetPageStorageKeykey
ScrollViewScrollNotificationNotificationListenerStatefulWidget␍AxisDirectiondownDragStartBehaviorstartCliphardEdgeHitTestBehavioropaque␍axisDirectionrightinitialScrollOffsetoffset animateToScrollConfigurationScrollBehaviorscrollBehavior␍ScrollPhysicsphysicsAlwaysScrollableScrollPhysics ScrollActionScrollIncrementTypepagelineScrollIncrementCalculatorGestureDetectorexcludeFromSemanticsbool separatedSemanticsConfigurationscrollChildCountintDragGestureRecognizerdragStartBehaviorRestorationBucketRestorationScopeRestorationManagerString ScrollbarScrollableDetails clipBehaviorAxisaxisDirectionToAxisoverrideDiagnosticPropertiesBuilderdebugFillPropertiesadd EnumPropertyDiagnosticsPropertyStringPropertyInheritedElement'getElementForInheritedWidgetOfExactTypewidget
scrollabledependOnInheritedElementcontextmaybeOfaxis FlutterError fromPartsDiagnosticsNode ErrorSummaryErrorDescription ErrorHintrecommendDeferredLoadingactivityScrollActivityvelocitygetInheritedWidgetOfExactTypepositiondoubleDurationzeroCurveCurveseaseScrollPositionAlignmentPolicyexplicit RenderObject_performEnsureVisiblefindRenderObject alignmentdurationcurvealignmentPolicytargetRenderObjectaddAllisEmptyvaluelengthsinglewaitthenInheritedWidgetStateTickerProviderStateMixinRestorationMixin␍ScrollContextcreateScrollPositionOffsetEdgeDraggingAutoScrolleruppixelsleft
controllerTickerProvidercurrentContext␍restorationIdDeviceGestureSettingsgetScrollPhysicsapplyTodetachscheduleMicrotaskdisposeattach protectedregisterForRestoration␍restoreOffsetinitialRestore!debugIsSerializableForRestorationServicesBindinginstancerestorationManager flushData initState
MediaQuerymaybeGestureSettingsOfmaybeDevicePixelRatioOfViewdevicePixelRatiodidChangeDependencies shouldNotify runtimeTypeparentdidUpdateWidget GlobalKeySetSemanticsAction currentStatereplaceSemanticsActionsRawGestureDetectorStateMapTypeGestureRecognizerFactoryverticalVerticalDragGestureRecognizer$GestureRecognizerFactoryWithHandlerssupportedDevices dragDevicesonDownonStartonUpdateonEndonCancelminFlingDistanceminFlingVelocitymaxFlingVelocityvelocityTrackerBuildermultitouchDragStrategygetMultitouchDragStrategygestureSettings
horizontalHorizontalDragGestureRecognizerreplaceGestureRecognizersRenderIgnorePointerignoringDragScrollHoldControllerDragDownDetailsholdDragStartDetailsdragDragUpdateDetailsupdateDragEndDetailsendcancelminmaxminScrollExtentmaxScrollExtentPointerScrollEventLogicalKeyboardKeyHardwareKeyboardlogicalKeysPressedanypointerAxisModifierscontainskindPointerDeviceKindmouseflipAxis scrollDeltadxdyaxisDirectionIsReversedPointerSignalEventshouldAcceptUserOffsetrespondallowPlatformDefaultGestureBindingpointerSignalResolverregisterPointerScrollInertiaCancelEvent␍pointerScroll PointerEventScrollMetricsNotificationdepthmarkNeedsSemanticsUpdate directiondecorationClipBehaviorbuildScrollbarbuildOverscrollIndicatorchildListeneronPointerSignalRawGestureDetectorgesturesbehaviorhitTestBehavior SemanticsexplicitChildNodes␍IgnorePointerviewportBuilderonNotificationallowImplicitScrollingsemanticChildCountSelectionRegistrarSelectionContainerstate registrardelegate)MultiSelectableSelectionContainerDelegatevelocityScalar addListenerremoveListenerSchedulerBindingaddPostFrameCallbacklayoutDidChange
debugLabelSelectionEdgeUpdateEvent
Selectable selectablestoSet removeWheredidChangeSelectablesSelectionResultClearSelectionEventclearhandleClearSelectionglobalPositiontypeSelectionEventType␍endEdgeUpdate translateforEnd granularityforStarthandleSelectionEdgeUpdatependingstopAutoScrollstartAutoScrollIfNecessary scrolling RenderBox␍globalToLocal␍localToGlobalsizeheightwidthinfiniteMatrix4getTransformTocurrentSelectionStartIndexforceUpdateStartSelectionGeometry hasSelectionSelectionPointstartSelectionPoint MatrixUtilstransformPoint␍localPosition
lineHeightcurrentSelectionEndIndexforceUpdateEndendSelectionPointSelectAllSelectionEventhandleSelectAllSelectWordSelectionEventhandleSelectWordGranularlyExtendSelectionEventhandleGranularlyExtendSelectionisEnd!DirectionallyExtendSelectionEvent"handleDirectionallyExtendSelectionRectfromLTRB
edgeBottombottomedgeToptopjumpTofromLTWH
fromCentercenterSelectionEventstartEdgeUpdategranularlyExtendSelectiondirectionallyExtendSelectionremove selectAll
selectWordselectParagraphdispatchSelectionEventToChildabsprecisionErrorTolerancedispatchSelectionEvent␍SemanticsNodeRenderViewportexcludeFromScrollingRenderAbstractViewportuseTwoPaneSemanticsdescribeSemanticsConfigurationSingleChildRenderObjectWidgetRenderProxyBoxisSemanticBoundaryhaveDimensionshasImplicitScrollingscrollPositionscrollExtentMaxscrollExtentMinonScrollToOffsetIterablefirstisTaggedassembleSemanticsNode showOnScreenrectflagsCollectionisHidden␍indexInParent scrollIndex
updateWithconfigchildrenInInversePaintOrderclearSemanticsRestorableValuenotifyListenersObject
kTouchSlopTwoDimensionalViewportTwoDimensionalScrollViewnoneverticalScrollablehorizontalScrollable"dependOnInheritedWidgetOfExactTypetwoDimensionalScrollable␍ScrollMetricsverticalDetailshorizontalDetails␍horizontalKeyincrementCalculatordiagonalDragBehaviorverticalOuterKeyverticalOffsethorizontalOffset␍weightedEventweightedContinuousfree_handleDragDown_handleDragStartsourceTimeStampdelta primaryDelta_handleDragUpdatepixelsPerSecondVelocityprimaryVelocity_handleDragEnd_handleDragCancel
setCanDrag_gestureRecognizersPanGestureRecognizer_configuration_physics_mediaQueryGestureSettings _lastCanDrag_lastAxisDirection_gestureDetectorKey_effectiveScrollController StatefulWidgetInheritedWidgetStateTickerProviderStateMixinRestorationMixin␍ScrollContext)MultiSelectableSelectionContainerDelegateSingleChildRenderObjectWidgetRenderProxyBoxRestorableValue
ScrollableScrollableStateO�›î™}¶¼’`¹ü!¹…”…¢ Tolerance…npackage:flutter/physics.dart‚0
dart:async‚E‚W‚Zmath‚Z dart:math‚bpackage:flutter/foundation.dart‚Œpackage:flutter/gestures.dart‚´package:flutter/rendering.dart‚Ýpackage:flutter/scheduler.dartƒpackage:flutter/services.dartƒ/
basic.dartƒDframework.dartƒ]gesture_detector.dartƒ}media_query.dartƒ˜notification_listener.dartƒ½restoration.dartƒØrestoration_properties.dartƒþscroll_activity.dart„scroll_configuration.dart„Ascroll_context.dart„_scroll_controller.dart„€scroll_physics.dart„žscroll_position.dart„½scrollable_helpers.dart„ßselectable_region.dart…selection_container.dart…#ticker_provider.dart…B view.dart…V␍viewport.dartÀ¥˜À|‰ü<€†€¤€¥€Õ€Ù€ý��D�o�’�Â�õ‚%‚.‚/‚D‚`‚a‚‹‚³‚܃ƒ-ƒ.ƒCƒ\ƒ|ƒ—ƒ¼ƒ×ƒý„„@„^„„�„¼„Þ„ÿ…"…A…U…m…n…¤…¥…½…ۅ܆'†L†¦†§†ö‡%‡M‡b‡~‡¥‡Î‡Õ‡ÖˆˆˆLˆ™ˆÀ‰‰‰X‰�‰…‰ÐŠŠbŠfŠ·‹‹R‹j‹n‹ºŒ ŒŒŒ`ŒdŒ±��C���‘�ÚŽŽk޲޶ŽíŽñ�?���Ü�'�u�y�‡�‹�Ô‘‘T‘q‘À‘Ù’'’E’”’¢’õ“4“^“ƒ“˜“§“Ô“é“û””<”c”€”¶”Δç••A•‡•ˆ•Õõ•û–I–™–â—/—€—œ—¢—ʗߘ˜˜=˜Ž˜ž˜¤˜ò™B™�™Ôš#šlš‘š—šæ› ›&›6›<›‡›¯›Ä›ê›ëœ œTœZœ¦œÑœ×�%�N�T�‰�Úžžždž´ŸŸNŸžŸí   % + | Ê¡¡1¡Q¡R¡Ÿ¡¥¡ö¢5¢;¢K¢Q¢›¢ê£.£W£X£™£å¤2¤H¤N¤š¤ë¥"¥(¥`¥®¥ç¥ü¦4¦5¦w¦Ä¦á¦ç§7§ƒ§Í§â§è§ø§þ¨O¨c¨†¨‡¨Ä©©©d©š©¯©µ©Å©Ëªª;ª<ª„ªŠªÚªà«,«w«Ã«É¬¬\¬b¬r¬x¬½­­8­9­�­Ï®␍®®[®§®ñ¯¯¯a¯¯¯à¯æ°.°4°D°J°™°»°Á°Ö±±±?±�±“±â²²%²p²¼²Â²Ò²Ø³%³7³L³k³l³¨³ó³ù´F´Š´�´Õµµbµzµ�µ·µ¸µîµô¶¶u¶È··)·*·^·d·�·Ä·Å·Ñ¸¸¸¸Y¸„¸Õ¹!¹e¹i¹j¹º¹ã¹éº ºº ºaºkºqº½»»P»v»|»Ê¼¼g¼„¼Š¼Ö½&½A½G½W½]½£½Ñ¾¾`¾…¾ê¿¿b¿µ¿ñÀ@,À@GÀ@OÀ@sÀ@ÈÀ@ÎÀ@ßÀ@ãÀ@äÀA4ÀACÀAIÀAlÀArÀA€ÀA»ÀAÅÀAËÀBÀB^ÀBªÀBÐÀBÖÀC$ÀCtÀC¾ÀCÄÀDÀD`ÀD{ÀD�ÀDÍÀEÀE␍ÀEÀE#ÀEsÀE¡ÀEãÀF.ÀF>ÀFcÀF›ÀF³ÀGÀG&ÀG3ÀGOÀG‹ÀGÐÀH"ÀHwÀH®ÀHÔÀHîÀHûÀIÀI.ÀI„ÀI²ÀIÁÀIÍÀIÕÀIèÀIòÀJÀJÀJÀJeÀJ£ÀJ©ÀJ÷ÀKHÀK˜ÀKžÀKëÀL:ÀLƒÀL‰ÀL×ÀM ÀMjÀM�ÀM“ÀMâÀMþÀNUÀN¯ÀNÌÀO&ÀOhÀOpÀO›ÀOåÀOëÀOýÀPÀPÀPQÀPnÀPtÀP·ÀQÀQ)ÀQNÀQjÀQ†ÀQ­ÀQÌÀR(ÀR/ÀRUÀRVÀR¥ÀRôÀSCÀSˆÀS·ÀS¾ÀSþÀT$ÀTcÀT„ÀT¯ÀTòÀUÀU5ÀUQÀUgÀU‘ÀUÁÀUÊÀUìÀUíÀV&ÀVJÀVzÀV€ÀV�ÀV¹ÀVÜÀVâÀWÀWÀW$ÀWnÀWrÀWtÀWuÀWÆÀXÀX8ÀXœÀX�ÀXÁÀXâÀXãÀXïÀY!ÀYFÀYJÀYLÀYMÀYyÀY}ÀYÇÀYòÀYöÀZ;ÀZˆÀZŒÀZÝÀ[À[BÀ[vÀ[•À[¢À[£À[çÀ[íÀ\;À\ˆÀ\ÖÀ]À] À]!À]^À]�À]«À]¬À]ûÀ^=À^CÀ^”À^ËÀ_À_=À_sÀ_ªÀ_áÀ_æÀ_çÀ`À`SÀ`TÀ``À`›À`œÀ`¨À`ÌÀ`ÍÀ`ÙÀa␍Àa.Àa/Àa;ÀaŠÀa‹Àa—ÀaÅÀaÆÀaÒÀbÀb[Àb\Àb‚Àb±ÀbæÀbçÀc/ÀcJÀc™ÀcÆÀdÀdKÀdŒÀd�ÀdÀÀdßÀeÀebÀe®ÀeäÀfÀfÀfÀfxÀf—ÀfÈÀfÌÀfÍÀfÚÀfæÀg/ÀgmÀgŒÀg¼ÀhÀhÀh#Àh$Àh1Àh=Àh`Àh—ÀhÂÀi␍ÀiUÀi’Ài–Ài—Ài¤Ài°ÀiÅÀiêÀj Àj&Àj=ÀjAÀjBÀjOÀj[Àj|ÀjÉÀjáÀk;ÀkRÀkuÀkyÀkzÀk¯ÀlÀlÀlÀlBÀlnÀl¸ÀlËÀlÑÀm5ÀmUÀm§Àm°ÀmðÀnÀn␍Àn4Àn[Àn“Àn”ÀnäÀnèÀnéÀnöÀoÀo1ÀoWÀoXÀo�Ào·ÀpÀp(Àp[Àp†Àp»ÀpéÀqÀq"ÀqVÀq†Àq¯ÀqúÀrÀrSÀr]ÀreÀržÀrÑÀr×ÀrØÀsÀsÀs#Às'Às(Às5ÀsAÀsTÀsyÀs¤Às±ÀsäÀtÀtÀtÀt/ÀtUÀtjÀtnÀtoÀt~ÀtÀt´ÀtµÀtÁÀtÎÀu Àu=Àu‡Àu�Àu‘Àu’ÀuÀÀuÁÀvÀv.ÀvaÀvbÀv·ÀvóÀw#ÀwHÀwIÀw_Àw{Àw|ÀwˆÀw•ÀwµÀxÀxÀxÀx-ÀxsÀxÁÀy ÀyIÀydÀyqÀyŽÀyªÀyìÀzÀzlÀzÑÀ{À{+À{\À{�À{ÄÀ{óÀ|(À|nÀ|´À|úÀ}ZÀ}ŸÀ~À~GÀ~ŽÀ~£À~¶À~ÃÀ~áÀ#ÀPÀ§À¿À€$À€cÀ€€À€±À€äÀ�À�HÀ�}À�ÃÀ‚ À‚OÀ‚¯À‚ôÀƒWÀƒœÀƒãÀƒøÀ„ À„À„ À„&À„@À„fÀ„šÀ„òÀ„øÀ„üÀ„ýÀ… À…À…<À…eÀ…sÀ…yÀ…›À…ÏÀ…çÀ†?À†pÀ†vÀ†zÀ†{À†�À†�À†ŸÀ†¾À†¿À†ñÀ‡ À‡'À‡PÀ‡TÀ‡UÀ‡‰À‡ÓÀˆ$ÀˆMÀˆhÀˆšÀˆµÀ‰À‰À‰2À‰8À‰<À‰=À‰sÀ‰ÂÀ‰îÀŠ
ÀŠÀŠÀŠ?ÀŠŽÀŠºÀŠÓÀŠîÀŠòÀŠóÀ‹À‹FÀ‹”À‹ÝÀ‹ðÀ‹þÀŒÀŒ4ÀŒƒÀŒ¯ÀŒÄÀŒÙÀŒôÀ�À�À�À�,À�>À�BÀ�CÀ�[À�mÀ�qÀ�rÀ�„À�…À�ÕÀŽÀŽLÀŽaÀޤÀŽÄÀŽËÀŽÏÀŽÐÀ�À�hÀ�vÀ�´À�À�(À�mÀ�®À‘À‘PÀ‘ À‘ïÀ’À’/À’0À’vÀ’ŸÀ’ÎÀ’ûÀ“À“À“NÀ“RÀ“SÀ“�À“ÉÀ”À”eÀ”ŒÀ”¿À”ÏÀ”×À•À•gÀ•¼À•ÿÀ–\À–lÀ–tÀ–ÄÀ–éÀ—À—UÀ—vÀ—ÎÀ—ÔÀ—ØÀ—ÙÀ˜ À˜4À˜„À˜ÖÀ™À™<À™BÀ™FÀ™GÀ™™À™¼ÀšÀš7ÀšhÀš¨Àš°Àš¶ÀšÈÀšÌÀšÍÀ› À›0À›WÀ›…À›¸À›¿À›ÀÀ›êÀ›ùÀœAÀœPÀœWÀœ[Àœ\ÀœmÀœnÀœ{Àœ‡Àœ®ÀœÍÀ�+À�rÀ�yÀ�¡À�ÌÀ�ÓÀž1ÀžuÀž›Àž³ÀžÍÀžäÀŸÀŸ8ÀŸ\ÀŸ…ÀŸ±ÀŸîÀ 
À HÀ jÀ �À ¾À þÀ¡␍À¡À¡%À¡.À¡5À¡6À¡^À¡žÀ¡ØÀ¡ùÀ¢À¢;À¢À¢œÀ¢ÕÀ¢îÀ¢ùÀ£À£À£ À£5À£6À£yÀ£ÈÀ£åÀ¤À¤&À¤BÀ¤`À¤wÀ¤€À¤†À¤‡À¤šÀ¤žÀ¤ŸÀ¤íÀ¥9À¥À¥®À¥ÉÀ¥åÀ¦ À¦+À¦‡À¦­À¦´À¦ùÀ§À§#À§=À§QÀ§yÀ§§À§®À§æÀ§êÀ§ëÀ§øÀ¨À¨IÀ¨tÀ¨ÄÀ©À©À©!À©"À©UÀ©YÀ©–À©ØÀªÀª9ÀªRÀªnÀª‹Àª¤ÀªªÀª«ÀªÊÀªëÀ«À«'À«(À«4À«ŒÀ«ŽÀ«�À«ãÀ¬$À¬%À¬1À¬FÀ¬]À¬�À¬¸À¬ÙÀ¬àÀ¬äÀ¬åÀ¬ñÀ­1À­WÀ­ˆÀ­½À­ÃÀ­ÇÀ­ÈÀ­ÔÀ­çÀ® À®À®"À®#À®/À®VÀ®uÀ®˜À®¼À®×À®ÞÀ®âÀ®äÀ®åÀ¯4À¯_À¯cÀ¯³À°À°OÀ°_À°¿À± À±<À±lÀ±{À±ºÀ±ÄÀ±öÀ±úÀ±ûÀ²;À²nÀ²oÀ²¦À²èÀ²éÀ³À³8À³_À³‹À³µÀ³¶À´À´4À´5À´aÀ´}À´¤À´ÂÀ´ÐÀ´ÖÀµ Àµ"ÀµTÀµXÀµYÀµ£ÀµãÀÀ¶&À¶4À¶:À¶]À¶§À¶ÌÀ¶ÜÀ¶äÀ·
À·#À·gÀ·kÀ·lÀ·¯À·ÑÀ·×À¸#À¸EÀ¸KÀ¸›À¸êÀ¹7À¹ˆÀ¹™À¹ŸÀ¹íÀº=ÀºŽÀºÍÀ»)À»ƒÀ»„À»�À»°À»ïÀ¼"À¼hÀ¼oÀ¼ À¼æÀ¼íÀ½À½À½À½ À½dÀ½“À½ÀÀ½íÀ¾À¾BÀ¾pÀ¾tÀ¾uÀ¾�À¾ÏÀ¿-À¿ZÀ¿²À¿¸À¿ùÀÀ3ÀÀ�ÀÀÙÀÀôÀÁÀÁÀÁGÀÁjÀÁ’ÀÁ›ÀÁ¨ÀÂÀÂTÀÂoÀŠÀ“ÀÂÄÀÂéÀÃÀÃÀà ÀÃkÀÃlÀþÀÄÀÄ!ÀÄNÀÄtÀĉÀÄ�ÀÄ·ÀÅÀÅ)ÀÅQÀÅYÀÅ_ÀÅrÀÅvÀÅwÀÅ·ÀÅ÷ÀÆ;ÀÆdÀƵÀÇÀÇRÀÇ¢ÀÇÜÀÈ ÀÈÀÈhÀȈÀÈ�ÀÈ–ÀÈ×ÀÉ2ÀÉ6ÀÉ7ÀÉoÀÉ©ÀɯÀÉþÀÊ4ÀÊ‚ÀÊÄÀÊðÀËÀË2ÀË9ÀËzÀ˺ÀËòÀÌÀÌhÀÌÀÀÌåÀÍ'À͉ÀÍÉÀÍáÀÎ!ÀÎ*ÀÎoÀ΂ÀΪÀγÀιÀÎãÀÏ)ÀÏÀϤÀÏâÀÐBÀЀÀИÀÐÔÀÐÝÀÑ ÀÑ3ÀÑYÀÑbÀÑhÀÑlÀÑmÀÑyÀѼÀÑçÀÒ(ÀÒ|ÀÒ¨ÀÒÔÀÒÚÀÒíÀÒñÀÒòÀÒþÀÓCÀÓ™ÀÓÛÀÔÀÔÀÔÀÔÀÔ)ÀÔƒÀÔÔÀÕ!ÀÕpÀÕ¯ÀÖÀÖ<ÀÖ\ÀÖbÀÖuÀÖyÀÖzÀÖ†ÀÖæÀ×:ÀׇÀ×ÖÀØÀØzÀØ¢ÀØÂÀØÈÀØÛÀØßÀØàÀÙÀÙ%ÀÙCÀÙcÀÙwÀÙ±ÀÙâÀÚ%ÀÚ2ÀÚnÀÚ¡ÀÚæÀÚìÀÛÀÛ(ÀÛ.ÀÛxÀÛÀÀÜÀÜ"ÀÜ<ÀÜCÀܨÀÜËÀÜèÀÝ0ÀÝ‚ÀÝÖÀÝèÀÝòÀÞ$ÀÞuÀÞ‡ÀÞ‘ÀÞ½ÀßÀßÀß"ÀßBÀß„ÀßÏÀßáÀßëÀàÀà`ÀàrÀà|Àà¦ÀàïÀàùÀá Àá(ÀápÀáÂÀâÀâ(Àâ2ÀâdÀâµÀâÇÀâÑÀâýÀãHÀãRÀãbÀã�ÀãÃÀäÀä Àä*ÀäUÀäŸÀä±Àä»ÀäåÀå.Àå8ÀåHÀåNÀåRÀåSÀå�ÀåÏÀæÀæZÀæƒÀæ‡ÀæˆÀæÆÀæâÀçÀç,ÀçSÀçZÀç^Àç_ÀçkÀçÊÀçäÀèÀèbÀèŠÀè·ÀéÀé,ÀéeÀé¡ÀéÉÀêÀêeÀêŠÀêÆÀëÀë-ÀëWÀë†ÀëÓÀì"Àì(ÀìkÀìoÀìpÀì|Àì¯ÀìãÀí:ÀínÀí–ÀíèÀî!ÀîdÀî²ÀîÍÀîèÀîñÀïÀïbÀïkÀïÃÀïùÀðFÀðLÀðŸÀðÑÀð÷ÀñGÀñ€ÀñÃÀò␍Àò(ÀòCÀòLÀò±ÀóÀó>Àó‰Àó�Àó“Àó”Àó Àó³ÀóâÀôÀô3ÀôWÀôlÀôpÀôrÀôsÀôµÀôçÀõ,ÀõrÀõ¹ÀöÀöÀöÀöÀöJÀöˆÀöŒÀöÇÀ÷À÷\À÷‡À÷ºÀ÷¾ÀøÀø\Àø¬ÀøôÀù␍ÀùLÀùgÀùvÀù’Àù¼ÀùÔÀùúÀú ÀúQÀúRÀúsÀú˜Àú¹ÀúÌÀúÍÀúÙÀûÀû@ÀûZÀû�Àû¾ÀûÐÀû×ÀûÛÀûÜÀûèÀü?ÀüPÀüˆÀüœÀü¸ÀüéÀüíÀüïÀüðÀý&ÀýAÀýgÀý‘Àý©ÀýÏÀýåÀþÀþ;ÀþlÀþ‚Àþ¶ÀþºÀþ»ÀÿÀÿ,ÀÿHÀÿoÀÿ�Àÿ›Àÿ¡ÀÿÙÀÿðÀ%ÀEÀIÀJÀ~À¼ÀÜÀÀ3ÀAÀGÀlÀŒÀ�À‘ÀžÀŸÀÕÀñÀÀ?ÀMÀSÀtÀ”À˜À™ÀÉÀóÀÀEÀLÀjÀnÀoÀ{ÀÂÀôÀÀ=ÀJÀ‚À®ÀäÀÀKÀ¦ÀÛÀãÀéÀíÀîÀ À ÀÀ6ÀNÀqÀ—À�ÀùÀÀMÀ[ÀaÀbÀ³À´ÀÐÀÀ+ÀOÀ‘ÀÒÀïÀþÀ -À bÀ lÀ ‰À ‘À —À ÃÀ
␍À
`À
dÀ
eÀ
qÀ
‹À
§À
¾À
ÂÀ
ÄÀ
ÅÀ À %À fÀ rÀ šÀ ›À §À ÑÀ èÀ ìÀ íÀ ùÀ !À =À AÀ BÀ NÀ iÀ {À À €À ŒÀ ±À ³À ´À ÄÀ ÅÀ␍À␍&À␍yÀ␍•À␍ÔÀ␍ÚÀ+ÀJÀRÀSÀ˜À·À½À␍À\ÀmÀnÀ³ÀíÀóÀ?À�À•À«À¬ÀôÀÀ ÀÀÀWÀ¡À¸À¼À␍ÀTÀ�À×ÀèÀìÀ7À†À¾ÀÂÀÐÀÔÀÀVÀ§ÀµÀíÀ$À*À{ÀŠÀ­À¼ÀáÀÀ'ÀEÀ]À„À¿ÀõÀ(À.À/À|À�ÀÃÀÄÀüÀÀJÀ–ÀÃÀÄÀúÀÀHÀ’À½À¾À ÀÀ`ÀªÀ°ÀÀÀÆÀÀ:ÀqÀrÀ°À¶ÀÝÀÀÀNÀTÀ–ÀçÀ%ÀDÀEÀ„ÀŠÀ±ÀÔÀÕÀÀÀ<ÀeÀfÀ¢À¨ÀÏÀüÀýÀ À]À^À®À×ÀÝÀ À À À qÀ {À �À ÃÀ!À!bÀ!¢À!¨À!÷À"À"#À"3À"9À"…À"»À#À#>À#�À#ºÀ#¾À#¿À$À$À$$À$GÀ$MÀ$[À$²À$¼À$ÂÀ%À%RÀ%£À%ãÀ%éÀ&9À&}À&ƒÀ&ÔÀ&óÀ&ùÀ' À'À'\À'©À'ëÀ(8À(HÀ(mÀ(¥À(½À)À)NÀ)[À)wÀ)ÊÀ*À*kÀ*»À*áÀ*ûÀ+À+À+À+/À+9À+VÀ+ZÀ+\À+]À+—À+›À+ìÀ,<À,JÀ,NÀ,›À,áÀ-)À-lÀ-žÀ-ìÀ.À.PÀ.¯À/À/À/CÀ/IÀ/„À/ŠÀ/ØÀ/÷À0"À0`À0–À0šÀ0›À0ÏÀ0ÕÀ1À1À1fÀ1…À1²À1òÀ2*À2.À2/À2<À2HÀ2]À2’À2ÊÀ2ÐÀ3À3AÀ3GÀ3^À3bÀ3cÀ3pÀ3|À3¹À3ßÀ4!À4"À42À4‡À4ÁÀ5À52À5gÀ5¢À5ÒÀ5þÀ6<À6…À6¢À6×À7À7À7À7 À72À7‹À7ÇÀ8À88À8oÀ8¬À8ÞÀ9 À9LÀ9•À9²À9éÀ:%À:-À:3À:7À:8À:EÀ:QÀ:xÀ:„À:ÒÀ;À;"À;.À;€À;ÍÀ;ÔÀ;ÕÀ<À<,À<RÀ<|À<žÀ<ÔÀ=␍À=dÀ=•À=«À=ÞÀ>À>6À>oÀ>ªÀ>êÀ?À?ZÀ?‹À?ÜÀ@À@8À@sÀ@²ÀAÀAHÀAbÀA›ÀAÞÀAýÀB:ÀByÀB¿ÀBøÀC7ÀClÀCÃÀDÀD*ÀD7ÀDBÀDKÀDRÀDSÀD˜ÀDÑÀDÒÀE,ÀE0ÀE1ÀE>ÀEJÀE]ÀE‰ÀE·ÀEÌÀEÐÀEÒÀEÓÀF ÀFCÀF€ÀF£ÀFâÀG ÀG7ÀGQÀGWÀGXÀG˜ÀG™ÀG¥ÀGíÀGïÀGðÀHÀHPÀHrÀH�ÀH¢ÀHÆÀHèÀHþÀIÀI)ÀIHÀIhÀI…ÀIžÀI¹ÀIôÀJMÀJNÀJ�ÀJ³ÀJ´ÀJÀÀKÀKÀKÀKPÀKƒÀKÃÀKñÀL8ÀL9ÀLMÀLgÀLhÀL£ÀL¯ÀLÞÀLùÀMÀM<ÀM[ÀM·ÀMÝÀMäÀMðÀMýÀNNÀNŸÀNÆÀNÍÀNòÀNöÀN÷ÀO#ÀOGÀO€ÀOÑÀPÀP&ÀPsÀP€ÀP™ÀPŸÀP£ÀP¤ÀP°ÀPâÀQÀQ,ÀQ;ÀQjÀQžÀQÄÀRÀR)ÀR`ÀRfÀRŠÀRŽÀR�ÀR›ÀRÏÀRüÀS ÀSFÀSUÀS{ÀSžÀSØÀTÀT?ÀTsÀT�ÀTÒÀTðÀUÀUFÀU„ÀUÀÀUàÀVÀVKÀV_ÀV}ÀVÍÀV×ÀVÝÀWÀWÀWÀWÀWIÀW|ÀW¬ÀWØÀWþÀX,ÀXXÀX_ÀX”ÀXÄÀXðÀYÀYDÀYpÀYwÀYxÀYœÀYÂÀYøÀZ.ÀZ>ÀZdÀZ€ÀZÇÀZýÀ[␍À[AÀ[vÀ[«À[ÜÀ\ À\7À\sÀ\¤À\ÓÀ]
À]À]À]4À]EÀ]tÀ]»À]×À]öÀ^=À^MÀ^gÀ^‘À^—À^ÉÀ^ÍÀ^ÎÀ^ÚÀ_
À_%À_<À_wÀ_²À_âÀ`À`9À`@À`rÀ`®À`ÉÀ`ÐÀ`ÑÀ`õÀaÀa*ÀaYÀa�Àa³Àa÷ÀaýÀb,Àb0Àb1Àb=ÀbZÀbuÀbŒÀb°ÀbÖÀbåÀcÀcHÀcnÀc Àc¦ÀcÅÀcÉÀcÊÀcÖÀcöÀdÀd@Àd’Àd¦ÀdÇÀd×ÀeÀe:Àe`ÀeuÀeÄÀfÀf[ÀfªÀfÒÀgÀgrÀgÊÀgúÀhÀh@ÀhoÀh ÀhËÀhüÀi>Ài€ÀiÂÀjÀj_Àj¡Àj²ÀjÁÀjÎÀk ÀknÀk°ÀkÏÀkïÀlÀlUÀl³Àl¿ÀlÉÀlÙÀlßÀlãÀläÀlðÀm,ÀmSÀmzÀm¨ÀmÑÀmØÀnÀnDÀn‘Àn•Àn—Àn˜ÀnÇÀnüÀo Ào/ÀoSÀowÀo™Ào¯ÀoÂÀoÚÀoùÀpÀp6ÀpOÀpjÀp¥ÀqÀqÀq7ÀqjÀqkÀqwÀqËÀqÍÀqÎÀr␍Àr8Àr9ÀrnÀr¬ÀrßÀs!Às"Às.ÀsOÀs€ÀsÔÀs÷ÀsûÀsüÀtJÀt–ÀtäÀtðÀuÀu:ÀuVÀu}ÀuœÀuøÀvÀv%ÀvLÀvjÀvzÀv˜Àv´ÀvÊÀvôÀvýÀw.Àw>Àw\ÀwxÀwŽÀw¸ÀwÁÀwÈÀwÉÀwöÀwúÀwûÀxÀx'ÀxKÀxqÀx¸Àx×ÀxøÀyÀy7ÀykÀy‘Ày¦ÀyñÀz@Àz‘ÀzÝÀ{-À{wÀ{³À|À|SÀ|•À|´À|ÔÀ}À}:À}˜À}¤À}®À}¾À}ÄÀ}ÈÀ}ÉÀ}ÕÀ~À~8À~_À~�À~¶À~½ÀÀ)ÀvÀzÀ|�/// @docImport 'package:flutter/material.dart';
///
/// @docImport 'page_storage.dart';
/// @docImport 'page_view.dart';
/// @docImport 'scroll_metrics.dart';
/// @docImport 'scroll_notification.dart';
/// @docImport 'scroll_view.dart';
/// @docImport 'single_child_scroll_view.dart';
/// @docImport 'two_dimensional_scroll_view.dart';
/// @docImport 'two_dimensional_viewport.dart';‚/‚D‚Z‚a‚‹‚³‚܃ƒ.ƒCƒ\ƒ|ƒ—ƒ¼ƒ×ƒý„„@„^„„�„¼„Þ„ÿ…"…A…U…n…”…¢“‹“•␍“œ“œ “¢“«“«'“°“ؓؓݓí“í “ò“ÿ“ÿ”␍”"”"”'”@”@!”E”g”g”l”„”„0”‰”º”º”¿”Ò”Ò”×”ë”ë!”ð••-•“À“͓Δ\”�”®”¯”ÿ•••)•8•9•H•N•„•j•b•O•e•€•m•ƒ“`“`‚&"/// Creates a widget that scrolls. —õ•Š‚x—õ‚>/// {@template flutter.widgets.Scrollable.axisDirection}
/// The direction in which this widget scrolls.
///
/// For example, if the [Scrollable.axisDirection] is [AxisDirection.down],
/// increasing the scroll position will cause content below the bottom of the
/// viewport to become visible through the viewport. Similarly, if the
/// axisDirection is [AxisDirection.right], increasing the scroll position
/// will cause content beyond the right edge of the viewport to become visible
/// through the viewport.
///
/// Defaults to [AxisDirection.down].
/// {@endtemplate}›Þ˜ƒá›Þƒ–/// {@template flutter.widgets.Scrollable.controller}
/// An object that can be used to control the position to which this widget is
/// scrolled.
///
/// A [ScrollController] serves several purposes. It can be used to control
/// the initial scroll position (see [ScrollController.initialScrollOffset]).
/// It can be used to control whether the scroll view should automatically
/// save and restore its scroll position in the [PageStorage] (see
/// [ScrollController.keepScrollOffset]). It can be used to read the current
/// scroll position (see [ScrollController.offset]), or change it (see
/// [ScrollController.animateTo]).
///
/// If null, a [ScrollController] will be created internally by [Scrollable]
/// in order to create and manage the [ScrollPosition].
///
/// See also:
///
/// * [Scrollable.ensureVisible], which animates the scroll position to
/// reveal a given [BuildContext].
/// {@endtemplate}¡H›í…b¡H…/// {@template flutter.widgets.Scrollable.physics}
/// How the widgets should respond to user input.
///
/// For example, determines how the widget continues to animate after the
/// user stops dragging the scroll view.
///
/// Defaults to matching platform conventions via the physics provided from
/// the ambient [ScrollConfiguration].
///
/// If an explicit [ScrollBehavior] is provided to
/// [Scrollable.scrollBehavior], the [ScrollPhysics] provided by that behavior
/// will take precedence after [Scrollable.physics].
///
/// The physics can be changed dynamically, but new physics will only take
/// effect if the _class_ of the provided object changes. Merely constructing
/// a new instance with a different configuration is insufficient to cause the
/// physics to be reapplied. (This is because the final object used is
/// generated dynamically, which can be relatively expensive, and it would be
/// inefficient to speculatively create this object each frame to see if the
/// physics should be updated.)
///
/// See also:
///
/// * [AlwaysScrollableScrollPhysics], which can be used to indicate that the
/// scrollable should react to scroll requests (and possible overscroll)
/// even if the scrollable's contents fit without scrolling being necessary.
/// {@endtemplate}£F¡T‚£F�Ç/// Builds the viewport through which the scrollable content is displayed.
///
/// A typical viewport uses the given [ViewportOffset] to determine which part
/// of its content is actually visible through the viewport.
///
/// See also:
///
/// * [Viewport], which is a viewport that displays a list of slivers.
/// * [ShrinkWrappingViewport], which is a viewport that displays a list of
/// slivers and sizes itself based on the size of the slivers.¦£Z‚ئ‚‰/// {@template flutter.widgets.Scrollable.incrementCalculator}
/// An optional function that will be called to calculate the distance to
/// scroll when the scrollable is asked to scroll via the keyboard using a
/// [ScrollAction].
///
/// If not supplied, the [Scrollable] will scroll a default amount when a
/// keyboard navigation key is pressed (e.g. pageUp/pageDown, control-upArrow,
/// etc.), or otherwise invoked by a [ScrollAction].
///
/// If [incrementCalculator] is null, the default for
/// [ScrollIncrementType.page] is 80% of the size of the scroll window, and
/// for [ScrollIncrementType.line], 50 logical pixels.
/// {@endtemplate}¨p¦7‚M¨p‚/// {@template flutter.widgets.scrollable.excludeFromSemantics}
/// Whether the scroll actions introduced by this [Scrollable] are exposed
/// in the semantics tree.
///
/// Text fields with an overflow are usually scrollable to make sure that the
/// user can get to the beginning/end of the entered text. However, these
/// scrolling actions are generally not exposed to the semantics layer.
/// {@endtemplate}
///
/// See also:
///
/// * [GestureDetector.excludeFromSemantics], which is used to accomplish the
/// exclusion.ª*¨‰�°ª*�v/// {@template flutter.widgets.scrollable.hitTestBehavior}
/// Defines the behavior of gesture detector used in this [Scrollable].
///
/// This defaults to [HitTestBehavior.opaque] which means it prevents targets
/// behind this [Scrollable] from receiving events.
/// {@endtemplate}
///
/// See also:
///
/// * [HitTestBehavior], for an explanation on different behaviors.­$ª>‚ø­$‚¼/// The number of children that will contribute semantic information.
///
/// The value will be null if the number of children is unknown or unbounded.
///
/// Some subtypes of [ScrollView] can infer this value automatically. For
/// example [ListView] will use the number of widgets in the child list,
/// while the [ListView.separated] constructor will use half that amount.
///
/// For [CustomScrollView] and other types which do not receive a builder
/// or list of widgets, the child count must be explicitly provided.
///
/// See also:
///
/// * [CustomScrollView], for an explanation of scroll semantics.
/// * [SemanticsConfiguration.scrollChildCount], the corresponding semantics property.°ð­’ƒo°ðƒ/// {@template flutter.widgets.scrollable.dragStartBehavior}
/// Determines the way that drag start behavior is handled.
///
/// If set to [DragStartBehavior.start], scrolling drag behavior will
/// begin at the position where the drag gesture won the arena. If set to
/// [DragStartBehavior.down] it will begin at the position where a down
/// event is first detected.
///
/// In general, setting this to [DragStartBehavior.start] will make drag
/// animation smoother and setting it to [DragStartBehavior.down] will make
/// drag behavior feel slightly more reactive.
///
/// By default, the drag start behavior is [DragStartBehavior.start].
///
/// See also:
///
/// * [DragGestureRecognizer.dragStartBehavior], which gives an example for
/// the different behaviors.
///
/// {@endtemplate}³\±‚c³\‚+/// {@template flutter.widgets.scrollable.restorationId}
/// Restoration ID to save and restore the scroll offset of the scrollable.
///
/// If a restoration id is provided, the scrollable will persist its current
/// scroll offset and restore it during state restoration.
///
/// The scroll offset is persisted in a [RestorationBucket] claimed from
/// the surrounding [RestorationScope] using the provided restoration ID.
///
/// See also:
///
/// * [RestorationManager], which explains how state restoration works in
/// Flutter.
/// {@endtemplate}µ§³n‚Gµ§‚ /// {@template flutter.widgets.scrollable.scrollBehavior}
/// A [ScrollBehavior] that will be applied to this widget individually.
///
/// Defaults to null, wherein the inherited [ScrollBehavior] is copied and
/// modified to alter the viewport decoration, like [Scrollbar]s.
///
/// [ScrollBehavior]s also provide [ScrollPhysics]. If an explicit
/// [ScrollPhysics] is provided in [physics], it will take precedence,
/// followed by [scrollBehavior], and then the inherited ancestor
/// [ScrollBehavior].
/// {@endtemplate}·µº�m·�G/// {@macro flutter.material.Material.clipBehavior}
///
/// Defaults to [Clip.hardEdge].
///
/// This is passed to decorators in [ScrollableDetails], and does not directly affect
/// clipping of the [Scrollable]. This reflects the same [Clip] that is provided
/// to [ScrollView.clipBehavior] and is supplied to the [Viewport].·,·,€—·˜\/// The axis along which the scroll view scrolls.
///
/// Determined by the [axisDirection].·Ç·È·Ç·Ç?·ã¸/¸/&¸K¸
¸ ¸
¸
�^¸½ó½ó¾¾
¾
¾¹l¹l‡v½ë„0/// The state from the closest instance of this class that encloses the given
/// context, or null if none is found.
///
/// Typical usage is as follows:
///
/// ```dart
/// ScrollableState? scrollable = Scrollable.maybeOf(context);
/// ```
///
/// Calling this method will create a dependency on the [ScrollableState]
/// that is returned, if there is one. This is typically the closest
/// [Scrollable], but may be a more distant ancestor if [axis] is used to
/// target a specific [Scrollable].
///
/// Using the optional [Axis] is useful when Scrollables are nested and the
/// target [Scrollable] is not the closest instance. When [axis] is provided,
/// the nearest enclosing [ScrollableState] in that [Axis] is returned, or
/// null if there is none.
///
/// This finds the nearest _ancestor_ [Scrollable] of the `context`. This
/// means that if the `context` is that of a [Scrollable], it will _not_ find
/// _that_ [Scrollable].
///
/// See also:
///
/// * [Scrollable.of], which is similar to this method, but asserts
/// if no [Scrollable] ancestor is found.ÀE½ÀE½ÀEÊÀEÔÀEÔ
ÀEÚÀ@æÀ@æ‰,ÀEº„‚/// The state from the closest instance of this class that encloses the given
/// context.
///
/// Typical usage is as follows:
///
/// ```dart
/// ScrollableState scrollable = Scrollable.of(context);
/// ```
///
/// Calling this method will create a dependency on the [ScrollableState]
/// that is returned, if there is one. This is typically the closest
/// [Scrollable], but may be a more distant ancestor if [axis] is used to
/// target a specific [Scrollable].
///
/// Using the optional [Axis] is useful when Scrollables are nested and the
/// target [Scrollable] is not the closest instance. When [axis] is provided,
/// the nearest enclosing [ScrollableState] in that [Axis] is returned.
///
/// This finds the nearest _ancestor_ [Scrollable] of the `context`. This
/// means that if the `context` is that of a [Scrollable], it will _not_ find
/// _that_ [Scrollable].
///
/// If no [Scrollable] ancestor is found, then this method will assert in
/// debug mode, and throw an exception in release mode.
///
/// See also:
///
/// * [Scrollable.maybeOf], which is similar to this method, but returns null
/// if no [Scrollable] ancestor is found.ÀN/ÀN/ÀN<ÀNFÀNF
ÀNLÀJÀJ…êÀN ƒÅ/// Provides a heuristic to determine if expensive frame-bound tasks should be
/// deferred for the [context] at a specific point in time.
///
/// Calling this method does _not_ create a dependency on any other widget.
/// This also means that the value returned is only good for the point in time
/// when it is called, and callers will not get updated if the value changes.
///
/// The heuristic used is determined by the [physics] of this [Scrollable]
/// via [ScrollPhysics.recommendDeferredLoading]. That method is called with
/// the current [ScrollPosition.activity]'s [ScrollActivity.velocity].
///
/// The optional [Axis] allows targeting of a specific [Scrollable] of that
/// axis, useful when Scrollables are nested. When [axis] is provided,
/// [ScrollPosition.recommendDeferredLoading] is called for the nearest
/// [Scrollable] in that [Axis].
///
/// If there is no [Scrollable] in the widget tree above the [context], this
/// method returns false.ÀQRÀQRÀQ_ÀQnÀQnÀQuÀQŠÀQŠ!ÀQ“ÀQ±ÀQ±ÀQ·ÀQÐÀQÐVÀQî
ÀQ�ÀQžÀQ¦ÀQ§ÀQ¿ÀQÅÀQÆÀRÀRÀRÀPÀP‡mÀQ?�/// Scrolls all scrollables that enclose the given context so as to make the
/// given context visible.
///
/// If a [Scrollable] enclosing the provided [BuildContext] is a
/// [TwoDimensionalScrollable], both vertical and horizontal axes will ensure
/// the target is made visible.‰‰ÀNk“:Š+/// A widget that manages scrolling in one dimension and informs the [Viewport]
/// through which the content is viewed.
///
/// [Scrollable] implements the interaction model for a scrollable widget,
/// including gesture recognition, but does not have an opinion about how the
/// viewport, which actually displays the children, is constructed.
///
/// It's rare to construct a [Scrollable] directly. Instead, consider [ListView]
/// or [GridView], which combine scrolling, viewporting, and a layout model. To
/// combine layout models (or to use a custom layout mode), consider using
/// [CustomScrollView].
///
/// The static [Scrollable.of] and [Scrollable.ensureVisible] functions are
/// often used to interact with the [Scrollable] widget inside a [ListView] or
/// a [GridView].
///
/// To further customize scrolling behavior with a [Scrollable]:
///
/// 1. You can provide a [viewportBuilder] to customize the child model. For
/// example, [SingleChildScrollView] uses a viewport that displays a single
/// box child whereas [CustomScrollView] uses a [Viewport] or a
/// [ShrinkWrappingViewport], both of which display a list of slivers.
///
/// 2. You can provide a custom [ScrollController] that creates a custom
/// [ScrollPosition] subclass. For example, [PageView] uses a
/// [PageController], which creates a page-oriented scroll position subclass
/// that keeps the same page visible when the [Scrollable] resizes.
///
/// ## Persisting the scroll position during a session
///
/// Scrollables attempt to persist their scroll position using [PageStorage].
/// This can be disabled by setting [ScrollController.keepScrollOffset] to false
/// on the [controller]. If it is enabled, using a [PageStorageKey] for the
/// [key] of this widget (or one of its ancestors, e.g. a [ScrollView]) is
/// recommended to help disambiguate different [Scrollable]s from each other.
///
/// See also:
///
/// * [ListView], which is a commonly used [ScrollView] that displays a
/// scrolling, linear list of child widgets.
/// * [PageView], which is a scrolling list of child widgets that are each the
/// size of the viewport.
/// * [GridView], which is a [ScrollView] that displays a scrolling, 2D array
/// of child widgets.
/// * [CustomScrollView], which is a [ScrollView] that creates custom scroll
/// effects using slivers.
/// * [SingleChildScrollView], which is a scrollable widget that has a single
/// child.
/// * [ScrollNotification] and [NotificationListener], which can be used to watch
/// the scroll position without using a [ScrollController].ÀX@ÀXPÀXRÀXRÀX`ÀXlÀXlÀXzÀX„ÀX„ÀX“ÀX:ÀX:aÀXµÀXŸ ÀXµÀXØÀXÃÀXØÀY ÀY ÀYÀXåÀXæÀXåÀXådÀXöÀXÀX�DÀX␍À]À]À]À]¡À]’À]¡ÀaÀaÀaÀb@ÀbWÀbXÀb'Àb PÀb'ÀbrÀb^"ÀbrÀb–Àb„+Àb–ÀbÊÀb³1ÀbÊÀt§Àt°Àt±Àt‘Àt�1Àt‘ÀvÀvÀv)ÀvÀv*Àv+ÀuìÀuÃiÀuìÀvTÀv]Àv^Àv@Àv0/Àv@ÀvùÀwÀw ÀvÿÀwÀwÀwÀvÝÀv¹hÀvÝÀwAÀw*Àw%!Àw*ÀwQÀwKÀwQÀwgÀwaÀwgÀ†˜À†’ À†˜À†·À†¡À†·
À[¥À[¥�]À\ë�(/// The manager for this [Scrollable] widget's viewport position.
///
/// To control what kind of [ScrollPosition] is created for a [Scrollable],
/// provide it with custom [ScrollController] that creates the appropriate
/// [ScrollPosition] in its [ScrollController.createScrollPosition] method.À]#À]#lÀ]s:/// The resolved [ScrollPhysics] of the [ScrollableState].À]®À]®‚7À^Ø�/// An [Offset] that represents the absolute distance from the origin, or 0,
/// of the [ScrollPosition] expressed in the associated [Axis].
///
/// Used by [EdgeDraggingAutoScroller] to progress the position forward when a
/// drag gesture reaches the edge of the [Viewport].À_éÀ_éiÀ_þÀ`VÀ`WÀ`VÀ`VDÀ`tÀ`žÀ`ŸÀ`žÀ`ž-À`½À`ÏÀ`ÐÀ`ÏÀ`Ï=À`æÀa1Àa2Àa1Àa1XÀaOÀa�ÀaŽÀa�Àa�7ÀaªÀaÈÀaÉÀaÈÀaÈ>ÀaàÀc1Àc1ƒšÀc6ÀfúÀfúÀg␍ÀgÀgÀgÀfÏÀfÐÀfÜÀfÝÀfÏÀfÏ�SÀfíÀhOÀhO␍ÀhVÀh&Àh'Àh3Àh4Àh&Àh&�oÀhDÀi™ÀišÀi¦Ài§Ài™Ài™€§Ài·ÀjDÀjEÀjQÀjRÀjDÀjD�4ÀjbÀk—Àk—Àk¢Àk|Àk|ƒkÀk�ÀoÀoÀo$ÀnëÀnìÀnøÀnùÀnëÀnë„;Ào Às*Às+Às7Às8Às*Às*�CÀsHÀtéÀtéÀtþÀt·Àt¸ÀtÃÀtÄÀt·Àt·€ÙÀtÕÀw§Àw§
Àw¬Àw~ÀwÀwŠÀw‹Àw~Àw~�}ÀwœÀ….À….
À…3À„ÿÀ…À… À… À„ÿÀ„ÿ�zÀ…À†ÖÀ†ÖÀ†æÀ†ÁÀ†Á€’À†ÆÀ‡mÀ‡mÀ‡~À‡WÀ‡W�äÀ‡\À‰VÀ‰VÀ‰hÀ‰?À‰?€ÎÀ‰DÀŠ%ÀŠ%ÀŠ4ÀŠÀŠ€àÀŠÀŠõÀŠõ‚ÀŠúÀ�À�+À�À�EÀ�E+À�JÀŽ<ÀŽ< ÀŽCÀŽÀŽ€½ÀŽÀ�˜À�˜À�«À�xÀ�xƒÙÀ�À“qÀ“qÀ“„À“UÀ“U„‚À“ZÀ—õÀ—õÀ˜À—ÛÀ—Û�jÀ—àÀ™oÀ™o&À™‰À™IÀ™I�‚À™NÀšãÀšãÀšðÀšùÀšù À›ÀšÏÀšÏ�‹ÀšÖÀœ–Àœ–Àœ£ÀœpÀœqÀœ}Àœ~ÀœpÀœpˆ-Àœ�À¥²À¥²À¥¿À¥ÍÀ¥ÍÀ¥ÔÀ¥éÀ¥é!À¥òÀ¦À¦À¦À¦/À¦/VÀ¦MÀ¦‹À¦‹ À¦™
À¥àÀ¥ýÀ¦À¦À¦À¦$À¦%À¦_À¦|À¦}À¥�À¥�‚hÀ¥—À¨À¨&À¨;À§íÀ§îÀ§úÀ§ûÀ§íÀ§í�1À¨ ÀYMÀYMÀOÓÀ[�Ä/// State object for a [Scrollable] widget.
///
/// To manipulate a [Scrollable] widget's scroll position, use the object
/// obtained from the [position] property.
///
/// To be informed of when a [Scrollable] widget is scrolling, use a
/// [NotificationListener] to listen for [ScrollNotification] notifications.
///
/// This class is not intended to be subclassed. To specialize the behavior of a
/// [Scrollable], provide it with a [ScrollPhysics].ÀªÀª6Àª=Àª=ÀªKÀªVÀªVÀªdÀªrÀªrÀª€Àª�Àª�Àª�ÀªÀª€”ÀªÃÀª­ÀªÃÀªáÀªÌÀªáÀªúÀªíÀªúÀ«À«"À«À«*À«+À«*À«*aÀ«WÀ©"À©"‚kÀ©Þ€µ/// A widget to handle selection for a scrollable.
///
/// This widget registers itself to the [registrar] and uses
/// [SelectionContainer] to collect selectables from its subtree.À¬À«å=À¬À¬'À¬(À¬'À¬'€¼À¬8À­À­%À­$À¬çÀ¬èÀ¬çÀ¬ç€ßÀ¬øÀ­ÊÀ­ËÀ­ÊÀ­ÊWÀ­ÛÀ®>À®>À®KÀ®%À®&À®%À®%€¼À®8À«�À«�ƒTÀ«•À°ÁÀ°æÀ°èÀ°èÀ°öÀ°ýÀ°ý À± À±0À±&À±2À±PÀ±BÀ±RÀ±jÀ±ÀÀ±tÀ±‘À±ƒÀ±“À°ÁÀ°Á�8 À²kÀ²QÀ²=/À²QÀ²äÀ²¼À²¨>À²¼À³À²ëÀ³À³)À³
,À³)À³XÀ³?À³:#À³?À³iÀ³a(À³iÀ³•À³�&À³•À´-À´À´ )À´À´rÀ´cÀ´rÀ»%À»&À»À»$À»À»ÀºíÀ·nƒ¹Àºíƒ@/// Stores the scroll offset when a scrollable receives the last
/// [SelectionEdgeUpdateEvent].
///
/// The stored scroll offset may be null if a scrollable never receives a
/// [SelectionEdgeUpdateEvent].
///
/// When a new [SelectionEdgeUpdateEvent] is dispatched to a selectable, this
/// updater checks the current scroll offset against the one stored in these
/// records. If the scroll offset is different, it synthesizes an opposite
/// [SelectionEdgeUpdateEvent] and dispatches the event before dispatching the
/// new event.
///
/// For example, if a selectable receives an end [SelectionEdgeUpdateEvent]
/// and its scroll offset in the records is different from the current value,
/// it synthesizes a start [SelectionEdgeUpdateEvent] and dispatches it before
/// dispatching the original end [SelectionEdgeUpdateEvent].À»À»€À»kÀ»~À»lÀ»xÀ»IÀ»+VÀ»IÀ´7À´7)À´JÀ´ŒÀ´ŒÀ´›À´À´€ØÀ´ƒÀµåÀµå�…ÀµêÀ»†À»‡À»†À»†�ŒÀ»—À½GÀ½GÀ½[À½À½À½À½�]À½2À¾­À¾­À¾ÆÀ¾wÀ¾xÀ¾wÀ¾w†þÀ¾“ÀÅžÀÅžÀÅ¥ÀÅyÀÅyƒ¼ÀÅ€ÀÊôÀÊôÀÊùÀËÀËÀËÀË ÀË,ÀÉ9ÀÉ9ˆ2ÀÊË�~/// Infers the [_currentDragStartRelatedToOrigin] and
/// [_currentDragEndRelatedToOrigin] from the geometry.
///
/// This method is called after a select word and select all event where the
/// selection is triggered by none drag events. The
/// [_currentDragStartRelatedToOrigin] and [_currentDragEndRelatedToOrigin]
/// are essential to handle future [SelectionEdgeUpdateEvent]s.ÀÑ›ÀÑ›ÀѳÀÑoÀÑpÀÑoÀÑo��ÀÑ‹ÀÓ!ÀÓ!ÀÓ:ÀÒôÀÒõÀÒôÀÒô�'ÀÓÀÔ[ÀÔ[$ÀÔzÀÔÀÔ ÀÔÀÔ‚YÀÔ;ÀÖ»ÀÖ»'ÀÖÝÀÖ|ÀÖ}ÀÖ|ÀÖ|‚bÀÖ˜ÀØóÀØó␍ÀØøÀØâÀØâŒoÀØçÀåvÀåvÀå}ÀåUÀåU�1ÀåZÀæ¤Àæ¤Àæ½ÀæŠÀ技ÓÀæ�Àç›Àç›Àç¦Àç²Àç²ÀçÁÀçaÀçbÀçaÀça…␍Àç}Àì–Àì–Àì¡ÀìrÀìsÀìrÀìr‡ ÀìƒÀó–Àó—Àó–Àó–€ÙÀó§À®åÀ®åÀEŒÀ°e�y/// This updater handles the case where the selectables change frequently, and
/// it optimizes toward scrolling updates.
///
/// It keeps track of the drag start offset relative to scroll origin for every
/// selectable. The records are used to determine whether the selection is up to
/// date with the scroll position when it sends the drag update event to a
/// selectable.ÀùTÀùdÀùkÀùk ÀùqÀùzÀùzÀùˆÀù–Àù–$Àù¤ÀùÀÀùÀÀùÎÀùØÀùØ ÀùæÀùþÀùþ Àú
ÀúÀúÀúNÀú4Àú,ÀúÀú/ÀúJÀú7ÀúMÀùNÀùN�ÀúiÀúTÀúiÀú€Àúu!Àú€Àú¥ÀúšÀú¥ÀúÆÀú»ÀúÆÀûÀûÀûÀúÏÀúÐÀúÏÀúÏ� ÀúòÀüÀüÀüÀüÀü#Àü/ÀûÞÀûßÀûÞÀûÞ�ÀûïÀöÀö†æÀùƒ/// With [_ScrollSemantics] certain child [SemanticsNode]s can be
/// excluded from the scrollable area for semantics purposes.
///
/// Nodes, that are to be excluded, have to be tagged with
/// [RenderViewport.excludeFromScrolling] and the [RenderAbstractViewport] in
/// use has to add the [RenderViewport.useTwoPaneSemantics] tag to its
/// [SemanticsConfiguration] by overriding
/// [RenderObject.describeSemanticsConfiguration].
///
/// If the tag [RenderViewport.useTwoPaneSemantics] is present on the viewport,
/// two semantics nodes will be used to represent the [Scrollable]: The outer
/// node will contain all children, that are excluded from scrolling. The inner
/// node, which is annotated with the scrolling actions, will house the
/// scrollable children.Àý(Àý>ÀýEÀýE Àý]ÀýkÀýk$ÀýyÀý•Àý•Àý£Àý­Àý­ Àý»ÀýÓÀýÓÀýÞ␍ÀýöÀýìÀýøÀþ!Àþ Àþ#ÀþVÀþBÀþXÀþsÀþxÀþ~ÀþyÀý(Àý(�‘Àÿ=Àÿ.Àÿ=ÀÃÀ¾ÀÃÀ˜À“ À˜ÀÜÀ×ÀÜÀÿÀðÀÿÀþ½Àþ½nÀÿB/// Whether this render object is excluded from the semantic tree.ÀLÀLoÀ‰1/// Whether this node can be scrolled implicitly.À¡À¡3ÀªÀÿWÀÿWÀÿfÀÿJÀÿJ€þÀÿNÀùÀù
ÀþÀÞÀÞ€±ÀâÀ
À
ÀÀóÀó€¤À÷À²À²À¹À›À›€ÒÀ À¡À¡À¸ÀqÀrÀqÀq‚{À‚À:À:ÀHÀRÀRÀiÀuÀu À�ÀÀÀÀ„UÀÀ
gÀ
hÀ
gÀ
gZÀ
xÀüðÀüð�ÓÀüöÀ ‚À ƒÀ ‚À ‚.À —À hÀ iÀ hÀ h1À |À ½À ½À ÅÀ �À žÀ �À �NÀ ®À À  À À ïÀ ðÀ ïÀ ïQÀ À DÀ EÀ DÀ D:À XÀ %À %��À +À’Àª
À±À± À·ÀÀÀÀÀÎÀåÀåÀóÀÀÀÀ+À+À0ÀIÀIÀNÀaÀa!ÀfÀˆÀˆ5À�ÀÃÀÃ0ÀÈÀùÀù-Àþ
À}À¤À¸À¹ÀÜÀíÀîÀÀÀ ÀïÀï‚>€”/// Creates a widget that scrolls in two dimensions.
///
/// The [horizontalDetails], [verticalDetails], and [viewportBuilder] must not
/// be null. À­À1€�À­\/// How scrolling gestures should lock to one axis, or allow free movement
/// in both axes.ˡˮ۞ˡۃ/// The configuration of the horizontal [Scrollable].
///
/// These [ScrollableDetails] can be used to set the [AxisDirection],
/// [ScrollController], [ScrollPhysics] and more for the horizontal axis.À¬ÀÆ€õÀ¬€Å/// The configuration of the vertical [Scrollable].
///
/// These [ScrollableDetails] can be used to set the [AxisDirection],
/// [ScrollController], [ScrollPhysics] and more for the vertical axis.À`ÀÀ�¯À`�i/// Builds the viewport through which the scrollable content is displayed.
///
/// A [TwoDimensionalViewport] uses two given [ViewportOffset]s to determine
/// which part of its content is actually visible through the viewport.
///
/// See also:
///
/// * [TwoDimensionalViewport], which is a viewport that displays a span of
/// widgets in both dimensions.ÀÀt€ŸÀd/// {@macro flutter.widgets.Scrollable.incrementCalculator}
///
/// This value applies in both axes.À5À�*À5�/// {@macro flutter.widgets.scrollable.restorationId}
///
/// Internally, the [TwoDimensionalScrollable] will introduce a
/// [RestorationScope] that will be assigned this value. The two [Scrollable]s
/// within will then be given unique IDs within this scope.À¾ÀG€‹À¾e/// {@macro flutter.widgets.scrollable.excludeFromSemantics}
///
/// This value applies to both axes.ÀTÀ×€ŒÀT`/// {@macro flutter.widgets.scrollable.hitTestBehavior}
///
/// This value applies to both axes.ÀéÀh€’Àéb/// {@macro flutter.widgets.scrollable.dragStartBehavior}
///
/// This value applies in both axes.ÀÿÀÀÿÀÿ]À+À"ëÀ"ëÀ"øÀ`À`„]À"ãƒ2/// The state from the closest instance of this class that encloses the given
/// context, or null if none is found.
///
/// Typical usage is as follows:
///
/// ```dart
/// TwoDimensionalScrollableState? scrollable = TwoDimensionalScrollable.maybeOf(context);
/// ```
///
/// Calling this method will create a dependency on the closest
/// [TwoDimensionalScrollable] in the [context]. The internal [Scrollable]s
/// can be accessed through [TwoDimensionalScrollableState.verticalScrollable]
/// and [TwoDimensionalScrollableState.horizontalScrollable].
///
/// Alternatively, [Scrollable.maybeOf] can be used by providing the desired
/// [Axis] to the `axis` parameter.
///
/// See also:
///
/// * [TwoDimensionalScrollable.of], which is similar to this method, but
/// asserts if no [Scrollable] ancestor is found.À'ÓÀ'ÓÀ'àÀ#ÁÀ#Á‡˜À'Ѓ¹/// The state from the closest instance of this class that encloses the given
/// context.
///
/// Typical usage is as follows:
///
/// ```dart
/// TwoDimensionalScrollableState scrollable = TwoDimensionalScrollable.of(context);
/// ```
///
/// Calling this method will create a dependency on the closest
/// [TwoDimensionalScrollable] in the [context]. The internal [Scrollable]s
/// can be accessed through [TwoDimensionalScrollableState.verticalScrollable]
/// and [TwoDimensionalScrollableState.horizontalScrollable].
///
/// If no [TwoDimensionalScrollable] ancestor is found, then this method will
/// assert in debug mode, and throw an exception in release mode.
///
/// Alternatively, [Scrollable.of] can be used by providing the desired [Axis]
/// to the `axis` parameter.
///
/// See also:
///
/// * [TwoDimensionalScrollable.maybeOf], which is similar to this method,
/// but returns null if no [TwoDimensionalScrollable] ancestor is found.ÀÀšLÀ»ƒ¥/// A widget that manages scrolling in both the vertical and horizontal
/// dimensions and informs the [TwoDimensionalViewport] through which the
/// content is viewed.
///
/// [TwoDimensionalScrollable] implements the interaction model for a scrollable
/// widget in both the vertical and horizontal axes, including gesture
/// recognition, but does not have an opinion about how the
/// [TwoDimensionalViewport], which actually displays the children, is
/// constructed.
///
/// It's rare to construct a [TwoDimensionalScrollable] directly. Instead,
/// consider subclassing [TwoDimensionalScrollView], which combines scrolling,
/// viewporting, and a layout model in both dimensions.
///
/// See also:
///
/// * [TwoDimensionalScrollView], an abstract base class for displaying a
/// scrolling array of children in both directions.
/// * [TwoDimensionalViewport], which can be used to customize the child layout
/// model.À.À-î-À.À.1À./À.1À.‘À.šÀ.ªÀ.›À.«À.¬À.sÀ.R[À.sÀ.òÀ.ûÀ/ À.üÀ/ À/␍À.ÒÀ.±]À.ÒÀ/À/�†À0␍€Ù/// The [ScrollableState] of the vertical axis.
///
/// Accessible by calling [TwoDimensionalScrollable.of].
///
/// Alternatively, [Scrollable.of] can be used by providing [Axis.vertical]
/// to the `axis` parameter.À0�À0���À1›€Ý/// The [ScrollableState] of the horizontal axis.
///
/// Accessible by calling [TwoDimensionalScrollable.of].
///
/// Alternatively, [Scrollable.of] can be used by providing [Axis.horizontal]
/// to the `axis` parameter.À21À22À2>À2?À21À21�0À2OÀ3“À3“"À3¬À3eÀ3fÀ3rÀ3sÀ3eÀ3e†ÑÀ3ƒÀ:`À:`À:mÀ::À:;À:GÀ:HÀ::À::ŠõÀ:ZÀE3ÀE4ÀE@ÀEAÀE3ÀE3€œÀEQÀ+]À+]štÀ-¤‚@/// State object for a [TwoDimensionalScrollable] widget.
///
/// To manipulate one of the internal [Scrollable] widget's scroll position, use
/// the object obtained from the [verticalScrollable] or [horizontalScrollable]
/// property.
///
/// To be informed of when a [TwoDimensionalScrollable] widget is scrolling,
/// use a [NotificationListener] to listen for [ScrollNotification]s.
/// Both axes will have the same viewport depth since there is only one
/// viewport, and so should be differentiated by the [Axis] of the
/// [ScrollMetrics] provided by the notification.ÀFêÀGÀGÀG&ÀGÀG;ÀG;ÀGJÀFäÀFärÀG~ÀGZ<ÀG~ÀG¿ÀG¿"ÀGÞÀG›ÀGœÀG›ÀG›QÀG¬ÀF£ÀF£�KÀF©ÀHXÀHo␍ÀHvÀHv ÀH|ÀH…ÀH…ÀH“ÀH¦ÀH¦ÀHµÀHÊÀHÊÀHÙÀHìÀHìÀHòÀIÀI␍ÀIÀIÀIÀIÀI-ÀI-ÀI3ÀILÀILÀIRÀIlÀIlÀIrÀI‰ÀI‰ÀI�ÀI¢ÀI¢ÀI¨ÀI½ÀI½5ÀIÂÀIÙÀIíÀIîÀIûÀJÀJJÀJ$ÀJÀJÀJÀJ ÀJ!ÀJ5ÀJ'ÀJ8ÀJEÀJFÀHRÀHR�úÀJkÀJP/ÀJkÀJ¤ÀJƒ.ÀJ¤ÀJ¶ÀJ·ÀJ¶ÀJ¶YÀJßÀHÀH‚ôÀH#ÀLAÀL;ÀLAÀLWÀLOÀLWÀKRÀKRpÀKkÀKÅÀKÅrÀKÙ ÀLâÀLâÀLïÀLýÀLýÀMÀMÀM!ÀM"ÀM@ÀM@ÀMFÀM_ÀM_VÀM}ÀM»ÀM» ÀMÉ ÀL¥ÀL¦ÀMÀM-ÀM5ÀM6ÀMNÀMTÀMUÀM�ÀM¬ÀM­ÀL¥ÀL¥‚PÀLÇÀOÀO␍ÀOÀNùÀNù�©ÀNþÀPÇÀPÇÀP×ÀP¦ÀP§ÀP¦ÀP¦�çÀP·ÀR³ÀR³ÀRÄÀR‘ÀR’ÀR‘ÀR‘„tÀR¢ÀW,ÀW,ÀW>ÀW ÀW
ÀW ÀW ‡ÃÀWÀ^ðÀ^ðÀ^ÿÀ^ÐÀ^ÑÀ^ÐÀ^Ѓ_À^áÀb3Àb4Àb3Àb3�•ÀbDÀcèÀcè
ÀcíÀcÌÀcÍÀcÌÀc̉ÀcÝÀmÀmÀmÀmÀm Àm#ÀlæÀlçÀlæÀlæ�®ÀlùÀKÀK£ƒÀKÀoÀo␍Ào$Ào$ Ào*Ào3Ào3ÀoAÀoWÀoWÀofÀo{Ào{ÀoŠÀo�Ào�Ào£Ào³Ào³␍Ào¹ÀoÆÀoÆÀoÌÀoÞÀoÞÀoäÀoýÀoýÀpÀpÀpÀp#Àp:Àp:Àp@ÀpSÀpSÀpYÀpnÀpn5ÀpsÀpŠÀpžÀpŸÀp¬Àp²ÀpþÀp×ÀpÁÀp³ÀpÄÀpÑÀpÒÀpèÀpÚÀpëÀpøÀpùÀnþÀnþ‚Àq%Àq1Àq%ÀqTÀq9/ÀqTÀqmÀqnÀqmÀqm]Àq˜ÀnÇÀnǃÀnÍÀr$Àr'Àr$Àr;Àr;pÀrZÀr®Àr®rÀrÇÀs$Às%Às$Às$€ÖÀs5Àu#Àu#Àu0Àu>Àu>ÀuEÀuZÀuZ!ÀucÀu�Àu�Àu‡Àu Àu VÀu¾ÀuüÀuü Àv
ÀtæÀtçÀuQÀunÀuvÀuwÀu�Àu•Àu–ÀuÐÀuíÀuîÀtæÀtæƒÀuÀxÀx
ÀxÀwýÀwþÀwýÀwý…ÊÀxÀ}ëÀ}ëÀ}øÀ~À~ À~À}ËÀ}ÌÀ}ËÀ}Ë�®À}ÞÀqÎÀqÎ�­ÀqÔÀ␍—À␍—€¹ÀL€¬/// This behavior will not allow for any diagonal scrolling.
///
/// Drag gestures in one direction or the other will lock the input axis until
/// the gesture is released.ÀUÀU�À^€þ/// This behavior will only allow diagonal scrolling on a weighted
/// scale per gesture event.
///
/// This means that after initially evaluating the drag gesture, the weighted
/// evaluation (based on [kTouchSlop]) stands until the gesture is released.ÀpÀp�9À—�/// This behavior will only allow diagonal scrolling on a weighted
/// scale that is evaluated throughout a gesture event.
///
/// This means that during each update to the drag gesture, the scrolling
/// axis will be allowed to scroll diagonally if it exceeds the
/// [kTouchSlop].À®À®\ÀS/// This behavior allows free movement in any and all directions when
/// dragging.À ÅÀ Å„HÀ␍~`/// Specifies how to configure the [DragGestureRecognizer]s of a
/// [TwoDimensionalScrollable].Àô’Àô’Àô¢ÀôsÀôs�“Àôz…܅܀ɆTo/// Signature used by [Scrollable] to build the viewport through which the
/// scrollable content is displayed.†§†§�-‡-}/// Signature used by [TwoDimensionalScrollable] to build the viewport through
/// which the scrollable content is displayed.ˆÀˆÀFˆÈ €®package:flutter/material.dart€âpage_storage.dart�page_view.dart�'scroll_metrics.dart�Mscroll_notification.dart�xscroll_view.dart�›single_child_scroll_view.dart�Ë two_dimensional_scroll_view.dart�þtwo_dimensional_viewport.dart‰ü<€†€¤€¥€Õ€Ù€ý��D�o�’�Â�õ‚%‚.‚/‚D‚`‚a‚‹‚³‚܃ƒ-ƒ.ƒCƒ\ƒ|ƒ—ƒ¼ƒ×ƒý„„@„^„„�„¼„Þ„ÿ…"…A…U…m…n…¤…¥…½…ۅ܆'†L†¦†§†ö‡%‡M‡b‡~‡¥‡Î‡Õ‡ÖˆˆˆLˆ™ˆÀ‰‰‰X‰�‰…‰ÐŠŠbŠfŠ·‹‹R‹j‹n‹ºŒ ŒŒŒ`ŒdŒ±��C���‘�ÚŽŽk޲޶ŽíŽñ�?���Ü�'�u�y�‡�‹�Ô‘‘T‘q‘À‘Ù’'’E’”’¢’õ“4“^“ƒ“˜“§“Ô“é“û””<”c”€”¶”Δç••A•‡•ˆ•Õõ•û–I–™–â—/—€—œ—¢—ʗߘ˜˜=˜Ž˜ž˜¤˜ò™B™�™Ôš#šlš‘š—šæ› ›&›6›<›‡›¯›Ä›ê›ëœ œTœZœ¦œÑœ×�%�N�T�‰�Úžžždž´ŸŸNŸžŸí   % + | Ê¡¡1¡Q¡R¡Ÿ¡¥¡ö¢5¢;¢K¢Q¢›¢ê£.£W£X£™£å¤2¤H¤N¤š¤ë¥"¥(¥`¥®¥ç¥ü¦4¦5¦w¦Ä¦á¦ç§7§ƒ§Í§â§è§ø§þ¨O¨c¨†¨‡¨Ä©©©d©š©¯©µ©Å©Ëªª;ª<ª„ªŠªÚªà«,«w«Ã«É¬¬\¬b¬r¬x¬½­­8­9­�­Ï®␍®®[®§®ñ¯¯¯a¯¯¯à¯æ°.°4°D°J°™°»°Á°Ö±±±?±�±“±â²²%²p²¼²Â²Ò²Ø³%³7³L³k³l³¨³ó³ù´F´Š´�´Õµµbµzµ�µ·µ¸µîµô¶¶u¶È··)·*·^·d·�·Ä·Å·Ñ¸¸¸¸Y¸„¸Õ¹!¹e¹i¹j¹º¹ã¹éº ºº ºaºkºqº½»»P»v»|»Ê¼¼g¼„¼Š¼Ö½&½A½G½W½]½£½Ñ¾¾`¾…¾ê¿¿b¿µ¿ñÀ@,À@GÀ@OÀ@sÀ@ÈÀ@ÎÀ@ßÀ@ãÀ@äÀA4ÀACÀAIÀAlÀArÀA€ÀA»ÀAÅÀAËÀBÀB^ÀBªÀBÐÀBÖÀC$ÀCtÀC¾ÀCÄÀDÀD`ÀD{ÀD�ÀDÍÀEÀE␍ÀEÀE#ÀEsÀE¡ÀEãÀF.ÀF>ÀFcÀF›ÀF³ÀGÀG&ÀG3ÀGOÀG‹ÀGÐÀH"ÀHwÀH®ÀHÔÀHîÀHûÀIÀI.ÀI„ÀI²ÀIÁÀIÍÀIÕÀIèÀIòÀJÀJÀJÀJeÀJ£ÀJ©ÀJ÷ÀKHÀK˜ÀKžÀKëÀL:ÀLƒÀL‰ÀL×ÀM ÀMjÀM�ÀM“ÀMâÀMþÀNUÀN¯ÀNÌÀO&ÀOhÀOpÀO›ÀOåÀOëÀOýÀPÀPÀPQÀPnÀPtÀP·ÀQÀQ)ÀQNÀQjÀQ†ÀQ­ÀQÌÀR(ÀR/ÀRUÀRVÀR¥ÀRôÀSCÀSˆÀS·ÀS¾ÀSþÀT$ÀTcÀT„ÀT¯ÀTòÀUÀU5ÀUQÀUgÀU‘ÀUÁÀUÊÀUìÀUíÀV&ÀVJÀVzÀV€ÀV�ÀV¹ÀVÜÀVâÀWÀWÀW$ÀWnÀWrÀWtÀWuÀWÆÀXÀX8ÀXœÀX�ÀXÁÀXâÀXãÀXïÀY!ÀYFÀYJÀYLÀYMÀYyÀY}ÀYÇÀYòÀYöÀZ;ÀZˆÀZŒÀZÝÀ[À[BÀ[vÀ[•À[¢À[£À[çÀ[íÀ\;À\ˆÀ\ÖÀ]À] À]!À]^À]�À]«À]¬À]ûÀ^=À^CÀ^”À^ËÀ_À_=À_sÀ_ªÀ_áÀ_æÀ_çÀ`À`SÀ`TÀ``À`›À`œÀ`¨À`ÌÀ`ÍÀ`ÙÀa␍Àa.Àa/Àa;ÀaŠÀa‹Àa—ÀaÅÀaÆÀaÒÀbÀb[Àb\Àb‚Àb±ÀbæÀbçÀc/ÀcJÀc™ÀcÆÀdÀdKÀdŒÀd�ÀdÀÀdßÀeÀebÀe®ÀeäÀfÀfÀfÀfxÀf—ÀfÈÀfÌÀfÍÀfÚÀfæÀg/ÀgmÀgŒÀg¼ÀhÀhÀh#Àh$Àh1Àh=Àh`Àh—ÀhÂÀi␍ÀiUÀi’Ài–Ài—Ài¤Ài°ÀiÅÀiêÀj Àj&Àj=ÀjAÀjBÀjOÀj[Àj|ÀjÉÀjáÀk;ÀkRÀkuÀkyÀkzÀk¯ÀlÀlÀlÀlBÀlnÀl¸ÀlËÀlÑÀm5ÀmUÀm§Àm°ÀmðÀnÀn␍Àn4Àn[Àn“Àn”ÀnäÀnèÀnéÀnöÀoÀo1ÀoWÀoXÀo�Ào·ÀpÀp(Àp[Àp†Àp»ÀpéÀqÀq"ÀqVÀq†Àq¯ÀqúÀrÀrSÀr]ÀreÀržÀrÑÀr×ÀrØÀsÀsÀs#Às'Às(Às5ÀsAÀsTÀsyÀs¤Às±ÀsäÀtÀtÀtÀt/ÀtUÀtjÀtnÀtoÀt~ÀtÀt´ÀtµÀtÁÀtÎÀu Àu=Àu‡Àu�Àu‘Àu’ÀuÀÀuÁÀvÀv.ÀvaÀvbÀv·ÀvóÀw#ÀwHÀwIÀw_Àw{Àw|ÀwˆÀw•ÀwµÀxÀxÀxÀx-ÀxsÀxÁÀy ÀyIÀydÀyqÀyŽÀyªÀyìÀzÀzlÀzÑÀ{À{+À{\À{�À{ÄÀ{óÀ|(À|nÀ|´À|úÀ}ZÀ}ŸÀ~À~GÀ~ŽÀ~£À~¶À~ÃÀ~áÀ#ÀPÀ§À¿À€$À€cÀ€€À€±À€äÀ�À�HÀ�}À�ÃÀ‚ À‚OÀ‚¯À‚ôÀƒWÀƒœÀƒãÀƒøÀ„ À„À„ À„&À„@À„fÀ„šÀ„òÀ„øÀ„üÀ„ýÀ… À…À…<À…eÀ…sÀ…yÀ…›À…ÏÀ…çÀ†?À†pÀ†vÀ†zÀ†{À†�À†�À†ŸÀ†¾À†¿À†ñÀ‡ À‡'À‡PÀ‡TÀ‡UÀ‡‰À‡ÓÀˆ$ÀˆMÀˆhÀˆšÀˆµÀ‰À‰À‰2À‰8À‰<À‰=À‰sÀ‰ÂÀ‰îÀŠ
ÀŠÀŠÀŠ?ÀŠŽÀŠºÀŠÓÀŠîÀŠòÀŠóÀ‹À‹FÀ‹”À‹ÝÀ‹ðÀ‹þÀŒÀŒ4ÀŒƒÀŒ¯ÀŒÄÀŒÙÀŒôÀ�À�À�À�,À�>À�BÀ�CÀ�[À�mÀ�qÀ�rÀ�„À�…À�ÕÀŽÀŽLÀŽaÀޤÀŽÄÀŽËÀŽÏÀŽÐÀ�À�hÀ�vÀ�´À�À�(À�mÀ�®À‘À‘PÀ‘ À‘ïÀ’À’/À’0À’vÀ’ŸÀ’ÎÀ’ûÀ“À“À“NÀ“RÀ“SÀ“�À“ÉÀ”À”eÀ”ŒÀ”¿À”ÏÀ”×À•À•gÀ•¼À•ÿÀ–\À–lÀ–tÀ–ÄÀ–éÀ—À—UÀ—vÀ—ÎÀ—ÔÀ—ØÀ—ÙÀ˜ À˜4À˜„À˜ÖÀ™À™<À™BÀ™FÀ™GÀ™™À™¼ÀšÀš7ÀšhÀš¨Àš°Àš¶ÀšÈÀšÌÀšÍÀ› À›0À›WÀ›…À›¸À›¿À›ÀÀ›êÀ›ùÀœAÀœPÀœWÀœ[Àœ\ÀœmÀœnÀœ{Àœ‡Àœ®ÀœÍÀ�+À�rÀ�yÀ�¡À�ÌÀ�ÓÀž1ÀžuÀž›Àž³ÀžÍÀžäÀŸÀŸ8ÀŸ\ÀŸ…ÀŸ±ÀŸîÀ 
À HÀ jÀ �À ¾À þÀ¡␍À¡À¡%À¡.À¡5À¡6À¡^À¡žÀ¡ØÀ¡ùÀ¢À¢;À¢À¢œÀ¢ÕÀ¢îÀ¢ùÀ£À£À£ À£5À£6À£yÀ£ÈÀ£åÀ¤À¤&À¤BÀ¤`À¤wÀ¤€À¤†À¤‡À¤šÀ¤žÀ¤ŸÀ¤íÀ¥9À¥À¥®À¥ÉÀ¥åÀ¦ À¦+À¦‡À¦­À¦´À¦ùÀ§À§#À§=À§QÀ§yÀ§§À§®À§æÀ§êÀ§ëÀ§øÀ¨À¨IÀ¨tÀ¨ÄÀ©À©À©!À©"À©UÀ©YÀ©–À©ØÀªÀª9ÀªRÀªnÀª‹Àª¤ÀªªÀª«ÀªÊÀªëÀ«À«'À«(À«4À«ŒÀ«ŽÀ«�À«ãÀ¬$À¬%À¬1À¬FÀ¬]À¬�À¬¸À¬ÙÀ¬àÀ¬äÀ¬åÀ¬ñÀ­1À­WÀ­ˆÀ­½À­ÃÀ­ÇÀ­ÈÀ­ÔÀ­çÀ® À®À®"À®#À®/À®VÀ®uÀ®˜À®¼À®×À®ÞÀ®âÀ®äÀ®åÀ¯4À¯_À¯cÀ¯³À°À°OÀ°_À°¿À± À±<À±lÀ±{À±ºÀ±ÄÀ±öÀ±úÀ±ûÀ²;À²nÀ²oÀ²¦À²èÀ²éÀ³À³8À³_À³‹À³µÀ³¶À´À´4À´5À´aÀ´}À´¤À´ÂÀ´ÐÀ´ÖÀµ Àµ"ÀµTÀµXÀµYÀµ£ÀµãÀÀ¶&À¶4À¶:À¶]À¶§À¶ÌÀ¶ÜÀ¶äÀ·
À·#À·gÀ·kÀ·lÀ·¯À·ÑÀ·×À¸#À¸EÀ¸KÀ¸›À¸êÀ¹7À¹ˆÀ¹™À¹ŸÀ¹íÀº=ÀºŽÀºÍÀ»)À»ƒÀ»„À»�À»°À»ïÀ¼"À¼hÀ¼oÀ¼ À¼æÀ¼íÀ½À½À½À½ À½dÀ½“À½ÀÀ½íÀ¾À¾BÀ¾pÀ¾tÀ¾uÀ¾�À¾ÏÀ¿-À¿ZÀ¿²À¿¸À¿ùÀÀ3ÀÀ�ÀÀÙÀÀôÀÁÀÁÀÁGÀÁjÀÁ’ÀÁ›ÀÁ¨ÀÂÀÂTÀÂoÀŠÀ“ÀÂÄÀÂéÀÃÀÃÀà ÀÃkÀÃlÀþÀÄÀÄ!ÀÄNÀÄtÀĉÀÄ�ÀÄ·ÀÅÀÅ)ÀÅQÀÅYÀÅ_ÀÅrÀÅvÀÅwÀÅ·ÀÅ÷ÀÆ;ÀÆdÀƵÀÇÀÇRÀÇ¢ÀÇÜÀÈ ÀÈÀÈhÀȈÀÈ�ÀÈ–ÀÈ×ÀÉ2ÀÉ6ÀÉ7ÀÉoÀÉ©ÀɯÀÉþÀÊ4ÀÊ‚ÀÊÄÀÊðÀËÀË2ÀË9ÀËzÀ˺ÀËòÀÌÀÌhÀÌÀÀÌåÀÍ'À͉ÀÍÉÀÍáÀÎ!ÀÎ*ÀÎoÀ΂ÀΪÀγÀιÀÎãÀÏ)ÀÏÀϤÀÏâÀÐBÀЀÀИÀÐÔÀÐÝÀÑ ÀÑ3ÀÑYÀÑbÀÑhÀÑlÀÑmÀÑyÀѼÀÑçÀÒ(ÀÒ|ÀÒ¨ÀÒÔÀÒÚÀÒíÀÒñÀÒòÀÒþÀÓCÀÓ™ÀÓÛÀÔÀÔÀÔÀÔÀÔ)ÀÔƒÀÔÔÀÕ!ÀÕpÀÕ¯ÀÖÀÖ<ÀÖ\ÀÖbÀÖuÀÖyÀÖzÀÖ†ÀÖæÀ×:ÀׇÀ×ÖÀØÀØzÀØ¢ÀØÂÀØÈÀØÛÀØßÀØàÀÙÀÙ%ÀÙCÀÙcÀÙwÀÙ±ÀÙâÀÚ%ÀÚ2ÀÚnÀÚ¡ÀÚæÀÚìÀÛÀÛ(ÀÛ.ÀÛxÀÛÀÀÜÀÜ"ÀÜ<ÀÜCÀܨÀÜËÀÜèÀÝ0ÀÝ‚ÀÝÖÀÝèÀÝòÀÞ$ÀÞuÀÞ‡ÀÞ‘ÀÞ½ÀßÀßÀß"ÀßBÀß„ÀßÏÀßáÀßëÀàÀà`ÀàrÀà|Àà¦ÀàïÀàùÀá Àá(ÀápÀáÂÀâÀâ(Àâ2ÀâdÀâµÀâÇÀâÑÀâýÀãHÀãRÀãbÀã�ÀãÃÀäÀä Àä*ÀäUÀäŸÀä±Àä»ÀäåÀå.Àå8ÀåHÀåNÀåRÀåSÀå�ÀåÏÀæÀæZÀæƒÀæ‡ÀæˆÀæÆÀæâÀçÀç,ÀçSÀçZÀç^Àç_ÀçkÀçÊÀçäÀèÀèbÀèŠÀè·ÀéÀé,ÀéeÀé¡ÀéÉÀêÀêeÀêŠÀêÆÀëÀë-ÀëWÀë†ÀëÓÀì"Àì(ÀìkÀìoÀìpÀì|Àì¯ÀìãÀí:ÀínÀí–ÀíèÀî!ÀîdÀî²ÀîÍÀîèÀîñÀïÀïbÀïkÀïÃÀïùÀðFÀðLÀðŸÀðÑÀð÷ÀñGÀñ€ÀñÃÀò␍Àò(ÀòCÀòLÀò±ÀóÀó>Àó‰Àó�Àó“Àó”Àó Àó³ÀóâÀôÀô3ÀôWÀôlÀôpÀôrÀôsÀôµÀôçÀõ,ÀõrÀõ¹ÀöÀöÀöÀöÀöJÀöˆÀöŒÀöÇÀ÷À÷\À÷‡À÷ºÀ÷¾ÀøÀø\Àø¬ÀøôÀù␍ÀùLÀùgÀùvÀù’Àù¼ÀùÔÀùúÀú ÀúQÀúRÀúsÀú˜Àú¹ÀúÌÀúÍÀúÙÀûÀû@ÀûZÀû�Àû¾ÀûÐÀû×ÀûÛÀûÜÀûèÀü?ÀüPÀüˆÀüœÀü¸ÀüéÀüíÀüïÀüðÀý&ÀýAÀýgÀý‘Àý©ÀýÏÀýåÀþÀþ;ÀþlÀþ‚Àþ¶ÀþºÀþ»ÀÿÀÿ,ÀÿHÀÿoÀÿ�Àÿ›Àÿ¡ÀÿÙÀÿðÀ%ÀEÀIÀJÀ~À¼ÀÜÀÀ3ÀAÀGÀlÀŒÀ�À‘ÀžÀŸÀÕÀñÀÀ?ÀMÀSÀtÀ”À˜À™ÀÉÀóÀÀEÀLÀjÀnÀoÀ{ÀÂÀôÀÀ=ÀJÀ‚À®ÀäÀÀKÀ¦ÀÛÀãÀéÀíÀîÀ À ÀÀ6ÀNÀqÀ—À�ÀùÀÀMÀ[ÀaÀbÀ³À´ÀÐÀÀ+ÀOÀ‘ÀÒÀïÀþÀ -À bÀ lÀ ‰À ‘À —À ÃÀ
␍À
`À
dÀ
eÀ
qÀ
‹À
§À
¾À
ÂÀ
ÄÀ
ÅÀ À %À fÀ rÀ šÀ ›À §À ÑÀ èÀ ìÀ íÀ ùÀ !À =À AÀ BÀ NÀ iÀ {À À €À ŒÀ ±À ³À ´À ÄÀ ÅÀ␍À␍&À␍yÀ␍•À␍ÔÀ␍ÚÀ+ÀJÀRÀSÀ˜À·À½À␍À\ÀmÀnÀ³ÀíÀóÀ?À�À•À«À¬ÀôÀÀ ÀÀÀWÀ¡À¸À¼À␍ÀTÀ�À×ÀèÀìÀ7À†À¾ÀÂÀÐÀÔÀÀVÀ§ÀµÀíÀ$À*À{ÀŠÀ­À¼ÀáÀÀ'ÀEÀ]À„À¿ÀõÀ(À.À/À|À�ÀÃÀÄÀüÀÀJÀ–ÀÃÀÄÀúÀÀHÀ’À½À¾À ÀÀ`ÀªÀ°ÀÀÀÆÀÀ:ÀqÀrÀ°À¶ÀÝÀÀÀNÀTÀ–ÀçÀ%ÀDÀEÀ„ÀŠÀ±ÀÔÀÕÀÀÀ<ÀeÀfÀ¢À¨ÀÏÀüÀýÀ À]À^À®À×ÀÝÀ À À À qÀ {À �À ÃÀ!À!bÀ!¢À!¨À!÷À"À"#À"3À"9À"…À"»À#À#>À#�À#ºÀ#¾À#¿À$À$À$$À$GÀ$MÀ$[À$²À$¼À$ÂÀ%À%RÀ%£À%ãÀ%éÀ&9À&}À&ƒÀ&ÔÀ&óÀ&ùÀ' À'À'\À'©À'ëÀ(8À(HÀ(mÀ(¥À(½À)À)NÀ)[À)wÀ)ÊÀ*À*kÀ*»À*áÀ*ûÀ+À+À+À+/À+9À+VÀ+ZÀ+\À+]À+—À+›À+ìÀ,<À,JÀ,NÀ,›À,áÀ-)À-lÀ-žÀ-ìÀ.À.PÀ.¯À/À/À/CÀ/IÀ/„À/ŠÀ/ØÀ/÷À0"À0`À0–À0šÀ0›À0ÏÀ0ÕÀ1À1À1fÀ1…À1²À1òÀ2*À2.À2/À2<À2HÀ2]À2’À2ÊÀ2ÐÀ3À3AÀ3GÀ3^À3bÀ3cÀ3pÀ3|À3¹À3ßÀ4!À4"À42À4‡À4ÁÀ5À52À5gÀ5¢À5ÒÀ5þÀ6<À6…À6¢À6×À7À7À7À7 À72À7‹À7ÇÀ8À88À8oÀ8¬À8ÞÀ9 À9LÀ9•À9²À9éÀ:%À:-À:3À:7À:8À:EÀ:QÀ:xÀ:„À:ÒÀ;À;"À;.À;€À;ÍÀ;ÔÀ;ÕÀ<À<,À<RÀ<|À<žÀ<ÔÀ=␍À=dÀ=•À=«À=ÞÀ>À>6À>oÀ>ªÀ>êÀ?À?ZÀ?‹À?ÜÀ@À@8À@sÀ@²ÀAÀAHÀAbÀA›ÀAÞÀAýÀB:ÀByÀB¿ÀBøÀC7ÀClÀCÃÀDÀD*ÀD7ÀDBÀDKÀDRÀDSÀD˜ÀDÑÀDÒÀE,ÀE0ÀE1ÀE>ÀEJÀE]ÀE‰ÀE·ÀEÌÀEÐÀEÒÀEÓÀF ÀFCÀF€ÀF£ÀFâÀG ÀG7ÀGQÀGWÀGXÀG˜ÀG™ÀG¥ÀGíÀGïÀGðÀHÀHPÀHrÀH�ÀH¢ÀHÆÀHèÀHþÀIÀI)ÀIHÀIhÀI…ÀIžÀI¹ÀIôÀJMÀJNÀJ�ÀJ³ÀJ´ÀJÀÀKÀKÀKÀKPÀKƒÀKÃÀKñÀL8ÀL9ÀLMÀLgÀLhÀL£ÀL¯ÀLÞÀLùÀMÀM<ÀM[ÀM·ÀMÝÀMäÀMðÀMýÀNNÀNŸÀNÆÀNÍÀNòÀNöÀN÷ÀO#ÀOGÀO€ÀOÑÀPÀP&ÀPsÀP€ÀP™ÀPŸÀP£ÀP¤ÀP°ÀPâÀQÀQ,ÀQ;ÀQjÀQžÀQÄÀRÀR)ÀR`ÀRfÀRŠÀRŽÀR�ÀR›ÀRÏÀRüÀS ÀSFÀSUÀS{ÀSžÀSØÀTÀT?ÀTsÀT�ÀTÒÀTðÀUÀUFÀU„ÀUÀÀUàÀVÀVKÀV_ÀV}ÀVÍÀV×ÀVÝÀWÀWÀWÀWÀWIÀW|ÀW¬ÀWØÀWþÀX,ÀXXÀX_ÀX”ÀXÄÀXðÀYÀYDÀYpÀYwÀYxÀYœÀYÂÀYøÀZ.ÀZ>ÀZdÀZ€ÀZÇÀZýÀ[␍À[AÀ[vÀ[«À[ÜÀ\ À\7À\sÀ\¤À\ÓÀ]
À]À]À]4À]EÀ]tÀ]»À]×À]öÀ^=À^MÀ^gÀ^‘À^—À^ÉÀ^ÍÀ^ÎÀ^ÚÀ_
À_%À_<À_wÀ_²À_âÀ`À`9À`@À`rÀ`®À`ÉÀ`ÐÀ`ÑÀ`õÀaÀa*ÀaYÀa�Àa³Àa÷ÀaýÀb,Àb0Àb1Àb=ÀbZÀbuÀbŒÀb°ÀbÖÀbåÀcÀcHÀcnÀc Àc¦ÀcÅÀcÉÀcÊÀcÖÀcöÀdÀd@Àd’Àd¦ÀdÇÀd×ÀeÀe:Àe`ÀeuÀeÄÀfÀf[ÀfªÀfÒÀgÀgrÀgÊÀgúÀhÀh@ÀhoÀh ÀhËÀhüÀi>Ài€ÀiÂÀjÀj_Àj¡Àj²ÀjÁÀjÎÀk ÀknÀk°ÀkÏÀkïÀlÀlUÀl³Àl¿ÀlÉÀlÙÀlßÀlãÀläÀlðÀm,ÀmSÀmzÀm¨ÀmÑÀmØÀnÀnDÀn‘Àn•Àn—Àn˜ÀnÇÀnüÀo Ào/ÀoSÀowÀo™Ào¯ÀoÂÀoÚÀoùÀpÀp6ÀpOÀpjÀp¥ÀqÀqÀq7ÀqjÀqkÀqwÀqËÀqÍÀqÎÀr␍Àr8Àr9ÀrnÀr¬ÀrßÀs!Às"Às.ÀsOÀs€ÀsÔÀs÷ÀsûÀsüÀtJÀt–ÀtäÀtðÀuÀu:ÀuVÀu}ÀuœÀuøÀvÀv%ÀvLÀvjÀvzÀv˜Àv´ÀvÊÀvôÀvýÀw.Àw>Àw\ÀwxÀwŽÀw¸ÀwÁÀwÈÀwÉÀwöÀwúÀwûÀxÀx'ÀxKÀxqÀx¸Àx×ÀxøÀyÀy7ÀykÀy‘Ày¦ÀyñÀz@Àz‘ÀzÝÀ{-À{wÀ{³À|À|SÀ|•À|´À|ÔÀ}À}:À}˜À}¤À}®À}¾À}ÄÀ}ÈÀ}ÉÀ}ÕÀ~À~8À~_À~�À~¶À~½ÀÀ)ÀvÀzÀ|
Scrollable_ScrollableScopeScrollableState_ScrollableSelectionHandler _ScrollableSelectionHandlerState%_ScrollableSelectionContainerDelegate_getDeltaToScrollOrigin_ScrollSemantics_RenderScrollSemantics_RestorableScrollOffsetDiagonalDragBehaviorTwoDimensionalScrollableTwoDimensionalScrollableState_TwoDimensionalScrollableScope_VerticalOuterDimension_VerticalOuterDimensionState_HorizontalInnerDimension_HorizontalInnerDimensionState (flutter.widgets.Scrollable.axisDirection�ÌThe direction in which this widget scrolls.
For example, if the [Scrollable.axisDirection] is [AxisDirection.down],
increasing the scroll position will cause content below the bottom of the
viewport to become visible through the viewport. Similarly, if the
axisDirection is [AxisDirection.right], increasing the scroll position
will cause content beyond the right edge of the viewport to become visible
through the viewport.
Defaults to [AxisDirection.down].%flutter.widgets.Scrollable.controllerƒ An object that can be used to control the position to which this widget is
scrolled.
A [ScrollController] serves several purposes. It can be used to control
the initial scroll position (see [ScrollController.initialScrollOffset]).
It can be used to control whether the scroll view should automatically
save and restore its scroll position in the [PageStorage] (see
[ScrollController.keepScrollOffset]). It can be used to read the current
scroll position (see [ScrollController.offset]), or change it (see
[ScrollController.animateTo]).
If null, a [ScrollController] will be created internally by [Scrollable]
in order to create and manage the [ScrollPosition].
See also:
* [Scrollable.ensureVisible], which animates the scroll position to
reveal a given [BuildContext]."flutter.widgets.Scrollable.physics„kHow the widgets should respond to user input.
For example, determines how the widget continues to animate after the
user stops dragging the scroll view.
Defaults to matching platform conventions via the physics provided from
the ambient [ScrollConfiguration].
If an explicit [ScrollBehavior] is provided to
[Scrollable.scrollBehavior], the [ScrollPhysics] provided by that behavior
will take precedence after [Scrollable.physics].
The physics can be changed dynamically, but new physics will only take
effect if the _class_ of the provided object changes. Merely constructing
a new instance with a different configuration is insufficient to cause the
physics to be reapplied. (This is because the final object used is
generated dynamically, which can be relatively expensive, and it would be
inefficient to speculatively create this object each frame to see if the
physics should be updated.)
See also:
* [AlwaysScrollableScrollPhysics], which can be used to indicate that the
scrollable should react to scroll requests (and possible overscroll)
even if the scrollable's contents fit without scrolling being necessary..flutter.widgets.Scrollable.incrementCalculator‚␍An optional function that will be called to calculate the distance to
scroll when the scrollable is asked to scroll via the keyboard using a
[ScrollAction].
If not supplied, the [Scrollable] will scroll a default amount when a
keyboard navigation key is pressed (e.g. pageUp/pageDown, control-upArrow,
etc.), or otherwise invoked by a [ScrollAction].
If [incrementCalculator] is null, the default for
[ScrollIncrementType.page] is 80% of the size of the scroll window, and
for [ScrollIncrementType.line], 50 logical pixels./flutter.widgets.scrollable.excludeFromSemantics�2Whether the scroll actions introduced by this [Scrollable] are exposed
in the semantics tree.
Text fields with an overflow are usually scrollable to make sure that the
user can get to the beginning/end of the entered text. However, these
scrolling actions are generally not exposed to the semantics layer.*flutter.widgets.scrollable.hitTestBehavior€¾Defines the behavior of gesture detector used in this [Scrollable].
This defaults to [HitTestBehavior.opaque] which means it prevents targets
behind this [Scrollable] from receiving events.,flutter.widgets.scrollable.dragStartBehavior‚ŠDetermines the way that drag start behavior is handled.
If set to [DragStartBehavior.start], scrolling drag behavior will
begin at the position where the drag gesture won the arena. If set to
[DragStartBehavior.down] it will begin at the position where a down
event is first detected.
In general, setting this to [DragStartBehavior.start] will make drag
animation smoother and setting it to [DragStartBehavior.down] will make
drag behavior feel slightly more reactive.
By default, the drag start behavior is [DragStartBehavior.start].
See also:
* [DragGestureRecognizer.dragStartBehavior], which gives an example for
the different behaviors.(flutter.widgets.scrollable.restorationId�³Restoration ID to save and restore the scroll offset of the scrollable.
If a restoration id is provided, the scrollable will persist its current
scroll offset and restore it during state restoration.
The scroll offset is persisted in a [RestorationBucket] claimed from
the surrounding [RestorationScope] using the provided restoration ID.
See also:
* [RestorationManager], which explains how state restoration works in
Flutter.)flutter.widgets.scrollable.scrollBehavior��A [ScrollBehavior] that will be applied to this widget individually.
Defaults to null, wherein the inherited [ScrollBehavior] is copied and
modified to alter the viewport decoration, like [Scrollbar]s.
[ScrollBehavior]s also provide [ScrollPhysics]. If an explicit
[ScrollPhysics] is provided in [physics], it will take precedence,
followed by [scrollBehavior], and then the inherited ancestor
[ScrollBehavior].(×