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 FormFieldFormFieldStateAutovalidateModeDurationseconds 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 focusNodeStatefulWidgetStateInheritedWidgetRestorationMixinEdQ* dart:async%dart:ui8package:flutter/foundation.dartbpackage:flutter/rendering.dart basic.dart binding.dartfocus_manager.dartfocus_scope.dartframework.dart media_query.dart$navigator.dart=pop_scope.dartVrestoration.dartqrestoration_properties.dart routes.dart view.dartwill_pop_scope.dartIpV<Ձ$67aԁ#WX 48-1?C[_"jk׻eBνk2^Ѿ'>W@&@,@{@@@AA4AYAZAAAAB*BtBBBCFCCCD*D0D@DFDDE:EZE[EEEF8FFFFG5GGHH9HcHdHHHI8I>IuIIIJJJ^JKK`KyKzKKLL]LLLLMMMSMMN&NkNqNNNNO'O-O|OOOPJPPP`PfPPPPPQ+Q-Q.Q~QQR'RXRRRS&S'SRSlSmSST"T(TwTTU!U"UVUUUUV"VFVVVVVWWW)W/WqWwWX-X.XsXXXXXXXYYGYfYnYYYYZ"ZZZZZ[ [1[E[W[j[r[[[[[[\(\6\<\`\\\\\\]]`]f]]^-^J^\^r^^^^^_ __\__`B`^`k``````a2a3a@aLaabbbb)b5bKbybbbbbbbcccc(c4ceccccddddd=d`dddeBe{eeeeff7f]fnf}ffffffffgggg&g2gYgsgggh h6hOh[hhhhiiAiRiZi`iaiiiijj.jQjXjYjjk4kHkhkkkkkllll>lTl]lcldlvlzl|l}llmmmmfmpmqmmmmn.n@nFnnnnooVo\oop p_/// @docImport 'package:flutter/material.dart'; /// @docImport 'package:flutter/services.dart';$7a#<Upۈ  ͉̀`oot"3'T͉Ή؊UҊՊ>'"7*:IN⋥ً׋΋ы܋(/// 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} LH/// 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.'(28c=/// {@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}qq~TTi/// 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.oo|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\ES[T:H: I1 KjjYYP^Ӣ#ԧԀ@/// 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.dd:/// 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.ZZQ+/// The [Form] associated with this widget.ӶV þ վ ++0BBG[["mQ¿ſտ־`` /// Creates a single form field.BBB @@/// 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].AA\{A[/// An optional method to call when the form field is reset via /// [FormFieldState.reset].EJA܃|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.HXE]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.IHf]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].KkIȁ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`.LK|3L/// 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].NL*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}PNPՁ/// 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.PPPPCQkk8/// 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.QQQRRRR R$R RR'RRRRRRRARSS"S#S R(S S)S)BS[(/// The current value of the form field.SoSoUx/// 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$bUa1/// True if this field has any validation errors.UUVQ/// 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.VVWف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 X0X0wXzB/// Calls the [FormField]'s onSaved method with the current value.XXX*/// Resets the field to its initial value.YY[8c/// 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\\͂^4U/// 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`asa~a~aa5a6aBaCa5a5aSbbb+b,bbvb<bbbbbbbcKcKcXccc*c+ccc;ddddddd#fffffgAgAgNggg(g)gg^g;Q.Q.MQ/// The current state of a [FormField]. Passed to the [FormFieldBuilder] method /// for use in constructing the form field's widget.ll-m "/// No auto validation will occur.mmXmhO/// Used to auto-validate [Form] and [FormField] even without user interaction.msmslmV/// Used to auto-validate [Form] and [FormField] only after each user /// interaction.mmnȀ/// 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.nnց4o/// 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}lL/// Used to configure the auto validation of [FormField] and [Form] widgets.owxN?DNѷ /// 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.dartpackage:flutter/services.dartV<Ձ$67aԁ#WX 48-1?C[_"jk׻eBνk2^Ѿ'>W@&@,@{@@@AA4AYAZAAAAB*BtBBBCFCCCD*D0D@DFDDE:EZE[EEEF8FFFFG5GGHH9HcHdHHHI8I>IuIIIJJJ^JKK`KyKzKKLL]LLLLMMMSMMN&NkNqNNNNO'O-O|OOOPJPPP`PfPPPPPQ+Q-Q.Q~QQR'RXRRRS&S'SRSlSmSST"T(TwTTU!U"UVUUUUV"VFVVVVVWWW)W/WqWwWX-X.XsXXXXXXXYYGYfYnYYYYZ"ZZZZZ[ [1[E[W[j[r[[[[[[\(\6\<\`\\\\\\]]`]f]]^-^J^\^r^^^^^_ __\__`B`^`k``````a2a3a@aLaabbbb)b5bKbybbbbbbbcccc(c4ceccccddddd=d`dddeBe{eeeeff7f]fnf}ffffffffgggg&g2gYgsgggh h6hOh[hhhhiiAiRiZi`iaiiiijj.jQjXjYjjk4kHkhkkkkkllll>lTl]lcldlvlzl|l}llmmmmfmpmqmmmmn.n@nFnnnnooVo\oop 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