EvaluelabellabelWidgetleadingIcontrailingIconenabledstylewidth
menuHeighthintText
helperText	errorTextselectedTrailingIconenableFilterenableSearch	textStyle	textAligninputDecorationTheme	menuStyle
controllerinitialSelection
onSelected	focusNoderequestFocusOnTapdropdownMenuEntriesexpandedInsetsfilterCallbacksearchCallbackinputFormatterscreateState
_anchorKey_leadingKeybuttonItemKeys_controller_enableFilterfilteredEntries_initialMenucurrentHighlightleadingPadding_menuHasEnabledItem_localTextEditingController	initStatedisposedidUpdateWidgetcanRequestFocusrefreshLeadingPaddingscrollToHighlightgetWidthfiltersearch_buildButtonshandleUpKeyInvokehandleDownKeyInvokehandlePressedbuildcreateRenderObjectupdateRenderObject_widthsetupParentDataperformLayoutpaintcomputeDryLayoutcomputeMinIntrinsicWidthcomputeMaxIntrinsicWidthcomputeMinIntrinsicHeightcomputeMaxIntrinsicHeighthitTestChildrencontext_themeFilterCallbackSearchCallback_kMenuTraversalShortcuts_kMinimumWidth_kDefaultHorizontalPaddingDropdownMenuEntryDropdownMenu_DropdownMenuState_ArrowUpIntent_ArrowDownIntent_DropdownMenuBody_DropdownMenuBodyParentData_RenderDropdownMenuBody_DropdownMenuDefaultsM3€õfilterCallbackListTStringsearchCallbackintMapShortcutActivatorIntentLogicalKeySetLogicalKeyboardKeyarrowUp	arrowDowndoubledropdownMenuEntriesTextmaxLinesoverflowWidgetlabelboolButtonStyle	TextField
MenuAnchorInputDecorationMenuItemButtonStatefulWidget
prefixIcon
suffixIconInputDecorationTheme	TextAlignstartIconIconsarrow_drop_down
helperTextInputDecoratorchild	errorTextarrow_drop_up	TextTheme	bodyLarge	TextStyle	MenuStyleTextEditingControllerValueChanged	FocusNode
FocusScopecanRequestFocuswidth
EdgeInsetszeroenableFilterenableSearch
ListenableTextEditingValueTextInputFormatteroverrideState	GlobalKeyMenuControllervoid	initStatewidget
controllergeneratelengthanyentryenabled
indexWherevalueinitialSelectiontext	selectionTextSelection	collapsedoffsetdisposedidUpdateWidgetleadingIcon	focusNoderequestFocusOnTapThemeofcontextplatformTargetPlatformiOSandroidfuchsiamacOSlinuxwindowsWidgetsBindinginstanceaddPostFrameCallbackmountedsetState
debugLabelBuildContextcurrentContext
ScrollableensureVisible	RenderBoxfindRenderObjecthasSizesizetoLowerCasewherecontainstoListisEmptyTextDirectionirtl	styleFrompaddingonlyleftrightltrstyleColorforegroundColorresolveMaterialStatefocusedcolorScheme	onSurfacelabelWidgetConstrainedBoxconstraintsBoxConstraintsmaxWidthfocusedIndexcopyWithbackgroundColorMaterialStatePropertyAllwithOpacitykeyenableScrollToHighlighttrailingIcon	onPressed
onSelectedcallrequestFocusOnHoveraddisOpenclose
isNotEmptyopenDirectionalityDropdownMenuThemeDataDropdownMenuTheme	textStyle	menuStyleminimumSizeSize
menuHeightmaximumSizeinfinityinputDecorationThemeMouseCursorSystemMouseCursorsclickmenuChildrencrossAxisUnconstrainedbuilderPaddingall
IconButton
isSelectediconselectedIconselectedTrailingIconshrinkmouseCursorenableInteractiveSelection	textAligntextAlignVerticalTextAlignVerticalcenteronEditingCompleteonTap	onChangedinputFormatters
decorationhintTextSizedBoxapplyDefaultsexpandedInsetschildrentopbottomAlign	alignmentAlignmentDirectionaltopStart	Shortcuts	shortcutsActionsactionsTypeActionCallbackActiononInvokeMultiChildRenderObjectWidgetContainerBoxParentDataContainerRenderObjectMixinRenderBoxContainerDefaultsMixinmarkNeedsLayout
parentData
firstChildgetMaxIntrinsicWidth	maxHeightmingetMaxIntrinsicHeightlayoutparentUsesSizeheightnextSiblingOffsetmax	constrainPaintingContext
paintChildgetDryLayoutgetMinIntrinsicWidth	lastChildchildBeforegetMinIntrinsicHeightBoxHitTestResultaddWithPaintOffsetpositionhitTesttransformed	ThemeData	textThemeinfinitevisualDensityVisualDensitystandardborderOutlineInputBorder	StatefulWidgetStateIntentMultiChildRenderObjectWidgetContainerBoxParentData	RenderBoxContainerRenderObjectMixinRenderBoxContainerDefaultsMixinDropdownMenuThemeDataAÏ)xÄ)í	t(�Æt<¨    €ª   €¼€¿math€¿	dart:math  €É   package:flutter/rendering.dart  €ó   package:flutter/services.dart  �   package:flutter/widgets.dart  �F   button_style.dart  �c   dropdown_menu_theme.dart  �‡   icon_button.dart  �£   
icons.dart  �¹   input_border.dart  �Ö   input_decorator.dart  �ö   material_state.dart  ‚   menu_anchor.dart  ‚1   menu_style.dart  ‚L   text_field.dart  ‚g   
theme.dart  ‚}   theme_data.dartÀ M~ À §]„� =€ˆ€§€©€Æ€È€ò��C�E�b�†�¢�¸�Õ�õ‚‚0‚K‚f‚|‚—‚™‚²‚Ñ‚ñ‚óƒ@ƒ]ƒbƒŽ„„„R„y„~„¸„½„é…G…I…Ž…í†3†}†�†ƒ†©†«†Ü†Þ‡3‡8‡G‡L‡b‡€‡Î‡ëˆˆˆ6ˆMˆeˆˆ�ˆ—ˆ™ˆÆˆÍ‰‰(‰*‰e‰|‰~‰À‰Ç‰ÞŠ ŠhŠ¢Š©‹‹%‹C‹E‹z‹˜‹š‹Î‹í‹ïŒ$Œ+ŒƒŒÝŒü���D�K�c�€�ƒ�…�‡�Ð�ûŽ ŽNŽ¢ŽÞŽã�@�“�å��"�u�Ò‘‘‘a‘f‘{‘Ô‘Ù’-’>’C’R’W’¯’í“>“¢“Ò“ù” ”S”¨”ù•F•M•Ÿ•ö–––8–I–_–v–Ž–Ÿ–³–É–Þ–þ——=—R—y—™—®—Ä—à—ö˜˜(˜B˜\˜v˜ž˜¹˜ñ˜ó™&™-™F™M™d™¹™å™ìšBšUšlšnš š§››I›a›c›Œ›“›êœœ	œGœNœ²œÚœøœú�0�7�r�‘�“�Ê�Ñžžmž»ŸŸJŸQŸjŸ‚Ÿ„ŸÄŸËŸäŸÿ  J p w »¡¡;¡B¡[¡b¡s¡z¡ó¢¢¢k¢r¢Ì¢Ó¢ì¢ó£££�£�£Ÿ£î¤¤¤G¤n¤p¤µ¤¼¤Ö¤ò¤ô¥G¥N¥•¥±¥³¥ô¥û¦8¦k¦Š¦Œ¦Í¦Ô¦ú§§§t§{§«§à§â¨)¨0¨|¨›¨�¨Ü¨ã©,©X©Z©�©”©­©Ë©ÍªªªNªuªwªªª±ªý«C«J«›«Õ«Ü«ë¬$¬/¬6¬s¬z¬É¬ä¬ë¬ú­?­J­Q­Ž­•­¨­¯­ù®®$®u®Ä¯¯T¯‘¯Ô°°%°t°¨°Ç°É±±Q±X±Ÿ±Ú±á²$²+²w²Ã²ï²ö³E³e³l³º³Á³Ø´-´Y´`´¶´É´ë´íµ*µ1µŽµÜµþ¶7¶9¶†¶À¶Ç··p·Ç¸/¸M¸T¸¥¸Á¸È¸á¹¹¹R¹}¹„¹›¹¢¹òºººº9ºVº¨ºí»»6»E»L»h»¡»å»ö¼¼¼]¼f¼q¼„¼‹¼Æ½½`½°½þ¾*¾,¾~¾·¾¾¾Õ¾Ü¿/¿V¿]¿l¿‡¿Ø¿øÀ @À @À @‰À @�À @¾À @ÊÀ AÀ AÀ AÀ A2À A9À A‹À AÚÀ BÀ BBÀ BDÀ BÀ B†À BÕÀ C'À CsÀ C¨À CÒÀ CÙÀ CêÀ CñÀ D@À D„À D¸À DºÀ DÇÀ EÀ EÀ EÀ ENÀ E{À E©À EÑÀ F	À F%À FYÀ FxÀ F’À F­À FÒÀ G	À GÀ GÀ G.À GFÀ GlÀ G¤À G²À GðÀ G÷À H!À HTÀ H¸À IÀ IÀ I”À I¬À IêÀ JÀ JqÀ J{À J‚À J À J¥À J§À J´À JÈÀ JîÀ KÀ KHÀ KOÀ KeÀ KjÀ KlÀ KyÀ K®À KÕÀ LÀ L3À LdÀ LmÀ LÀÀ LÇÀ MÀ M$À MFÀ MOÀ MVÀ MžÀ M¾À MóÀ NYÀ NºÀ NÁÀ NùÀ OÀ O À ObÀ OßÀ OùÀ P9À PhÀ PÄÀ PÐÀ PÙÀ PàÀ PåÀ PçÀ QÀ QMÀ Q}À Q×À R0À R:À R?À RAÀ RcÀ R›À R²À RÃÀ RÌÀ RáÀ SÀ SÀ SXÀ S]À S_À S}À SµÀ TÀ T<À TqÀ TzÀ T±À T¶À T¸À TÝÀ UÀ U0À UwÀ UªÀ U±À UÃÀ UÈÀ UÊÀ VBÀ V‹À VŸÀ VýÀ WÀ WÀ WÀ WxÀ WÇÀ WæÀ WúÀ XÀ XmÀ X�À X”À YÀ YÀ Y9À Y>À Y@À Y_À Y�À Y´À YÌÀ YöÀ YþÀ Z+À ZcÀ Z¡À Z£À ZùÀ [LÀ [žÀ [îÀ \>À \XÀ \ßÀ ] À ]¤À ^(À ^2À ^4À ^uÀ ^ñÀ _&À _(À _fÀ _‰À _ÙÀ _úÀ `OÀ `hÀ `tÀ `}À `À `ÔÀ a.À auÀ a°À aÔÀ b<À bIÀ bdÀ bfÀ bœÀ bÞÀ bþÀ c'À cRÀ c†À c˜À cÞÀ dÀ dSÀ deÀ d§À dÜÀ dëÀ dþÀ e#À e:À eDÀ egÀ enÀ epÀ e„À e‰À e‹À eªÀ e½À f
À fÀ f$À fBÀ faÀ f­À fêÀ g8À gAÀ gŽÀ gÌÀ géÀ h3À h=À hFÀ hKÀ hMÀ hnÀ h�À hÎÀ hßÀ hèÀ iÀ i&À irÀ i¯À iýÀ jÀ jSÀ j‘À j®À jøÀ kÀ kÀ kÀ kÀ kEÀ kcÀ kƒÀ kžÀ k¾À kùÀ lÀ l"À l<À lCÀ lYÀ l^À l`À lmÀ l•À lÚÀ mJÀ m’À màÀ mâÀ müÀ neÀ n³À nºÀ n¼À nÜÀ oÀ ouÀ o…À oØÀ oáÀ pÀ p&À p/À p6À p8À p¦À p¨À qÀ qÀ qqÀ qsÀ qªÀ qËÀ rLÀ rrÀ rñÀ røÀ rúÀ s À s±À s¸À tÀ t9À tcÀ teÀ t®À uÀ uÀ u#À u%À uJÀ ulÀ uŒÀ u§À uÍÀ v À vGÀ vwÀ v¦À vÄÀ vðÀ w=À w˜À wÎÀ wøÀ xÀ xÀ x"À x$À xSÀ x‚À xÂÀ xÎÀ xÐÀ xýÀ yÀ y=À ykÀ y“À yÂÀ yüÀ z$À z\À z‚À z¶À zÙÀ {À {\À {€À {ÈÀ {îÀ |AÀ |UÀ |ŒÀ |�À |³À |áÀ |ðÀ }À }AÀ }PÀ }qÀ }À }¯À }×À }åÀ ~À ~+À ~FÀ ~ƒÀ ~·À ~ÈÀ ~ÖÀ 
À 2À TÀ |À ¨À ÒÀ €À €3À €\À €sÀ €œÀ €ÖÀ €âÀ €äÀ �À �kÀ �½À �ëÀ ‚À ‚À ‚À ‚8À ‚XÀ ‚wÀ ‚�À ‚®À ‚ËÀ ‚çÀ ‚õÀ ƒÀ ƒÀ ƒÀ ƒÀ ƒUÀ ƒrÀ ƒ­À ƒÄÀ ƒùÀ „À „#À „-À „4À „6À „MÀ „yÀ „�À „ºÀ „õÀ …À …-À …lÀ …˜À …¦À …²À …ÎÀ …ØÀ …àÀ …åÀ …èÀ …êÀ †À †,À †/À †1À †ZÀ †wÀ †zÀ †|À †¼À †ÙÀ †îÀ †ÿÀ ‡À ‡À ‡ À ‡"À ‡/À ‡uÀ ‡šÀ ‡¯À ‡·À ‡¼À ‡¾À ‡ËÀ ˆ$À ˆEÀ ˆJÀ ˆMÀ ˆOÀ ˆ À ˆ¢À ˆÓÀ ‰!À ‰tÀ ‰vÀ ‰“À ‰§À ‰¿À ‰ÁÀ ‰áÀ ‰ôÀ ŠÀ Š.À Š=À ŠDÀ ŠYÀ ŠqÀ ŠvÀ ŠxÀ Š…À Š°À ŠíÀ ‹&À ‹-À ‹2À ‹4À ‹AÀ ‹[À ‹•À ‹±À ‹ÉÀ ‹íÀ ‹ïÀ ŒHÀ ŒœÀ ŒÙÀ ŒûÀ �5À �=À �ZÀ �|À �»À �åÀ ŽTÀ ŽŠÀ Ž¸À ŽËÀ ŽÔÀ �À �~À �«À �ãÀ �À �?À �kÀ �rÀ �tÀ �”À �ÈÀ ‘À ‘À ‘À ‘$À ‘\À ‘†À ‘ À ’À ’PÀ ’WÀ ’\À ’^À ’kÀ ’¢À ’ÜÀ ’øÀ “À “4À “�À “áÀ ”À ”@À ”zÀ ”‚À ”„À ”¡À ”ÃÀ •	À •2À •¡À •×À –À –À –!À –eÀ –ÒÀ –ÿÀ —6À —]À —‘À —½À —ÄÀ —ÆÀ —æÀ ˜À ˜bÀ ˜gÀ ˜iÀ ˜vÀ ˜ªÀ ˜ÎÀ ˜åÀ ™À ™$À ™“À ™ÁÀ ™ÔÀ ™ÝÀ š)À šJÀ šoÀ šxÀ š§À šÌÀ šÕÀ ›À ›uÀ ›¡À ›¨À ›ªÀ ›×À ›ÜÀ ›ÞÀ ›ëÀ œÀ œCÀ œZÀ œwÀ œ™À �À �6À �IÀ �RÀ �žÀ �ÇÀ �èÀ žÀ žÀ ž@À žoÀ ž”À ž�À žÐÀ Ÿ=À ŸiÀ ŸpÀ ŸrÀ ŸŸÀ Ÿ¤À Ÿ¦À Ÿ³À ŸçÀ  À  (À  BÀ  †À  �À   À  ¥À  §À  ´À  èÀ ¡À ¡)À ¡CÀ ¡‡À ¡ŽÀ ¡¡À ¡¦À ¡¨À ¡µÀ ¢À ¢0À ¢JÀ ¢·À ¢ìÀ £À £2À £tÀ £¹À £ùÀ ¤À ¤À ¤#À ¤9À ¤BÀ ¤IÀ ¤\À ¤aÀ ¤dÀ ¤fÀ ¤¯À ¤îÀ ¥À ¥À ¥9À ¥mÀ ¥oÀ ¥|À ¥·À ¥¹À ¥ÆÀ ¥ãÀ ¦ À ¦OÀ ¦’À ¦ÀÀ ¦ÈÀ ¦ÍÀ ¦ÏÀ ¦ÜÀ §À §UÀ §ZÀ §]    €©€À€¿ €È   €ò   �   �E   �b   �†   �¢   �¸   �Õ   �õ   ‚   ‚0   ‚K   ‚f   ‚|     	†Þ†£‡h‡h~/// Defines a [DropdownMenu] menu button that represents one item view in the menu.
///
/// See also:
///
/// * [DropdownMenu]‡z‡z‡z‡‚�‡Ö ‡Ö‡ç J/// Creates an entry that is used with [DropdownMenu.dropdownMenuEntries].‡ï‡þ‡ý  ˆ	ˆˆ  ˆ#ˆ)ˆ(  ˆ:ˆ@ˆ?  ˆQˆWˆV  ˆiˆoˆn  ˆƒ
ˆ‰ˆˆ  ˆxˆ›€Š‰ ‰ s/// the value used to identify the entry.
///
/// This value must be unique across all entries in a [DropdownMenu]. ‰,M‰t‰t7/// The label displayed in the center of the menu item. ‰€�À‹5‹5�‹/// Overrides the default label widget which is `Text(label)`.
///
/// {@tool dartpad}
/// This sample shows how to override the default label [Text]
/// widget with one that forces the menu entry to appear on one line
/// by specifying [Text.maxLines] and [Text.overflow].
///
/// ** See code in examples/api/lib/material/dropdown_menu/dropdown_menu_entry_label_widget.0.dart **
/// {@end-tool} ‹GN‹Š‹Š1/// An optional icon to display before the label. ‹œN‹Þ‹Þ0/// An optional icon to display after the label. ‹ñ��	�	€ý/// Whether the menu item is enabled or disabled.
///
/// The default value is true. If true, the [DropdownMenuEntry.label] will be filled
/// out in the text field of the [DropdownMenu] when this entry is clicked; otherwise,
/// this entry is disabled. �f�x�xD/// Customizes this menu item's appearance.
///
/// Null by default.     �‡·…“¨“¨…ü/// A dropdown menu that can be opened from a [TextField]. The selected
/// menu item is displayed in that field.
///
/// This widget is used to help people make a choice from a menu and put the
/// selected item into the text input field. People can also filter the list based
/// on the text input or search one item in the menu list.
///
/// The menu is composed of a list of [DropdownMenuEntry]s. People can provide information,
/// such as: label, leading icon or trailing icon for each entry. The [TextField]
/// will be updated based on the selection from the menu entries. The text field
/// will stay empty if the selected entry is disabled.
///
/// The dropdown menu can be traversed by pressing the up or down key. During the
/// process, the corresponding item will be highlighted and the text field will be updated.
/// Disabled items will be skipped during traversal.
///
/// The menu can be scrollable if not all items in the list are displayed at once.
///
/// {@tool dartpad}
/// This sample shows how to display outlined [DropdownMenu] and filled [DropdownMenu].
///
/// ** See code in examples/api/lib/material/dropdown_menu/dropdown_menu.0.dart **
/// {@end-tool}
///
/// See also:
///
/// * [MenuAnchor], which is a widget used to mark the "anchor" for a set of submenus.
///   The [DropdownMenu] uses a [TextField] as the "anchor".
/// * [TextField], which is a text input widget that uses an [InputDecoration].
/// * [DropdownMenuEntry], which is used to build the [MenuItemButton] in the [DropdownMenu] list.“µ“µ“µ“Ô…•þ •þ–
 ‚/// Creates a const [DropdownMenu].
///
/// The leading and trailing icons in the text field can be customized by using
/// [leadingIcon], [trailingIcon] and [selectedTrailingIcon] properties. They are
/// passed down to the [InputDecoration] properties, and will override values
/// in the [InputDecoration.prefixIcon] and [InputDecoration.suffixIcon].
///
/// Except leading and trailing icons, the text field can be configured by the
/// [InputDecorationTheme] property. The menu can be configured by the [menuStyle].–	––  –"–(–'  –<
–B–A  –M–S–R  –c–i–h  –z–€–  –’
–˜–—  –£–©–¨  –·–½–¼  –Í–Ó–Ò  –â–è–ç  ———  —"—(—'  —A—G—F  —V —\—[  —}—ƒ—‚  —�—£—¢  —²—¸—·  —È—Î—Í  —ä—ê—é  —ú˜ —ÿ  ˜˜˜  ˜,˜2˜1  ˜F˜L˜K  ˜`˜f˜e  ˜z!˜‰˜ˆ  ˜¢˜¨˜§  –1——6—g—p—q˜À˜Æ˜í˜Þ˜Ö˜Ç˜Ù˜á˜õ�tšbšb�C/// Determine if the [DropdownMenu] is enabled.
///
/// Defaults to true.
///
/// {@tool dartpad}
/// This sample demonstrates how the [enabled] and [requestFocusOnTap] properties
/// affect the textfield's hover cursor.
///
/// ** See code in examples/api/lib/material/dropdown_menu/dropdown_menu.2.dart **
/// {@end-tool} šp€î›Y›Y€Î/// Determine the width of the [DropdownMenu].
///
/// If this is null, the width of the [DropdownMenu] will be the same as the width of the widest
/// menu item plus the width of the leading/trailing icon. ›e€Ÿ›ú›ú}/// Determine the height of the menu.
///
/// If this is null, the menu will display as many items as possible on the screen. œ€êœêœê€Ä/// An optional Icon at the front of the text input field.
///
/// Defaults to null. If this is not null, the menu items will have extra paddings to be aligned
/// with the text in the text field. œü€’�‚�‚n/// An optional icon at the end of the text field.
///
/// Defaults to an [Icon] with [Icons.arrow_drop_down]. �•�êŸzŸz�»/// Optional widget that describes the input field.
///
/// When the input field is empty and unfocused, the label is displayed on
/// top of the input field (i.e., at the same location on the screen where
/// text may be entered in the input field). When the input field receives
/// focus (or if the field is non-empty), the label moves above, either
/// vertically adjacent to, or to the center of the input field.
///
/// Defaults to null. Ÿ†vŸôŸôV/// Text that suggests what sort of input the field accepts.
///
/// Defaults to null;  ‚
¢¢�Í/// Text that provides context about the [DropdownMenu]'s value, such
/// as how the value will be used.
///
/// If non-null, the text is displayed below the input field, in
/// the same location as [errorText]. If a non-null [errorText] value is
/// specified then the helper text is not shown.
///
/// Defaults to null;
///
/// See also:
///
/// * [InputDecoration.helperText], which is the text that provides context about the [InputDecorator.child]'s value. ¢�†£‘£‘�S/// Text that appears below the input field and the border to show the error message.
///
/// If non-null, the border's color animates to red and the [helperText] is not shown.
///
/// Defaults to null;
///
/// See also:
///
/// * [InputDecoration.errorText], which is the text that appears below the [InputDecorator.child] and the border. £¡€Ê¤W¤W€›/// An optional icon at the end of the text field to indicate that the text
/// field is pressed.
///
/// Defaults to an [Icon] with [Icons.arrow_drop_up]. ¤r}¤ã¤ã\/// Determine if the menu list can be filtered by the text input.
///
/// Defaults to false. ¤ö€¸¥¢¥¢€—/// Determine if the first item that matches the text input can be highlighted.
///
/// Defaults to true as the search function could be commonly used. ¥µ€Ò¦~¦~€«/// The text style for the [TextField] of the [DropdownMenu];
///
/// Defaults to the overall theme's [TextTheme.bodyLarge]
/// if the dropdown menu theme's value is null. ¦Ž€‡§§d/// The text align for the [TextField] of the [DropdownMenu].
///
/// Defaults to [TextAlign.start]. §€Á§É§É€‡/// Defines the default appearance of [InputDecoration] to show around the text field.
///
/// By default, shows a outlined text field. §ä€´¨�¨�€�/// The [MenuStyle] that defines the visual attributes of the menu.
///
/// The default width of the menu is set to the width of the text field. ¨Ÿ€¶©K©K€…/// Controls the text being edited or selected in the menu.
///
/// If null, this widget will create its own [TextEditingController]. ©\l©¸©¸I/// The value used to for an initial selection.
///
/// Defaults to null. ©Ï€£ªhªhw/// The callback is called when a selection is made.
///
/// Defaults to null. If null, only the text field is updated. ªy†K°»°»…¾/// Defines the keyboard focus for this widget.
///
/// The [focusNode] is a long-lived object that's typically managed by a
/// [StatefulWidget] parent. See [FocusNode] for more information.
///
/// To give the keyboard focus to this widget, provide a [focusNode] and then
/// use the current [FocusScope] to request the focus:
///
/// ```dart
/// FocusScope.of(context).requestFocus(myFocusNode);
/// ```
///
/// This happens automatically when the widget is tapped.
///
/// To be notified when the widget gains or loses the focus, add a listener
/// to the [focusNode]:
///
/// ```dart
/// myFocusNode.addListener(() { print(myFocusNode.hasFocus); });
/// ```
///
/// If null, this widget will create its own [FocusNode].
///
/// ## Keyboard
///
/// Requesting the focus will typically cause the keyboard to be shown
/// if it's not showing already.
///
/// On Android, the user can hide the keyboard - without changing the focus -
/// with the system back button. They can restore the keyboard's visibility
/// by tapping on a text field. The user might hide the keyboard and
/// switch to a physical keyboard, or they might just need to get it
/// out of the way for a moment, to expose something it's
/// obscuring. In this case requesting the focus again will not
/// cause the focus to change, and will not make the keyboard visible.
///
/// If this is non-null, the behaviour of [requestFocusOnTap] is overridden
/// by the [FocusNode.canRequestFocus] property. °Ë„´×´×ƒº/// Determine if the dropdown button requests focus and the on-screen virtual
/// keyboard is shown in response to a touch event.
///
/// Ignored if a [focusNode] is explicitly provided (in which case,
/// [FocusNode.canRequestFocus] controls the behavior).
///
/// Defaults to null, which enables platform-specific behavior:
///
///  * On mobile platforms, acts as if set to false; tapping on the text
///    field and opening the menu will not cause a focus request and the
///    virtual keyboard will not appear.
///
///  * On desktop platforms, acts as if set to true; the dropdown takes the
///    focus when activated.
///
/// Set this to true or false explicitly to override the default behavior.
///
/// {@tool dartpad}
/// This sample demonstrates how the [enabled] and [requestFocusOnTap] properties
/// affect the textfield's hover cursor.
///
/// ** See code in examples/api/lib/material/dropdown_menu/dropdown_menu.2.dart **
/// {@end-tool} ´ï�E¶!¶!�/// Descriptions of the menu items in the [DropdownMenu].
///
/// This is a required parameter. It is recommended that at least one [DropdownMenuEntry]
/// is provided. If this is an empty list, the menu will be empty and only
/// contain space for padding. ¶;‚È¸õ¸õ‚€/// Defines the menu text field's width to be equal to its parent's width
/// plus the horizontal width of the specified insets.
///
/// If this property is null, the width of the text field will be determined
/// by the width of menu items or [DropdownMenu.width]. If this property is not null,
/// the text field's width will match the parent's width plus the specified insets.
/// If the value of this property is [EdgeInsets.zero], the width of the text field will be the same
/// as its parent's width.
///
/// The [expandedInsets]' top and bottom are ignored, only its left and right
/// properties are used.
///
/// Defaults to null. ¹
…¾¾„’/// When [DropdownMenu.enableFilter] is true, this callback is used to
/// compute the list of filtered items.
///
/// {@tool snippet}
///
/// In this example the `filterCallback` returns the items that contains the
/// trimmed query.
///
/// ```dart
/// DropdownMenu<Text>(
///   enableFilter: true,
///   filterCallback: (List<DropdownMenuEntry<Text>> entries, String filter) {
///     final String trimmedFilter = filter.trim().toLowerCase();
///       if (trimmedFilter.isEmpty) {
///         return entries;
///       }
///
///       return entries
///         .where((DropdownMenuEntry<Text> entry) =>
///           entry.label.toLowerCase().contains(trimmedFilter),
///         )
///         .toList();
///   },
///   dropdownMenuEntries: const <DropdownMenuEntry<Text>>[],
/// )
/// ```
/// {@end-tool}
///
/// Defaults to null. If this parameter is null and the
/// [DropdownMenu.enableFilter] property is set to true, the default behavior
/// will return a filtered list. The filtered list will contain items
/// that match the text provided by the input field, with a case-insensitive
/// comparison. When this is not null, `enableFilter` must be set to true. ¾.„À B1À B1ƒ›/// When [DropdownMenu.enableSearch] is true, this callback is used to compute
/// the index of the search result to be highlighted.
///
/// {@tool snippet}
///
/// In this example the `searchCallback` returns the index of the search result
/// that exactly matches the query.
///
/// ```dart
/// DropdownMenu<Text>(
///   searchCallback: (List<DropdownMenuEntry<Text>> entries, String query) {
///     if (query.isEmpty) {
///       return null;
///     }
///     final int index = entries.indexWhere((DropdownMenuEntry<Text> entry) => entry.label == query);
///
///     return index != -1 ? index : null;
///   },
///   dropdownMenuEntries: const <DropdownMenuEntry<Text>>[],
/// )
/// ```
/// {@end-tool}
///
/// Defaults to null. If this is null and [DropdownMenu.enableSearch] is true,
/// the default function will return the index of the first matching result
/// which contains the contents of the text input field. À BF‚oÀ D¦À D¦‚/// Optional input validation and formatting overrides.
///
/// Formatters are run in the provided order when the user changes the text
/// this widget contains. When this parameter changes, the new formatters will
/// not be applied until the next time the user inserts or deletes text.
/// Formatters don't run when the text is changed
/// programmatically via [controller].
///
/// See also:
///
///  * [TextEditingController], which implements the [Listenable] interface
///    and notifies its listeners on [TextEditingValue] changes.   À D¼MÀ DàÀ Dà   À D¼À D½ À EÀ @ÖÀ EÀ E À E)À E)À E) À EP(À E`À E` À EmÀ EvÀ EwÀ E})À E�À E� À E›À E¤À E¥À E«#À EÀÀ EÀ  À EÓ3À EèÀ Eè À EöÀ FÀ FÀ FÀ FÀ F  À F'/À FGÀ FG  À F[À FiÀ Fi  À FzÀ FÀ F  À F”À FœÀ Fœ  À F¯ À F´À F´ À FÊÀ FÔ2À FëÀ Fë    À Gƒ–À GÀ G   À GÀ GÀ J©€¿À J»À J»   À J©À JªÀ Kn…uÀ K€À K€  À K�À K¡À K   À KnÀ KoÀ Pé�TÀ PîÀ Pî    À RC�À RHÀ RH    À Sa�SÀ SfÀ Sf    À Tº�À TÂÀ TÂ  À TËÀ TÖÀ TÕ   À UÌ�FÀ UçÀ Uç  À Uî"À V
À V	  À V+À V)À V(   À W‚$À WÀ W  À W$"À W@À W?  À WH+À W_À W^   À YBŒEÀ YOÀ YO  À Yc*À YÀ Y~  À Y”À Y£À Y¢  À Y¸À Y¾À Y½  À YÐ#À YÖÀ YÕ  À YïÀ e�‚¼À e’À e’  À e¤À e¥À e¤   À hO‚¿À hTÀ hT  À hhÀ hiÀ hh   À k�HÀ kÀ k  À k'À k7À k6   À lb™�À lvÀ lv  À l|À lŠÀ l‰  À lbÀ lc À …êCÀ …ðÀ …ð  À †À † À †À †'         À †1GÀ †7À †7  À †\À †b À †bÀ †r         À †|�ÏÀ †‚À †‚  À †¾FÀ †Ä À †ÄÀ †Õ  À †ÝÀ †äÀ †ã  À †ò
À †øÀ †÷   À ‡
À ‡À ‡    À ‡$€–À ‡IÀ ‡I  À ‡\À ‡jÀ ‡i  À ‡$À ‡%À ‡À€ˆÀ ‡ÒÀ ‡Ò  À ‡åÀ ‡óÀ ‡ò  À ‡û$À ˆÀ ˆ  À ‡ÀÀ ‡Á À ˆOOÀ ˆUÀ ˆU        À ˆ¢›ÀÀ ˆ¨À ˆ¨  À ‰xEÀ ‰x À ‰xÀ ‰�  À ‰—À ‰ À ‰Ÿ  À ‰µÀ ‰®À ‰·À ‰ãÀ ‰ëÀ ‰ë  À ‰ÃÀ ‰ÏÀ ‰Ï    À ‰ö~À ‰úÀ ‰ú  À Š À Š	À Š   	À Šz€¶À ŠŒÀ ŠŒ  À ŠœÀ Š§À Š¦  À ŠzÀ Š{À ‹6…ÝÀ ‹HÀ ‹H   À ‹6À ‹7À ‘�AÀ ‘+À ‘+  À ‘1À ‘BÀ ‘A  À ‘JÀ ‘RÀ ‘Q  À ‘À ‘À ’`†À ’rÀ ’r  À ’ƒÀ ’“À ’’  À ’`À ’aÀ ˜kƒoÀ ˜À ˜  À ˜˜À ˜ À ˜Ÿ  À ˜kÀ ˜lÀ ›àƒÂÀ ›ôÀ ›ô  À œÀ œÀ œ  À ›àÀ ›áÀ Ÿ¨€ûÀ Ÿ¼À Ÿ¼  À ŸÖÀ ŸÞÀ ŸÝ  À Ÿ¨À Ÿ©À  ©€ûÀ  ½À  ½  À  ×À  ßÀ  Þ  À  ©À  ªÀ ¡ª‚µÀ ¡¼À ¡¼  À ¡ÌÀ ¡ÞÀ ¡Ý  À ¡çÀ ¡øÀ ¡÷  À ¡ªÀ ¡« À ¤¯‚¬À ¤µÀ ¤µ  À ¤ð&À ¤ð À ¤ðÀ ¥  À ¥À ¥À ¥   À ¥À ¥/À ¥/  À ¥;/À ¥PÀ ¥P À ¥YÀ ¥^À ¥_À ¥aÀ ¥iÀ ¥bÀ ¥qDÀ ¥�À ¥�   À ¥qÀ ¥rÀ ¥»�À ¥ÖÀ ¥Ö   À ¥»À ¥¼À ¦Ñ€‡À ¦÷À ¦÷   À ¦ÑÀ ¦Ò           ‚ó�ƒ–ƒ–€–/// A callback function that returns the list of the items that matches the
/// current applied filter.
///
/// Used by [DropdownMenu.filterCallback].ƒ¥ƒ¥ƒ¥ ƒÎ"ƒêƒé  ƒòƒúƒù   „�@„ñ„ñ€Ý/// A callback function that returns the index of the item that matches the
/// current contents of a text field.
///
/// If a match doesn't exist then null must be returned.
///
/// Used by [DropdownMenu.searchCallback].… … …  …"…/….  …7…?…>    …Ž€ð…³…³ …ê†}…Î…è…Ï…â†…ï…ü†…ý†††† †.†/†`†5†B†_†C†U†V†b†h†x†y†ƒ#†�†� †¡†«.†¸†¸ †Õ  „� =€ˆ€§€©€Æ€È€ò��C�E�b�†�¢�¸�Õ�õ‚‚0‚K‚f‚|‚—‚™‚²‚Ñ‚ñ‚óƒ@ƒ]ƒbƒŽ„„„R„y„~„¸„½„é…G…I…Ž…í†3†}†�†ƒ†©†«†Ü†Þ‡3‡8‡G‡L‡b‡€‡Î‡ëˆˆˆ6ˆMˆeˆˆ�ˆ—ˆ™ˆÆˆÍ‰‰(‰*‰e‰|‰~‰À‰Ç‰ÞŠ ŠhŠ¢Š©‹‹%‹C‹E‹z‹˜‹š‹Î‹í‹ïŒ$Œ+ŒƒŒÝŒü���D�K�c�€�ƒ�…�‡�Ð�ûŽ ŽNŽ¢ŽÞŽã�@�“�å��"�u�Ò‘‘‘a‘f‘{‘Ô‘Ù’-’>’C’R’W’¯’í“>“¢“Ò“ù” ”S”¨”ù•F•M•Ÿ•ö–––8–I–_–v–Ž–Ÿ–³–É–Þ–þ——=—R—y—™—®—Ä—à—ö˜˜(˜B˜\˜v˜ž˜¹˜ñ˜ó™&™-™F™M™d™¹™å™ìšBšUšlšnš š§››I›a›c›Œ›“›êœœ	œGœNœ²œÚœøœú�0�7�r�‘�“�Ê�Ñžžmž»ŸŸJŸQŸjŸ‚Ÿ„ŸÄŸËŸäŸÿ  J p w »¡¡;¡B¡[¡b¡s¡z¡ó¢¢¢k¢r¢Ì¢Ó¢ì¢ó£££�£�£Ÿ£î¤¤¤G¤n¤p¤µ¤¼¤Ö¤ò¤ô¥G¥N¥•¥±¥³¥ô¥û¦8¦k¦Š¦Œ¦Í¦Ô¦ú§§§t§{§«§à§â¨)¨0¨|¨›¨�¨Ü¨ã©,©X©Z©�©”©­©Ë©ÍªªªNªuªwªªª±ªý«C«J«›«Õ«Ü«ë¬$¬/¬6¬s¬z¬É¬ä¬ë¬ú­?­J­Q­Ž­•­¨­¯­ù®®$®u®Ä¯¯T¯‘¯Ô°°%°t°¨°Ç°É±±Q±X±Ÿ±Ú±á²$²+²w²Ã²ï²ö³E³e³l³º³Á³Ø´-´Y´`´¶´É´ë´íµ*µ1µŽµÜµþ¶7¶9¶†¶À¶Ç··p·Ç¸/¸M¸T¸¥¸Á¸È¸á¹¹¹R¹}¹„¹›¹¢¹òºººº9ºVº¨ºí»»6»E»L»h»¡»å»ö¼¼¼]¼f¼q¼„¼‹¼Æ½½`½°½þ¾*¾,¾~¾·¾¾¾Õ¾Ü¿/¿V¿]¿l¿‡¿Ø¿øÀ @À @À @‰À @�À @¾À @ÊÀ AÀ AÀ AÀ A2À A9À A‹À AÚÀ BÀ BBÀ BDÀ BÀ B†À BÕÀ C'À CsÀ C¨À CÒÀ CÙÀ CêÀ CñÀ D@À D„À D¸À DºÀ DÇÀ EÀ EÀ EÀ ENÀ E{À E©À EÑÀ F	À F%À FYÀ FxÀ F’À F­À FÒÀ G	À GÀ GÀ G.À GFÀ GlÀ G¤À G²À GðÀ G÷À H!À HTÀ H¸À IÀ IÀ I”À I¬À IêÀ JÀ JqÀ J{À J‚À J À J¥À J§À J´À JÈÀ JîÀ KÀ KHÀ KOÀ KeÀ KjÀ KlÀ KyÀ K®À KÕÀ LÀ L3À LdÀ LmÀ LÀÀ LÇÀ MÀ M$À MFÀ MOÀ MVÀ MžÀ M¾À MóÀ NYÀ NºÀ NÁÀ NùÀ OÀ O À ObÀ OßÀ OùÀ P9À PhÀ PÄÀ PÐÀ PÙÀ PàÀ PåÀ PçÀ QÀ QMÀ Q}À Q×À R0À R:À R?À RAÀ RcÀ R›À R²À RÃÀ RÌÀ RáÀ SÀ SÀ SXÀ S]À S_À S}À SµÀ TÀ T<À TqÀ TzÀ T±À T¶À T¸À TÝÀ UÀ U0À UwÀ UªÀ U±À UÃÀ UÈÀ UÊÀ VBÀ V‹À VŸÀ VýÀ WÀ WÀ WÀ WxÀ WÇÀ WæÀ WúÀ XÀ XmÀ X�À X”À YÀ YÀ Y9À Y>À Y@À Y_À Y�À Y´À YÌÀ YöÀ YþÀ Z+À ZcÀ Z¡À Z£À ZùÀ [LÀ [žÀ [îÀ \>À \XÀ \ßÀ ] À ]¤À ^(À ^2À ^4À ^uÀ ^ñÀ _&À _(À _fÀ _‰À _ÙÀ _úÀ `OÀ `hÀ `tÀ `}À `À `ÔÀ a.À auÀ a°À aÔÀ b<À bIÀ bdÀ bfÀ bœÀ bÞÀ bþÀ c'À cRÀ c†À c˜À cÞÀ dÀ dSÀ deÀ d§À dÜÀ dëÀ dþÀ e#À e:À eDÀ egÀ enÀ epÀ e„À e‰À e‹À eªÀ e½À f
À fÀ f$À fBÀ faÀ f­À fêÀ g8À gAÀ gŽÀ gÌÀ géÀ h3À h=À hFÀ hKÀ hMÀ hnÀ h�À hÎÀ hßÀ hèÀ iÀ i&À irÀ i¯À iýÀ jÀ jSÀ j‘À j®À jøÀ kÀ kÀ kÀ kÀ kEÀ kcÀ kƒÀ kžÀ k¾À kùÀ lÀ l"À l<À lCÀ lYÀ l^À l`À lmÀ l•À lÚÀ mJÀ m’À màÀ mâÀ müÀ neÀ n³À nºÀ n¼À nÜÀ oÀ ouÀ o…À oØÀ oáÀ pÀ p&À p/À p6À p8À p¦À p¨À qÀ qÀ qqÀ qsÀ qªÀ qËÀ rLÀ rrÀ rñÀ røÀ rúÀ s À s±À s¸À tÀ t9À tcÀ teÀ t®À uÀ uÀ u#À u%À uJÀ ulÀ uŒÀ u§À uÍÀ v À vGÀ vwÀ v¦À vÄÀ vðÀ w=À w˜À wÎÀ wøÀ xÀ xÀ x"À x$À xSÀ x‚À xÂÀ xÎÀ xÐÀ xýÀ yÀ y=À ykÀ y“À yÂÀ yüÀ z$À z\À z‚À z¶À zÙÀ {À {\À {€À {ÈÀ {îÀ |AÀ |UÀ |ŒÀ |�À |³À |áÀ |ðÀ }À }AÀ }PÀ }qÀ }À }¯À }×À }åÀ ~À ~+À ~FÀ ~ƒÀ ~·À ~ÈÀ ~ÖÀ 
À 2À TÀ |À ¨À ÒÀ €À €3À €\À €sÀ €œÀ €ÖÀ €âÀ €äÀ �À �kÀ �½À �ëÀ ‚À ‚À ‚À ‚8À ‚XÀ ‚wÀ ‚�À ‚®À ‚ËÀ ‚çÀ ‚õÀ ƒÀ ƒÀ ƒÀ ƒÀ ƒUÀ ƒrÀ ƒ­À ƒÄÀ ƒùÀ „À „#À „-À „4À „6À „MÀ „yÀ „�À „ºÀ „õÀ …À …-À …lÀ …˜À …¦À …²À …ÎÀ …ØÀ …àÀ …åÀ …èÀ …êÀ †À †,À †/À †1À †ZÀ †wÀ †zÀ †|À †¼À †ÙÀ †îÀ †ÿÀ ‡À ‡À ‡ À ‡"À ‡/À ‡uÀ ‡šÀ ‡¯À ‡·À ‡¼À ‡¾À ‡ËÀ ˆ$À ˆEÀ ˆJÀ ˆMÀ ˆOÀ ˆ À ˆ¢À ˆÓÀ ‰!À ‰tÀ ‰vÀ ‰“À ‰§À ‰¿À ‰ÁÀ ‰áÀ ‰ôÀ ŠÀ Š.À Š=À ŠDÀ ŠYÀ ŠqÀ ŠvÀ ŠxÀ Š…À Š°À ŠíÀ ‹&À ‹-À ‹2À ‹4À ‹AÀ ‹[À ‹•À ‹±À ‹ÉÀ ‹íÀ ‹ïÀ ŒHÀ ŒœÀ ŒÙÀ ŒûÀ �5À �=À �ZÀ �|À �»À �åÀ ŽTÀ ŽŠÀ Ž¸À ŽËÀ ŽÔÀ �À �~À �«À �ãÀ �À �?À �kÀ �rÀ �tÀ �”À �ÈÀ ‘À ‘À ‘À ‘$À ‘\À ‘†À ‘ À ’À ’PÀ ’WÀ ’\À ’^À ’kÀ ’¢À ’ÜÀ ’øÀ “À “4À “�À “áÀ ”À ”@À ”zÀ ”‚À ”„À ”¡À ”ÃÀ •	À •2À •¡À •×À –À –À –!À –eÀ –ÒÀ –ÿÀ —6À —]À —‘À —½À —ÄÀ —ÆÀ —æÀ ˜À ˜bÀ ˜gÀ ˜iÀ ˜vÀ ˜ªÀ ˜ÎÀ ˜åÀ ™À ™$À ™“À ™ÁÀ ™ÔÀ ™ÝÀ š)À šJÀ šoÀ šxÀ š§À šÌÀ šÕÀ ›À ›uÀ ›¡À ›¨À ›ªÀ ›×À ›ÜÀ ›ÞÀ ›ëÀ œÀ œCÀ œZÀ œwÀ œ™À �À �6À �IÀ �RÀ �žÀ �ÇÀ �èÀ žÀ žÀ ž@À žoÀ ž”À ž�À žÐÀ Ÿ=À ŸiÀ ŸpÀ ŸrÀ ŸŸÀ Ÿ¤À Ÿ¦À Ÿ³À ŸçÀ  À  (À  BÀ  †À  �À   À  ¥À  §À  ´À  èÀ ¡À ¡)À ¡CÀ ¡‡À ¡ŽÀ ¡¡À ¡¦À ¡¨À ¡µÀ ¢À ¢0À ¢JÀ ¢·À ¢ìÀ £À £2À £tÀ £¹À £ùÀ ¤À ¤À ¤#À ¤9À ¤BÀ ¤IÀ ¤\À ¤aÀ ¤dÀ ¤fÀ ¤¯À ¤îÀ ¥À ¥À ¥9À ¥mÀ ¥oÀ ¥|À ¥·À ¥¹À ¥ÆÀ ¥ãÀ ¦ À ¦OÀ ¦’À ¦ÀÀ ¦ÈÀ ¦ÍÀ ¦ÏÀ ¦ÜÀ §À §UÀ §ZÀ §]   _kMenuTraversalShortcuts_kMinimumWidth_kDefaultHorizontalPaddingDropdownMenuEntryDropdownMenu_DropdownMenuState_ArrowUpIntent_ArrowDownIntent_DropdownMenuBody_DropdownMenuBodyParentData_RenderDropdownMenuBody_DropdownMenuDefaultsM3  P­