9maybeOfofchild onWillPopcanPop onPopInvokedonPopInvokedWithResult onChangedautovalidateMode_callPopInvoked createState _generation_hasInteractedByUser_fields_fieldDidChange _forceRebuild _register _unregisterbuildsaveresetvalidatevalidateGranularly _validate _formStateformupdateShouldNotifybuilderonSavedonResetforceErrorText validator errorBuilder initialValueenabled restorationId_value _errorText _focusNodevalue errorTexthasErrorhasInteractedByUserisValid didChangesetValue restoreState deactivate initStatedidUpdateWidgetdidChangeDependenciesdisposedisabledalwaysonUserInteraction onUnfocusonUserInteractionIfError _kIOSAnnouncementDelayDurationForm FormState _FormScopeFormFieldValidatorFormFieldErrorBuilderFormFieldSetterFormFieldBuilder FormFieldFormFieldStateAutovalidateMode€ˆDurationseconds TextFieldof GlobalKey currentState TextFormFieldElevatedButtonStatefulWidget Deprecateddisabled BuildContext"dependOnInheritedWidgetOfExactType _formStatemaybeOf FlutterErrorWidget ModalRoute WillPopScopeWillPopCallbackPopScopecanPopboolPopInvokedCallbackonPopInvokedWithResultPopInvokedWithResultCallbackObject VoidCallbackvoidcalloverrideStateintSetdynamicwidget onChangedanyfield_hasInteractedByUservaluesetStateaddremove protectedhasErrorautovalidateModealwaysViewonUserInteractiononUserInteractionIfError onUnfocus onPopInvoked_callPopInvokedchild formState generation onWillPop Semantics containerexplicitChildNodesrole SemanticsRoleformsave initialValueresetcontext FlutterView _focusNodehasFocusvalidateisEmpty errorText invalidFields isNotEmpty MediaQuerysupportsAnnounceOf TextDirectionDirectionalitydefaultTargetPlatformTargetPlatformiOS unawaitedFuturedelayedSemanticsServicesendAnnouncement assertiveness Assertiveness assertiveInheritedWidget _generation validatorStringT errorBuilderonSavedbuilderInputDecorationSizedBox helperTexterrorRestorationBucketRestorationScopeRestorationManagerRestorationMixinRestorableStringNRestorableBool FocusNodeforceErrorTextonReset_fieldDidChangeSlider restorationIdregisterForRestoration _unregister deactivate initStatedidUpdateWidgetdidChangeDependenciesWidgetsBindinginstanceaddPostFrameCallbackenableddispose _registervalidationResultSemanticsValidationResultinvalidvalidFocuscanRequestFocus skipTraversal onFocusChange focusNodeStatefulWidgetStateInheritedWidgetRestorationMixinïל²×EÄd�ËQ‹*� dart:async�%dart:ui�8package:flutter/foundation.dart�bpackage:flutter/rendering.dart�Œ basic.dart�¡ binding.dart�¸focus_manager.dart�Õfocus_scope.dart�ðframework.dart‚ media_query.dart‚$navigator.dart‚=pop_scope.dart‚Vrestoration.dart‚qrestoration_properties.dart‚— routes.dart‚­ view.dart‚Áwill_pop_scope.dartÀI«ÀpƒV<€†€¤€¥€Õ����$�6�7�a�Š�‹� �·�Ô�ï‚‚#‚<‚U‚p‚–‚¬‚À‚ނ߃?ƒ…ƒ†ƒžƒ¼ƒ½„ „)„-„|„È……_…­…ç…ë…ÿ†J†�†Ì†Ð‡‡#‡c‡s‡w‡…‡‰‡Éˆˆyˆ�ˆÈˆ×ˆæˆÿ‰‰!‰N‰‹‰‘‰¨‰É‰ÚŠŠQŠWŠkŠЧŠðŠÿ‹@‹ƒ‹�‹œ‹øŒGŒQŒRŒ ŒÏŒÕŒøŒþ� �;�O�Y�_�¯�Ñ�×�ç�íŽ:ŽUމŽáŽÿ���R�g�m���–�¤�Í�à�ê�ð�@�d�j�º�Ë�Ñ�á�ç‘7‘Y‘‡‘º‘ʑ钒\’¯““O“s“‹“–“ž“±“»“Ò“Ö“×”” ”U”[”Œ”¢”£”ó•••g•�•‡•—•�•ê–––H–‚–†–ª–«–Ú–à–ö—F—‹—‘—Ó—å—ë—û˜˜Z˜„˜Î˜ä˜å™%™4™_™š™ž™È™Éš šš%šušºšÀ››››*›0›y›£›ýœDœEœwœ}œÎœâ���T�`�f� �Ë�Ìžž,ž[žižož�ž“ž”ž žÊžÌžÍžøžüŸJŸ‰Ÿ�Ÿ³ŸÙŸð  a b ­ ì¡¡%¡&¡N¡™¡ ¡¡¡¶¡º¡»¡Ô¡æ¡û¢¢¢¢:¢R¢V¢W¢‹¢¦¢ª¢«¢¸¢Ä¢ë£E£F£m£‘£¶£å¤ ¤0¤:¤p¤ ¤Ç¤Ñ¤ø¥¥-¥3¥4¥K¥®¥Î¥õ¦-¦‡¦�¦�¦¸¦Ý§7§@§F§\§s§“§³§Æ§Í§Ñ§Ò¨¨%¨`¨t¨z¨~¨¨Î¨î¨ô©(©.©�©½©Îª ªª$ªFª]ªaªbª­ªØªÞ«««'«t«­«Á«â«÷¬¬#¬$¬o¬¿¬Å­­­A­G­W­š­È­þ®5®V®k®›®µ®¹®º¯¯(¯C¯œ¯�¯Ø°°°h°œ°¿±±3±c±m±£±Ç±Ñ±Ù±ß±à²-²t²­²À²â³*³Y³m³‰³§³Ý³ì³ú´´´?´O´g´�´³´¾´Æ´Ì´Í´ã´ç´é´êµµwµ•µµµ¶µÔµÕ¶#¶>¶W¶X¶†¶¬¶­¶¹··· ·4·8·€·�·“·¶·ò·ó¸-¸1¸?¸C¸—¸¿¹¹¹[¹_¹€¹¹¹º¹ýºº"ºjºkº„ºˆº×»»»e»´»ó»÷¼B¼Š¼Ž¼Î½½k½�½‘½Ÿ½£½ç¾2¾^¾�¾•¾¤¾¿¾Ñ¾ã¾ü¿¿'¿>¿W¿¿—¿à¿áÀ@&À@,À@{À@¥À@ÊÀ@ËÀAÀA4ÀAYÀAZÀAœÀAºÀAÙÀAÚÀB*ÀBtÀBšÀB ÀBõÀCFÀC€ÀC†ÀCÛÀD*ÀD0ÀD@ÀDFÀDŸÀDöÀE:ÀEZÀE[ÀE¨ÀEâÀEèÀF8ÀFˆÀF•ÀF›ÀFèÀG5ÀGƒÀGÐÀHÀH9ÀHcÀHdÀH®ÀH´ÀH÷ÀI8ÀI>ÀIuÀI˜ÀIÅÀIÆÀJÀJÀJ^ÀJÀÀKÀK`ÀKyÀKzÀK°ÀK¶ÀLÀL]ÀL›ÀL±ÀL²ÀLþÀMÀMÀMSÀM›ÀMëÀN&ÀNkÀNqÀN ÀNµÀNàÀNáÀO'ÀO-ÀO|ÀO¦ÀO¬ÀOùÀPJÀPPÀP`ÀPfÀP³ÀPÅÀPäÀPåÀPñÀQ+ÀQ-ÀQ.ÀQ~ÀQ³ÀQÿÀR'ÀRXÀRŠÀRµÀRúÀS&ÀS'ÀSRÀSlÀSmÀS¶ÀS÷ÀT"ÀT(ÀTwÀTÐÀTôÀU!ÀU"ÀUVÀU‡ÀUˆÀUÍÀUÓÀV"ÀVFÀV„ÀV…ÀV¯ÀVµÀVþÀWÀWÀW)ÀW/ÀWqÀWwÀWÎÀX-ÀX.ÀXsÀXƒÀX¤ÀX¨ÀX©ÀXÖÀXçÀXùÀYÀYGÀYfÀYnÀYŠÀY¸ÀY¼ÀY½ÀZ"ÀZÀZ…ÀZ±ÀZÁÀZÇÀ[ À[1À[EÀ[WÀ[jÀ[rÀ[ˆÀ[ŒÀ[�À[¢À[ËÀ[ûÀ\(À\6À\<À\`À\”À\¡À\ÀÀ\ÆÀ\ÊÀ\ËÀ]À]`À]fÀ]¶À]ÿÀ^-À^JÀ^\À^rÀ^›À^£À^ÑÀ^ÕÀ^ÖÀ_ À_À_\À_©À_÷À`BÀ`^À`kÀ`¼À`ØÀ`ìÀ`ðÀ`ñÀ`ýÀa2Àa3Àa@ÀaLÀa•ÀaËÀbÀbÀbÀb)Àb5ÀbKÀbyÀb‘Àb•Àb–Àb£Àb¯ÀbÄÀbÛÀcÀcÀcÀc(Àc4ÀceÀc‹ÀcÈÀcøÀcþÀdÀdÀdÀdÀd=Àd`ÀdžÀdÂÀdýÀeBÀe{Àe“ÀeŸÀe«ÀeÒÀfÀf7Àf]ÀfnÀf}ÀfƒÀf‡ÀfˆÀf”Àf§ÀfÁÀfÛÀfÿÀgÀgÀgÀg&Àg2ÀgYÀgsÀgœÀgÂÀgÙÀh Àh6ÀhOÀh[Àh“ÀhËÀhäÀhðÀiÀiAÀiRÀiZÀi`ÀiaÀi�ÀiŽÀi²ÀiÓÀjÀj.ÀjQÀjXÀjYÀj±ÀjóÀk4ÀkHÀkhÀk…Àk«ÀkÃÀkÝÀkøÀlÀlÀlÀl>ÀlTÀl]ÀlcÀldÀlvÀlzÀl|Àl}ÀlÊÀlâÀmÀmÀmÀmfÀmpÀmqÀm¹ÀmÌÀmáÀmâÀn.Àn@ÀnFÀn ÀnÆÀnÓÀnÔÀoÀoVÀo\Ào¡ÀoðÀp Àp_/// @docImport 'package:flutter/material.dart'; /// @docImport 'package:flutter/services.dart';��$�7�a�‹� �·�Ô�ï‚‚#‚<‚U‚p‚–‚¬‚ÀˆÐˆÔˆÛˆÛ ˆáˆêˆêˆø‰‰ ‰‰‰€’‰š‰¬‰¬‰±‰Í‰Í€œŠ`ŠoŠoŠtŠƒŠƒ"Š•3‰‰‰‰�‰'‰T‰Í‰Î‰ØŠU‰àŠŠ¿Š®ŠÒŠÁŠÕŠåŠæŠ÷Šý‹>‹Š‹'‹‹‹"‹7‹*‹:‹I‹”‹š‹öŒN‹â‹¥‹à‹Ù‹¦‹×‹Î‹¾‹§‹Á‹Ñ‹Ü‹ï‹å‹òŒˆŸˆŸƒ±(/// Creates a container for form fields.”›“ـǔ›€ª/// The widget below this widget in the tree. /// /// This is the root of the widget hierarchy that contains this form. /// /// {@macro flutter.widgets.ProxyWidget.child}––– –„––L–Ÿ”¥‚–Ÿ�H/// Enables the form to veto attempts by the user to dismiss the [ModalRoute] /// that contains the form. /// /// If the callback returns a Future that resolves to false, the form's route /// will not be popped. /// /// See also: /// /// * [WillPopScope], another widget that provides a way to intercept the /// back button.˜Ü–­‚5˜Ü‚/// {@macro flutter.widgets.PopScope.canPop} /// /// {@tool dartpad} /// This sample demonstrates how to use this parameter to show a confirmation /// dialog when a navigation pop would cause form data to be lost. /// /// ** See code in examples/api/lib/widgets/form/form.1.dart ** /// {@end-tool} /// /// See also: /// /// * [onPopInvokedWithResult], which also comes from [PopScope] and is often used in /// conjunction with this parameter. /// * [PopScope.canPop], which is what [Form] delegates to internally.™'™(™2™œ™8™c™º˜ç€ß™º=/// {@macro flutter.widgets.navigator.onPopInvokedWithResult}œ,™Ë‚wœ,‚/// {@macro flutter.widgets.navigator.onPopInvokedWithResult} /// /// {@tool dartpad} /// This sample demonstrates how to use this parameter to show a confirmation /// dialog when a navigation pop would cause form data to be lost. /// /// ** See code in examples/api/lib/widgets/form/form.1.dart ** /// {@end-tool} /// /// See also: /// /// * [canPop], which also comes from [PopScope] and is often used in /// conjunction with this parameter. /// * [PopScope.onPopInvokedWithResult], which is what [Form] delegates to internally.œøœG€ºœø€”/// Called when one of the form fields changes. /// /// In addition to this callback being invoked, all the form fields themselves /// will rebuild.�¹�€Ã�¹€“/// Used to enable/disable form fields auto validation and update their error /// text. /// /// {@macro flutter.widgets.FormField.autovalidateMode}ŽqŽqŽ~ŒTŒT‚®Ži�à/// Returns the [FormState] of the closest [Form] widget which encloses the /// given context, or null if none is found. /// /// Typical usage is as follows: /// /// ```dart /// FormState? form = Form.maybeOf(context); /// form?.save(); /// ``` /// /// Calling this method will create a dependency on the closest [Form] in the /// [context], if there is one. /// /// See also: /// /// * [Form.of], which is similar to this method, but asserts if no [Form] /// ancestor is found.‘o‘o‘|��„Ï‘l‚,/// Returns the [FormState] of the closest [Form] widget which encloses the /// given context. /// /// Typical usage is as follows: /// /// ```dart /// FormState form = Form.of(context); /// form.save(); /// ``` /// /// If no [Form] ancestor is found, this will assert in debug mode, and throw /// an exception in release mode. /// /// Calling this method will create a dependency on the closest [Form] in the /// [context]. /// /// See also: /// /// * [Form.maybeOf], which is similar to this method, but returns null if no /// [Form] ancestor is found.�ã�ã �è�ð�ð�ø�Î�΀Ä�Óž–ž—ž–ž–3ž¬ƒ½ƒ½›ˆ„»/// An optional container for grouping together multiple form field widgets /// (e.g. [TextField] widgets). /// /// Each individual form field should be wrapped in a [FormField] widget, with /// the [Form] widget as a common ancestor of all of those. Call methods on /// [FormState] to save, reset, or validate each [FormField] that is a /// descendant of this [Form]. To obtain the [FormState], you may use [Form.of] /// with a context whose ancestor is the [Form], or pass a [GlobalKey] to the /// [Form] constructor and call [GlobalKey.currentState]. /// /// {@tool dartpad} /// This example shows a [Form] with one [TextFormField] to enter an email /// address and an [ElevatedButton] to submit the form. A [GlobalKey] is used here /// to identify the [Form] and validate input. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/widgets/form.png) /// /// ** See code in examples/api/lib/widgets/form/form.0.dart ** /// {@end-tool} /// /// See also: /// /// * [GlobalKey], a key that is unique across the entire app. /// * [FormField], a single form field widget that maintains the current state. /// * [TextFormField], a convenience widget that wraps a [TextField] widget in a [FormField].ŸíŸßŸÛŸß Ÿ÷Ÿò!Ÿ÷ ] ^ D \ E S [ T : H :  î î€Ë ó¡½¡½I¡Â¢¢¢1¢ ¢ K¢¢j¢j¢‚¢Y¢YP¢^¢Ó¢Ó¢à¢­¢®¢º¢»¢­¢­…#¢Í§Ô§Ô€©¨@/// Saves every [FormField] that is a descendant of this [Form].¨�¨��ß©Ä�//// Resets every [FormField] that is a descendant of this [Form] back to its /// [FormField.initialValue]. /// /// The [Form.onChanged] callback will be called. /// /// If the form's [Form.autovalidateMode] property is [AutovalidateMode.always], /// the fields will all be revalidated after being reset.ªdªd�¾«´�:/// Validates every [FormField] that is a descendant of this [Form], and /// returns true if there are no errors. /// /// The form will rebuild to report the results. /// /// See also: /// * [validateGranularly], which also validates descendant [FormField]s, /// but instead returns a [Set] of fields with errors.¬&¬&‚’­ç��/// Validates every [FormField] that is a descendant of this [Form], and /// returns a [Set] of [FormFieldState] of the invalid field(s) only, if any. /// /// This method can be useful to highlight field(s) with errors. /// /// The form will rebuild to report the results. /// /// See also: /// * [validate], which also validates descendant [FormField]s, /// and return true if there are no errors.®Ë®Ë®×®Þ®Þ+®ü®¼®¼†*®ÁžÍžÍ–Ÿ¹€å/// State associated with a [Form] widget. /// /// A [FormState] object can be used to [save], [reset], and [validate] every /// [FormField] that is a descendant of the associated [Form]. /// /// Typically obtained via [Form.of].µµ'µ)µ)µ8µ?µ?µRµ]µ]µjµˆµ}µŠµ§µ›µ©µµ€�µÈµ¸µÈ¶Jµ×~¶Jd/// Incremented every time a form field has changed. This lets us know when /// to rebuild the form.¶Z¶ZQ¶‘+/// The [Form] associated with this widget.¶Ó¶Ó¶Þ¶¯¶°¶¯¶¯V¶À´ê´ê‚´ð¾‰¾’ ¾™¾™ ¾Ÿ¾¨¾¨¾¶¾Ã¾Ã ¾È¾Õ¾Õ ¾Ú¾ç¾ç¾ì¿¿¿¿¿¿¿+¿+¿0¿B¿B¿G¿[¿["¿m¿ƒ¿ƒ¿ˆ¿Q¿¯¿ž¿Â¿±¿Å¿Õ¿Ö¾`¾`� /// Creates a single form field.¾B¾B¾B À@Á¿ã€åÀ@Á€»/// Function that returns the widget representing this form field. /// /// It is passed the form field state as input, containing the current value /// and validation state of this field.ÀAPÀ@Í€ŠÀAPd/// An optional method to call with the final value when the form is saved via /// [FormState.save].ÀAÐÀA\{ÀAÐ[/// An optional method to call when the form field is reset via /// [FormFieldState.reset].ÀEJÀA܃|ÀEJƒ?/// An optional property that forces the [FormFieldState] into an error state /// by directly setting the [FormFieldState.errorText] property without /// running the validator function. /// /// When the [forceErrorText] property is provided, the [FormFieldState.errorText] /// will be set to the provided value, causing the form field to be considered /// invalid and to display the error message specified. /// /// When [validator] is provided, [forceErrorText] will override any error that it /// returns. [validator] will not be called unless [forceErrorText] is null. /// /// See also: /// /// * [InputDecoration.errorText], which is used to display error messages in the text /// field's decoration without effecting the field's state. When [forceErrorText] is /// not null, it will override [InputDecoration.errorText] value.ÀHXÀE]ƒÀHX‚Ã/// An optional method that validates an input. Returns an error string to /// display if the input is invalid, or null otherwise. /// /// The returned value is exposed by the [FormFieldState.errorText] property. /// The [TextFormField] uses this to override the [InputDecoration.errorText] /// value. /// /// Alternating between error and normal state can cause the height of the /// [TextFormField] to change if no other subtext decoration is set on the /// field. To create a field whose height is fixed regardless of whether or /// not an error is displayed, either wrap the [TextFormField] in a fixed /// height parent like [SizedBox], or set the [InputDecoration.helperText] /// parameter to a space.ÀI·ÀHf�]ÀI·�%/// Function that returns the widget representing the error to display. /// /// It is passed the form field validator error string as input. /// The resulting widget is passed to [InputDecoration.error]. /// /// If null, the validator error string is passed to /// [InputDecoration.errorText].ÀKkÀIÈ�¯ÀKk��/// An optional value to initialize the form field to, or null otherwise. /// /// The `initialValue` affects the form field's state in two cases: /// 1. When the form field is first built, `initialValue` determines the field's initial state. /// 2. When [FormFieldState.reset] is called (either directly or by calling /// [FormFieldState.reset]), the form field is reset to this `initialValue`.ÀL¨ÀK|�3ÀL¨�/// Whether the form is able to receive user input. /// /// Defaults to true. If [autovalidateMode] is not [AutovalidateMode.disabled], /// the field will be auto validated. Likewise, if this field is false, the widget /// will not be validated regardless of [autovalidateMode].ÀNÎÀL´‚*ÀNÎ�ì/// Used to enable/disable this form field auto validation and update its /// error text. /// /// {@template flutter.widgets.FormField.autovalidateMode} /// If [AutovalidateMode.onUserInteraction], this FormField will only /// auto-validate after its content changes. If [AutovalidateMode.always], it /// will auto-validate even without user interaction. If /// [AutovalidateMode.disabled], auto-validation will be disabled. /// /// Defaults to [AutovalidateMode.disabled]. /// {@endtemplate}ÀPÕÀNã�ÿÀPÕ�Ë/// Restoration ID to save and restore the state of the form field. /// /// Setting the restoration ID to a non-null value results in whether or not /// the form field validation persists. /// /// 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.ÀPçÀPèÀPçÀPçCÀQºkºk–Á¾8ƒÆ/// A single form field. /// /// This widget maintains the current state of the form field, so that updates /// and validation errors are visually reflected in the UI. /// /// When used inside a [Form], you can use methods on [FormState] to query or /// manipulate the form data as a whole. For example, calling [FormState.save] /// will invoke each [FormField]'s [onSaved] callback in turn. /// /// Use a [GlobalKey] with [FormField] if you want to retrieve its current /// state, for example if you want one form field to depend on another. /// /// A [Form] ancestor is not required. The [Form] allows one to /// save, reset, or validate multiple fields at once. To use without a [Form], /// pass a [GlobalKey] to the constructor and use [GlobalKey.currentState] to /// save or reset the form field. /// /// See also: /// /// * [Form], which is the widget that aggregates the form fields. /// * [TextField], which is a commonly used form field for entering text.ÀQÈÀQÈÀQÈÀRÀRÀRÀR ÀR$ÀR ÀR©ÀRŒ'ÀR©ÀRãÀRñÀR÷ÀRòÀRÌÀR·AÀRÌÀSÀS"ÀS#ÀS ÀRü(ÀS ÀS)ÀS)BÀS[(/// The current value of the form field.ÀSoÀSo�±ÀU�x/// The current validation error returned by the [FormField.validator] /// callback, or the manually provided error message using the /// [FormField.forceErrorText] property. /// /// This property is automatically updated when [validate] is called and the /// [FormField.validator] callback is invoked, or If [FormField.forceErrorText] is set /// directly to a non-null value.ÀU$ÀU$bÀUa1/// True if this field has any validation errors.ÀUŠÀUŠ€ùÀVQ€µ/// Returns true if the user has modified the value of this field. /// /// This only updates to true once [didChange] has been called and resets to /// false when [reset] is called.ÀV‡ÀV‡�¥ÀWÙ�4/// True if the current value is valid. /// /// This will not set [errorText] or [hasError] and it will not update /// error display. /// /// See also: /// /// * [validate], which may update [errorText] and [hasError]. /// /// * [FormField.forceErrorText], which also may update [errorText] and [hasError].À`óÀ`ôÀ`óÀ`ó>Àa ÀX0ÀX0wÀXzB/// Calls the [FormField]'s onSaved method with the current value.ÀX«ÀX«�ÀXÝ*/// Resets the field to its initial value.ÀY¿ÀY¿�ÌÀ[8�c/// Calls [FormField.validator] to set the [errorText] only if [FormField.forceErrorText] is null. /// When [FormField.forceErrorText] is not null, [FormField.validator] will not be called. /// /// Returns true if there were no errors. /// See also: /// /// * [isValid], which passively gets the validity without setting /// [errorText] or [hasError].À[�À[��:À[”À^>À^>À^AÀ\ÍÀ\Í‚À^4�U/// Updates this field's state to the new value. Useful for responding to /// child widget changes, e.g. [Slider]'s [Slider.onChanged] argument. /// /// Triggers the [Form.onChanged] callback and, if [Form.autovalidateMode] is /// [AutovalidateMode.always] or [AutovalidateMode.onUserInteraction], /// revalidates all the fields of the form.À`ÌÀ`ÌÀ`ÏÀ``À`aÀ^ØÀ^Ø‚À`Ã�y/// Sets the value associated with this form field. /// /// This method should only be called by subclasses that need to update /// the form field value due to state changes identified during the widget /// build phase, when calling `setState` is prohibited. In all other cases, /// the value should be set by a call to [didChange], which ensures that /// `setState` is called.Àa`Àa`ÀasÀa~Àa~ÀaƒÀa5Àa6ÀaBÀaCÀa5Àa5€åÀaSÀbÀbÀb+Àb,ÀbÀbvÀb<Àb˜Àb™Àb¥Àb¦Àb˜Àb˜€�Àb¶ÀcKÀcKÀcXÀcÀcÀc*Àc+ÀcÀc€äÀc;ÀdÀdÀdÀdÀdÀd‚�Àd#ÀfŠÀf‹ÀfŠÀfŠ€�Àf›ÀgAÀgAÀgNÀgÀgÀg(Àg)ÀgÀg…^Àg;ÀQ.ÀQ.›MÀQ¹€„/// The current state of a [FormField]. Passed to the [FormFieldBuilder] method /// for use in constructing the form field's widget.ÀläÀlä-Àm "/// No auto validation will occur.ÀmÀmXÀmhO/// Used to auto-validate [Form] and [FormField] even without user interaction.ÀmsÀmslÀmÎV/// Used to auto-validate [Form] and [FormField] only after each user /// interaction.ÀmäÀmä€íÀnÈ€Ù/// Used to auto-validate [Form] and [FormField] only after the field has /// lost focus. /// /// In order to validate all fields of a [Form] after the first time the user interacts /// with one, use [always] instead.ÀnÖÀnÖ�4Àoò�/// Used to auto-validate [Form] and [FormField] after each user /// interaction, only if the the field already has an error. /// /// This is useful for reducing unnecessary validation calls while /// still ensuring errors are re-checked when the user attempts to fix them.Àl}Àl}ƒ�ÀlÏL/// Used to configure the auto validation of [FormField] and [Form] widgets.ƒoƒwƒ‚ƒƒxƒ�ƒNƒ?DƒN·Ñ·Ñ·Ñ· · €è·¾€¬/// Signature for validating a form field. /// /// Returns an error string to display if the input is invalid, or null /// otherwise. /// /// Used by [FormField.validator].·ó·ó�$¸Ç€Ë/// Signature for a callback that builds an error widget. /// /// See also: /// /// * [FormField.errorBuilder], which is of this type, and passes the result error /// given by [TextFormField.validator].¹˜¹˜¹˜¹¹€Ÿ¹ˆf/// Signature for being notified when a form field changes value. /// /// Used by [FormField.onSaved].º;º;º;¹º¹º€¯º*g/// Signature for building the widget representing the form field. /// /// Used by [FormField.builder].€®package:flutter/material.dart€Þpackage:flutter/services.dartƒV<€†€¤€¥€Õ����$�6�7�a�Š�‹� �·�Ô�ï‚‚#‚<‚U‚p‚–‚¬‚À‚ނ߃?ƒ…ƒ†ƒžƒ¼ƒ½„ „)„-„|„È……_…­…ç…ë…ÿ†J†�†Ì†Ð‡‡#‡c‡s‡w‡…‡‰‡Éˆˆyˆ�ˆÈˆ×ˆæˆÿ‰‰!‰N‰‹‰‘‰¨‰É‰ÚŠŠQŠWŠkŠЧŠðŠÿ‹@‹ƒ‹�‹œ‹øŒGŒQŒRŒ ŒÏŒÕŒøŒþ� �;�O�Y�_�¯�Ñ�×�ç�íŽ:ŽUމŽáŽÿ���R�g�m���–�¤�Í�à�ê�ð�@�d�j�º�Ë�Ñ�á�ç‘7‘Y‘‡‘º‘ʑ钒\’¯““O“s“‹“–“ž“±“»“Ò“Ö“×”” ”U”[”Œ”¢”£”ó•••g•�•‡•—•�•ê–––H–‚–†–ª–«–Ú–à–ö—F—‹—‘—Ó—å—ë—û˜˜Z˜„˜Î˜ä˜å™%™4™_™š™ž™È™Éš šš%šušºšÀ››››*›0›y›£›ýœDœEœwœ}œÎœâ���T�`�f� �Ë�Ìžž,ž[žižož�ž“ž”ž žÊžÌžÍžøžüŸJŸ‰Ÿ�Ÿ³ŸÙŸð  a b ­ ì¡¡%¡&¡N¡™¡ ¡¡¡¶¡º¡»¡Ô¡æ¡û¢¢¢¢:¢R¢V¢W¢‹¢¦¢ª¢«¢¸¢Ä¢ë£E£F£m£‘£¶£å¤ ¤0¤:¤p¤ ¤Ç¤Ñ¤ø¥¥-¥3¥4¥K¥®¥Î¥õ¦-¦‡¦�¦�¦¸¦Ý§7§@§F§\§s§“§³§Æ§Í§Ñ§Ò¨¨%¨`¨t¨z¨~¨¨Î¨î¨ô©(©.©�©½©Îª ªª$ªFª]ªaªbª­ªØªÞ«««'«t«­«Á«â«÷¬¬#¬$¬o¬¿¬Å­­­A­G­W­š­È­þ®5®V®k®›®µ®¹®º¯¯(¯C¯œ¯�¯Ø°°°h°œ°¿±±3±c±m±£±Ç±Ñ±Ù±ß±à²-²t²­²À²â³*³Y³m³‰³§³Ý³ì³ú´´´?´O´g´�´³´¾´Æ´Ì´Í´ã´ç´é´êµµwµ•µµµ¶µÔµÕ¶#¶>¶W¶X¶†¶¬¶­¶¹··· ·4·8·€·�·“·¶·ò·ó¸-¸1¸?¸C¸—¸¿¹¹¹[¹_¹€¹¹¹º¹ýºº"ºjºkº„ºˆº×»»»e»´»ó»÷¼B¼Š¼Ž¼Î½½k½�½‘½Ÿ½£½ç¾2¾^¾�¾•¾¤¾¿¾Ñ¾ã¾ü¿¿'¿>¿W¿¿—¿à¿áÀ@&À@,À@{À@¥À@ÊÀ@ËÀAÀA4ÀAYÀAZÀAœÀAºÀAÙÀAÚÀB*ÀBtÀBšÀB ÀBõÀCFÀC€ÀC†ÀCÛÀD*ÀD0ÀD@ÀDFÀDŸÀDöÀE:ÀEZÀE[ÀE¨ÀEâÀEèÀF8ÀFˆÀF•ÀF›ÀFèÀG5ÀGƒÀGÐÀHÀH9ÀHcÀHdÀH®ÀH´ÀH÷ÀI8ÀI>ÀIuÀI˜ÀIÅÀIÆÀJÀJÀJ^ÀJÀÀKÀK`ÀKyÀKzÀK°ÀK¶ÀLÀL]ÀL›ÀL±ÀL²ÀLþÀMÀMÀMSÀM›ÀMëÀN&ÀNkÀNqÀN ÀNµÀNàÀNáÀO'ÀO-ÀO|ÀO¦ÀO¬ÀOùÀPJÀPPÀP`ÀPfÀP³ÀPÅÀPäÀPåÀPñÀQ+ÀQ-ÀQ.ÀQ~ÀQ³ÀQÿÀR'ÀRXÀRŠÀRµÀRúÀS&ÀS'ÀSRÀSlÀSmÀS¶ÀS÷ÀT"ÀT(ÀTwÀTÐÀTôÀU!ÀU"ÀUVÀU‡ÀUˆÀUÍÀUÓÀV"ÀVFÀV„ÀV…ÀV¯ÀVµÀVþÀWÀWÀW)ÀW/ÀWqÀWwÀWÎÀX-ÀX.ÀXsÀXƒÀX¤ÀX¨ÀX©ÀXÖÀXçÀXùÀYÀYGÀYfÀYnÀYŠÀY¸ÀY¼ÀY½ÀZ"ÀZÀZ…ÀZ±ÀZÁÀZÇÀ[ À[1À[EÀ[WÀ[jÀ[rÀ[ˆÀ[ŒÀ[�À[¢À[ËÀ[ûÀ\(À\6À\<À\`À\”À\¡À\ÀÀ\ÆÀ\ÊÀ\ËÀ]À]`À]fÀ]¶À]ÿÀ^-À^JÀ^\À^rÀ^›À^£À^ÑÀ^ÕÀ^ÖÀ_ À_À_\À_©À_÷À`BÀ`^À`kÀ`¼À`ØÀ`ìÀ`ðÀ`ñÀ`ýÀa2Àa3Àa@ÀaLÀa•ÀaËÀbÀbÀbÀb)Àb5ÀbKÀbyÀb‘Àb•Àb–Àb£Àb¯ÀbÄÀbÛÀcÀcÀcÀc(Àc4ÀceÀc‹ÀcÈÀcøÀcþÀdÀdÀdÀdÀd=Àd`ÀdžÀdÂÀdýÀeBÀe{Àe“ÀeŸÀe«ÀeÒÀfÀf7Àf]ÀfnÀf}ÀfƒÀf‡ÀfˆÀf”Àf§ÀfÁÀfÛÀfÿÀgÀgÀgÀg&Àg2ÀgYÀgsÀgœÀgÂÀgÙÀh Àh6ÀhOÀh[Àh“ÀhËÀhäÀhðÀiÀiAÀiRÀiZÀi`ÀiaÀi�ÀiŽÀi²ÀiÓÀjÀj.ÀjQÀjXÀjYÀj±ÀjóÀk4ÀkHÀkhÀk…Àk«ÀkÃÀkÝÀkøÀlÀlÀlÀl>ÀlTÀl]ÀlcÀldÀlvÀlzÀl|Àl}ÀlÊÀlâÀmÀmÀmÀmfÀmpÀmqÀm¹ÀmÌÀmáÀmâÀn.Àn@ÀnFÀn ÀnÆÀnÓÀnÔÀoÀoVÀo\Ào¡ÀoðÀp Àp_kIOSAnnouncementDelayDurationForm FormState _FormScope FormFieldFormFieldStateAutovalidateMode*flutter.widgets.FormField.autovalidateMode�)If [AutovalidateMode.onUserInteraction], this FormField will only auto-validate after its content changes. If [AutovalidateMode.always], it will auto-validate even without user interaction. If [AutovalidateMode.disabled], auto-validation will be disabled. Defaults to [AutovalidateMode.disabled].Œ3