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

View File

@@ -0,0 +1,944 @@
€ÌbodyappBar bodyScrim bottomSheetsnackBarmaterialBannerpersistentFooterbottomNavigationBarfloatingActionButtondrawer endDrawerchildofmaybeOf createState
_scaffolds_materialBanners_materialBannerController
_snackBars_snackBarController_snackBarTimer_accessibleNavigationdidChangeDependencies _register _unregister_updateScaffolds_isRoot showSnackBar_didUpdateAnimationStyle_handleSnackBarStatusChangedremoveCurrentSnackBarhideCurrentSnackBarclearSnackBarsshowMaterialBanner"_handleMaterialBannerStatusChangedremoveCurrentMaterialBannerhideCurrentMaterialBannerclearMaterialBannersbuilddispose_scaffoldMessengerStateupdateShouldNotifyfloatingActionButtonSizebottomSheetSize
contentBottom
contentTop minInsetsminViewPadding scaffoldSize snackBarSizematerialBannerSize
textDirectionbeginendanimatorprogress getOffsettoStringbottomNavigationBarTopfloatingActionButtonArea_scaleFloatingActionButtoncopyWithcontextfloatingActionButtonScalegeometryvalue _updateWithbottomWidgetsHeight appBarHeightmaterialBannerHeight==hashCode
extendBodyextendBodyBehindAppBargeometryNotifier$previousFloatingActionButtonLocation#currentFloatingActionButtonLocation)floatingActionButtonMoveAnimationProgress"floatingActionButtonMotionAnimatorisSnackBarFloating
snackBarWidthextendBodyBehindMaterialBanner
performLayoutshouldRelayoutfabMoveAnimationfabMotionAnimatorcurrentController_previousController_previousExitScaleAnimation$_previousExitRotationCurvedAnimation_currentEntranceScaleAnimation_previousScaleAnimation_previousRotationAnimation_currentScaleAnimation_extendedCurrentScaleAnimation_currentRotationAnimation_previousChild initStatedidUpdateWidget_entranceTurnTween_disposeAnimations_updateAnimations%_handlePreviousAnimationStatusChanged_isExtendedFloatingActionButton_onProgressChanged_updateGeometryScaledrawerBarrierDismissiblefloatingActionButtonLocationfloatingActionButtonAnimatorpersistentFooterButtonspersistentFooterAlignmentpersistentFooterDecorationonDrawerChangedonEndDrawerChangeddrawerScrimColorbottomSheetScrimBuilderbackgroundColorresizeToAvoidBottomInsetprimarydrawerDragStartBehaviordrawerEdgeDragWidthdrawerEnableOpenDragGestureendDrawerEnableOpenDragGesture
restorationId
geometryOf hasDrawer_defaultBottomSheetScrimBuilder restoreState
_drawerKey
_endDrawerKey_bodyKey hasAppBar hasEndDrawerhasFloatingActionButton_appBarMaxHeightappBarMaxHeight
_drawerOpened_endDrawerOpened isDrawerOpenisDrawerBarrierDismissibleisEndDrawerOpen_drawerOpenedCallback_endDrawerOpenedCallback
openDrawer
openEndDrawer_scaffoldMessenger_messengerSnackBar_updateSnackBar_messengerMaterialBanner_updateMaterialBanner_dismissedBottomSheets_currentBottomSheet_currentBottomSheetKey_persistentSheetHistoryEntry _maybeBuildPersistentBottomSheet_closeCurrentBottomSheet closeDrawercloseEndDrawer_updatePersistentBottomSheet_buildBottomSheetshowBottomSheet#_floatingActionButtonMoveController_floatingActionButtonAnimator%_previousFloatingActionButtonLocation_floatingActionButtonLocation)_floatingActionButtonVisibilityController_showFloatingActionButton_moveFloatingActionButtonhandleStatusBarTap_geometryNotifier_resizeToAvoidBottomInset
deactivateactivate
_addIfNonNull_buildEndDrawer _buildDrawer$_bottomSheetScrimAnimationController_showBodyScrim
showBodyScrim isEnabledinvoke_widget
_completerclosedclosesetStateanimationController
enableDragshowDragHandle onClosing onDismissed onDisposebuilder isPersistent elevationshape clipBehavior constraintsanimationCurve_handleDragStart_handleDragEnd_handleStatusChange
extentChanged_isLocalHistoryEntry%_kDefaultFloatingActionButtonLocation%_kDefaultFloatingActionButtonAnimator_standardBottomSheetCurve _kBottomSheetDominatesPercentage_kMinBottomSheetScrimOpacity_kMaxBottomSheetScrimOpacity
_ScaffoldSlotScaffoldMessengerScaffoldMessengerState_ScaffoldMessengerScopeScaffoldPrelayoutGeometry_TransitionSnapshotFabLocationScaffoldGeometry_ScaffoldGeometryNotifier_BodyBoxConstraints _BodyBuilder_ScaffoldLayout_FloatingActionButtonTransition$_FloatingActionButtonTransitionStateScaffold
ScaffoldState_DismissDrawerActionScaffoldFeatureController_StandardBottomSheet_StandardBottomSheetStatePersistentBottomSheetController_ScaffoldScope<70>ëDragStartBehaviorFloatingActionButtonLocationendFloatFloatingActionButtonAnimatorscalingCurvestandardEasingdoubleSnackBarMaterialBanner BuildContextof showSnackBarshowMaterialBannerdebugCheckHasScaffoldMessengerStatefulWidgetWidget GlobalKey MaterialAppscaffoldMessengerKey"dependOnInheritedWidgetOfExactType_scaffoldMessengerStateoverrideStateTickerProviderStateMixin
LinkedHashSetQueueMaterialBannerClosedReasonAnimationControllerSnackBarClosedReasonTimerbool protectedvoid
MediaQueryaccessibleNavigationOfcontextdidChangeDependenciesadd
isNotEmpty_updateSnackBar_updateMaterialBannerremovescaffoldfindAncestorStateOfTypecontainsdurationclosebehaviorSnackBarBehaviorfloatingfloatingActionButtonpersistentFooterButtonsbottomNavigationBarAnimationStylesnackBarAnimationStylereverseDuration noAnimationcreateAnimationControllervsyncaddStatusListenerisEmpty isDismissedforward_
withAnimation fallbackKey UniqueKey CompleterfirstsetStateaddLast exception FlutterErrorString diagnostics
toDescriptionDiagnosticsNode ErrorSummaryErrorDescription ErrorHintdescribeOwnershipChain fromPartsdisposeAnimationStatus dismissed removeFirst completedreverse
_completer isCompletedcompletereasoncancelvaluehidethenmountedcleardebugCheckHasMediaQuery
ModalRoutedynamic isCurrent_widgetisForwardOrCompletedpersisttimeoutscaffoldMessengerStatechildwidgetInheritedWidgetFloatingActionButtonOffset immutableSizezero BottomSheetbody
EdgeInsetsbottomappBartopMediaQueryDatapaddingresizeToAvoidBottomInset viewPadding
viewInsets
TextDirection getOffsetbeginendprogressobjectRuntimeType
ValueNotifier
geometryOf BottomAppBarRectbottomNavigationBarToplerpcenterfloatingActionButtonAreaChangeNotifierValueListenable RenderObjectfindRenderObjectownerdebugDoingPaint_scaleFloatingActionButtonfloatingActionButtonScalecopyWithnotifyListenersBoxConstraintsObjectmaterialBannerHeightbottomWidgetsHeight appBarHeightinthashhashCodeStatelessWidget
LayoutBuilderbuilder constraintsmaxdataMultiChildLayoutDelegateloosetightenwidthheighthasChild layoutChild
positionChildpersistentFootermaxWidth maxHeightmaterialBanner clampDouble bodyScrimsnackBar bottomSheetbottomSheetSize
contentBottom
contentTopfloatingActionButtonSize minInsets scaffoldSize snackBarSizematerialBannerSize
textDirectionminViewPaddingstartTop centerTopendTop miniStartTop
miniCenterTop
miniEndTop startDocked
startFloat centerDocked centerFloat endContained endDockedminiStartDockedminiStartFloatminiCenterDockedminiCenterFloat
miniEndDocked miniEndFloatsizemindrawertight endDrawer _updateWith)floatingActionButtonMoveAnimationProgress$previousFloatingActionButtonLocation#currentFloatingActionButtonLocation
extendBodyextendBodyBehindAppBar AnimationCurvedAnimationTrainHoppingAnimation initStatekFloatingActionButtonSeguecurrentControllerdidUpdateWidgetfabMotionAnimatorfabMoveAnimationkey
AnimatableTween!kFloatingActionButtonTurnIntervalchain
CurveTweencurveCurveseaseInparentanimatedrivegetScaleAnimationgetRotationAnimation AnimationMinInterval addListener
isExtendedStack alignment Alignment centerRightchildrenFadeTransitionopacityScaleTransitionscaleRotationTransitionturnsgeometryNotifiershowBottomSheetTextCenterAppBarSafeAreaDraggableScrollableSheet
showBodyScrimTabBar
TabBarView
TabControllerDrawerBottomNavigationBarshowModalBottomSheetAlignmentDirectional centerEndstartCircularNotchedRectanglebackgroundColorPreferredSizeWidgetSizedBoxexpandListView
TextButton OverflowBarListDividercreateBorderSide
BoxDecorationltrrtl
openDrawer closeDrawer NavigatorpopdrawerEnableOpenDragGestureDrawerCallback
openEndDrawercloseEndDrawerendDrawerEnableOpenDragGestureDrawerThemeData
scrimColorColorsblack54Color ModalBarrierblackMaterial ThemeDatascaffoldBackgroundColorLocalHistoryEntryBottomSheetThemeDataPrimaryScrollControllerprimaryRestorationBucketRestorationScopeRestorationManagerBuilderdescribeElementregisterForUpdates hasDrawerAnimatedBuilder animation dismissiblecolor withOpacityRestorationMixinWidgetsBindingObserver
restorationIdregisterForRestorationDrawerControllerStateRestorableBooldrawerBarrierDismissible currentStateonDrawerChangedcallonEndDrawerChanged
IconButtonopen
_snackBars_materialBannersDraggableScrollableNotificationextent
initialExtentprecisionErrorToleranceonRemoveDraggableScrollableActuatorresetaddLocalHistoryEntrygrowablesheetanimationControllerNotificationListeneronNotificationStatefulBuilder StateSettershrink isPersistent_isLocalHistoryEntryfuture whenComplete
WidgetBuilder ShapeBorderClip
enableDragshowDragHandle onClosing onDismissed onDispose shouldDisposeAnimationController elevationshape clipBehavior VoidCallbackfntransitionAnimationControllersheetAnimationStyle TickerFuture isAnimatinggetAnimationRestartfromhandleStatusBarTapScrollControllermaybeOf
hasClients animateToDuration milliseconds easeOutCircfloatingActionButtonLocationfloatingActionButtonAnimatorWidgetsBindinginstance addObserverremoveObserver _unregister _register
deactivateactivateLayoutId
removePadding
removeLeftremoveLeftPadding removeTopremoveTopPadding removeRightremoveRightPadding removeBottomremoveBottomPaddingremoveBottomInsetremoveViewInsetsmaintainBottomViewPaddingidDrawerControllerDrawerAlignmentdrawerCallbackdragStartBehaviordrawerDragStartBehaviordrawerScrimColor
edgeDragWidthdrawerEdgeDragWidthenableOpenDragGesture isDrawerOpendebugCheckHasDirectionalityThemeDirectionality KeyedSubtreebottomSheetScrimBuilderview paddingOfpreferredHeightFor
preferredSizeisFiniteConstrainedBoxFlexibleSpaceBarcreateSettings
currentExtent bottomCenterSnackBarThemeData
SnackBarThemefixedMaterialBannerThemeDataMaterialBannerTheme Container
decorationpersistentFooterDecorationborderBorderIntrinsicHeightPaddingallAlignpersistentFooterAlignmentspacingoverflowAlignmentOverflowBarAlignment viewInsetsOf
viewPaddingOfScrollNotificationObserverActionsactionsTypeActionIntent
DismissIntentCustomMultiChildLayoutdelegate"floatingActionButtonMotionAnimatorisSnackBarFloatingextendBodyBehindMaterialBanner
snackBarWidth
DismissActionisEndDrawerOpenisDrawerBarrierDismissibleFutureParametricCurveremoveStatusListenerDragStartDetailslinearDragEndDetailsSplitendCurve)_floatingActionButtonVisibilityController minExtentshouldCloseOnMinExtenttopStart heightFactor transform Semantics container onDismiss onDragStart onDragEndStatefulWidgetStateTickerProviderStateMixinInheritedWidgetFloatingActionButtonLocationChangeNotifierValueListenableBoxConstraintsStatelessWidgetMultiChildLayoutDelegateRestorationMixinWidgetsBindingObserver
DismissActionScaffoldFeatureControllerÝ_g‡tèÅûYŸ<59>àÞ3 (
dart:async=dart:collectionWilmathl dart:mathsdart:ui‚†package:flutter/foundation.dart‚Ö‚ìDragStartBehavior‚°package:flutter/gestures.dart‚ïpackage:flutter/widgets.dartƒ app_bar.dartƒ. banner.dartƒDbanner_theme.dartƒ`bottom_sheet.dartƒ| colors.dartƒ’ curves.dartƒ¨
debug.dartƒ½ divider.dartƒÔ drawer.dartƒêflexible_space_bar.dart floating_action_button.dart„2$floating_action_button_location.dart„a
material.dart„ysnack_bar.dart„’snack_bar_theme.dart„±
theme.dartÀ«À
<06>z<€†€¤€¥€Õ€Ù€ô<E282AC><1A>G<EFBFBD>q<EFBFBD><EFBFBD>¸<EFBFBD>Þ<EFBFBD>ú&'<Vr¯îƒƒƒ-ƒCƒ_ƒ{ƒ‘ƒ§ƒ¼ƒÓƒé„ „1„`„x„„°„ńƄޅ…)…E…[……ƒ…Î…ù†D†n†o†§†ó‡‡L‡}‡®‡¯‡Ä‡Ì‡Ö‡ã‡ò‡þˆˆ$ˆ;ˆSˆ]ˆjˆlˆmˆ·ˆ»ˆþ‰‰R‰‰†‰ÕŠŠPŠŠ<E280B9>Š×({‹Æ‹é‹íŒŒPŒTŒ§Œ·Œ»ŒÉŒÍ<C592><1B>l<EFBFBD>¾ŽŽ`ŽŽå<C5BD><16>b<EFBFBD>Ÿ<EFBFBD> <EFBFBD>Ð<EFBFBD>Ö<EFBFBD><07><1D><1E>n<EFBFBD>}<7D>ƒ<EFBFBD><EFBFBD>å&,œïA<41>× “(“x“Å” ”W”£”ȔΕ&•8•>•Š•Ä•Ê•Ú•à0o¿ì—'—\—]—<>—ؘ˜˜˜W˜n˜t˜Ç˜Í˜Ý˜ã™,™{™¼™ïš7šbšfšgšsš·š¹šºšßšã*{›Æœœœ#œVœ´<C593><06>[<5B>À<EFBFBD>òžHžž¾ž×žúžûŸŸŸ5Ÿ}Ÿ Ÿ¤Ÿ¥ŸÐŸîŸï   / S [ \ … ¯ · ½ Á Â ï¡%¡X¡m¡q¡r¡Ž¡Å¡ä¢¢2¢:¢@¢D¢E¢•¢Ý££c£ž£¢£££µ£¶¤¤R¤™¤¾¤Ä¥¥`¥¯¥½¥Ã¦¦¦k¦«¦ú§)§/§x§˜§ž§´¨¨ ¨u¨‡¨<E280A1>¨Á¨Ç©©i©·ª ªYª¯ªÑª×ªí«>«D«®«À«Æ«Ü¬G¬M¬·¬É¬Ï­­q­­­ñ®D®h®n®¹®¿®Õ¯$¯t¯z¯ä¯ö¯ü°F°_°°°ž°»±
±7±>±t±´±æ²&²9²q²<71>²¿²å²ë³:³ˆ³×´'´F´´½´È´øµµ µyµ€µŠµžµÆµÐµê¶¶?¶<>¶ß··j·Š·Ù¸/¸f¸w¸<77>¸ä¹:¹¹Öº,ºkº|ºªºù»
»»P»\»f»{»‡»»œ»<C593>»´»¸»¹¼¼-¼{¼×¼ÿ½#½+½1½5½6½t½Š½°½×½í¾¾¾9¾^¾ˆ¾¾¸¾Î¾ø¿I¿U¿q¿•¿¹¿È¿Î¿Ò¿ÓÀ@À@0À@6À@‡À@ÕÀA1ÀAOÀA]ÀAcÀA¶ÀAØÀAúÀBÀBÀB9ÀBsÀB™ÀB<>ÀBžÀBéÀBïÀC5ÀC<>ÀCÏÀCÝÀCãÀD6ÀDWÀDÀD¡ÀD®ÀDíÀEÀE,ÀERÀE\ÀEfÀElÀEŠÀE¥ÀE©ÀEªÀEóÀF4ÀFNÀF<>ÀFžÀF¤ÀFúÀGÀG,ÀGQÀGlÀGpÀGqÀGŠÀGÀGàÀH3ÀH€ÀH¥ÀH«ÀIÀIYÀI®ÀI¼ÀIÂÀJÀJ_ÀJ´ÀJéÀJïÀK8ÀKXÀK^ÀKtÀKËÀKÑÀLAÀLSÀL¯ÀLÒÀLØÀLäÀMÀMVÀMƒÀMŠÀMâÀN!ÀNEÀN{ÀN§ÀN­ÀOÀObÀO¸ÀPÀP'ÀP<>ÀP°ÀP»ÀPñÀQÀQÀQ~ÀQ…ÀQ—ÀQÃÀQËÀQãÀQúÀQþÀQÿÀRCÀRYÀRÀR¬ÀRÂÀRìÀRøÀSÀS?ÀSoÀSyÀSŸÀS»ÀSßÀTÀTÀTÀTÀTÀTmÀT€ÀT†ÀTÝÀU1ÀUVÀU¡ÀU¨ÀUÌÀUÚÀUàÀV?ÀVaÀVƒÀV‰ÀVŠÀVÄÀVðÀVôÀVõÀWFÀWLÀWÀWµÀWþÀXÀXSÀXaÀXgÀXÆÀXçÀYÀY7ÀYDÀY‰ÀY¢ÀYÈÀYîÀYøÀZÀZÀZ ÀZ
ÀZ^ÀZ§ÀZÇÀ[À[#À[)À[yÀ[­À[ËÀ[üÀ\À\!À\"À\/À\;À\bÀ\<5C>À\ØÀ\ÙÀ\úÀ];À]iÀ]³À]ñÀ^*À^iÀ^®À^ÒÀ^èÀ^öÀ_=À_KÀ_UÀ_]À_cÀ_dÀ_»À_¿À_ÀÀ_ÍÀ_ÙÀ_ìÀ`À`:À`XÀ`sÀ`ˆÀ`ŒÀ`ŽÀ`<60>À`ÇÀ`éÀaÀa?ÀaxÀayÀa±Àa²Àa¾ÀaøÀb6Àb8Àb9Àb†Àb­Àb±ÀbëÀc3ÀcoÀcsÀc³ÀcèÀcóÀdÀdfÀd®ÀdÒÀdõÀeÀe4Àe`Àe}ÀeŸÀe¿ÀeßÀfÀf&Àf,Àf-ÀfbÀfhÀf´ÀfÛÀfÜÀgÀgÀgXÀgxÀgÀg—ÀgßÀgöÀgüÀhAÀhÀhÙÀhðÀhöÀiFÀi“ÀiãÀiýÀjÀjÀjcÀjzÀj€ÀjÅÀk Àk:Àk@Àk<>ÀkÝÀl-ÀlAÀl\Àl]Àl¥Àl¾ÀlÄÀmÀm1Àm…Àm²Àm¸ÀmöÀn,ÀnJÀnKÀn˜Àn±Àn·ÀoÀoTÀo ÀoðÀpÀp6Àp7ÀpaÀpgÀp¶ÀqÀq7Àq=ÀqŠÀqØÀr(ÀrQÀrWÀr¦ÀrÉÀräÀråÀsÀsÀskÀs†Às‡Às¾ÀsÄÀtÀt:Àt;ÀtyÀtžÀt Àt¡ÀtíÀtñÀu:ÀuÀu¦ÀuòÀvNÀvOÀv{Àv¥ÀvÔÀvíÀvîÀvúÀw;ÀwZÀwŠÀw¶ÀwÐÀw×ÀwÛÀwÜÀwèÀwþÀxxÀx|Àx~ÀxÀxÌÀxÐÀyÀyAÀyEÀy<>ÀyäÀyèÀz4ÀzvÀzÀzÀzäÀ{)À{4À{MÀ{‘À{éÀ{êÀ|3À|€À|†À|¼À|äÀ|åÀ}%À}+À}oÀ}—À}˜À}ÜÀ}úÀ~
À~À~À~2À~<7E>À~‡À~ˆÀ~±À~åÀÀÀ ÀºÀÐÀ€0À€MÀ€¢À€ýÀ<00>À<00>À<00>
À<00> À<00><00><00>¯À<00>°À<00>ÎÀ<00>óÀÀÀÀ‚‘À‚ÛÀ‚÷ÀƒIÀƒ<>ÀƒúÀÀ
À„ À„*À„+À„wÀ„{À„|À„‘À„µÀ„ÙÀÀÀ…iÀ…‹À…ÁÀ…ûÀÀÀÀÀ† À†lÀ†¾À†ÁÀ À‡_À‡®À‡üÀˆˆˆ Àˆ¾ÀˆÒÀˆçÀÀ‰.À‰VÀ‰À‰¡À‰ËÀ‰ÌÀ‰ðÀŠ
ÀŠ2ÀŠ3ÀŠ„ÀŠÕÀ‹ À‹ºÀ‹ÎÀ‹ÔÀ‹ÿÀŒ=ÀŒyÀŒ¥ÀŒ©ÀŒªÀŒ¶ÀŒÌÀ<00><00><00><00>€À<00>ÏÀ<00>ëÀ<00>îÀŽCÀŽ’ÀŽ¿ÀŽÖÀŽôÀ<00>À<00><00><00><00><00><00><>À<00>À<00><>À<00>ÄÀ<00>öÀ<00> À<00>À<00>À<00><00><00>²À<00>ñÀ<00>òÀÀ‘•À‘–À‘ÈÀ‘àÀÀ<>À’ŽÀ’©À’ËÀÀ“!À“8À“CÀ“LÀ“SÀ“WÀ“YÀ“ZÀ““À“§À“ÄÀ“æÀÀ”+À”MÀ”…À”¼À”ùÀ•/À•UÀ•vÀ•”À•¾À•ðÀ•öÀ•÷ÀÀ–›À–ÏÀ–ÐÀÀ—eÀ—ŸÀ—èÀ—éÀ˜
À˜˜˜˜˜˜†À˜¿À˜ÀÀÀ™]À™­À™éÀ™êÀšGÀšnÀšˆÀš«ÀšÇÀšÈÀšòÀ›‡À›¿À›ÅÀ›ÆÀ›êÀœ!Àœ]ÀœˆÀœ¦Àœ¶ÀœîÀ<00><00>—À<00><>À<00>žÀ<00>ÒÀžÀž3Àž€Àž‰ÀžÂÀžêÀŸÀŸÀŸJÀŸ_ÀŸ‡ÀŸÉÀŸÒÀŸØÀŸÙÀ À  <>À ÞÀ ßÀ¡À¡?À¡pÀ¡xÀ¡~À¡À¡ÍÀ¢À¢3À¢^À¢iÀ¢©À¢°À¢±À¢ÙÀ£!À£"À£wÀ£ÆÀ¤ À¤7À¤™À¤òÀ¥À¥$À¥,À¥-À¥oÀ¥ À¥ÂÀ¥ûÀ¦-À¦QÀ¦ZÀ¦’À¦ÔÀ¦ÚÀ¦ÛÀ§-À§|À§ÃÀ¨
À¨À¨iÀ¨¬À¨úÀ©GÀ©—À©¾À©¿À©åÀªÀª5ÀªoÀª ÀªÂÀªËÀ«À«OÀ«UÀ«VÀ«œÀ«ÈÀ¬ À¬[À¬aÀ¬bÀ¬‘À¬ÆÀ¬÷À­­­–À­«À­ÎÀ®2À®;À®AÀ®BÀ®jÀ®¢À¯À¯À¯OÀ¯sÀ¯¬À¯ÖÀ¯üÀ¯ýÀ°GÀ°ªÀ°ÌÀ°÷À±À±1À±UÀ±…À±«À±ÓÀ±ÜÀ²1À²JÀ²SÀ²ªÀ²ÃÀ²ÌÀ³À³;À³ZÀ³—À³ À³äÀ´À´ À´´´¥À´ÌÀ´ðÀµÀµVÀµaÀµiÀµjÀµ’ÀµáÀÀ¶DÀ¶sÀ¶¨À¶ÞÀ·À·LÀ·À·´À·èÀ¸À¸¸€À¸¸À¸ïÀ¹(À¹`À¹–À¹ÑÀºÀº
ÀºhÀº–ÀºöÀ»À»EÀ»OÀ»^À»¢À»òÀ¼CÀ¼<>À¼¤À¼ðÀ½!À½XÀ½uÀ½}À½~À½ÕÀ½êÀ¾
À¾NÀ¾WÀ¾XÀ¾jÀ¾«À¾¶À¿À¿}À¿èÀÀ
ÀÀcÀÀ…ÀÀÁÀÁÀÁ(ÀÁ‡ÀÁÞÀÂ5ÀˆÀ™À²ÀÃ#ÀÃ4ÀÃDÀÃPÀÃZÀÃoÀÃ{ÀÃ<>ÀÂÀìÀÃñÀÄ)ÀÄ/ÀÄ0ÀÄ]ÀÄ¥ÀÄàÀÄæÀÄçÀÅ ÀÅ?ÀÅyÀÅ€ÀÅ„ÀÅ…ÀÅ‘ÀÅÆÀÅ÷ÀÆ/ÀÆeÀƦÀÆßÀÇCÀÇ¥ÀÇÕÀÈÀÈÀÈ!ÀÈ"ÀÈoÀÈsÀȼÀÈÀÀÈûÀÉ@ÀÉÀɹÀÉøÀÊ"ÀÊ;ÀÊ_ÀÊ„ÀʨÀÊÍÀÊÓÀÊÔÀÊëÀËÀËOÀ˃ÀË„ÀË¿ÀËîÀËïÀËûÀÌ[ÀÌ]ÀÌ^À̸ÀÌÜÀÍ6ÀÍkÀÍ›ÀÍËÀÎÀÎ7ÀÎiÀ΢ÀÏÀÏLÀÏ…ÀϽÀÏ×ÀÏØÀÏäÀÏùÀÐÀÐÀÐrÀдÀÐÍÀÐÎÀÐîÀÑAÀÑ[ÀчÀÑâÀÒ+ÀÒLÀÒYÀÒ£ÀÒóÀÓÀÓÀÓÀÓÀÓ+ÀÓ>ÀÓaÀÓ<>ÀÓÂÀÓñÀÔ ÀÔ ÀÔ$ÀÔ%ÀÔ1ÀÔuÀÔ›ÀÔÞÀÕÀÕ;ÀÕˆÀÕ£ÀÕ©ÀÕÝÀÖÀÖgÀÖuÀÖ{ÀÖ¦ÀÖèÀ×××®À×ÍÀ×ñÀØÀØ)ÀØ8À؇ÀØÕÀÙ ÀÙJÀÙfÀÙ‡ÀÙžÀÙÌÀÙÔÀÙÚÀÙÞÀÙßÀÚ%ÀÚYÀÚgÀÚ”ÀÚ•ÀÚ³ÀÚÝÀÛÀÛ
ÀÛ ÀÛ(ÀÛTÀÛ…ÀÛ¸ÀÛÛÀÛ÷ÀÛþÀÜ3ÀÜoÀÜ’ÀÜ®ÀܵÀܶÀÝÀÝÀÝ#ÀÝYÀÝZÀ݉ÀÝ¿ÀÝçÀÞÀÞ
ÀÞiÀÞƒÀÞŠÀÞ‹ÀÞÁÀßÀßEÀßLÀ߯ÀßÖÀßÝÀßÞÀßÿÀàOÀàƒÀà¶Àá
ÀácÀápÀá¦ÀáÂÀáèÀáñÀâ&ÀâBÀâkÀâtÀâ®ÀâÕÀâôÀâýÀã6Àã`ÀãÀãˆÀãŽÀã<>ÀãÒÀäÀä ÀäHÀä…Àä‰ÀäŠÀäÑÀäãÀåÀåQÀå}Àå…Àå<>Àå‘Àå’ÀåËÀæ ÀæÀæÀæÀæCÀæUÀæ}Àæ—ÀæÅÀçÀçXÀçgÀç„Àç²ÀèÀè$Àè_ÀèzÀè­ÀéÀéÀéÀé:ÀéeÀéÃÀéÐÀéÙÀéàÀéäÀéåÀêÀêdÀêhÀêiÀê•ÀêàÀêäÀêæÀêçÀë)Àë-ÀëqÀëuÀëªÀëûÀì)Àì-ÀìAÀì<>ÀìÛÀí#ÀíKÀíOÀí˜Àí¨Àí¬ÀíÀÀîÀî]Àî¬ÀîæÀîêÀïOÀïSÀïœÀï¬Àï°ÀïÄÀðÀðbÀð®ÀðæÀñ5ÀñlÀñpÀñÓÀñ×Àò Àò0Àò4ÀòpÀòtÀò»ÀóÀóIÀó<>ÀóÔÀô ÀôMÀô<>ÀôžÀô¢ÀôâÀõ(ÀõhÀõ©ÀõáÀö"Àö<Àö@Àö‡Àö‹ÀöÊÀ÷À÷mÀ÷qÀ÷ÀÀø(ÀømÀøqÀøÙÀù.Àù2ÀùIÀùMÀùfÀùjÀù§ÀùÞÀúÀúJÀúNÀú•ÀúÒÀû ÀûjÀû¯ÀûºÀû¾ÀûÒÀü#ÀümÀüqÀü}ÀüÊÀüöÀý ÀýPÀý†Àý’ÀýšÀý¡Àý©Àý¹Àý½ÀþÀþ@ÀþwÀþ{Àþ‰Àþ<>ÀþÝÀÿÀÿPÀÿ‹ÀÿÜÀÃÀÔÀÎÀÀ¬ÀüÀ<03>ÀÐÀÀ¡ÀèÀªÀ½ÀÌÀÝÀìÀ ÀÀÀåÀöÀÀ<07>À²ÀËÀÀ’ÀÖÀôÀ ¶À
À



ÄÀ À À  ¥À ñÀ  €À †À –À œÀ äÀ
À




¾À
ûÀÀŠÀ‹ÀÙÀŸÀ¸À¾ÀçÀíÀýÀÀŒÀ<10>ÀÅÀêÀëÀÀÀ¡ÀíÀÁÀÀ¨ÀÑÀ×ÀÂÀ÷À
ÀÀŠÀ°À±ÀÿÀÀ´ÀµÀÀÀ€ÀÄÀÅÀÀÀ¦À¬ÀåÀëÀ‡ÀˆÀ×ÀÝÀÀ—À<1A>ÀïÀÀÀ‚ÀÛÀÀÀ¥ÀÏÀÕÀñÀ÷À—ÀÆÀÌÀâÀÀ®À¸À¾ÀÀ’À»À¼À À —À <20>À çÀ íÀ!CÀ!rÀ!xÀ!ŽÀ!¾À"À"PÀ"`À"fÀ"¼À"ÎÀ"éÀ"êÀ#DÀ#pÀ#qÀ#ÌÀ#ÒÀ$À$VÀ$wÀ$xÀ$ÓÀ$ÙÀ%1À%”À%äÀ&,À&2À&<26>À&çÀ&íÀ'(À'{À'|À'ÉÀ'ÏÀ(À(1À(2À(zÀ(€À(ÎÀ(ïÀ(õÀ)EÀ)[À)€À)<29>À)¯À)µÀ*À*RÀ*ˆÀ*ŽÀ*ÞÀ+/À+{À+¢À+¨À+ðÀ,=À,kÀ,qÀ,¾À-À-À-"À-nÀ-¹À.À.%À.+À.;À.AÀ.<2E>À.ÆÀ/ À/XÀ/šÀ/·À/¸À0À0PÀ0œÀ0¢À0êÀ1;À1‡À1<>À1¥À1ÍÀ1ÎÀ2À2À2jÀ2³À2¹À3À3/À35À3yÀ3šÀ3°À3±À3ôÀ4'À4(À4rÀ4€À4†À4ÌÀ5À5dÀ5®À5ßÀ6 À60À61À6uÀ6ŽÀ6”À6ÍÀ6ÓÀ7 À76À77À7yÀ7À7˜À7ÑÀ7×À8À8=À8>À8„À8ŠÀ8ÕÀ9À9À9[À9¬À9²À9ÂÀ9ÈÀ:À:'À:FÀ:GÀ:”À:¶À:¼À; À;MÀ;SÀ;“À;™À;¯À;ÿÀ<0À<6À<„À<–À<œÀ<²À=À=MÀ=šÀ=ëÀ>2À>DÀ>JÀ>˜À>ªÀ>°À>ýÀ?HÀ?˜À?èÀ@"À@(À@xÀ@ÁÀAÀA ÀAXÀAŸÀAÑÀB%ÀB?ÀBTÀBZÀBŽÀBëÀCÀCnÀCÐÀD#ÀD,ÀD=ÀD ÀDøÀE%ÀElÀEuÀE†ÀEæÀFDÀF¢ÀGÀG`ÀGºÀGçÀGðÀH'ÀH/ÀH3ÀH4ÀH<>ÀH£ÀH©ÀHúÀIBÀIHÀIˆÀIŽÀIžÀI¤ÀIíÀJ8ÀJPÀJˆÀJÅÀJÉÀJÊÀKÀKGÀKMÀK<>ÀKÀKàÀL*ÀLxÀLŠÀL<>ÀLÝÀM+ÀMqÀM ÀM¦ÀMñÀN@ÀN<>ÀNÙÀNëÀO9ÀOkÀOªÀOËÀPÀPÀPrÀP}ÀP—ÀPûÀQPÀQ[ÀQnÀQÓÀR-ÀR\ÀR¥ÀR°ÀRÃÀS%ÀS…ÀSåÀTOÀTZÀT“ÀT<>ÀT£ÀTÎÀTÒÀTÓÀU!ÀU/ÀU5ÀUÀUÐÀVÀVnÀVƒÀV‰ÀVÉÀVÏÀVßÀVåÀW6ÀW{ÀWÍÀWëÀXPÀX{ÀXˆÀXàÀY ÀYÀYÀYÀY{ÀY—ÀY³ÀYêÀZMÀZÀZÇÀZÈÀZñÀ[À[aÀ[lÀ[mÀ[ÈÀ[ÑÀ[ØÀ[ÜÀ[ÝÀ[éÀ\À\À\À\:À\>À\ŠÀ\²À\ÞÀ],À]8À]mÀ]nÀ]{À]‡À]ÐÀ^
À^KÀ^OÀ^PÀ^`À^aÀ^»À_À_À_CÀ_DÀ_À_±À_²À_ðÀ`À` À`aÀ`–À`—À`ãÀa.Àa/ÀaKÀaLÀa}ÀaƒÀaÌÀaÿÀb=Àb~ÀbÀb®Àb´ÀbÄÀbÊÀcÀc+Àc[Àc\ÀcŸÀcéÀcêÀdÀd"Àd2Àd8ÀdˆÀdŸÀdÕÀdÖÀeÀeRÀefÀeŽÀe˜ÀeÆÀeÌÀeÐÀeÑÀfÀfVÀfjÀf•ÀfŸÀfÐÀfÖÀfÚÀfÛÀfþÀgÀgUÀg‡Àg<>ÀgÛÀh+Àh9Àh?Àh„ÀhÀh¡ÀhòÀiÀiPÀi{Ài<>Ài¦ÀiªÀi«Ài×ÀiÝÀj1ÀjlÀjrÀjÀÀkÀkÀk$ÀklÀkƒÀk‰ÀkÚÀkóÀl5Àl]ÀlcÀlÀl<>Àl<>ÀlÉÀl÷ÀløÀm
Àm[Àm\Àm©ÀmÄÀnÀn~ÀnÀn²ÀnÆÀnöÀoÀoÀo
Ào Ào$Ào%Ào~Ào³ÀpÀpÀpjÀpÀpÜÀq*Àq_ÀqoÀqpÀq¯ÀqÃÀqÿÀr ÀrÀrÀrÀr5Àr6Àr{ÀrÇÀrÚÀs0ÀshÀs ÀsÓÀsÔÀtÀtEÀtšÀtìÀuÀuyÀu<>ÀuîÀvHÀv~Àv¼ÀvÙÀw"ÀwMÀw”ÀwÉÀwÚÀwéÀxBÀxNÀx‰Àx»ÀxÅÀxÛÀxãÀxäÀy<ÀyÀy²ÀyáÀz@ÀzfÀz“Àz<>ÀzÍÀzÕÀzÖÀ{À{&À{nÀ{®À{ÞÀ|À|1À|yÀ|ÁÀ|ÔÀ|åÀ|ôÀ}À} À}(À}ZÀ}cÀ}iÀ}mÀ}nÀ}’À}¹À}ñÀ~À~À~1À~rÀ~¡À~­À~ÂÀ~ÎÀ~ÔÀ~ØÀ~ÙÀÀÀ<>À¦ÀÎÀÔÀØÀÙÀÀÀ€mÀ€‡À€²À€ÝÀ€ãÀ€çÀ€èÀ<01>À<01><01><01><01>„À<01>¡À<01>ÁÀ<01>÷ÀÀ‚‘À‚«À‚ÝÀ‚äÀ‚ôÀƒKÀƒgÀƒ²ÀƒóÀ„OÀ„ZÀ„bÀ„uÀ„À„€À„©À„ìÀÀÀ…6À…TÀ…UÀ…ŒÀ…¨À…ÚÀ
À†7À†?À†EÀ†FÀ†lÀ†‡À†°À†ÀÀ†ÈÀÀ‡6À‡YÀ‡ZÀ‡tÀ‡©À‡±À‡²À‡ÞÀ‡òÀˆÀˆˆˆˆˆ©ÀˆÚÀˆâÀˆþÀÀÀ‰7À‰FÀ‰cÀ‰~À‰áÀŠ
ÀŠÀŠ,ÀŠ9ÀŠ:ÀŠ[ÀЇÀЦÀŠ¿ÀŠÜÀŠäÀŠêÀŠëÀÀ<>À‹³À‹ÉÀ‹ôÀŒÀŒÀŒMÀŒlÀŒuÀŒ<>ÀŒÉÀŒáÀ<01>À<01><01><01><01><01><01>ŒÀ<01>¼À<01>åÀ<01>ïÀ<01>øÀŽÀŽ2ÀŽZÀŽvÀŽŠÀެÀŽÌÀŽÓÀŽÔÀŽíÀ<01><01><01><01><01><01>À<01>ÁÀ<01>ÛÀ<01>À<01>À<01><01><01><01><01>†À<01>ÇÀ<01>ÍÀÀ‘ÉÀ‘ÜÀ‘âÀ’ À’¦À’ùÀ“?À“ŒÀ“’À“âÀ”0À”dÀ”jÀ”¹ÀÀ•=À•CÀ•“À•äÀ–½ÀÀ—7À—=À— À—²À—¸À˜À˜˜˜’À˜ÎÀ˜ýÀÀ™MÀ™šÀ™ÉÀ™ÏÀšÀš$Àš:Àš†ÀšÌÀšÒÀ›¬À›ÀÀœ ÀœYÀœiÀœºÀ<01>
À<01><01>µÀ<01>ñÀž$ÀžAÀž]ÀžtÀžŒÀž¤ÀžÅÀžÛÀžõÀŸ-ÀŸVÀŸ]ÀŸmÀŸ•ÀŸ±ÀŸüÀ  ™À ¤À ¬À ¿À ÉÀ ÷À øÀ¡À¡CÀ¡mÀ¡ÒÀ¡éÀ¡ûÀ¢*À¢;À¢XÀ¢<>À¢«À¢ÉÀ¢ßÀ£À£%À£EÀ£mÀ£¾À£ÇÀ£ÏÀ£ðÀ£ôÀ£õÀ¤À¤UÀ¤˜À¤ßÀ¥À¥À¥eÀ¥fÀ¥—À¥ÄÀ¦À¦À¦ À¦[À¦®À§À§&À§œÀ§×À¨À¨@À¨hÀ¨<>À¨ÂÀ¨ËÀ©À©NÀ©WÀ©]À©^À©pÀ©°À©ãÀ©ëÀ©ìÀªJÀª§Àª¼À« À«
À«À«?À«@À«ŸÀ«òÀ¬À¬(À¬FÀ¬fÀ¬‚À¬âÀ­­­­ŸÀ­ÂÀ­ËÀ­ÑÀ­ÕÀ­ÖÀ­åÀ­æÀ®À®À®BÀ®vÀ®zÀ®{À®ˆÀ®”À®©À®ÀÀ¯À¯:À¯<>À¯´À°
À°UÀ°”À°§À°¹À°éÀ°ðÀ°ñÀ±6À±bÀ±uÀ±|À±}À±ÊÀ±äÀ²À²À²À² À²-À²9À²fÀ²ŒÀ²ÿÀ³XÀ³~À³ÖÀ³ÜÀ´´´¬À´µÀ´»À´òÀµÀµfÀµ ÀµºÀÀ¶MÀ¶\À¶sÀ¶¬À· À·DÀ·SÀ·aÀ·kÀ·€À·ŒÀ·´À·ØÀ¸¸¸¸‹À¸“À¸™À¸ÌÀ¸æÀ¹À¹6À¹iÀ¹”À¹šÀ¹žÀ¹ŸÀ¹¬À¹¸À¹ÙÀº*ÀºaÀºÂÀ»À»8À»˜À»ÅÀ»ËÀ¼À¼CÀ¼lÀ¼mÀ¼•À¼¸À¼¼À¼½À¼ÉÀ¼ßÀ½À½)À½-À½.À½:À½NÀ½dÀ½~À½¯À½µÀ½¹À½ºÀ½ÇÀ½ÓÀ½æÀ¾À¾:À¾sÀ¾žÀ¾»À¾ÛÀ¿À¿$À¿(À¿)À¿?À¿\À¿oÀ¿…À¿ªÀ¿ÎÀ¿ôÀÀÀÀ?ÀÀkÀÀrÀÀ²ÀÀ×ÀÀúÀÁ!ÀÁJÀÁQÀÁnÀÁ¦ÀÁ¬ÀÁ­ÀÁóÀÂPÀÂVÀÂWÀÂpÀ„À–À­ÀÂäÀÂïÀÂøÀÂþÀÃÀÃÀÃRÀÃvÀÃ’ÀçÀùÀÃÓÀÃñÀÄÀÄOÀÄŒÀÄ»ÀÄðÀÅ8ÀÅhÀÅ­ÀÅÑÀÅÜÀÅýÀÆAÀÆ€ÀÆ¡ÀÆáÀÇÀÇÀÇÀÇÀÇÀÇeÀdžÀÇŸÀÇ´ÀÇÆÀÇàÀÇûÀÈ'ÀÈXÀÈ•ÀÈÄÀÈùÀÉ>ÀÉkÀɰÀÉÑÀÉÜÀÉúÀÊ>ÀÊ}ÀÊžÀÊÞÀËÀË ÀËÀËÀËÀËWÀËvÀËwÀË¢À˨ÀÌÀÌ;ÀÌ^ÀÌrÀÌ’ÀÌœÀÌ¢ÀÌêÀÍ-ÀÍ3ÀÍ7ÀÍ8ÀÍEÀÍQÀÍxÀͦÀÍØÀÎ ÀÎOÀÎPÀÎsÀΆÀΖÀΰÀÎÁÀÎÛÀÏÀÏMÀÏ“ÀÏ¢ÀϼÀÏÜÀÐ ÀÐ,ÀÐGÀПÀÐÓÀÐÚÀÐôÀÑ ÀÑÀÑwÀјÀѹÀÑÙÀÑûÀÒÀÒ'ÀÒ-ÀÒ.ÀÒOÀÒ©ÀÒÂÀÓÀÓaÀÓvÀÓˆÀÓ ÀÓåÀÔÀÔEÀÔhÀÔuÀÔ€ÀÔžÀÔÀÀÔáÀÕÀÕ'ÀÕ0ÀÕ6ÀÕ7ÀÕ[ÀÕvÀÕwÀÕÃÀÕåÀÖÀÖfÀÖoÀÖ„ÀÖ–ÀÖ¥ÀÖÈÀÖêÀ×
À×××××מÀ×ÄÀØ
ÀØ=ÀØ¡ÀØëÀÙ;ÀÙ<ÀÙQÀÙcÀÙˆÀÙ¨ÀÙÊÀÙêÀÚ
ÀÚ*ÀÚ„ÀÚÃÀÚÌÀÚÒÀÚÓÀÛÀÛ2ÀÛ^ÀÛ±ÀÛÐÀÜ'ÀÜ`ÀÜaÀÜvÀ܈ÀܳÀÜÙÀÜûÀÝ,ÀÝOÀÝrÀݱÀݺÀÝÀÀÝÁÀÝóÀÞÀÞÀÞ-ÀÞCÀÞvÀÞ×ÀÞòÀß
Àß.ÀßLÀß~ÀßœÀßÛÀàÀà!ÀàbÀà¡Àà¶ÀàÉÀàÚÀàéÀàöÀáÀá)ÀáKÀákÀáŽÀáÏÀâÀâÀâÀâÀâLÀâaÀâsÀâ—ÀâÂÀâäÀãÀã'ÀãKÀãŠÀã“Àã™ÀãšÀã­Àã½ÀãäÀä#Àä]ÀäŠÀäÐÀäüÀåÀå/ÀåNÀålÀåŒÀå­Àå´ÀåµÀå×ÀæÀæ4ÀæAÀæqÀæžÀæ¤Àæ¥ÀæíÀç$Àç3Àç–Àç—ÀçáÀèÀèjÀèÄÀèÔÀèæÀèíÀèîÀé Àé%ÀéPÀéyÀé’ÀéàÀêÀê>Àê{Àê™ÀêøÀë'ÀëTÀë‡ÀëÒÀëüÀì0Àì‰ÀìÈÀí ÀíbÀí›ÀíýÀî/ÀîkÀî¿ÀîñÀïÀï,Àï?ÀïPÀï_ÀïlÀïwÀï€Àï‡Àï‹Àï<>ÀïŽÀïÁÀïçÀïèÀðÀðÀðÀð<ÀðuÀð·ÀðäÀðèÀðéÀðõÀñÀñTÀñqÀñ<>Àñ°Àñ¶ÀñºÀñ¼Àñ½ÀñùÀñýÀòAÀòfÀò<>ÀòüÀóÀó0Àó1Àó‚Àó¯Àó°ÀôÀô,Àô-Àô}ÀôœÀôžÀôŸÀôÓÀôòÀõÀõ(ÀõDÀõ]ÀõzÀõ™Àõ´ÀõÓÀõíÀöÀöÀö(Àö>ÀöRÀöXÀöYÀöuÀöÍÀöæÀ÷À÷%À÷HÀ÷iÀ÷ˆÀ÷£À÷ÃÀ÷ÞÀ÷úÀøÀø;Àø<ÀøHÀø’Àø”Àø•ÀøÛÀù!Àù"Àù.ÀùCÀùZÀù—ÀùÞÀùâÀùãÀùïÀúÀúLÀújÀúÀúƒÀú„Àú<>ÀúÉÀúïÀû8Àû<Àû=ÀûNÀûxÀû–ÀûšÀû›ÀûÏÀüÀü8Àü<Àü=Àü€ÀüÍÀý0Àý4Àý5ÀýjÀýˆÀýªÀý°Àý´ÀýµÀýúÀþ8ÀþqÀþ¯ÀþðÀÿ3Àÿ4Àÿ•ÀÿÎÀÿÛÀžÀ×ÀÀ”À°ÀÝÀÀ²ÀÊÀÕÀÞÀöÀÀ<03>À¶ÀÔÀÀšÀÁÀëÀÀ<05>À¾ÀëÀøÀÀ ÀÀÀÀÀ©À­ÀøÀÀÀëÀýÀÀ—À™ÀšÀÉÀâÀÿÀ <09>À ‘À <09>À ÓÀ
À
À
<01>w/// @docImport 'package:flutter/services.dart';
///
/// @docImport 'app.dart';
/// @docImport 'bottom_app_bar.dart';
/// @docImport 'bottom_navigation_bar.dart';
/// @docImport 'bottom_sheet_theme.dart';
/// @docImport 'drawer_theme.dart';
/// @docImport 'icon_button.dart';
/// @docImport 'tab_controller.dart';
/// @docImport 'tabs.dart';
/// @docImport 'text_button.dart';'<Vlr‚…‚¯‚Ö‚ì‚-ƒCƒ_ƒ{ƒ‘ƒ§ƒ¼ƒÓƒé „1„`„x„‘„°<01>j<01>{<00>}<7D>} <01>ƒ<00>ˆ<EFBFBD>ˆ<01><00><18>€†I/// Creates a widget that manages [SnackBar]s for [Scaffold] descendants.<00><16>¢y<01>`/// The widget below this widget in the tree.
///
/// {@macro flutter.widgets.ProxyWidget.child}<00> <20> ‡å †…/// The state from the closest instance of this class that encloses the given
/// context.
///
/// {@tool dartpad}
/// Typical usage of the [ScaffoldMessenger.of] function is to call it in
/// response to a user gesture or an application state change.
///
/// ** See code in examples/api/lib/material/scaffold/scaffold_messenger.of.0.dart **
/// {@end-tool}
///
/// A less elegant but more expedient solution is to assign a [GlobalKey] to the
/// [ScaffoldMessenger], then use the `key.currentState` property to obtain the
/// [ScaffoldMessengerState] rather than using the [ScaffoldMessenger.of]
/// function. The [MaterialApp.scaffoldMessengerKey] refers to the root
/// ScaffoldMessenger that is provided by default.
///
/// {@tool dartpad}
/// Sometimes [SnackBar]s are produced by code that doesn't have ready access
/// to a valid [BuildContext]. One such example of this is when you show a
/// SnackBar from a method outside of the `build` function. In these
/// cases, you can assign a [GlobalKey] to the [ScaffoldMessenger]. This
/// example shows a key being used to obtain the [ScaffoldMessengerState]
/// provided by the [MaterialApp].
///
/// ** See code in examples/api/lib/material/scaffold/scaffold_messenger.of.1.dart **
/// {@end-tool}
///
/// If there is no [ScaffoldMessenger] in scope, then this will assert in
/// debug mode, and throw an exception in release mode.
///
/// See also:
///
/// * [maybeOf], which is a similar function but will return null instead of
/// throwing if there is no [ScaffoldMessenger] ancestor.
/// * [debugCheckHasScaffoldMessenger], which asserts that the given context
/// has a [ScaffoldMessenger] ancestor.™¤™¤™±˜ ˜ \™œ<E284A2>a/// The state from the closest instance of this class that encloses the given
/// context, if any.
///
/// Will return null if a [ScaffoldMessenger] is not found in the given context.
///
/// See also:
///
/// * [of], which is a similar function, except that it will throw an
/// exception if a [ScaffoldMessenger] is not found in the given context.šišjšišiMšŒˆmˆmKŽë†w/// Manages [SnackBar]s and [MaterialBanner]s for descendant [Scaffold]s.
///
/// {@youtube 560 315 https://www.youtube.com/watch?v=lytQi-slT5Y}
///
/// This class provides APIs for showing snack bars and material banners at the
/// bottom and top of the screen, respectively.
///
/// To display one of these notifications, obtain the [ScaffoldMessengerState]
/// for the current [BuildContext] via [ScaffoldMessenger.of] and use the
/// [ScaffoldMessengerState.showSnackBar] or the
/// [ScaffoldMessengerState.showMaterialBanner] functions.
///
/// When the [ScaffoldMessenger] has nested [Scaffold] descendants, the
/// ScaffoldMessenger will only present the notification to the root Scaffold of
/// the subtree of Scaffolds. In order to show notifications for the inner, nested
/// Scaffolds, set a new scope by instantiating a new ScaffoldMessenger in
/// between the levels of nesting.
///
/// {@tool dartpad}
/// Here is an example of showing a [SnackBar] when the user presses a button.
///
/// ** See code in examples/api/lib/material/scaffold/scaffold_messenger.0.dart **
/// {@end-tool}
///
/// See also:
///
/// * [SnackBar], which is a temporary notification typically shown near the
/// bottom of the app using the [ScaffoldMessengerState.showSnackBar] method.
/// * [MaterialBanner], which is a temporary notification typically shown at the
/// top of the app using the [ScaffoldMessengerState.showMaterialBanner] method.
/// * [debugCheckHasScaffoldMessenger], which asserts that the given context
/// has a [ScaffoldMessenger] ancestor.
/// * Cookbook: [Display a SnackBar](https://docs.flutter.dev/cookbook/design/snackbars)œæœó<C593>œô<C593><02>œÙœ¶NœÙ
<EFBFBD>p<EFBFBD>u<EFBFBD>»<EFBFBD>v<EFBFBD><EFBFBD><EFBFBD>º<EFBFBD><EFBFBD><EFBFBD> <EFBFBD>¼<EFBFBD>½<EFBFBD>]<5D>€¶<01>]<00>×<EFBFBD>Â.<01>×
žNžSž<EFBFBD>žTžmžŒžnžxžŽž<EFBFBD>ž;<3B>ô€œž;ž©ž”(ž©žÇžÀžÇžãžÙžãžýžþŸ
Ÿ žýžý€¦ŸŸ¶Ÿ¶ŸÄŸ§Ÿ§<C5B8>Ÿ¬ Õ Õ ã Ä Ä€¬ É¡t¡t€Ï¡y¢ì¢ì¢ú¢ß¢ß€Â¢ä°J°J°S°c°c&°s£¸£¸—ÿ°8Ã/// Shows a [SnackBar] across all registered [Scaffold]s. Scaffolds register
/// to receive snack bars from their closest [ScaffoldMessenger] ancestor.
/// If there are several registered scaffolds the snack bar is shown
/// simultaneously on all of them.
///
/// A scaffold can show at most one snack bar at a time. If this function is
/// called while another snack bar is already visible, the given snack bar
/// will be added to a queue and displayed after the earlier snack bars have
/// closed.
///
/// To control how long a [SnackBar] remains visible, use [SnackBar.duration].
///
/// To remove the [SnackBar] with an exit animation, use [hideCurrentSnackBar]
/// or call [ScaffoldFeatureController.close] on the returned
/// [ScaffoldFeatureController]. To remove a [SnackBar] suddenly (without an
/// animation), use [removeCurrentSnackBar].
///
/// See [ScaffoldMessenger.of] for information about how to obtain the
/// [ScaffoldMessengerState].
///
/// {@tool dartpad}
/// Here is an example of showing a [SnackBar] when the user presses a button.
///
/// ** See code in examples/api/lib/material/scaffold/scaffold_messenger_state.show_snack_bar.0.dart **
/// {@end-tool}
///
/// ## Relative positioning of floating SnackBars
///
/// A [SnackBar] with [SnackBar.behavior] set to [SnackBarBehavior.floating] is
/// positioned above the widgets provided to [Scaffold.floatingActionButton],
/// [Scaffold.persistentFooterButtons], and [Scaffold.bottomNavigationBar].
/// If some or all of these widgets take up enough space such that the SnackBar
/// would not be visible when positioned above them, an error will be thrown.
/// In this case, consider constraining the size of these widgets to allow room for
/// the SnackBar to be visible.
///
/// {@tool dartpad}
/// Here is an example showing how to display a [SnackBar] with [showSnackBar]
///
/// ** See code in examples/api/lib/material/scaffold/scaffold_messenger_state.show_snack_bar.0.dart **
/// {@end-tool}
///
/// {@tool dartpad}
/// Here is an example showing that a floating [SnackBar] appears above [Scaffold.floatingActionButton].
///
/// ** See code in examples/api/lib/material/scaffold/scaffold_messenger_state.show_snack_bar.1.dart **
/// {@end-tool}
///
/// If [AnimationStyle.duration] is provided in the [snackBarAnimationStyle]
/// parameter, it will be used to override the snackbar show animation duration.
/// Otherwise, defaults to 250ms.
///
/// If [AnimationStyle.reverseDuration] is provided in the [snackBarAnimationStyle]
/// parameter, it will be used to override the snackbar hide animation duration.
/// Otherwise, defaults to 250ms.
///
/// To disable the snackbar animation, use [AnimationStyle.noAnimation].
///
/// {@tool dartpad}
/// This sample showcases how to override [SnackBar] show and hide animation
/// duration using [AnimationStyle] in [ScaffoldMessengerState.showSnackBar].
///
/// ** See code in examples/api/lib/material/scaffold/scaffold_messenger_state.show_snack_bar.2.dart **
/// {@end-tool}
///»Ù»Ù&»é»»»»<C2BB>y»À½Z½Z½j½8½8½=À@óÀ@ó9ÀAÀAÀA%ÀA&¿Õ¿Õ‚ÇÀ@Ü€÷/// Removes the current [SnackBar] (if any) immediately from registered
/// [Scaffold]s.
///
/// The removed snack bar does not run its normal exit animation. If there are
/// any queued snack bars, they begin their entrance animation immediately.ÀCQÀCQ7ÀCfÀCoÀCƒÀC„ÀB ÀB ƒÀC<€<>/// Removes the current [SnackBar] by running its normal exit animation.
///
/// The closed completer is called after the animation is complete.ÀE¬À<45>ÃÀF;€…/// Removes all the snackBars currently in queue by clearing the queue
/// and running normal exit animation on the current snackBar.ÀL³ÀÀÀG<>ÀG<>ŠpÀL„™/// Shows a [MaterialBanner] across all registered [Scaffold]s. Scaffolds register
/// to receive material banners from their closest [ScaffoldMessenger] ancestor.
/// If there are several registered scaffolds the material banner is shown
/// simultaneously on all of them.
///
/// A scaffold can show at most one material banner at a time. If this function is
/// called while another material banner is already visible, the given material banner
/// will be added to a queue and displayed after the earlier material banners have
/// closed.
///
/// To remove the [MaterialBanner] with an exit animation, use [hideCurrentMaterialBanner]
/// or call [ScaffoldFeatureController.close] on the returned
/// [ScaffoldFeatureController]. To remove a [MaterialBanner] suddenly (without an
/// animation), use [removeCurrentMaterialBanner].
///
/// See [ScaffoldMessenger.of] for information about how to obtain the
/// [ScaffoldMessengerState].
///
/// {@tool dartpad}
/// Here is an example of showing a [MaterialBanner] when the user presses a button.
///
/// ** See code in examples/api/lib/material/scaffold/scaffold_messenger_state.show_material_banner.0.dart **
/// {@end-tool}ÀR)ÀR)ÀR9ÀRÀRÀRÀUZÀUZEÀUuÀU~ÀU˜ÀU™ÀTÀT‚ÔÀU8<55> /// Removes the current [MaterialBanner] (if any) immediately from registered
/// [Scaffold]s.
///
/// The removed material banner does not run its normal exit animation. If there are
/// any queued material banners, they begin their entrance animation immediately.ÀW¹ÀW¹CÀÀWÝÀW÷ÀWøÀV÷ÀV÷ƒÀW™€/// Removes the current [MaterialBanner] by running its normal exit animation.
///
/// The closed completer is called after the animation is complete.ÀZÀZÀZ®€•/// Removes all the [MaterialBanner]s currently in queue by clearing the queue
/// and running normal exit animation on the current [MaterialBanner].À\JÀ\JÀ\WÀ\$À\%À\1À\2À\$À\$ƒšÀ\DÀ_ÂÀ_ÃÀ_ÏÀ_ÐÀ_ÂÀ_€ÉÀšºšºÀœ\<5C>/// State for a [ScaffoldMessenger].
///
/// A [ScaffoldMessengerState] object can be used to [showSnackBar] or
/// [showMaterialBanner] for every registered [Scaffold] that is a descendant of
/// the associated [ScaffoldMessenger]. Scaffolds will register to receive
/// [SnackBar]s and [MaterialBanner]s from their closest ScaffoldMessenger
/// ancestor.
///
/// Typically obtained via [ScaffoldMessenger.of].ÀÀÀ`íÀÀÀaÀa6Àa'Àa^ÀaFÀa`À`ÉÀ`É€®Àa˜Àa{4Àa˜ÀaØÀÀÀa´ÀaµÀa´Àa´<C2B4>ÀÀ`<60>À`<60><>¨À`•ÀÀ
ÀdÖÀÀÀdùÀÀeÀeÀeÀe(Àe8Àe8&ÀeFÀedÀedÀerÀe<>Àe<>Àe<>Àe£ÀÀÀeÃÀÀÀeãÀÀÀf Àf ÀfÀdÀd€”/// Abstract const constructor. This constructor enables subclasses to provide
/// const constructors so that they can be used in const expressions.
ÀfÁÀf/€ªÀfÁ€€/// The [Size] of [Scaffold.floatingActionButton].
///
/// If [Scaffold.floatingActionButton] is null, this will be [Size.zero].Àg…ÀfÞ€¶Àg…€“/// The [Size] of the [Scaffold]'s [BottomSheet].
///
/// If the [Scaffold] is not currently showing a [BottomSheet],
/// this will be [Size.zero].Àj Àg™Àj M/// The vertical distance from the Scaffold's origin to the bottom of
/// [Scaffold.body].
///
/// This is useful in a [FloatingActionButtonLocation] designed to
/// place the [FloatingActionButton] at the bottom of the screen, while
/// keeping it above the [BottomSheet], the [Scaffold.bottomNavigationBar],
/// or the keyboard.
///
/// The [Scaffold.body] is laid out with respect to [minInsets] already. This
/// means that a [FloatingActionButtonLocation] does not need to factor in
/// [EdgeInsets.bottom] of [minInsets] when aligning a [FloatingActionButton]
/// to [contentBottom].ÀlPÀj<ÀlP/// The vertical distance from the [Scaffold]'s origin to the top of
/// [Scaffold.body].
///
/// This is useful in a [FloatingActionButtonLocation] designed to
/// place the [FloatingActionButton] at the top of the screen, while
/// keeping it below the [Scaffold.appBar].
///
/// The [Scaffold.body] is laid out with respect to [minInsets] already. This
/// means that a [FloatingActionButtonLocation] does not need to factor in
/// [EdgeInsets.top] of [minInsets] when aligning a [FloatingActionButton] to
/// [contentTop].Àn?Àl_<6C>éÀn?<3F>º/// The minimum padding to inset the [FloatingActionButton] by for it
/// to remain visible.
///
/// This value is the result of calling [MediaQueryData.padding] in the
/// [Scaffold]'s [BuildContext],
/// and is useful for insetting the [FloatingActionButton] to avoid features like
/// the system status bar or the keyboard.
///
/// If [Scaffold.resizeToAvoidBottomInset] is set to false,
/// [EdgeInsets.bottom] of [minInsets] will be 0.0.Àp&ÀnM<6E>çÀp&<26>·/// The minimum padding to inset interactive elements to be within a safe,
/// un-obscured space.
///
/// This value reflects the [MediaQueryData.viewPadding] of the [Scaffold]'s
/// [BuildContext] when [Scaffold.resizeToAvoidBottomInset] is false or and
/// the [MediaQueryData.viewInsets] > 0.0. This helps distinguish between
/// different types of obstructions on the screen, such as software keyboards
/// and physical device notches.ÀrÖÀp9©Àw/// The [Size] of the whole [Scaffold].
///
/// If the [Size] of the [Scaffold]'s contents is modified by values such as
/// [Scaffold.resizeToAvoidBottomInset] or the keyboard opening, then the
/// [scaffoldSize] will not reflect those changes.
///
/// This means that [FloatingActionButtonLocation]s designed to reposition
/// the [FloatingActionButton] based on events such as the keyboard popping
/// up should use [minInsets] to make sure that the [FloatingActionButton] is
/// inset by enough to remain visible.
///
/// See [minInsets] and [MediaQueryData.padding] for more information on the
/// appropriate insets to apply.ÀsxÀrç€<C3A7>Àsx/// The [Size] of the [Scaffold]'s [SnackBar].
///
/// If the [Scaffold] is not showing a [SnackBar], this will be [Size.zero].Àt&Às‰€¯Àt&€‹/// The [Size] of the [Scaffold]'s [MaterialBanner].
///
/// If the [Scaffold] is not showing a [MaterialBanner], this will be [Size.zero].Àt<>Àt=_Àt<>;/// The [TextDirection] of the [Scaffold]'s [BuildContext].ÀcèÀcéÀb9Àb9fÀ<63>®/// The geometry of the [Scaffold] after all its contents have been laid out
/// except the [FloatingActionButton].
///
/// The [Scaffold] passes this pre-layout geometry to its
/// [FloatingActionButtonLocation], which produces an [Offset] that the
/// [Scaffold] uses to position the [FloatingActionButton].
///
/// For a description of the [Scaffold]'s geometry after it has
/// finished laying out, see the [ScaffoldGeometry].ÀÀvÀvÀv
ÀvÀv%Àv%Àv*Àv/Àv/
Àv4Àv>Àv>
ÀvCÀuôÀuôYÀvtÀvQ(ÀvtÀv Àv}&Àv ÀvÊÀv§+ÀÀvãÀÀÀw
Àw
*Àw'ÀvðÀvñÀvðÀvð€êÀwÀwÞÀwßÀwÞÀwÞ€<C39E>ÀÀuÀuœÀt¡Àt¡ƒÜÀu¬€ù/// A snapshot of a transition between two [FloatingActionButtonLocation]s.
///
/// [ScaffoldState] uses this to seamlessly change transition animations
/// when a running [FloatingActionButtonLocation] transition is interrupted by a new transition.À{™ÀÀ{«ÀÀÀ{ÈÀÀÀ{OÀ{O€™A/// Create an object that describes the geometry of a [Scaffold].À|ÌÀ{ì€öÀ|Ì€É/// The distance from the [Scaffold]'s top edge to the top edge of the
/// rectangle in which the [Scaffold.bottomNavigationBar] bar is laid out.
///
/// Null if [Scaffold.bottomNavigationBar] is null.À}}À|瀮À}}€ƒ/// The [Scaffold.floatingActionButton]'s bounding rectangle.
///
/// This is null when there is no floating action button showing.À}ÆÀÀÀ}šÀ<>ÆÀÀíÀÀÀ
À
ÀÀd<7F>£Àãi/// Creates a copy of this [ScaffoldGeometry] but with the given fields replaced with
/// the new values.À{)À{*ÀxÀxˆŠÀ{:‚©/// Geometry information for [Scaffold] components after layout is finished.
///
/// To get a [ValueNotifier] for the scaffold geometry of a given
/// [BuildContext], use [Scaffold.geometryOf].
///
/// The ScaffoldGeometry is only available during the paint phase, because
/// its value is computed during the animation and layout phases prior to painting.
///
/// For an example of using the [ScaffoldGeometry], see the [BottomAppBar],
/// which uses the [ScaffoldGeometry] to paint a notch around the
/// [FloatingActionButton].
///
/// For information about the [Scaffold]'s geometry that is used while laying
/// out the [FloatingActionButton], see [ScaffoldPrelayoutGeometry].À<00>wÀ<00><>À<00>À<00>
À<00>À<00> À<00>  À<00>¥À<00><00>w7À<00>ÅÀ<00>²À<00>ÅÀ<00>ØÀ<00>Ð!À<00>ØÀÀ<00>õÀÀÀÀÀgÀ4À„•À„•À<>À„¹À„¹À„¿À„ÝÀ„Ý!À„åÀ„~À„~<7E>žÀ„ƒÀ<00> À<00> À<00>Àˆ¨Àˆ»ÀˆÂÀˆÂÀˆÈÀˆÖÀˆÖÀˆÜÀˆëÀˆë!ÀˆùÀÀÀÀ‰2À‰2"À‰@À‰]À‰cÀ‰|À‰xÀ‰dÀ‰{À‰†À‰ŒÀ‰žÀ‰šÀ<>À<>À‰¨À‰®À‰ÈÀ‰ÄÀ‰¯À‰ÇÀˆ¢Àˆ¢<CB86>(À‰ÛÀ‰Î À‰ÛÀ‰ÿÀ‰òÀ‰ÿÀŠÀŠ!ÀŠÀŒ¬ÀŒ­ÀŒ¬ÀŒ¬{ÀŒÀÀ<>À<> À‹—Às<E280B9>5À<>Àˆˆm„¼ÀˆsÀŽÇÀŽÓÀŽÚÀŽÚÀŽèÀŽøÀŽø$À<00>À<00><00>"À<00>0ÀŽÁÀŽÁzÀ<00><00>?À<00>LÀ<00><00>TÀ<00>_À<00><00>m!À<00>xÀ<00>¬À<00>¬À<00>¹À<00>“À<00>”À<00>“À<00>“ƒÃÀ<00>¦ÀŽ’ÀŽ’„ÆÀŽ˜À“•À“¤
À“«À“«À“¹À“ÈÀ“ÈÀ“ÖÀ“êÀ“êÀ“øÀ À ÀÀ”QÀ”Q2À”_À”‰À”‰1À”—À”ÀÀ”À7À”ÎÀ”ýÀ”ý0À À•3À•3 À•AÀ•YÀ•YÀ•gÀ•zÀ•zÀ•ˆÀ•˜À•˜$À•¦À•ÂÀ•Â,À•ÐÀ“•À“•‚`
ÀÀ•ùÀÀÀ!ÀÀ7ÀHÀUÀfÀ–ŒÀx!À–ŒÀ–½À<>0À–½À–õÀÒGÀ–õÀ—@ÀFÀ—@À—tÀ—g6À—tÀ—ÄÀ—¡EÀ—ÄÀ—öÀ—ëÀ—öÀ˜À˜ À˜À˜˜,)À˜7À˜˜y À˜~À˜˜˜˜Z­)À˜kÀŧÀŧÀÅ·ÀŇÀňÀŇÀŇ‚—ÀŘÀ“ZÀ“Z´ÆÀ“`ÀÊÀÊÀÊ&ÀÊ&ÀÊ4ÀÊ?ÀÊ?ÀÊMÀÊcÀÊcÀÊqÀʈÀʈÀÊ–ÀʬÀʬÀʺÀÉúÀÉú€ØÀÊäÀÊÖÀÊäÀËÀÊí(ÀËÀË<ÀË4ÀË<ÀËqÀËQ0ÀËqÀËÛÀˆfÀËÛ8/// Controls the current child widget.child as it exits.ÀËñÀËòÀËñÀËñiÀÌ"ÀÈ"ÀÈ"„:ÀÉ¿<C389>/// Handler for scale and rotation animations in the [FloatingActionButton].
///
/// Currently, there are two types of [FloatingActionButton] animations:
///
/// * Entrance/Exit animations, which this widget triggers
/// when the [FloatingActionButton] is added, updated, or removed.
/// * Motion animations, which are triggered by the [Scaffold]
/// when its [FloatingActionButtonLocation] is updated. À͆ÀÍm,À͆ÀÍ®ÀÍ<>,ÀÍ®ÀÍÞÀÍÍ5ÀÍÞÀÎÀÎ/ÀÎÀÎPÀÎ9.ÀÎPÀΆÀÎk5ÀΆÀÏ4ÀÏ-ÀÏ4ÀÏeÀÏN5ÀÏeÀÏ¢Àχ4ÀÏ¢ÀÏÇÀÏ¿ÀÏÇÀÚÀÚÀÚ"ÀÚÀÚ#ÀÚiÀÚ.ÀÚ)ÀÚ4ÀÚ0ÀÚ6ÀÚ`ÀÚ]ÀÚbÀÚjÀÚkÀÚpÀÚ‘ÀÚqÀÚ{ÀÚ<>ÀÚ<>ÀÚ|ÀÚƒÀÚ‰ÀÚŠÀÚÀÙေÀÚ
ÀÏÚÀÏÛÀÏÚÀÏÚƒCÀÏëÀÓ!ÀÓ"ÀÓ!ÀÓ!<21>ÀÓ2ÀÔHÀÔH)ÀÔhÀÔ'ÀÔ(ÀÔ'ÀÔ'…¶ÀÔ8ÀÚ—ÀÚ—rÀÚœÀÛ
ÀÛ
‰{ÀÛÀä·Àä·ÀäÇÀäŒÀäŒ<C3A4>Àä‘Àå¹Àå¹ÀåÁÀå”Àå”zÀå™Àæ+Àæ+Àæ8ÀæÀæÀæÀæƒÑÀæ%ÀéçÀé瀀ÀéìÀê…Àê… ÀêŒÀêkÀêkxÀêpÀÌ^ÀÌ^ž‡ÀÌdÀ²ÀºÀÁÀÁ ÀÇÀÐÀÐ ÀÕÀáÀá ÀæÀðÀðÀõÀÀ!ÀÀ6!À;À]ÀbÀ?ÀÀÄÀÄÀÉÀéÀé ÀîÀúÀúÀÿÀÀÀÀ(À-ÀEÀJÀcÀhÀyÀ~À“ÀÀ˜À¶ÀÀ»ÀÏÀÏ6ÀÔÀ À ÀÀ($À-ÀR#ÀWÀ{ÀÀ–À>ÀÀÚÀÚÀßÀøÀø'ÀýÀ %*À *À UÀ Z
À À´ÀµÀÅÀîÀÿÀÀÀµÀ Àoƒÿ:/// Creates a visual scaffold for Material Design widgets.À
À rƒ®À
ƒt/// If true, and [bottomNavigationBar] or [persistentFooterButtons]
/// is specified, then the [body] extends to the bottom of the Scaffold,
/// instead of only extending to the top of the [bottomNavigationBar]
/// or the [persistentFooterButtons].
///
/// If true, a [MediaQuery] widget whose bottom padding matches the height
/// of the [bottomNavigationBar] will be added above the scaffold's [body].
///
/// This property is often useful when the [bottomNavigationBar] has
/// a non-rectangular shape, like [CircularNotchedRectangle], which
/// adds a [FloatingActionButton] sized notch to the top edge of the bar.
/// In this case specifying `extendBody: true` ensures that scaffold's
/// body will be visible through the bottom navigation bar's notch.
///
/// See also:
///
/// * [extendBodyBehindAppBar], which extends the height of the body
/// to the top of the scaffold.À
%<25>cÀp<>3/// Whether the drawer can be dismissed by tapping on the barrier.
///
/// If false, and a [drawer] is specified, then the barrier behind the drawer
/// will not respond to a tap event and thus remains open.
///
/// Defaults to true, in which case the drawer will close upon the user tapping on the barrier.À<0E><>ýÀt<>Á/// If true, and an [appBar] is specified, then the height of the [body] is
/// extended to include the height of the app bar and the top of the body
/// is aligned with the top of the app bar.
///
/// This is useful if the app bar's [AppBar.backgroundColor] is not
/// completely opaque.
///
/// This property is false by default.
///
/// See also:
///
/// * [extendBody], which extends the height of the body to the bottom
/// of the scaffold.ÀâÀ<10>YÀâ5/// An app bar to display at the top of the scaffold.ÀÀí„Àƒç/// The primary content of the scaffold.
///
/// Displayed below the [appBar], above the bottom of the ambient
/// [MediaQuery]'s [MediaQueryData.viewInsets], and behind the
/// [floatingActionButton] and [drawer]. If [resizeToAvoidBottomInset] is
/// false then the body is not resized when the onscreen keyboard appears,
/// i.e. it is not inset by `viewInsets.bottom`.
///
/// The widget in the body of the scaffold is positioned at the top-left of
/// the available space between the app bar and the bottom of the scaffold. To
/// center this widget instead, consider putting it in a [Center] widget and
/// having that be the body. To expand this widget instead, consider
/// putting it in a [SizedBox.expand].
///
/// If you have a column of widgets that should normally fit on the screen,
/// but may overflow and would in such cases need to scroll, consider using a
/// [ListView] as the body of the scaffold. This is also a good choice for
/// the case where your body is a scrollable list.ÀšÀ€žÀšu/// A button displayed floating above [body], in the bottom right corner.
///
/// Typically a [FloatingActionButton].À–À³€ÿÀ–€¸/// Responsible for determining where the [floatingActionButton] should go.
///
/// If null, the [ScaffoldState] will use the default location, [FloatingActionButtonLocation.endFloat].À¦À·<> À¦€Ä/// Animator to move the [floatingActionButton] to a new [floatingActionButtonLocation].
///
/// If null, the [ScaffoldState] will use the default animator, [FloatingActionButtonAnimator.scaling].ÀÇ<>¾Àn<>€/// A set of buttons that are displayed at the bottom of the scaffold.
///
/// Typically this is a list of [TextButton] widgets. These buttons are
/// persistently visible, even if the [body] of the scaffold scrolls.
///
/// These widgets will be wrapped in an [OverflowBar].
///
/// The [persistentFooterButtons] are rendered above the
/// [bottomNavigationBar] but below the [body].ÀŠ€½À.€‚/// The alignment of the [persistentFooterButtons] inside the [OverflowBar].
///
/// Defaults to [AlignmentDirectional.centerEnd].ÀòÀL<>ÀÀò<>~/// Decoration for the container that holds the [persistentFooterButtons].
///
/// By default, this container has a top border with a width of 1.0, created by
/// [Divider.createBorderSide].
///
/// See also:
///
/// * [persistentFooterButtons], which defines the buttons to show in the footer.
/// * [persistentFooterAlignment], which defines the alignment of the footer buttons.Àƒ'À2ì/// A panel displayed to the side of the [body], often hidden on mobile
/// devices. Swipes in from either left-to-right ([TextDirection.ltr]) or
/// right-to-left ([TextDirection.rtl])
///
/// Typically a [Drawer].
///
/// To open the drawer, use the [ScaffoldState.openDrawer] function.
///
/// To close the drawer, use either [ScaffoldState.closeDrawer], [Navigator.pop]
/// or press the escape key on the keyboard.
///
/// {@tool dartpad}
/// To disable the drawer edge swipe on mobile, set the
/// [Scaffold.drawerEnableOpenDragGesture] to false. Then, use
/// [ScaffoldState.openDrawer] to open the drawer and [Navigator.pop] to close
/// it.
///
/// ** See code in examples/api/lib/material/scaffold/scaffold.drawer.0.dart **
/// {@end-tool}ÀªÀ=|ÀªT/// Optional callback that is called when the [Scaffold.drawer] is opened or closed.À"ÞÀ¾ƒ)À"Þ‚ë/// A panel displayed to the side of the [body], often hidden on mobile
/// devices. Swipes in from right-to-left ([TextDirection.ltr]) or
/// left-to-right ([TextDirection.rtl])
///
/// Typically a [Drawer].
///
/// To open the drawer, use the [ScaffoldState.openEndDrawer] function.
///
/// To close the drawer, use either [ScaffoldState.closeEndDrawer], [Navigator.pop]
/// or press the escape key on the keyboard.
///
/// {@tool dartpad}
/// To disable the drawer edge swipe, set the
/// [Scaffold.endDrawerEnableOpenDragGesture] to false. Then, use
/// [ScaffoldState.openEndDrawer] to open the drawer and [Navigator.pop] to
/// close it.
///
/// ** See code in examples/api/lib/material/scaffold/scaffold.end_drawer.0.dart **
/// {@end-tool}À#\À"쀂À#\W/// Optional callback that is called when the [Scaffold.endDrawer] is opened or closed.À$eÀ#s<>À$e€Ü/// The color to use for the scrim that obscures primary content while a drawer is open.
///
/// If this is null, then [DrawerThemeData.scrimColor] is used. If that
/// is also null, then it defaults to [Colors.black54].À'bÀ$zÿÀ'b™/// A builder for the widget that obscures primary content while a bottom sheet is open.
///
/// The builder receives the current [BuildContext] and an [Animation] as parameters.
/// The [Animation] ranges from 0.0 to 1.0 based on how much the bottom sheet covers the screen.
/// A value of 0.0 represents when the bottom sheet covers 70% of the screen,
/// and 1.0 represents when the bottom sheet fully covers the screen.
///
/// If this is null, then a non-dismissable [ModalBarrier] with [Colors.black] is used. The
/// barrier is animated to fade in and out as the bottom sheet is opened and closed.
///
/// If the builder returns null, then no scrim is shown.À( À'~€±À( €Ž/// The color of the [Material] widget that underlies the entire Scaffold.
///
/// The theme's [ThemeData.scaffoldBackgroundColor] by default.À)kÀ(4<>JÀ)k<>/// A bottom navigation bar to display at the bottom of the scaffold.
///
/// Snack bars slide from underneath the bottom navigation bar while bottom
/// sheets are stacked on top.
///
/// The [bottomNavigationBar] is rendered below the [persistentFooterButtons]
/// and the [body].À/ªÀ)ƒ†2À/ª…Ú/// The persistent bottom sheet to display.
///
/// A persistent bottom sheet shows information that supplements the primary
/// content of the app. A persistent bottom sheet remains visible even when
/// the user interacts with other parts of the app.
///
/// A closely related widget is a modal bottom sheet, which is an alternative
/// to a menu or a dialog and prevents the user from interacting with the rest
/// of the app. Modal bottom sheets can be created and displayed with the
/// [showModalBottomSheet] function.
///
/// Unlike the persistent bottom sheet displayed by [showBottomSheet]
/// this bottom sheet is not a [LocalHistoryEntry] and cannot be dismissed
/// with the scaffold appbar's back button.
///
/// If a persistent bottom sheet created with [showBottomSheet] is already
/// visible, it must be closed before building the Scaffold with a new
/// [bottomSheet].
///
/// The value of [bottomSheet] can be any widget at all. It's unlikely to
/// actually be a [BottomSheet], which is used by the implementations of
/// [showBottomSheet] and [showModalBottomSheet]. Typically it's a widget
/// that includes [Material].
///
/// See also:
///
/// * [showBottomSheet], which displays a bottom sheet as a route that can
/// be dismissed with the scaffold's back button.
/// * [showModalBottomSheet], which displays a modal bottom sheet.
/// * [BottomSheetThemeData], which can be used to customize the default
/// bottom sheet property values when using a [BottomSheet].À1³À/º‚À<31>Ú/// If true the [body] and the scaffold's floating widgets should size
/// themselves to avoid the onscreen keyboard whose height is defined by the
/// ambient [MediaQuery]'s [MediaQueryData.viewInsets] `bottom` property.
///
/// For example, if there is an onscreen keyboard displayed above the
/// scaffold, the body can be resized to avoid overlapping the keyboard, which
/// prevents widgets inside the body from being obscured by the keyboard.
///
/// Defaults to true.À3§À<31>ÞÀ<33>·/// Whether this scaffold is being displayed at the top of the screen.
///
/// If true then the height of the [appBar] will be extended by the height
/// of the screen's status bar, i.e. the top padding for [MediaQuery].
///
/// If true, on iOS and macOS, tapping the status bar scrolls the app's
/// [PrimaryScrollController] to the top.
///
/// The default value of this property, like the default value of
/// [AppBar.primary], is true.À4À3³rÀ4@/// {@macro flutter.material.DrawerController.dragStartBehavior}À6À4*À6<1B>Ð/// The width of the area within which a horizontal swipe will open the
/// drawer.
///
/// By default, the value used is 20.0 added to the padding edge of
/// `MediaQuery.paddingOf(context)` that corresponds to the surrounding
/// [TextDirection]. This ensures that the drag area for notched devices is
/// not obscured. For example, if `TextDirection.of(context)` is set to
/// [TextDirection.ltr], 20.0 will be added to
/// `MediaQuery.paddingOf(context).left`.À7À63<36>À7€Î/// Determines if the [Scaffold.drawer] can be opened with a drag
/// gesture on mobile.
///
/// On desktop platforms, the drawer is not draggable.
///
/// By default, the drag gesture is enabled on mobile.À8À79<37>À8€Ì/// Determines if the [Scaffold.endDrawer] can be opened with a
/// gesture on mobile.
///
/// On desktop platforms, the drawer is not draggable.
///
/// By default, the drag gesture is enabled on mobile.À:7À8@À:7<>Ð/// Restoration ID to save and restore the state of the [Scaffold].
///
/// If it is non-null, the scaffold will persist and restore whether the
/// [drawer] and [endDrawer] was open or closed.
///
/// The state of this widget 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.ÀA¹ÀÀÀ:IÀ:I<>éÀA¶‡ /// Finds the [ScaffoldState] from the closest instance of this class that
/// encloses the given context.
///
/// If no instance of this class encloses the given context, will cause an
/// assert in debug mode, and throw an exception in release mode.
///
/// This method can be expensive (it walks the element tree).
///
/// {@tool dartpad}
/// Typical usage of the [Scaffold.of] function is to call it from within the
/// `build` method of a child of a [Scaffold].
///
/// ** See code in examples/api/lib/material/scaffold/scaffold.of.0.dart **
/// {@end-tool}
///
/// {@tool dartpad}
/// When the [Scaffold] is actually created in the same `build` function, the
/// `context` argument to the `build` function can't be used to find the
/// [Scaffold] (since it's "above" the widget being returned in the widget
/// tree). In such cases, the following technique with a [Builder] can be used
/// to provide a new scope with a [BuildContext] that is "under" the
/// [Scaffold]:
///
/// ** See code in examples/api/lib/material/scaffold/scaffold.of.1.dart **
/// {@end-tool}
///
/// A more efficient solution is to split your build function into several
/// widgets. This introduces a new context from which you can obtain the
/// [Scaffold]. In this solution, you would have an outer widget that creates
/// the [Scaffold] populated by instances of your new inner widgets, and then
/// in these inner widgets you would use [Scaffold.of].
///
/// A less elegant but more expedient solution is assign a [GlobalKey] to the
/// [Scaffold], then use the `key.currentState` property to obtain the
/// [ScaffoldState] rather than using the [Scaffold.of] function.
///
/// If there is no [Scaffold] in scope, then this will throw an exception.
/// To return null if there is no [Scaffold], use [maybeOf] instead.ÀJpÀJpÀJ}ÀH6ÀH6ÀJh/// Finds the [ScaffoldState] from the closest instance of this class that
/// encloses the given context.
///
/// If no instance of this class encloses the given context, will return null.
/// To throw an exception instead, use [of] instead of this function.
///
/// This method can be expensive (it walks the element tree).
///
/// See also:
///
/// * [of], a similar function to this one that throws if no instance
/// encloses the given context. Also includes some sample code in its
/// documentation.ÀO!ÀO!ÀO.ÀJÌÀJÌŠÀOƒø/// Returns a [ValueListenable] for the [ScaffoldGeometry] for the closest
/// [Scaffold] ancestor of the given context.
///
/// The [ValueListenable.value] is only available at paint time.
///
/// Notifications are guaranteed to be sent before the first paint pass
/// with the new geometry, but there is no guarantee whether a build or
/// layout passes are going to happen between the notification and the next
/// paint pass.
///
/// The closest [Scaffold] ancestor for the context might change, e.g when
/// an element is moved from one scaffold to another. For [StatefulWidget]s
/// using this listenable, a change of the [Scaffold] ancestor will
/// trigger a [State.didChangeDependencies].
///
/// A typical pattern for listening to the scaffold geometry would be to
/// call [Scaffold.geometryOf] in [State.didChangeDependencies], compare the
/// return value with the previous listenable, if it has changed, unregister
/// the listener, and register a listener to the new [ScaffoldGeometry]
/// listenable.ÀW“ÀW“ÀW ÀWªÀÀÀWÄÀTÕÀTÕ„?ÀW‰‰/// Whether the Scaffold that most tightly encloses the given context has a
/// drawer.
///
/// If this is being used during a build (for example to decide whether to
/// show an "open drawer" button), set the `registerForUpdates` argument to
/// true. This will then set up an [InheritedWidget] relationship with the
/// [Scaffold] so that the client widget gets rebuilt whenever the [hasDrawer]
/// value changes.
///
/// This method can be expensive (it walks the element tree).
///
/// See also:
///
/// * [Scaffold.of], which provides access to the [ScaffoldState] object as a
/// whole, from which you can show bottom sheets, and so forth.ÀYFÀYFÀYSÀY\ÀY\ÀYnÀYÀY‚ÃÀY&À[ßÀ[àÀ[ßÀ[ß;ÀÀêçÀêçÀq5ÀKš]/// Implements the basic Material Design visual layout structure.
///
/// This class provides APIs for showing drawers and bottom sheets.
///
/// To display a persistent bottom sheet, obtain the
/// [ScaffoldState] for the current [BuildContext] via [Scaffold.of] and use the
/// [ScaffoldState.showBottomSheet] function.
///
/// {@tool dartpad}
/// This example shows a [Scaffold] with a [body] and [FloatingActionButton].
/// The [body] is a [Text] placed in a [Center] in order to center the text
/// within the [Scaffold]. The [FloatingActionButton] is connected to a
/// callback that increments a counter.
///
/// ** See code in examples/api/lib/material/scaffold/scaffold.0.dart **
/// {@end-tool}
///
/// {@tool dartpad}
/// This example shows a [Scaffold] with a blueGrey [backgroundColor], [body]
/// and [FloatingActionButton]. The [body] is a [Text] placed in a [Center] in
/// order to center the text within the [Scaffold]. The [FloatingActionButton]
/// is connected to a callback that increments a counter.
///
/// ![](https://flutter.github.io/assets-for-api-docs/assets/material/scaffold_background_color.png)
///
/// ** See code in examples/api/lib/material/scaffold/scaffold.1.dart **
/// {@end-tool}
///
/// {@tool dartpad}
/// This example shows a [Scaffold] with an [AppBar], a [BottomAppBar] and a
/// [FloatingActionButton]. The [body] is a [Text] placed in a [Center] in order
/// to center the text within the [Scaffold]. The [FloatingActionButton] is
/// centered and docked within the [BottomAppBar] using
/// [FloatingActionButtonLocation.centerDocked]. The [FloatingActionButton] is
/// connected to a callback that increments a counter.
///
/// ![](https://flutter.github.io/assets-for-api-docs/assets/material/scaffold_bottom_app_bar.png)
///
/// ** See code in examples/api/lib/material/scaffold/scaffold.2.dart **
/// {@end-tool}
///
/// ## Scaffold layout, the keyboard, and display "notches"
///
/// The scaffold will expand to fill the available space. That usually
/// means that it will occupy its entire window or device screen. When
/// the device's keyboard appears the Scaffold's ancestor [MediaQuery]
/// widget's [MediaQueryData.viewInsets] changes and the Scaffold will
/// be rebuilt. By default the scaffold's [body] is resized to make
/// room for the keyboard. To prevent the resize set
/// [resizeToAvoidBottomInset] to false. In either case the focused
/// widget will be scrolled into view if it's within a scrollable
/// container.
///
/// The [MediaQueryData.padding] value defines areas that might
/// not be completely visible, like the display "notch" on the iPhone
/// X. The scaffold's [body] is not inset by this padding value
/// although an [appBar] or [bottomNavigationBar] will typically
/// cause the body to avoid the padding. The [SafeArea]
/// widget can be used within the scaffold's body to avoid areas
/// like display notches.
///
/// ## Floating action button with a draggable scrollable bottom sheet
///
/// If [Scaffold.bottomSheet] is a [DraggableScrollableSheet],
/// [Scaffold.floatingActionButton] is set, and the bottom sheet is dragged to
/// cover greater than 70% of the Scaffold's height, two things happen in parallel:
///
/// * Scaffold starts to show scrim (see [ScaffoldState.showBodyScrim]), and
/// * [Scaffold.floatingActionButton] is scaled down through an animation with a [Curves.easeIn], and
/// disappears when the bottom sheet covers the entire Scaffold.
///
/// And as soon as the bottom sheet is dragged down to cover less than 70% of the [Scaffold], the scrim
/// disappears and [Scaffold.floatingActionButton] animates back to its normal size.
///
/// ## Troubleshooting
///
/// ### Nested Scaffolds
///
/// The Scaffold is designed to be a top level container for
/// a [MaterialApp]. This means that adding a Scaffold
/// to each route on a Material app will provide the app with
/// Material's basic visual layout structure.
///
/// It is typically not necessary to nest Scaffolds. For example, in a
/// tabbed UI, where the [bottomNavigationBar] is a [TabBar]
/// and the body is a [TabBarView], you might be tempted to make each tab bar
/// view a scaffold with a differently titled AppBar. Rather, it would be
/// better to add a listener to the [TabController] that updates the
/// AppBar
///
/// {@tool snippet}
/// Add a listener to the app's tab controller so that the [AppBar] title of the
/// app's one and only scaffold is reset each time a new tab is selected.
///
/// ```dart
/// TabController(vsync: tickerProvider, length: tabCount)..addListener(() {
/// if (!tabController.indexIsChanging) {
/// setState(() {
/// // Rebuild the enclosing scaffold with a new AppBar title
/// appBarTitle = 'Tab ${tabController.index}';
/// });
/// }
/// })
/// ```
/// {@end-tool}
///
/// Although there are some use cases, like a presentation app that
/// shows embedded flutter content, where nested scaffolds are
/// appropriate, it's best to avoid nesting scaffolds.
///
/// See also:
///
/// * [AppBar], which is a horizontal bar typically shown at the top of an app
/// using the [appBar] property.
/// * [BottomAppBar], which is a horizontal bar typically shown at the bottom
/// of an app using the [bottomNavigationBar] property.
/// * [FloatingActionButton], which is a circular button typically shown in the
/// bottom right corner of the app using the [floatingActionButton] property.
/// * [Drawer], which is a vertical panel that is typically displayed to the
/// left of the body (and often hidden on phones) using the [drawer]
/// property.
/// * [BottomNavigationBar], which is a horizontal array of buttons typically
/// shown along the bottom of the app using the [bottomNavigationBar]
/// property.
/// * [BottomSheet], which is an overlay typically shown near the bottom of the
/// app. A bottom sheet can either be persistent, in which case it is shown
/// using the [ScaffoldState.showBottomSheet] method, or modal, in which case
/// it is shown using the [showModalBottomSheet] function.
/// * [SnackBar], which is a lightweight message with an optional action which
/// briefly displays at the bottom of the screen. Use the
/// [ScaffoldMessengerState.showSnackBar] method to show snack bars.
/// * [MaterialBanner], which displays an important, succinct message, at the
/// top of the screen, below the app bar. Use the
/// [ScaffoldMessengerState.showMaterialBanner] method to show material banners.
/// * [ScaffoldState], which is the state associated with this widget.
/// * <https://material.io/design/layout/responsive-layout-grid.html>
/// * Cookbook: [Add a Drawer to a screen](https://docs.flutter.dev/cookbook/design/drawer)À^—À^ À^¶À^¡À^·À^¸À^ŠÀ^cVÀÀ^ôÀ^ýÀ_À^þÀ_À_À^äÀ^½YÀÀ_6À_?À_@À_+À_&À_+Àa9Àa1Àa9Àb&Àb4Àb:Àb5ÀbÀb:ÀbÀbgÀbuÀb{ÀbvÀbTÀb?=ÀbTÀlãÀlË*ÀÀmGÀm MÀmGÀoüÀoµ_ÀÀs,Às-ÀsÀs+ÀsÀrýÀrÜRÀÀsSÀs24ÀsSÀs“ÀsœÀs<>ÀszÀsj4ÀszÀsµÀs¢/ÀÀ¤0À¤<À¤0À¤yÀ¤W?À¤yÀ¤¸À¤šCÀ¤¸À¤ÿÀ¤á;À¤ÿÀ¥:À¥!BÀ¥:À®À­è0À®ÀË1ÀË=ÀË1ÀËoÀË^ÀËYÀË^
À].À]/À].À].>À]FÀ_FÀ_FjÀ_<>;/// Whether this scaffold has a non-null [Scaffold.appBar].À_´À_´jÀ_û;/// Whether this scaffold has a non-null [Scaffold.drawer].À`"À`"sÀ`l>/// Whether this scaffold has a non-null [Scaffold.endDrawer].À`™À`™€”À`îI/// Whether this scaffold has a non-null [Scaffold.floatingActionButton].ÀaNÀaN€°ÀaÚy/// The max height the [Scaffold.appBar] uses.
///
/// This is based on the appBar preferred height plus the top padding.Àb<>Àb<>€ÙÀc6€Ÿ/// Whether the [Scaffold.drawer] is opened.
///
/// See also:
///
/// * [ScaffoldState.openDrawer], which opens the [Scaffold.drawer] of a
/// [Scaffold].Àc^Àc^€ŠÀcª@/// Whether the [Scaffold.drawerBarrierDismissible] flag is set.ÀcìÀcì€èÀdª€¨/// Whether the [Scaffold.endDrawer] is opened.
///
/// See also:
///
/// * [ScaffoldState.openEndDrawer], which opens the [Scaffold.endDrawer] of
/// a [Scaffold].À®À®\À®&À]›À]ÀÀ]¹ÀÀÀ]pÀ]qÀ]}À]~À]pÀ]p€ÞÀÀdóÀ
ÀÀdØÀdØ€÷ÀÀeñÀ
ÀÀeÓÀ<65>ÀÀfÝÀÌÀ<68>ü/// Opens the [Drawer] (if any).
///
/// If the scaffold has a non-null [Scaffold.drawer], this function will cause
/// the drawer to begin its entrance animation.
///
/// Normally this is not needed since the [Scaffold] automatically shows an
/// appropriate [IconButton], and handles the edge-swipe gesture, to show the
/// drawer.
///
/// To close the drawer, use either [ScaffoldState.closeDrawer] or
/// [Navigator.pop].
///
/// See [Scaffold.of] for information about how to obtain the [ScaffoldState].Ài­Ài­áÀ/// Opens the end side [Drawer] (if any).
///
/// If the scaffold has a non-null [Scaffold.endDrawer], this function will cause
/// the end side drawer to begin its entrance animation.
///
/// Normally this is not needed since the [Scaffold] automatically shows an
/// appropriate [IconButton], and handles the edge-swipe gesture, to show the
/// drawer.
///
/// To close the drawer, use either [ScaffoldState.closeEndDrawer] or
/// [Navigator.pop].
///
/// See [Scaffold.of] for information about how to obtain the [ScaffoldState].Àm«À<6D>^ÀÀplÀpl<70>¦ÀpqÀsÖÀsÖ‰ÀÀ}pÀ}p<>gÀ}uÀ~ÛÀ~Û€üÀq€Š/// Closes [Scaffold.drawer] if it is currently opened.
///
/// See [Scaffold.of] for information about how to obtain the [ScaffoldState].ÀÛÀÛ<7F> À€t€<74>/// Closes [Scaffold.endDrawer] if it is currently opened.
///
/// See [Scaffold.of] for information about how to obtain the [ScaffoldState].À€êÀ€êcÀ€ï À<01>ˆÀ<01>ˆÀ<01>À<01>¥À<01>¥À<01>³À<01>ÅÀ<01>Å0À<01>âÀ<01>ûÀ<01>ûÀÀÀÀÀ.À;ÀFÀLÀ^ÀnÀ‚ÀÀ‚…À‚•À‚•ÀÀ‚¯À‚¯,À´À‚×À<01><01>QŽåÀ<01>q
Àž(Àž(Àž6ÀžEÀžEÀžLÀžaÀžaÀžiÀžxÀžxÀž…Àž<>Àž<>Àž–Àž¨Àž¨Àž¸ÀžÉÀžÉÀžÏÀžßÀžßÀžåÀžùÀžù2ÀŸÀŸ1ÀŸ1#ÀŸAÀ<01><01>:“¹Àž<13>,/// Shows a Material Design bottom sheet in the nearest [Scaffold]. To show
/// a persistent bottom sheet, use the [Scaffold.bottomSheet].
///
/// Returns a controller that can be used to close and otherwise manipulate the
/// bottom sheet.
///
/// To rebuild the bottom sheet (e.g. if it is stateful), call
/// [PersistentBottomSheetController.setState] on the controller returned by
/// this method.
///
/// The new bottom sheet becomes a [LocalHistoryEntry] for the enclosing
/// [ModalRoute] and a back button is added to the app bar of the [Scaffold]
/// that closes the bottom sheet.
///
/// The [transitionAnimationController] controls the bottom sheet's entrance and
/// exit animations. It's up to the owner of the controller to call
/// [AnimationController.dispose] when the controller is no longer needed.
///
/// To create a persistent bottom sheet that is not a [LocalHistoryEntry] and
/// does not add a back button to the enclosing Scaffold's app bar, use the
/// [Scaffold.bottomSheet] constructor parameter.
///
/// A persistent bottom sheet shows information that supplements the primary
/// content of the app. A persistent bottom sheet remains visible even when
/// the user interacts with other parts of the app.
///
/// A closely related widget is a modal bottom sheet, which is an alternative
/// to a menu or a dialog and prevents the user from interacting with the rest
/// of the app. Modal bottom sheets can be created and displayed with the
/// [showModalBottomSheet] function.
///
/// {@tool dartpad}
/// This example demonstrates how to use [showBottomSheet] to display a
/// bottom sheet when a user taps a button. It also demonstrates how to
/// close a bottom sheet using the Navigator.
///
/// ** See code in examples/api/lib/material/scaffold/scaffold_state.show_bottom_sheet.0.dart **