( listenablebuild createStatedebugFillProperties initStatedidUpdateWidgetdispose _handleChangeposition textDirectiontransformHitTestschild onTransform animation alignment filterQualityscale_handleScaleMatrixturns_handleTurnsMatrixaxis sizeFactor axisAlignmentfixedCrossAxisSizeFactoropacityalwaysIncludeSemanticscreateRenderObjectupdateRenderObjectlerprectsize decoration widthFactor heightFactorstyle textAlignsoftWrapoverflowmaxLinesbuilderAnimatedWidget_AnimatedStateDelegatedTransitionBuilderSlideTransitionTransformCallbackMatrixTransitionScaleTransitionRotationTransitionSizeTransitionFadeTransitionSliverFadeTransitionRelativeRectTweenPositionedTransitionRelativePositionedTransitionDecoratedBoxTransitionAlignTransitionDefaultTextStyleTransitionListenableBuilderAnimatedBuilder€” RelativeRect Listenable AnimationChangeNotifier ValueNotifierImplicitlyAnimatedWidgetAnimationControllerAlign DecoratedBoxDefaultTextStyle PositionedOpacityAnimatedModalBarrier ModalBarrierStatefulWidget protectedWidget BuildContextoverrideStatevoidDiagnosticPropertiesBuilderdebugFillPropertiesaddDiagnosticsProperty initStatewidget listenable addListenerdidUpdateWidgetremoveListenerdisposemountedsetStatebuild ModalRoutedelegatedTransitiondoubleboolOffsetCurvedAnimationCurves elasticIn alignment TextDirectionrtlltrvaluedxdyFractionalTranslation translationtransformHitTestschild onTransformMatrix4 animation AlignmentcenterAnimationStatus dismissed completed FilterQuality Transform transform filterQuality isAnimating fastOutSlowIndiagonal3Values elasticOut rotationZpiClipRect Container FlutterLogoScaffoldAnimatedCrossFadeAxisvertical horizontalAlignmentDirectional heightFactormax widthFactorFlow IgnorePointerAnimatedOpacitySingleChildRenderObjectWidgetRenderAnimatedOpacityopacityalwaysIncludeSemantics FlagPropertyifTrueCustomScrollViewSliverFixedExtentList RenderBoxSliverIgnorePointer SliverOpacitysliverRenderSliverAnimatedOpacitylerpTweenbeginendfillStack elasticInOutAnimatedPositionedfromRelativeRectrectRectzeroSizefromSizetoprightbottomleft Decoration decelerateAnimatedContainernewDecorationPosition backgroundDecorationTween BoxDecoration decorationposition AnimatedAlignAlignmentGeometry TextStyleAnimatedDefaultTextStyle TextOverflowclip TextAlignsoftWrapmaxLinesintstyle textAlignoverflowText FocusNodeFocusValueListenableBuilderTransitionBuilderTweenAnimationBuilderbuilderStatefulWidgetStateAnimatedWidgetMatrixTransitionSingleChildRenderObjectWidgetTweenListenableBuilderèZ³çÙtÜE�ò LJ�ê�û RelativeRect�Âpackage:flutter/rendering.dart��)�,math�, dart:math�6package:flutter/rendering.dart�b basic.dart�xcontainer.dart�’framework.dart�¬ text.dartÀ¨àÀ¿N„Ý=€ˆ€§€©€Ú� ���3�5�_�a�w�‘�«�À�Â�þ‚‚G‚L‚�‚•‚åƒ,ƒWƒ\ƒ®ƒ÷ƒü„„\„”„™„ì„ý……H…w…|…°…µ††C†„†Ì‡‡i‡¹ˆˆHˆ�ˆ•ˆµˆº‰ ‰N‰Ÿ‰ñŠ3Š8Š…Š­Šø‹‹c‹µ‹ûŒŒeŒ­ŒÃ� �K�‚�Ñ�îŽ3ŽƒŽ»�� �9�y�{�¶�½�ó���b� �®�Õ�ב‘‘Y‘[‘h‘®‘Ú’*’/’2’4’j’w’�’¥’Ø’Ý’ß’ì“ “G“}“¸“í“ô“ù“û”””R”h”m”o”‰”ž”­”´”Ç•••"•$•1•q•t•v•½•––b–¯–þ—3—8—‚—¨—¿—ܘ˜-˜L˜b˜j˜l˜´˜¹™ ™T™Œ™‘™áš%šsšÁ›››h›¨œœœ.œ|œˆœ�œáœòœ÷�� �Z�~�Ìžžbž±žáŸŸ0Ÿ@ŸjŸŽŸ§Ÿ¸ŸÝŸß  $ s ¼¡¡I¡K¡•¡œ¡é¢7¢F¢M¢ž¢ì¢ó£D£“£º£¼¤¤ ¤Y¤©¤ø¥?¥`¥b¥“¥š¥Ì¥ä¥æ¥ó¦¦@¦o¦ž¦¥¦È¦ä§§&§.§3§6§8§{§€§Ò¨¨J¨L¨�¨†¨×©©©.©€©­©²ªªªª,ª1ª�ªµªÿ«:«k«�«–«Ö«ò¬¬-¬M¬u¬Ž¬Ÿ¬Å¬Ç­­E­m­o­«­²­ÿ®®W®Y®¢®á®è¯9¯`¯~¯€¯Ó¯Ú°)°{°‚°Ã°ê°ì±±$±V±n±p±}±¥±ó²B²•²Î²å³³2³v³‹³“³˜³›³�³Î³Ó´"´f´Ò´×´ìµ:µFµKµŸµ°µµµÄµÉ¶¶_¶­¶ü·H·b·”···¾·þ¸¸)¸P¸y¸“¸¥¸ç¸é¹$¹Q¹S¹�¹”¹Ùººcºfºhº�º•ºç»(»—»œ»±¼¼¼¼j¼{¼€¼�¼”¼á¼ñ½=½W½Œ½²½Ð½à¾¾0¾J¾\¾ž¾ ¾Þ¿ ¿ ¿J¿Q¿ž¿ÎÀ@.À@1À@3À@nÀ@sÀ@ÄÀAÀAKÀAPÀAŸÀAëÀB9ÀB†ÀB”ÀB™ÀBìÀC0ÀC›ÀC ÀCµÀDÀDDÀD�ÀD†ÀDÙÀDêÀDïÀDþÀEÀEQÀE‰ÀEÚÀEïÀF=ÀF…ÀFÓÀG"ÀGQÀGsÀGzÀGÆÀHÀH)ÀHCÀHSÀHsÀHŸÀH¾ÀHâÀHóÀIHÀIoÀIqÀI¸ÀIÐÀIäÀIæÀJ*ÀJ1ÀJƒÀJÒÀJùÀKÀKPÀKpÀK¸ÀKºÀLÀLÀLÀLpÀLÁÀMÀM0ÀM7ÀM…ÀMŒÀMÞÀMýÀMÿÀNHÀNOÀN�ÀNÐÀN×ÀO&ÀOQÀOSÀO„ÀO‹ÀO½ÀOÕÀO×ÀOäÀP ÀP"ÀP7ÀP[ÀP¤ÀPëÀP÷ÀQ$ÀQSÀQ|ÀQªÀQÙÀRÀRÀR#ÀR+ÀR0ÀR3ÀR5ÀR\ÀRaÀR²ÀRåÀRêÀS.ÀS3ÀSƒÀSÇÀSÌÀSáÀTÀT6ÀT;ÀTŽÀTŸÀT¤ÀT¸ÀT½ÀUÀUTÀU¤ÀUîÀVÀV ÀV[ÀV«ÀVþÀW<ÀWAÀW‘ÀWÜÀX+ÀX|ÀXÈÀYÀY ÀYÀY ÀY^ÀY­ÀYÔÀZÀZUÀZ{ÀZ•ÀZ¥ÀZÁÀZëÀZýÀ[À[À[CÀ[JÀ[—À[èÀ\:À\YÀ\}À\À\ËÀ\ÒÀ\ìÀ\óÀ];À]†À]ÏÀ^À^+À^-À^:À^~À^ãÀ^èÀ^êÀ^÷À_NÀ_`À_{À_µÀ_ºÀ_¼À_ÉÀ`À`;À`ŒÀ`¡À`¶À`ÙÀaÀa,Àa6Àa>ÀaCÀaFÀaHÀavÀa{Àa�ÀaÝÀbÀbÀbuÀb†Àb‹Àb×Àc'ÀcGÀcLÀc·Àc¼ÀcÐÀcÕÀd ÀdrÀdÂÀeÀe(Àe-ÀeÀeÏÀfÀf`ÀfkÀfpÀfÀÀgÀg_Àg¯ÀgûÀh:Àh?ÀhNÀhSÀh—ÀhÑÀiÀi;Ài[ÀikÀi‡Ài±ÀiÆÀiäÀiæÀj*Àj1Àj~ÀjÏÀk!Àk@ÀkdÀkfÀk¶Àk½Àk×ÀkÞÀl/ÀlzÀlÃÀlùÀmÀm!Àm.ÀmxÀm¡ÀmºÀmñÀmùÀmþÀnÀn ÀnjÀn|Àn—ÀnÑÀnÖÀnØÀnåÀo+ÀoWÀo¨Ào½ÀoÒÀoõÀpÀpHÀpRÀpZÀp_ÀpbÀpdÀp–Àp›ÀpåÀqÀqÀqOÀq†Àq­Àq´ÀqøÀr"ÀrRÀrTÀr£Àr°ÀrõÀrøÀrúÀs7Às†ÀsËÀsÐÀtÀtÀtXÀt›Àu ÀuÀu&ÀuyÀu…ÀuŠÀuãÀuôÀuùÀvÀv ÀvXÀv‰Àv×Àw&ÀwqÀwšÀwéÀx ÀxZÀxjÀx¶ÀxÐÀyÀy3ÀySÀycÀy�Ày©ÀyÊÀyÌÀzÀz\Àz^Àz�Àz–ÀzÈÀzßÀzáÀzîÀ{À{_À{dÀ{gÀ{iÀ{¶À{üÀ|À|À|HÀ|MÀ|¨À|ëÀ}eÀ}jÀ}À}ÚÀ}æÀ}ëÀ~MÀ~^À~cÀ~rÀ~wÀ~ÅÀ À\À€ÀÍÀÝÀ€)À€CÀ€ŽÀ€·À€ôÀ�'À�.À�}À�ÏÀ�ÞÀ‚À‚À‚;À‚TÀ‚nÀ‚�À‚‘À‚ÓÀ‚ÚÀƒ0Àƒ7ÀƒHÀƒOÀƒŸÀƒÂÀ„À„À„KÀ„lÀ„€À„‚À„³À„ºÀ„ìÀ…À…À…À…:À……À…�À…¶À…ÓÀ…òÀ† À†"À†*À†/À†2À†4À†…À†ŸÀ†¤À†òÀ‡@À‡´À‡¹À‡ÎÀˆ#Àˆ/Àˆ4Àˆ�Àˆ¡Àˆ¦ÀˆµÀˆºÀ‰À‰YÀ‰‰À‰ÀÀŠÀŠ"ÀŠ)ÀŠ:ÀŠAÀŠ^ÀŠ€ÀŠ�ÀНÀŠãÀŠýÀ‹$À‹&À‹SÀ‹ZÀ‹ªÀ‹ÆÀ‹ñÀ‹óÀŒ?ÀŒeÀŒgÀŒ˜ÀŒŸÀŒÑÀŒèÀŒêÀŒ÷À�À�yÀ�~À��À�ƒÀ�ÕÀ�ÚÀŽ(ÀŽxÀŽ’ÀŽ—À�À�À�À�kÀ�wÀ�|À�ÐÀ�áÀ�æÀ�õÀ�úÀ�EÀ�vÀ�ÄÀ‘ À‘ZÀ‘©À‘õÀ’À’ZÀ’ƒÀ’³À“À“À“À“-À“4À“KÀ“fÀ“vÀ“¬À“ÆÀ“ÝÀ“õÀ”À”À”WÀ”´À”¶À”ýÀ•À•À•fÀ•…À•‡À•¸À•¿À•ñÀ–À– À–À–?À–RÀ–uÀ––À–¹À–ÎÀ–ÖÀ–ÛÀ–ÞÀ–àÀ—5À—NÀ—SÀ—hÀ—·À—ôÀ—ùÀ˜ZÀ˜kÀ˜pÀ˜À˜„À˜ÕÀ™À™WÀ™tÀ™¯ÀšÀšÀš:ÀšJÀštÀšŽÀš£Àš¾ÀšæÀšúÀ›À›À›^À›§À›©À›ÝÀ›üÀ›þÀœ8Àœ?ÀœxÀœ�Àœ’ÀœÀÀœÇÀœçÀœéÀ�AÀ�HÀ��À�™À�›À�ÌÀ�ÓÀžÀžÀžÀž+ÀžSÀžqÀžŒÀž©ÀžÄÀžßÀžúÀŸÀŸÀŸÀŸÀŸ!ÀŸqÀŸÀŸ„ÀŸÔÀ  À gÀ vÀ {À ÍÀ¡À¡lÀ¡¾À¢À¢ À¢!À¢lÀ¢¾À£À£À£nÀ£À£„À£™À£âÀ¤4À¤_À¤dÀ¤ºÀ¤ËÀ¤ÐÀ¤òÀ¤÷À¥DÀ¥’À¥ÝÀ¦À¦À¦nÀ¦»À§À§'À§,À§tÀ§ÃÀ§×À§ÜÀ§ñÀ¨>À¨ŒÀ¨×À©&À©nÀ©sÀ©ÉÀ©ÚÀ©ßÀ©îÀ©óÀªAÀªÀªÎÀ«À«6À«yÀ«–À«¦À«ÆÀ«âÀ«óÀ«úÀ«üÀ¬1À¬8À¬OÀ¬œÀ¬íÀ­ À­À­iÀ­|À­ƒÀ­”À­›À­æÀ®+À®1À®sÀ®ŒÀ®™À®ËÀ®ÍÀ¯À¯À¯fÀ¯zÀ¯žÀ¯ À¯ÒÀ¯ÙÀ°%À°=À°?À°LÀ°ŽÀ°‘À°“À°ÊÀ°ÏÀ±À±nÀ±¨À±­À±ìÀ²À²À²LÀ²QÀ²žÀ²ðÀ³@À³À³°À³µÀ³×À³ÜÀ´'À´uÀ´ÁÀµÀµ ÀµNÀµ ÀµÅÀµÊÀ¶À¶_À¶sÀ¶xÀ¶�À¶ÚÀ·'À·_À·dÀ·¸À·ÉÀ·ÎÀ·ÝÀ·âÀ¸-À¸{À¸œÀ¸èÀ¹0À¹cÀ¹‡À¹ŽÀ¹ËÀ¹æÀ¹öÀºÀº7ÀºIÀºoÀºqÀºÁÀºÈÀ»À»À»À»À»oÀ»½À»ñÀ¼"À¼$À¼tÀ¼{À¼²À¼¹À¼ÊÀ¼ÑÀ½À½^À½dÀ½¦À½¿À½ÌÀ½þÀ¾À¾BÀ¾IÀ¾˜À¾¬À¾²À¾ôÀ¿ À¿À¿KÀ¿N^/// @docImport 'package:flutter/material.dart'; /// @docImport 'package:flutter/widgets.dart';��,�5�a�w�‘�«�Â�ê�û�A�O�Q�Q �W�\�\�j޽޽€ºt/// Creates a widget that rebuilds when the given listenable changes. /// /// The [listenable] argument is required.��}€“�n/// The [Listenable] to which this widget is listening. /// /// Commonly an [Animation] or a [ChangeNotifier].�½�½�Ê�¢�£��€¼�·€„/// Override this method to build widgets that depend on the state of the /// listenable (e.g., the current value of the animation).‘‘�Ù�Ù~‘55/// Subclasses typically do not override this method.‘ƒ‘ƒ&‘Ÿ‘]‘^‘]‘]€Ð‘o‚‚�0Ž’ŒF/// A widget that rebuilds when the given [Listenable] changes value. /// /// {@youtube 560 315 https://www.youtube.com/watch?v=LKKgYpC-EPQ} /// /// [AnimatedWidget] is most commonly used with [Animation] objects, which are /// [Listenable], but it can be used with any [Listenable], including /// [ChangeNotifier] and [ValueNotifier]. /// /// [AnimatedWidget] is most useful for widgets that are otherwise stateless. To /// use [AnimatedWidget], subclass it and implement the build function. /// /// {@tool dartpad} /// This code defines a widget called `Spinner` that spins a green square /// continually. It is built with an [AnimatedWidget]. /// /// ** See code in examples/api/lib/widgets/transitions/animated_widget.0.dart ** /// {@end-tool} /// /// For more complex case involving additional state, consider using /// [AnimatedBuilder] or [ListenableBuilder]. /// /// ## Relationship to [ImplicitlyAnimatedWidget]s /// /// [AnimatedWidget]s (and their subclasses) take an explicit [Listenable] as /// argument, which is usually an [Animation] derived from an /// [AnimationController]. In most cases, the lifecycle of that /// [AnimationController] has to be managed manually by the developer. /// In contrast to that, [ImplicitlyAnimatedWidget]s (and their subclasses) /// automatically manage their own internal [AnimationController] making those /// classes easier to use as no external [Animation] has to be provided by the /// developer. If you only need to set a target value for the animation and /// configure its duration/curve, consider using (a subclass of) /// [ImplicitlyAnimatedWidget]s instead of (a subclass of) this class. /// /// ## Common animated widgets /// /// A number of animated widgets ship with the framework. They are usually named /// `FooTransition`, where `Foo` is the name of the non-animated /// version of that widget. The subclasses of this class should not be confused /// with subclasses of [ImplicitlyAnimatedWidget] (see above), which are usually /// named `AnimatedFoo`. Commonly used animated widgets include: /// /// * [ListenableBuilder], which uses a builder pattern that is useful for /// complex [Listenable] use cases. /// * [AnimatedBuilder], which uses a builder pattern that is useful for /// complex [Animation] use cases. /// * [AlignTransition], which is an animated version of [Align]. /// * [DecoratedBoxTransition], which is an animated version of [DecoratedBox]. /// * [DefaultTextStyleTransition], which is an animated version of /// [DefaultTextStyle]. /// * [PositionedTransition], which is an animated version of [Positioned]. /// * [RelativePositionedTransition], which is an animated version of /// [Positioned]. /// * [RotationTransition], which animates the rotation of a widget. /// * [ScaleTransition], which animates the scale of a widget. /// * [SizeTransition], which animates its own size. /// * [SlideTransition], which animates the position of a widget relative to /// its normal position. /// * [FadeTransition], which is an animated version of [Opacity]. /// * [AnimatedModalBarrier], which is an animated version of [ModalBarrier].’l’m’l’lo’~“““’á’â’á’á�’ó“ý“þ“ý“ýn””q”q€¯”v•@•@•M•&•'•&•&I•:’4’4ƒ>’:ŸŸ,Ÿ4Ÿ4 Ÿ:ŸDŸD#Ÿ_ŸnŸnŸsŸ’Ÿ’Ÿ—Ÿ«Ÿ« Ÿ°Ÿ‡Ÿ¿ŸÄŸÙŸÏŸÅŸÑžãžã€ø0/// Creates a fractional translation transition.£ª¡M‚j£ª‚&/// The direction to use for the x offset described by the [position]. /// /// If [textDirection] is null, the x offset is applied in the coordinate /// system of the canvas (so positive x offsets move the child towards the /// right). /// /// If [textDirection] is [TextDirection.rtl], the x offset is applied in the /// reading direction such that x offsets move the child towards the left. /// /// If [textDirection] is [TextDirection.ltr], the x offset is applied in the /// reading direction such that x offsets move the child towards the right.¥L£¾�Ÿ¥L�p/// Whether hit testing should be affected by the slide animation. /// /// If false, hit testing will proceed as if the child was not translated at /// all. Setting this value to false is useful for fast animations where you /// expect the user to commonly interact with the child widget in its final /// location and you want the user to benefit from "muscle memory".¥Ü¥d}¥Ü`/// The widget below this widget in the tree. /// /// {@macro flutter.widgets.ProxyWidget.child}ŸáŸá�f¡�/// The animation that controls the position of the child. /// /// If the current value of the position animation is `(dx, dy)`, the child /// will be translated horizontally by `width * dx` and vertically by /// `height * dy`, after applying the [textDirection] if available.¦¦¦¥è¥é¥è¥è�I¥ü˜l˜lŽÈž·†%/// Animates the position of a widget relative to its normal position. /// /// The translation is expressed as an [Offset] scaled to the child's size. For /// example, an [Offset] with a `dx` of 0.25 will result in a horizontal /// translation of one quarter the width of the child. /// /// By default, the offsets are applied in the coordinate system of the canvas /// (so positive x offsets move the child towards the right). If a /// [textDirection] is provided, then the offsets are applied in the reading /// direction, so in right-to-left text, positive x offsets move towards the /// left, and in left-to-right text, positive x offsets move towards the right. /// /// Here's an illustration of the [SlideTransition] widget, with its [position] /// animated by a [CurvedAnimation] set to [Curves.elasticIn]: /// {@animation 300 378 https://flutter.github.io/assets-for-api-docs/assets/widgets/slide_transition.mp4} /// /// {@tool dartpad} /// The following code implements the [SlideTransition] as seen in the video /// above: /// /// ** See code in examples/api/lib/widgets/transitions/slide_transition.0.dart ** /// {@end-tool} /// /// See also: /// /// * [AlignTransition], an animated version of an [Align] that animates its /// [Align.alignment] property. /// * [PositionedTransition], a widget that animates its child from a start /// position to an end position over the lifetime of the animation. /// * [RelativePositionedTransition], a widget that transitions its child's /// position based on the value of a rectangle relative to a bounding box.«Þ«î«ö«ö «ü¬¬$¬!¬1¬1¬?¬Q¬Q!¬V¬y¬y¬~¬’¬’ ¬— ¬b¬k¬l¬¦¬«¬Á¬¶¬¬¬¸«m«m�Va/// Creates a matrix transition. /// /// The [alignment] argument defaults to [Alignment.center].­_¬É€¡­_w/// The callback to compute a [Matrix4] from the [animation]. It's called /// every time [animation] changes its value.¯r®[� ¯r€÷/// The alignment of the origin of the coordinate system in which the /// transform takes place, relative to the size of the box. /// /// For example, to set the origin of the transform to bottom middle, you can /// use an alignment of (0.0, 1.0).°Ú¯‚�e°Ú�0/// The filter quality with which to apply the transform as a bitmap operation. /// /// When the animation is stopped (either in [AnimationStatus.dismissed] or /// [AnimationStatus.completed]), the filter quality argument will be ignored. /// /// {@macro flutter.widgets.Transform.optional.FilterQuality}±f°î}±f`/// The widget below this widget in the tree. /// /// {@macro flutter.widgets.ProxyWidget.child}­q­q€ä®(€”/// The animation that controls the matrix of the child. /// /// The matrix will be computed from the animation with the [onTransform] /// callback.±Œ±Œ±™±r±s±r±r‚$±†¨L¨L‹M«@‚Û/// Animates the [Matrix4] of a transformed widget. /// /// The [onTransform] callback computes a [Matrix4] from the animated value, it /// is called every time the [animation] changes its value. /// /// {@tool dartpad} /// The following example implements a [MatrixTransition] with a rotation around /// the Y axis, with a 3D perspective skew. /// /// ** See code in examples/api/lib/widgets/transitions/matrix_transition.0.dart ** /// {@end-tool} /// /// See also: /// /// * [ScaleTransition], which animates the scale of a widget, by providing a /// matrix which scales along the X and Y axis. /// * [RotationTransition], which animates the rotation of a widget, by /// providing a matrix which rotates along the Z axis.¸¸¸¸ ¸#¸-¸- ¸H¸T¸T"¸Z¸}¸}¸ƒ¸—¸— ¸� ¸f¸o¸p¸¬¸±¸ã¸»¸²¸½¸Ï¸Ä¸Ñ·–·–�O`/// Creates a scale transition. /// /// The [alignment] argument defaults to [Alignment.center].¸ë¸ëd¹<7/// The animation that controls the scale of the child.º%º% º,¹U¹U� º€¡/// The callback that controls the scale of the child. /// /// If the current value of the animation is v, the child will be /// painted v times its normal size.³�³�†Ç·hƒ¯/// Animates the scale of a transformed widget. /// /// Here's an illustration of the [ScaleTransition] widget, with it's [scale] /// animated by a [CurvedAnimation] set to [Curves.fastOutSlowIn]: /// {@animation 300 378 https://flutter.github.io/assets-for-api-docs/assets/widgets/scale_transition.mp4} /// /// {@tool dartpad} /// The following code implements the [ScaleTransition] as seen in the video /// above: /// /// ** See code in examples/api/lib/widgets/transitions/scale_transition.0.dart ** /// {@end-tool} /// /// See also: /// /// * [PositionedTransition], a widget that animates its child from a start /// position to an end position over the lifetime of the animation. /// * [RelativePositionedTransition], a widget that transitions its child's /// position based on the value of a rectangle relative to a bounding box. /// * [SizeTransition], a widget that animates its own size and clips and /// aligns its child.½º½Ì½Ô½Ô ½Ú½ä½ä ½ÿ¾ ¾ "¾¾4¾4¾:¾N¾N ¾T ¾¾&¾'¾c¾h¾š¾r¾i¾t¾†¾{¾ˆ½Ž½Ž�"/// Creates a rotation transition.¾¢¾¢g¾ö:/// The animation that controls the rotation of the child.¿ò¿ò ¿ù¿¿�¿ß€´/// The callback that controls the rotation of the child. /// /// If the current value of the animation is v, the child will be rotated /// v * 2 * pi radians before being painted.ºhºh…ǽ]‚Û/// Animates the rotation of a widget. /// /// Here's an illustration of the [RotationTransition] widget, with it's [turns] /// animated by a [CurvedAnimation] set to [Curves.elasticOut]: /// {@animation 300 378 https://flutter.github.io/assets-for-api-docs/assets/widgets/rotation_transition.mp4} /// /// {@tool dartpad} /// The following code implements the [RotationTransition] as seen in the video /// above: /// /// ** See code in examples/api/lib/widgets/transitions/rotation_transition.0.dart ** /// {@end-tool} /// /// See also: /// /// * [ScaleTransition], a widget that animates the scale of a transformed /// widget. /// * [SizeTransition], a widget that animates its own size and clips and /// aligns its child.ÀH1ÀH?ÀHGÀHG ÀHMÀHWÀHWÀH\ÀHwÀHw%ÀH’ÀH£ÀH£ÀH¨ÀHÂÀHÂÀHÇÀHæÀHæ ÀHëÀHcÀHgÀHhÀH¸ÀHúÀIÀIDÀI"ÀIÀIÀIÀI>ÀI%ÀIAÀIOÀITÀIkÀI_ÀIUÀIaÀGSÀGS‚€È/// Creates a size transition. /// /// The [axis] argument defaults to [Axis.vertical]. The [axisAlignment] /// defaults to zero, which centers the child along the main axis during the /// transition.ÀIÝÀIsnÀIÝX/// [Axis.horizontal] if [sizeFactor] modifies the width, otherwise /// [Axis.vertical].ÀMíÀK¼‚>ÀMí‚/// Describes how to align the child along the axis that [sizeFactor] is /// modifying. /// /// A value of -1.0 indicates the top when [axis] is [Axis.vertical], and the /// start when [axis] is [Axis.horizontal]. The start is on the left when the /// text direction in effect is [TextDirection.ltr] and on the right when it /// is [TextDirection.rtl]. /// /// A value of 1.0 indicates the bottom or end, depending upon the [axis]. /// /// A value of 0.0 (the default) indicates the center for either [axis] value.ÀO6ÀN�MÀO6�/// The factor by which to multiply the cross axis size of the child. /// /// If the value of [fixedCrossAxisSizeFactor] is less than one, the child /// will be clipped along the appropriate axis. /// /// If `null` (the default), the cross axis size is as large as the parent.ÀOÍÀOU}ÀOÍ`/// The widget below this widget in the tree. /// /// {@macro flutter.widgets.ProxyWidget.child}ÀIèÀIè�ÎÀKˆ�q/// The animation that controls the (clipped) size of the child. /// /// The width or height (depending on the [axis] value) of this widget will be /// its intrinsic width or height multiplied by [sizeFactor]'s value at the /// current point in the animation. /// /// If the value of [sizeFactor] is less than one, the child will be clipped /// in the appropriate axis.ÀOóÀOóÀPÀOÙÀOÚÀOÙÀOÙ‚UÀOíÀ@3À@3‘þÀG(†Ì/// Animates its own size and clips and aligns its child. /// /// [SizeTransition] acts as a [ClipRect] that animates either its width or its /// height, depending upon the value of [axis]. The alignment of the child along /// the [axis] is specified by the [axisAlignment]. /// /// Like most widgets, [SizeTransition] will conform to the constraints it is /// given, so be sure to put it in a context where it can change size. For /// instance, if you place it into a [Container] with a fixed size, then the /// [SizeTransition] will not be able to change size, and will appear to do /// nothing. /// /// Here's an illustration of the [SizeTransition] widget, with it's [sizeFactor] /// animated by a [CurvedAnimation] set to [Curves.fastOutSlowIn]: /// {@animation 300 378 https://flutter.github.io/assets-for-api-docs/assets/widgets/size_transition.mp4} /// /// {@tool dartpad} /// This code defines a widget that uses [SizeTransition] to change the size /// of [FlutterLogo] continually. It is built with a [Scaffold] /// where the internal widget has space to change its size. /// /// ** See code in examples/api/lib/widgets/transitions/size_transition.0.dart ** /// {@end-tool} /// /// See also: /// /// * [AnimatedCrossFade], for a widget that automatically animates between /// the sizes of two children, fading between them. /// * [ScaleTransition], a widget that scales the size of the child instead of /// clipping it. /// * [PositionedTransition], a widget that animates its child from a start /// position to an end position over the lifetime of the animation. /// * [RelativePositionedTransition], a widget that transitions its child's /// position based on the value of a rectangle relative to a bounding box.ÀZƒÀZ‘ÀZ™ÀZ™ ÀZŸÀZ©ÀZ©ÀZ·ÀZÅÀZÅ#ÀZÊÀZïÀZï ÀZõÀZãÀZWÀZW€«"/// Creates an opacity transition.À\sÀ[�rÀ\s�@/// The animation that controls the opacity of the child. /// /// If the current value of the opacity animation is v, the child will be /// painted with an opacity of v. For example, if v is 0.5, the child will be /// blended 50% with its background. Similarly, if v is 0.0, the child will be /// completely transparent.À^À\��§À^�m/// Whether the semantic information of the children is always included. /// /// Defaults to false. /// /// When true, regardless of the opacity settings the child semantic /// information is exposed as if the widget were fully visible. This is /// useful in cases where labels may be hidden during animations that /// would otherwise contribute relevant semantics.À^eÀ^eÀ^rÀ^/À^0À^/À^/€·À^RÀ_À_À_À_'À_'"À_=À^ìÀ^íÀ^ìÀ^ì€ÌÀ^þÀ_äÀ_ä&À`À_¾À_¿À_¾À_¾�ƒÀ_ÐÀR5ÀR5�ÀZ‡¶/// Animates the opacity of a widget. /// /// For a widget that automatically animates between the sizes of two children, /// fading between them, see [AnimatedCrossFade]. /// /// {@youtube 560 315 https://www.youtube.com/watch?v=rLwWVbv3xDQ} /// /// Here's an illustration of the [FadeTransition] widget, with it's [opacity] /// animated by a [CurvedAnimation] set to [Curves.fastOutSlowIn]: /// /// {@tool dartpad} /// The following code implements the [FadeTransition] using /// the Flutter logo: /// /// ** See code in examples/api/lib/widgets/transitions/fade_transition.0.dart ** /// {@end-tool} /// /// ## Hit testing /// /// Setting the [opacity] to zero does not prevent hit testing from being /// applied to the descendants of the [FadeTransition] widget. This can be /// confusing for the user, who may not see anything, and may believe the area /// of the interface where the [FadeTransition] is hiding a widget to be /// non-interactive. /// /// With certain widgets, such as [Flow], that compute their positions only when /// they are painted, this can actually lead to bugs (from unexpected geometry /// to exceptions), because those widgets are not painted by the [FadeTransition] /// widget at all when the [opacity] animation reaches zero. /// /// To avoid such problems, it is generally a good idea to combine this widget /// with an [IgnorePointer] that one enables when the [opacity] animation /// reaches zero. This prevents interactions with any children in the subtree /// when the [child] is not visible. For performance reasons, when implementing /// this, care should be taken not to rebuild the relevant widget (e.g. by /// calling [State.setState]) except at the transition point. /// /// See also: /// /// * [Opacity], which does not animate changes in opacity. /// * [AnimatedOpacity], which animates changes in opacity without taking an /// explicit [Animation] argument. /// * [SliverFadeTransition], the sliver version of this widget.ÀiCÀiWÀi_Ài_ ÀieÀioÀioÀi}Ài‹Ài‹#Ài�ÀiµÀiµÀi½Ài©ÀiÍÀiÒÀiàÀiØÀiÓÀiÚÀiÀi€Ë"/// Creates an opacity transition.ÀkZÀiè�yÀkZ�G/// The animation that controls the opacity of the sliver child. /// /// If the current value of the opacity animation is v, the child will be /// painted with an opacity of v. For example, if v is 0.5, the child will be /// blended 50% with its background. Similarly, if v is 0.0, the child will be /// completely transparent.ÀmÀkh�´Àm�z/// Whether the semantic information of the sliver child is always included. /// /// Defaults to false. /// /// When true, regardless of the opacity settings the sliver child's semantic /// information is exposed as if the widget were fully visible. This is /// useful in cases where labels may be hidden during animations that /// would otherwise contribute relevant semantics.Àm_Àm_ÀmlÀm#Àm$Àm#Àm#€ÙÀmLÀn'Àn'Àn4Àn=Àn=(ÀnYÀnÀnÀnÀn€ÒÀnÀoÀo&ÀoÀnÚÀnÛÀnÚÀnÚ�ƒÀnìÀaHÀaH�Àhׇ`/// Animates the opacity of a sliver widget. /// /// {@tool dartpad} /// Creates a [CustomScrollView] with a [SliverFixedExtentList] that uses a /// [SliverFadeTransition] to fade the list in and out. /// /// ** See code in examples/api/lib/widgets/transitions/sliver_fade_transition.0.dart ** /// {@end-tool} /// /// Here's an illustration of the [FadeTransition] widget, the [RenderBox] /// equivalent widget, with it's [opacity] animated by a [CurvedAnimation] set /// to [Curves.fastOutSlowIn]: /// /// {@animation 300 378 https://flutter.github.io/assets-for-api-docs/assets/widgets/fade_transition.mp4} /// /// ## Hit testing /// /// Setting the [opacity] to zero does not prevent hit testing from being /// applied to the descendants of the [SliverFadeTransition] widget. This can be /// confusing for the user, who may not see anything, and may believe the area /// of the interface where the [SliverFadeTransition] is hiding a widget to be /// non-interactive. /// /// With certain widgets, such as [Flow], that compute their positions only when /// they are painted, this can actually lead to bugs (from unexpected geometry /// to exceptions), because those widgets are not painted by the /// [SliverFadeTransition] widget at all when the [opacity] animation reaches /// zero. /// /// To avoid such problems, it is generally a good idea to combine this widget /// with a [SliverIgnorePointer] that one enables when the [opacity] animation /// reaches zero. This prevents interactions with any children in the subtree /// when the sliver is not visible. For performance reasons, when implementing /// this, care should be taken not to rebuild the relevant widget (e.g. by /// calling [State.setState]) except at the transition point. /// /// See also: /// /// * [SliverOpacity], which does not animate changes in opacity. /// * [FadeTransition], the box version of this widget.Àr$Àr5Àr7Àr7 Àr=ÀrDÀrD ÀrJÀqˆÀqˆ€È€�/// Creates a [RelativeRect] tween. /// /// The [begin] and [end] properties may be null; the null value /// is treated as [RelativeRect.fill].ÀrÄÀrÄÀrËÀr¥Àr¦ÀrVÀrV€�Àr¿K/// Returns the value this variable has at the given animation clock value.ÀpdÀpd‚’ÀqU€ä/// An interpolation between two relative rects. /// /// This class specializes the interpolation of [Tween] to /// use [RelativeRect.lerp]. /// /// See [Tween] for a discussion on how to use interpolation objects.Ày;ÀyOÀyWÀyW Ày]ÀygÀyg%ÀyˆÀy“Ày“Ày¡Ày°ÀyµÀyÆÀyÀÀy¶ÀyÂÀyÀy€Á*/// Creates a transition for [Positioned].Àz×Àz`|Àz×`/// The widget below this widget in the tree. /// /// {@macro flutter.widgets.ProxyWidget.child}ÀyÎÀy΀ŒÀz,>/// The animation that controls the child's size and position.ÀzýÀzýÀ{ ÀzãÀzäÀzãÀzãÀz÷ÀrúÀrúˆkÀxÖ…¶/// Animated version of [Positioned] which takes a specific /// [Animation] to transition the child's position from a start /// position to an end position over the lifetime of the animation. /// /// Only works if it's the child of a [Stack]. /// /// Here's an illustration of the [PositionedTransition] widget, with it's [rect] /// animated by a [CurvedAnimation] set to [Curves.elasticInOut]: /// {@animation 300 378 https://flutter.github.io/assets-for-api-docs/assets/widgets/positioned_transition.mp4} /// /// {@tool dartpad} /// The following code implements the [PositionedTransition] as seen in the video /// above: /// /// ** See code in examples/api/lib/widgets/transitions/positioned_transition.0.dart ** /// {@end-tool} /// /// See also: /// /// * [AnimatedPositioned], which transitions a child's position without /// taking an explicit [Animation] argument. /// * [RelativePositionedTransition], a widget that transitions its child's /// position based on the value of a rectangle relative to a bounding box. /// * [SlideTransition], a widget that animates the position of a widget /// relative to its normal position. /// * [AlignTransition], an animated version of an [Align] that animates its /// [Align.alignment] property. /// * [ScaleTransition], a widget that animates the scale of a transformed /// widget. /// * [SizeTransition], a widget that animates its own size and clips and /// aligns its child.À�æÀ‚À‚ À‚ À‚À‚À‚À‚4À‚?À‚?À‚MÀ‚XÀ‚XÀ‚fÀ‚uÀ‚zÀ‚‹À‚…À‚{À‚‡À€öÀ€ö�—€Ú/// Create an animated version of [Positioned]. /// /// Each frame, the [Positioned] widget will be configured to represent the /// current value of the [rect] argument assuming that the stack has the given /// [size].À„yÀ„wÀ„ya/// The [Positioned] widget's offsets are relative to a box of this /// size whose origin is 0,0.À„ûÀ„„|À„û`/// The widget below this widget in the tree. /// /// {@macro flutter.widgets.ProxyWidget.child}À‚“À‚“�mÀƒÙ�/// The animation that controls the child's size and position. /// /// If the animation returns a null [Rect], the rect is assumed to be [Rect.zero]. /// /// See also: /// /// * [size], which gets the size of the box that the [Positioned] widget's /// offsets are relative to.À…!À…!À….À…À…À…À…�&À…À{iÀ{iŠÇÀ€½…0/// Animated version of [Positioned] which transitions the child's position /// based on the value of [rect] relative to a bounding box with the /// specified [size]. /// /// Only works if it's the child of a [Stack]. /// /// Here's an illustration of the [RelativePositionedTransition] widget, with it's [rect] /// animated by a [CurvedAnimation] set to [Curves.elasticInOut]: /// {@animation 300 378 https://flutter.github.io/assets-for-api-docs/assets/widgets/relative_positioned_transition.mp4} /// /// {@tool dartpad} /// The following code implements the [RelativePositionedTransition] as seen in the video /// above: /// /// ** See code in examples/api/lib/widgets/transitions/relative_positioned_transition.0.dart ** /// {@end-tool} /// /// See also: /// /// * [PositionedTransition], a widget that animates its child from a start /// position to an end position over the lifetime of the animation. /// * [AlignTransition], an animated version of an [Align] that animates its /// [Align.alignment] property. /// * [ScaleTransition], a widget that animates the scale of a transformed /// widget. /// * [SizeTransition], a widget that animates its own size and clips and /// aligns its child. /// * [SlideTransition], a widget that animates the position of a widget /// relative to its normal position.ÀŠfÀŠ|ÀŠ„ÀŠ„ ÀŠŠÀŠ”ÀŠ”ÀŠ¢ÀгÀг-ÀЏÀŠçÀŠçÀŠõ ÀŠÃÀŠÕÀŠÖÀ‹À‹ À‹ À‹À‹ À‹À‰ÂÀ‰Â�`€‹/// Creates an animated [DecoratedBox] whose [Decoration] animation updates /// the widget. /// /// See also: /// /// * [DecoratedBox.new]À‹äÀ‹(€ÆÀ‹ä€“/// Animation of the decoration to paint. /// /// Can be created using a [DecorationTween] interpolating typically between /// two [BoxDecoration].ÀŒZÀ‹õmÀŒZH/// Whether to paint the box decoration behind or in front of the child.ÀŒàÀŒi|ÀŒà`/// The widget below this widget in the tree. /// /// {@macro flutter.widgets.ProxyWidget.child}À�À�À�ÀŒìÀŒíÀŒìÀŒì€�À�À†4À†4‡KÀ‰�ƒA/// Animated version of a [DecoratedBox] that animates the different properties /// of its [Decoration]. /// /// Here's an illustration of the [DecoratedBoxTransition] widget, with it's /// [decoration] animated by a [CurvedAnimation] set to [Curves.decelerate]: /// {@animation 300 378 https://flutter.github.io/assets-for-api-docs/assets/widgets/decorated_box_transition.mp4} /// /// {@tool dartpad} /// The following code implements the [DecoratedBoxTransition] as seen in the video /// above: /// /// ** See code in examples/api/lib/widgets/transitions/decorated_box_transition.0.dart ** /// {@end-tool} /// /// See also: /// /// * [DecoratedBox], which also draws a [Decoration] but is not animated. /// * [AnimatedContainer], a more full-featured container that also animates on /// decoration using an internal animation.À“SÀ“bÀ“jÀ“j À“pÀ“zÀ“z/À“ À“°À“°À“¾À“ÊÀ“ÊÀ“ÏÀ“áÀ“áÀ“æÀ“üÀ”À”À” À”À”À’µÀ’µ�d€…/// Creates an animated [Align] whose [AlignmentGeometry] animation updates /// the widget. /// /// See also: /// /// * [Align.new].À• À”¸`À• C/// If non-null, the child's width factor, see [Align.widthFactor].À•vÀ•cÀ•vE/// If non-null, the child's height factor, see [Align.heightFactor].À–À•‰|À–`/// The widget below this widget in the tree. /// /// {@macro flutter.widgets.ProxyWidget.child}À”À”€“À”z6/// The animation that controls the child's alignment.À–&À–&À–3À– À– À– À– €ÍÀ– À�ƒÀ�ƒ‰YÀ’‰„ä/// Animated version of an [Align] that animates its [Align.alignment] property. /// /// Here's an illustration of the [DecoratedBoxTransition] widget, with it's /// [DecoratedBoxTransition.decoration] animated by a [CurvedAnimation] set to /// [Curves.decelerate]: /// /// {@animation 300 378 https://flutter.github.io/assets-for-api-docs/assets/widgets/align_transition.mp4} /// /// {@tool dartpad} /// The following code implements the [AlignTransition] as seen in the video /// above: /// /// ** See code in examples/api/lib/widgets/transitions/align_transition.0.dart ** /// {@end-tool} /// /// See also: /// /// * [AnimatedAlign], which animates changes to the [alignment] without /// taking an explicit [Animation] argument. /// * [PositionedTransition], a widget that animates its child from a start /// position to an end position over the lifetime of the animation. /// * [RelativePositionedTransition], a widget that transitions its child's /// position based on the value of a rectangle relative to a bounding box. /// * [SizeTransition], a widget that animates its own size and clips and /// aligns its child. /// * [SlideTransition], a widget that animates the position of a widget /// relative to its normal position.ÀšÀš6Àš>Àš> ÀšDÀšNÀšN#ÀšlÀšxÀšxÀš†Àš’Àš’Àš—Àš§Àš§Àš¬ÀšÂÀšÂ!ÀšÇÀšêÀšê Àšï Àš·ÀšÒÀšÞÀšßÀ›À›À›À›À›À›À™±À™±�i^/// Creates an animated [DefaultTextStyle] whose [TextStyle] animation updates /// the widget.À›ðÀ›«NÀ›ð0/// How the text should be aligned horizontally.Àœ…Àœ€�Àœ…p/// Whether the text should break at soft line breaks. /// /// See [DefaultTextStyle.softWrap] for more details.ÀœÜÀœ”PÀœÜ./// How visual overflow should be handled. ///À�ŽÀœë€«À�Ž€Ž/// An optional maximum number of lines for the text to span, wrapping if necessary. /// /// See [DefaultTextStyle.maxLines] for more details.ÀžÀ��|Àž`/// The widget below this widget in the tree. /// /// {@macro flutter.widgets.ProxyWidget.child}À› À› €…À›yÀaCÀaFÀaHÀavÀa{Àa�ÀaÝÀbÀbÀbuÀb†Àb‹Àb×Àc'ÀcGÀcLÀc·Àc¼ÀcÐÀcÕÀd ÀdrÀdÂÀeÀe(Àe-ÀeÀeÏÀfÀf`ÀfkÀfpÀfÀÀgÀg_Àg¯ÀgûÀh:Àh?ÀhNÀhSÀh—ÀhÑÀiÀi;Ài[ÀikÀi‡Ài±ÀiÆÀiäÀiæÀj*Àj1Àj~ÀjÏÀk!Àk@ÀkdÀkfÀk¶Àk½Àk×ÀkÞÀl/ÀlzÀlÃÀlùÀmÀm!Àm.ÀmxÀm¡ÀmºÀmñÀmùÀmþÀnÀn ÀnjÀn|Àn—ÀnÑÀnÖÀnØÀnåÀo+ÀoWÀo¨Ào½ÀoÒÀoõÀpÀpHÀpRÀpZÀp_ÀpbÀpdÀp–Àp›ÀpåÀqÀqÀqOÀq†Àq­Àq´ÀqøÀr"ÀrRÀrTÀr£Àr°ÀrõÀrøÀrúÀs7Às†ÀsËÀsÐÀtÀtÀtXÀt›Àu ÀuÀu&ÀuyÀu…ÀuŠÀuãÀuôÀuùÀvÀv ÀvXÀv‰Àv×Àw&ÀwqÀwšÀwéÀx ÀxZÀxjÀx¶ÀxÐÀyÀy3ÀySÀycÀy�Ày©ÀyÊÀyÌÀzÀz\Àz^Àz�Àz–ÀzÈÀzßÀzáÀzîÀ{À{_À{dÀ{gÀ{iÀ{¶À{üÀ|À|À|HÀ|MÀ|¨À|ëÀ}eÀ}jÀ}À}ÚÀ}æÀ}ëÀ~MÀ~^À~cÀ~rÀ~wÀ~ÅÀ À\À€ÀÍÀÝÀ€)À€CÀ€ŽÀ€·À€ôÀ�'À�.À�}À�ÏÀ�ÞÀ‚À‚À‚;À‚TÀ‚nÀ‚�À‚‘À‚ÓÀ‚ÚÀƒ0Àƒ7ÀƒHÀƒOÀƒŸÀƒÂÀ„À„À„KÀ„lÀ„€À„‚À„³À„ºÀ„ìÀ…À…À…À…:À……À…�À…¶À…ÓÀ…òÀ† À†"À†*À†/À†2À†4À†…À†ŸÀ†¤À†òÀ‡@À‡´À‡¹À‡ÎÀˆ#Àˆ/Àˆ4Àˆ�Àˆ¡Àˆ¦ÀˆµÀˆºÀ‰À‰YÀ‰‰À‰ÀÀŠÀŠ"ÀŠ)ÀŠ:ÀŠAÀŠ^ÀŠ€ÀŠ�ÀНÀŠãÀŠýÀ‹$À‹&À‹SÀ‹ZÀ‹ªÀ‹ÆÀ‹ñÀ‹óÀŒ?ÀŒeÀŒgÀŒ˜ÀŒŸÀŒÑÀŒèÀŒêÀŒ÷À�À�yÀ�~À��À�ƒÀ�ÕÀ�ÚÀŽ(ÀŽxÀŽ’ÀŽ—À�À�À�À�kÀ�wÀ�|À�ÐÀ�áÀ�æÀ�õÀ�úÀ�EÀ�vÀ�ÄÀ‘ À‘ZÀ‘©À‘õÀ’À’ZÀ’ƒÀ’³À“À“À“À“-À“4À“KÀ“fÀ“vÀ“¬À“ÆÀ“ÝÀ“õÀ”À”À”WÀ”´À”¶À”ýÀ•À•À•fÀ•…À•‡À•¸À•¿À•ñÀ–À– À–À–?À–RÀ–uÀ––À–¹À–ÎÀ–ÖÀ–ÛÀ–ÞÀ–àÀ—5À—NÀ—SÀ—hÀ—·À—ôÀ—ùÀ˜ZÀ˜kÀ˜pÀ˜À˜„À˜ÕÀ™À™WÀ™tÀ™¯ÀšÀšÀš:ÀšJÀštÀšŽÀš£Àš¾ÀšæÀšúÀ›À›À›^À›§À›©À›ÝÀ›üÀ›þÀœ8Àœ?ÀœxÀœ�Àœ’ÀœÀÀœÇÀœçÀœéÀ�AÀ�HÀ��À�™À�›À�ÌÀ�ÓÀžÀžÀžÀž+ÀžSÀžqÀžŒÀž©ÀžÄÀžßÀžúÀŸÀŸÀŸÀŸÀŸ!ÀŸqÀŸÀŸ„ÀŸÔÀ  À gÀ vÀ {À ÍÀ¡À¡lÀ¡¾À¢À¢ À¢!À¢lÀ¢¾À£À£À£nÀ£À£„À£™À£âÀ¤4À¤_À¤dÀ¤ºÀ¤ËÀ¤ÐÀ¤òÀ¤÷À¥DÀ¥’À¥ÝÀ¦À¦À¦nÀ¦»À§À§'À§,À§tÀ§ÃÀ§×À§ÜÀ§ñÀ¨>À¨ŒÀ¨×À©&À©nÀ©sÀ©ÉÀ©ÚÀ©ßÀ©îÀ©óÀªAÀªÀªÎÀ«À«6À«yÀ«–À«¦À«ÆÀ«âÀ«óÀ«úÀ«üÀ¬1À¬8À¬OÀ¬œÀ¬íÀ­ À­À­iÀ­|À­ƒÀ­”À­›À­æÀ®+À®1À®sÀ®ŒÀ®™À®ËÀ®ÍÀ¯À¯À¯fÀ¯zÀ¯žÀ¯ À¯ÒÀ¯ÙÀ°%À°=À°?À°LÀ°ŽÀ°‘À°“À°ÊÀ°ÏÀ±À±nÀ±¨À±­À±ìÀ²À²À²LÀ²QÀ²žÀ²ðÀ³@À³À³°À³µÀ³×À³ÜÀ´'À´uÀ´ÁÀµÀµ ÀµNÀµ ÀµÅÀµÊÀ¶À¶_À¶sÀ¶xÀ¶�À¶ÚÀ·'À·_À·dÀ·¸À·ÉÀ·ÎÀ·ÝÀ·âÀ¸-À¸{À¸œÀ¸èÀ¹0À¹cÀ¹‡À¹ŽÀ¹ËÀ¹æÀ¹öÀºÀº7ÀºIÀºoÀºqÀºÁÀºÈÀ»À»À»À»À»oÀ»½À»ñÀ¼"À¼$À¼tÀ¼{À¼²À¼¹À¼ÊÀ¼ÑÀ½À½^À½dÀ½¦À½¿À½ÌÀ½þÀ¾À¾BÀ¾IÀ¾˜À¾¬À¾²À¾ôÀ¿ À¿À¿KÀ¿NAnimatedWidget_AnimatedStateSlideTransitionMatrixTransitionScaleTransitionRotationTransitionSizeTransitionFadeTransitionSliverFadeTransitionRelativeRectTweenPositionedTransitionRelativePositionedTransitionDecoratedBoxTransitionAlignTransitionDefaultTextStyleTransitionListenableBuilderAnimatedBuilder;flutter.widgets.transitions.ListenableBuilder.optimizations‚IIf the [builder] function contains a subtree that does not depend on the [listenable], it is more efficient to build that subtree once instead of rebuilding it on every change of the [listenable]. Performance is therefore improved by specifying any widgets that don't need to change using the prebuilt [child] attribute. The [ListenableBuilder] passes this [child] back to the [builder] callback so that it can be incorporated into the build. Using this pre-built [child] is entirely optional, but can improve performance significantly in some cases and is therefore a good practice.9flutter.widgets.transitions.AnimatedBuilder.optimizations‚If the [builder] function contains a subtree that does not depend on the animation passed to the constructor, it's more efficient to build that subtree once instead of rebuilding it on every animation tick. If a pre-built subtree is passed as the [child] parameter, the [AnimatedBuilder] will pass it back to the [builder] function so that it can be incorporated into the build. Using this pre-built child is entirely optional, but can improve performance significantly in some cases and is therefore a good practice.ŸS