From 093f876b1305381d91720257f4be879e27fdfe7f Mon Sep 17 00:00:00 2001 From: Ahmed Elsayed Date: Sat, 9 Mar 2024 17:36:50 +0200 Subject: [PATCH 1/2] Introduce valueListenable and multiValueListenable --- .../example/custom_dropdown_button2.dart | 7 +- .../dropdown_button2/example/example.dart | 10 +- .../lib/src/dropdown_button2.dart | 209 ++++++++++-------- packages/dropdown_button2/lib/src/utils.dart | 46 ++++ .../test/dropdown_button2_test.dart | 9 +- .../lib/src/few_styling_example.dart | 8 +- .../lib/src/form_field_example.dart | 11 +- .../lib/src/multi_select_example.dart | 57 +++-- .../lib/src/search_example.dart | 8 +- .../lib/src/simple_example.dart | 8 +- .../lib/src/with_separators_example.dart | 10 +- .../desktop_open_menu.png | Bin 16019 -> 16321 bytes .../ipad_pro_open_menu.png | Bin 38654 -> 39168 bytes .../iphone_14_open_menu.png | Bin 33004 -> 33688 bytes .../iphone_8_open_menu.png | Bin 16746 -> 17137 bytes .../pixel_5_open_menu.png | Bin 48408 -> 50191 bytes 16 files changed, 223 insertions(+), 160 deletions(-) diff --git a/packages/dropdown_button2/example/custom_dropdown_button2.dart b/packages/dropdown_button2/example/custom_dropdown_button2.dart index 021cf53..06fe032 100644 --- a/packages/dropdown_button2/example/custom_dropdown_button2.dart +++ b/packages/dropdown_button2/example/custom_dropdown_button2.dart @@ -1,10 +1,11 @@ import 'package:dropdown_button2/dropdown_button2.dart'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; class CustomDropdownButton2 extends StatelessWidget { const CustomDropdownButton2({ required this.hint, - required this.value, + required this.valueListenable, required this.dropdownItems, required this.onChanged, this.selectedItemBuilder, @@ -33,7 +34,7 @@ class CustomDropdownButton2 extends StatelessWidget { super.key, }); final String hint; - final String? value; + final ValueListenable? valueListenable; final List dropdownItems; final ValueChanged? onChanged; final DropdownButtonBuilder? selectedItemBuilder; @@ -76,7 +77,7 @@ class CustomDropdownButton2 extends StatelessWidget { ), ), ), - value: value, + valueListenable: valueListenable, items: dropdownItems .map((String item) => DropdownItem( value: item, diff --git a/packages/dropdown_button2/example/example.dart b/packages/dropdown_button2/example/example.dart index f747df4..7c543eb 100644 --- a/packages/dropdown_button2/example/example.dart +++ b/packages/dropdown_button2/example/example.dart @@ -35,7 +35,7 @@ class _MyHomePageState extends State { 'Item7', 'Item8', ]; - String? selectedValue; + final valueListenable = ValueNotifier(null); @override Widget build(BuildContext context) { @@ -82,11 +82,9 @@ class _MyHomePageState extends State { ), )) .toList(), - value: selectedValue, - onChanged: (String? value) { - setState(() { - selectedValue = value; - }); + valueListenable: valueListenable, + onChanged: (value) { + valueListenable.value = value; }, buttonStyleData: ButtonStyleData( height: 50, diff --git a/packages/dropdown_button2/lib/src/dropdown_button2.dart b/packages/dropdown_button2/lib/src/dropdown_button2.dart index 4c35ca3..dff85b4 100644 --- a/packages/dropdown_button2/lib/src/dropdown_button2.dart +++ b/packages/dropdown_button2/lib/src/dropdown_button2.dart @@ -48,7 +48,7 @@ typedef SearchMatchFn = bool Function( /// One ancestor must be a [Material] widget and typically this is /// provided by the app's [Scaffold]. /// -/// The type `T` is the type of the [value] that each dropdown item represents. +/// The type `T` is the type of the value that each dropdown item represents. /// All the entries in a given menu must represent values with consistent types. /// Typically, an enum is used. Each [DropdownItem] in [items] must be /// specialized with that same type argument. @@ -76,22 +76,24 @@ class DropdownButton2 extends StatefulWidget { /// Creates a DropdownButton2. /// It's customizable DropdownButton with steady dropdown menu and many other features. /// - /// The [items] must have distinct values. If [value] isn't null then it - /// must be equal to one of the [DropdownItem] values. If [items] or - /// [onChanged] is null, the button will be disabled, the down arrow + /// The [items] must have distinct values. If [valueListenable] isn't null then its value + /// must be equal to one of the [DropdownItem] values. If [multiValueListenable] isn't null + /// then its value must be equal to one or more of the [DropdownItem] values. + /// If [items] or [onChanged] is null, the button will be disabled, the down arrow /// will be greyed out. /// - /// If [value] is null and the button is enabled, [hint] will be displayed + /// If no [DropdownItem] is selected and the button is enabled, [hint] will be displayed /// if it is non-null. /// - /// If [value] is null and the button is disabled, [disabledHint] will be displayed + /// If no [DropdownItem] is selected and the button is disabled, [disabledHint] will be displayed /// if it is non-null. If [disabledHint] is null, then [hint] will be displayed /// if it is non-null. - DropdownButton2({ + const DropdownButton2({ super.key, required this.items, this.selectedItemBuilder, - this.value, + this.valueListenable, + this.multiValueListenable, this.hint, this.disabledHint, this.onChanged, @@ -119,27 +121,19 @@ class DropdownButton2 extends StatefulWidget { // When adding new arguments, consider adding similar arguments to // DropdownButtonFormField. }) : assert( - items == null || - items.isEmpty || - value == null || - items.where((DropdownItem item) { - return item.value == value; - }).length == - 1, - "There should be exactly one item with [DropdownButton]'s value: " - '$value. \n' - 'Either zero or 2 or more [DropdownItem]s were detected ' - 'with the same value', + valueListenable == null || multiValueListenable == null, + 'Only one of valueListenable or multiValueListenable can be used.', ), _inputDecoration = null, _isEmpty = false, _isFocused = false; - DropdownButton2._formField({ + const DropdownButton2._formField({ super.key, required this.items, this.selectedItemBuilder, - this.value, + required this.valueListenable, + required this.multiValueListenable, this.hint, this.disabledHint, required this.onChanged, @@ -167,20 +161,7 @@ class DropdownButton2 extends StatefulWidget { required InputDecoration inputDecoration, required bool isEmpty, required bool isFocused, - }) : assert( - items == null || - items.isEmpty || - value == null || - items.where((DropdownItem item) { - return item.value == value; - }).length == - 1, - "There should be exactly one item with [DropdownButtonFormField]'s value: " - '$value. \n' - 'Either zero or 2 or more [DropdownItem]s were detected ' - 'with the same value', - ), - _inputDecoration = inputDecoration, + }) : _inputDecoration = inputDecoration, _isEmpty = isEmpty, _isFocused = isFocused; @@ -206,31 +187,43 @@ class DropdownButton2 extends StatefulWidget { /// {@end-tool} /// /// If this callback is null, the [DropdownItem] from [items] - /// that matches [value] will be displayed. + /// that matches the selected [DropdownItem]'s value will be displayed. final DropdownButtonBuilder? selectedItemBuilder; - /// The value of the currently selected [DropdownItem]. + /// A [ValueListenable] that represents the value of the currently selected [DropdownItem]. + /// It holds a value of type `T?`, where `T` represents the type of [DropdownItem]'s value. + /// + /// If the value is null and the button is enabled, [hint] will be displayed + /// if it is non-null. + /// + /// If the value is null and the button is disabled, [disabledHint] will be displayed + /// if it is non-null. If [disabledHint] is null, then [hint] will be displayed + /// if it is non-null. + final ValueListenable? valueListenable; + + /// A [ValueListenable] that represents a list of the currently selected [DropdownItem]s. + /// It holds a list of type `List`, where `T` represents the type of [DropdownItem]'s value. /// - /// If [value] is null and the button is enabled, [hint] will be displayed + /// If the list is empty and the button is enabled, [hint] will be displayed /// if it is non-null. /// - /// If [value] is null and the button is disabled, [disabledHint] will be displayed + /// If the list is empty and the button is disabled, [disabledHint] will be displayed /// if it is non-null. If [disabledHint] is null, then [hint] will be displayed /// if it is non-null. - final T? value; + final ValueListenable>? multiValueListenable; /// A placeholder widget that is displayed by the dropdown button. /// - /// If [value] is null and the dropdown is enabled ([items] and [onChanged] are non-null), + /// If no [DropdownItem] is selected and the dropdown is enabled ([items] and [onChanged] are non-null), /// this widget is displayed as a placeholder for the dropdown button's value. /// - /// If [value] is null and the dropdown is disabled and [disabledHint] is null, + /// If no [DropdownItem] is selected and the dropdown is disabled and [disabledHint] is null, /// this widget is used as the placeholder. final Widget? hint; /// A preferred placeholder widget that is displayed when the dropdown is disabled. /// - /// If [value] is null, the dropdown is disabled ([items] or [onChanged] is null), + /// If no [DropdownItem] is selected and the dropdown is disabled ([items] or [onChanged] is null), /// this widget is displayed as a placeholder for the dropdown button's value. final Widget? disabledHint; @@ -409,6 +402,8 @@ class DropdownButton2State extends State> super.initState(); WidgetsBinding.instance.addObserver(this); _updateSelectedIndex(); + widget.valueListenable?.addListener(_updateSelectedIndex); + widget.multiValueListenable?.addListener(_updateSelectedIndex); if (widget.focusNode == null) { _internalNode ??= _createFocusNode(); } @@ -425,6 +420,8 @@ class DropdownButton2State extends State> @override void dispose() { WidgetsBinding.instance.removeObserver(this); + widget.valueListenable?.removeListener(_updateSelectedIndex); + widget.multiValueListenable?.removeListener(_updateSelectedIndex); _removeDropdownRoute(); _internalNode?.dispose(); _isMenuOpen.dispose(); @@ -432,6 +429,17 @@ class DropdownButton2State extends State> super.dispose(); } + T? get _currentValue { + if (widget.valueListenable != null) { + return widget.valueListenable!.value; + } + if (widget.multiValueListenable != null) { + //Use last selected item as the current value so if we've limited menu height, it scroll to last item. + return widget.multiValueListenable!.value.lastOrNull; + } + return null; + } + void _removeDropdownRoute() { _dropdownRoute?._dismiss(); _dropdownRoute = null; @@ -444,27 +452,34 @@ class DropdownButton2State extends State> if (widget.focusNode == null) { _internalNode ??= _createFocusNode(); } - _updateSelectedIndex(); + if (widget.valueListenable != oldWidget.valueListenable || + widget.multiValueListenable != oldWidget.multiValueListenable) { + _updateSelectedIndex(); + oldWidget.valueListenable?.removeListener(_updateSelectedIndex); + oldWidget.multiValueListenable?.removeListener(_updateSelectedIndex); + widget.valueListenable?.addListener(_updateSelectedIndex); + widget.multiValueListenable?.addListener(_updateSelectedIndex); + } } void _updateSelectedIndex() { if (widget.items == null || widget.items!.isEmpty || - (widget.value == null && + (_currentValue == null && widget.items! .where((DropdownItem item) => - item.enabled && item.value == widget.value) + item.enabled && item.value == _currentValue) .isEmpty)) { _selectedIndex = null; return; } assert(widget.items! - .where((DropdownItem item) => item.value == widget.value) + .where((DropdownItem item) => item.value == _currentValue) .length == 1); for (int itemIndex = 0; itemIndex < widget.items!.length; itemIndex++) { - if (widget.items![itemIndex].value == widget.value) { + if (widget.items![itemIndex].value == _currentValue) { _selectedIndex = itemIndex; return; } @@ -684,40 +699,49 @@ class DropdownButton2State extends State> final buttonHeight = _buttonStyle?.height ?? (widget.isDense ? _denseButtonHeight : null); - Widget item = buttonItems[_selectedIndex ?? hintIndex ?? 0]; - if (item is DropdownItem) { - item = item.copyWith(alignment: widget.alignment); - } + final Widget innerItemsWidget = buttonItems.isEmpty + ? const SizedBox.shrink() + : ValueListenableBuilder( + valueListenable: widget.valueListenable ?? + widget.multiValueListenable ?? + ValueNotifier(null), + builder: (context, multiValue, _) { + _uniqueValueAssert( + widget.items, + widget.valueListenable, + widget.multiValueListenable, + ); + Widget item = buttonItems[_selectedIndex ?? hintIndex ?? 0]; + if (item is DropdownItem) { + item = item.copyWith(alignment: widget.alignment); + } - // If value is null (then _selectedIndex is null) then we - // display the hint or nothing at all. - final Widget innerItemsWidget; - if (buttonItems.isEmpty) { - innerItemsWidget = const SizedBox.shrink(); - } else { - // When both buttonHeight & buttonWidth are specified, we don't have to use IndexedStack, - // which enhances the performance when dealing with big items list. - // Note: Both buttonHeight & buttonWidth must be specified to avoid changing - // button's size when selecting different items, which is a bad UX. - innerItemsWidget = buttonHeight != null && _buttonStyle?.width != null - ? Align( - alignment: widget.alignment, - child: item, - ) - : IndexedStack( - index: _selectedIndex ?? hintIndex, - alignment: widget.alignment, - children: buttonHeight != null - ? buttonItems.mapIndexed((item, index) => item).toList() - // TODO(Ahmed): use indexed from Flutter [Dart>=v3.0.0]. - : buttonItems.mapIndexed((item, index) { - return Column( - mainAxisSize: MainAxisSize.min, - children: [item], - ); - }).toList(), - ); - } + // When both buttonHeight & buttonWidth are specified, we don't have to use IndexedStack, + // which enhances the performance when dealing with big items list. + // Note: Both buttonHeight & buttonWidth must be specified to avoid changing + // button's size when selecting different items, which is a bad UX. + return buttonHeight != null && _buttonStyle?.width != null + ? Align( + alignment: widget.alignment, + child: item, + ) + : IndexedStack( + index: _selectedIndex ?? hintIndex, + alignment: widget.alignment, + children: buttonHeight != null + ? buttonItems + .mapIndexed((item, index) => item) + .toList() + // TODO(Ahmed): use indexed from Flutter [Dart>=v3.0.0]. + : buttonItems.mapIndexed((item, index) { + return Column( + mainAxisSize: MainAxisSize.min, + children: [item], + ); + }).toList(), + ); + }, + ); Widget result = DefaultTextStyle( style: _enabled @@ -869,7 +893,8 @@ class DropdownButtonFormField2 extends FormField { this.dropdownButtonKey, required List>? items, DropdownButtonBuilder? selectedItemBuilder, - T? value, + ValueListenable? valueListenable, + ValueListenable>? multiValueListenable, Widget? hint, Widget? disabledHint, this.onChanged, @@ -897,21 +922,14 @@ class DropdownButtonFormField2 extends FormField { Color? barrierColor, String? barrierLabel, }) : assert( - items == null || - items.isEmpty || - value == null || - items.where((DropdownItem item) { - return item.value == value; - }).length == - 1, - "There should be exactly one item with [DropdownButton]'s value: " - '$value. \n' - 'Either zero or 2 or more [DropdownItem]s were detected ' - 'with the same value', + valueListenable == null || multiValueListenable == null, + 'Only one of valueListenable or multiValueListenable can be used.', ), decoration = _getInputDecoration(decoration, buttonStyleData), super( - initialValue: value, + initialValue: valueListenable != null + ? valueListenable.value + : multiValueListenable?.value.lastOrNull, autovalidateMode: autovalidateMode ?? AutovalidateMode.disabled, builder: (FormFieldState field) { final _DropdownButtonFormFieldState state = @@ -955,7 +973,8 @@ class DropdownButtonFormField2 extends FormField { key: dropdownButtonKey, items: items, selectedItemBuilder: selectedItemBuilder, - value: state.value, + valueListenable: valueListenable, + multiValueListenable: multiValueListenable, hint: hint, disabledHint: disabledHint, onChanged: onChanged == null ? null : state.didChange, diff --git a/packages/dropdown_button2/lib/src/utils.dart b/packages/dropdown_button2/lib/src/utils.dart index 7d0a547..ff8ba1f 100644 --- a/packages/dropdown_button2/lib/src/utils.dart +++ b/packages/dropdown_button2/lib/src/utils.dart @@ -61,4 +61,50 @@ extension ExtendedIterable on Iterable { var i = 0; return map((e) => f(e, i++)); } + + /// The last element of this iterable, or `null` if the iterable is empty. + /// + /// TODO(Ahmed): use lastOrNull from Flutter [Dart>=v3.0.0]. + E? get lastOrNull { + if (isEmpty) { + return null; + } + return last; + } +} + +void _uniqueValueAssert( + List>? items, + ValueListenable? valueListenable, + ValueListenable>? multiValueListenable, +) { + if (items == null || items.isEmpty) { + return; + } + + String assertMessage(T value) { + return "There should be exactly one item with [DropdownButton]'s value: " + '$value. \n' + 'Either zero or 2 or more [DropdownItem]s were detected ' + 'with the same value'; + } + + assert( + valueListenable?.value == null || + items.where((DropdownItem item) { + return item.value == valueListenable!.value; + }).length == + 1, + assertMessage(valueListenable!.value as T), + ); + + final currentMultiValue = multiValueListenable?.value.lastOrNull; + assert( + currentMultiValue == null || + items.where((DropdownItem item) { + return item.value == currentMultiValue; + }).length == + 1, + assertMessage(currentMultiValue), + ); } diff --git a/packages/dropdown_button2/test/dropdown_button2_test.dart b/packages/dropdown_button2/test/dropdown_button2_test.dart index bf79c3e..072d053 100644 --- a/packages/dropdown_button2/test/dropdown_button2_test.dart +++ b/packages/dropdown_button2/test/dropdown_button2_test.dart @@ -7,7 +7,8 @@ void main() { 'Button and Menu Focus', () { final List menuItems = List.generate(10, (int index) => index); - final value = menuItems.first; + final valueListenable = ValueNotifier(menuItems.first); + final value = valueListenable.value; final findDropdownButton = find.byType(DropdownButton2); final findDropdownButtonFormField = @@ -25,7 +26,7 @@ void main() { home: Scaffold( body: Center( child: DropdownButton2( - value: value, + valueListenable: valueListenable, items: menuItems.map>((int item) { return DropdownItem( value: item, @@ -62,7 +63,7 @@ void main() { home: Scaffold( body: Center( child: DropdownButton2( - value: value, + valueListenable: valueListenable, items: menuItems.map>((int item) { return DropdownItem( value: item, @@ -107,7 +108,7 @@ void main() { child: Form( key: formKey, child: DropdownButtonFormField2( - value: value, + valueListenable: valueListenable, items: menuItems.map>((int item) { return DropdownItem( value: item, diff --git a/packages/dropdown_button2_test/lib/src/few_styling_example.dart b/packages/dropdown_button2_test/lib/src/few_styling_example.dart index 2c63c6c..488c185 100644 --- a/packages/dropdown_button2_test/lib/src/few_styling_example.dart +++ b/packages/dropdown_button2_test/lib/src/few_styling_example.dart @@ -19,7 +19,7 @@ class _FewStylingExampleState extends State { 'Item7', 'Item8', ]; - String? selectedValue; + final valueListenable = ValueNotifier(null); @override Widget build(BuildContext context) { @@ -66,11 +66,9 @@ class _FewStylingExampleState extends State { ), )) .toList(), - value: selectedValue, + valueListenable: valueListenable, onChanged: (value) { - setState(() { - selectedValue = value; - }); + valueListenable.value = value; }, buttonStyleData: ButtonStyleData( height: 50, diff --git a/packages/dropdown_button2_test/lib/src/form_field_example.dart b/packages/dropdown_button2_test/lib/src/form_field_example.dart index 09b00ba..0c4e2c2 100644 --- a/packages/dropdown_button2_test/lib/src/form_field_example.dart +++ b/packages/dropdown_button2_test/lib/src/form_field_example.dart @@ -13,8 +13,7 @@ class _FormFieldExampleState extends State { 'Male', 'Female', ]; - - String? selectedValue; + final valueListenable = ValueNotifier(null); final _formKey = GlobalKey(); @@ -65,6 +64,7 @@ class _FormFieldExampleState extends State { ), )) .toList(), + valueListenable: valueListenable, validator: (value) { if (value == null) { return 'Please select gender.'; @@ -72,10 +72,7 @@ class _FormFieldExampleState extends State { return null; }, onChanged: (value) { - //Do something when selected item is changed. - }, - onSaved: (value) { - selectedValue = value.toString(); + valueListenable.value = value; }, iconStyleData: const IconStyleData( icon: Icon( @@ -96,7 +93,7 @@ class _FormFieldExampleState extends State { TextButton( onPressed: () { if (_formKey.currentState!.validate()) { - _formKey.currentState!.save(); + // Do something. } }, child: const Text('Submit Button'), diff --git a/packages/dropdown_button2_test/lib/src/multi_select_example.dart b/packages/dropdown_button2_test/lib/src/multi_select_example.dart index 512ac5a..d510cb5 100644 --- a/packages/dropdown_button2_test/lib/src/multi_select_example.dart +++ b/packages/dropdown_button2_test/lib/src/multi_select_example.dart @@ -10,12 +10,13 @@ class MultiSelectExample extends StatefulWidget { class _MultiSelectExampleState extends State { final List items = [ + 'All', 'Item1', 'Item2', 'Item3', 'Item4', ]; - List selectedItems = []; + final multiValueListenable = ValueNotifier>([]); @override Widget build(BuildContext context) { @@ -37,18 +38,21 @@ class _MultiSelectExampleState extends State { height: 40, //disable default onTap to avoid closing menu when selecting an item enabled: false, - child: StatefulBuilder( - builder: (context, menuSetState) { - final isSelected = selectedItems.contains(item); + child: ValueListenableBuilder>( + valueListenable: multiValueListenable, + builder: (context, multiValue, _) { + final isSelected = multiValue.contains(item); return InkWell( onTap: () { - isSelected - ? selectedItems.remove(item) - : selectedItems.add(item); - //This rebuilds the StatefulWidget to update the button's text - setState(() {}); - //This rebuilds the dropdownMenu Widget to update the check mark - menuSetState(() {}); + if (item == 'All') { + isSelected + ? multiValueListenable.value = [] + : multiValueListenable.value = List.from(items); + } else { + multiValueListenable.value = isSelected + ? ([...multiValue]..remove(item)) + : [...multiValue, item]; + } }, child: Container( height: double.infinity, @@ -76,23 +80,28 @@ class _MultiSelectExampleState extends State { ), ); }).toList(), - //Use last selected item as the current value so if we've limited menu height, it scroll to last item. - value: selectedItems.isEmpty ? null : selectedItems.last, + multiValueListenable: multiValueListenable, onChanged: (value) {}, selectedItemBuilder: (context) { return items.map( (item) { - return Container( - alignment: AlignmentDirectional.center, - child: Text( - selectedItems.join(', '), - style: const TextStyle( - fontSize: 14, - overflow: TextOverflow.ellipsis, - ), - maxLines: 1, - ), - ); + return ValueListenableBuilder>( + valueListenable: multiValueListenable, + builder: (context, multiValue, _) { + return Container( + alignment: AlignmentDirectional.center, + child: Text( + multiValue + .where((item) => item != 'All') + .join(', '), + style: const TextStyle( + fontSize: 14, + overflow: TextOverflow.ellipsis, + ), + maxLines: 1, + ), + ); + }); }, ).toList(); }, diff --git a/packages/dropdown_button2_test/lib/src/search_example.dart b/packages/dropdown_button2_test/lib/src/search_example.dart index 88b0db6..1d34c8c 100644 --- a/packages/dropdown_button2_test/lib/src/search_example.dart +++ b/packages/dropdown_button2_test/lib/src/search_example.dart @@ -20,7 +20,7 @@ class _SearchExampleState extends State { 'B_Item4', ]; - String? selectedValue; + final valueListenable = ValueNotifier(null); final TextEditingController textEditingController = TextEditingController(); @override @@ -55,11 +55,9 @@ class _SearchExampleState extends State { ), )) .toList(), - value: selectedValue, + valueListenable: valueListenable, onChanged: (value) { - setState(() { - selectedValue = value; - }); + valueListenable.value = value; }, buttonStyleData: const ButtonStyleData( padding: EdgeInsets.symmetric(horizontal: 16), diff --git a/packages/dropdown_button2_test/lib/src/simple_example.dart b/packages/dropdown_button2_test/lib/src/simple_example.dart index fbee714..de69c71 100644 --- a/packages/dropdown_button2_test/lib/src/simple_example.dart +++ b/packages/dropdown_button2_test/lib/src/simple_example.dart @@ -15,7 +15,7 @@ class _SimpleExampleState extends State { 'Item3', 'Item4', ]; - String? selectedValue; + final valueListenable = ValueNotifier(null); @override Widget build(BuildContext context) { @@ -43,11 +43,9 @@ class _SimpleExampleState extends State { ), )) .toList(), - value: selectedValue, + valueListenable: valueListenable, onChanged: (String? value) { - setState(() { - selectedValue = value; - }); + valueListenable.value = value; }, buttonStyleData: const ButtonStyleData( padding: EdgeInsets.symmetric(horizontal: 16), diff --git a/packages/dropdown_button2_test/lib/src/with_separators_example.dart b/packages/dropdown_button2_test/lib/src/with_separators_example.dart index 24593cc..8bc1055 100644 --- a/packages/dropdown_button2_test/lib/src/with_separators_example.dart +++ b/packages/dropdown_button2_test/lib/src/with_separators_example.dart @@ -15,7 +15,7 @@ class _WithSeparatorsExampleState extends State { 'Item3', 'Item4', ]; - String? selectedValue; + final valueListenable = ValueNotifier(null); @override Widget build(BuildContext context) { @@ -53,11 +53,9 @@ class _WithSeparatorsExampleState extends State { child: Divider(), ), ), - value: selectedValue, - onChanged: (String? value) { - setState(() { - selectedValue = value; - }); + valueListenable: valueListenable, + onChanged: (value) { + valueListenable.value = value; }, buttonStyleData: const ButtonStyleData( padding: EdgeInsets.symmetric(horizontal: 16), diff --git a/packages/dropdown_button2_test/test/examples/goldens/multi_select_example/desktop_open_menu.png b/packages/dropdown_button2_test/test/examples/goldens/multi_select_example/desktop_open_menu.png index 1372d86d939c3b28c9664205e3ec2c9f8dea57c6..4f4701d323e1fda518474e6c3b083a8d9825ef2c 100644 GIT binary patch literal 16321 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 E1Zlb?761SM diff --git a/packages/dropdown_button2_test/test/examples/goldens/multi_select_example/ipad_pro_open_menu.png b/packages/dropdown_button2_test/test/examples/goldens/multi_select_example/ipad_pro_open_menu.png index 253970dbcfa1698057e1578ffd7f3720f1bcfd07..2ce0fbaa1524cf366ad37b9f99a3606d7caaf0ea 100644 GIT binary patch literal 39168 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 L>gTe~DWM4fQs2F< literal 33004 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 SJ58Z4YD!v)g?G*W{=Wd5d@_Xq diff --git a/packages/dropdown_button2_test/test/examples/goldens/multi_select_example/iphone_8_open_menu.png b/packages/dropdown_button2_test/test/examples/goldens/multi_select_example/iphone_8_open_menu.png index 404565e89fa7325fa69074782a2683896eb420d5..b22dfc61657b70b3172e69c1e404286bfe3b7382 100644 GIT binary patch literal 17137 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 Ir8|%Q2OcEHp#T5? diff --git a/packages/dropdown_button2_test/test/examples/goldens/multi_select_example/pixel_5_open_menu.png b/packages/dropdown_button2_test/test/examples/goldens/multi_select_example/pixel_5_open_menu.png index 0b83de597ccb03c9a7811ea2e9e871d20b7eecc1..625706d7aa24022b80c71e9d15af67c80d5e7c81 100644 GIT binary patch delta 28250 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 R$5001>jN0uy!~G1{|$e!f#m=I From b5faa4c21bd6e983db5e0206e3162a4aa9cf600b Mon Sep 17 00:00:00 2001 From: Ahmed Elsayed Date: Sat, 9 Mar 2024 17:46:46 +0200 Subject: [PATCH 2/2] Update README --- README.md | 159 ++++++++++--------- packages/dropdown_button2/lib/src/utils.dart | 2 +- 2 files changed, 81 insertions(+), 80 deletions(-) diff --git a/README.md b/README.md index 73002ca..972f0c4 100644 --- a/README.md +++ b/README.md @@ -65,32 +65,33 @@ customize to your needs. ### DropdownButton2: -| Option | Description | Type | Required | -| -------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | --------------------- | :------: | -| [items](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/items.html) | The list of items the user can select | List> | Yes | -| [selectedItemBuilder](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/selectedItemBuilder.html) | A builder to customize how the selected item will be displayed on the button | DropdownButtonBuilder | No | -| [value](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/value.html) | The value of the currently selected [DropdownItem] | T | No | -| [hint](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/hint.html) | The placeholder displayed before the user choose an item | Widget | No | -| [disabledHint](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/disabledHint.html) | The placeholder displayed if the dropdown is disabled | Widget | No | -| [onChanged](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/onChanged.html) | Called when the user selects an item | ValueChanged | No | -| [onMenuStateChange](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/onMenuStateChange.html) | Called when the dropdown menu opens or closes | OnMenuStateChangeFn | No | -| [style](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/style.html) | The text style to use for text in the dropdown button and the dropdown menu | TextStyle | No | -| [underline](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/underline.html) | The widget to use for drawing the drop-down button's underline | Widget | No | -| [isDense](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/isDense.html) | Reduce the button's height | bool | No | -| [isExpanded](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/isExpanded.html) | Makes the button's inner contents expanded (set true to avoid long text overflowing) | bool | No | -| [alignment](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/alignment.html) | Defines how the hint or the selected item is positioned within the button | AlignmentGeometry | No | -| [buttonStyleData](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/buttonStyleData.html) | Used to configure the theme of the button | ButtonStyleData | No | -| [iconStyleData](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/iconStyleData.html) | Used to configure the theme of the button's icon | IconStyleData | No | -| [dropdownStyleData](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/dropdownStyleData.html) | Used to configure the theme of the dropdown menu | DropdownStyleData | No | -| [menuItemStyleData](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/menuItemStyleData.html) | Used to configure the theme of the dropdown menu items | MenuItemStyleData | No | -| [dropdownSearchData](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/dropdownSearchData.html) | Used to configure searchable dropdowns | DropdownSearchData | No | -| [dropdownSeparator](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/dropdownSeparator.html) | Adds separator widget to the dropdown menu | DropdownSeparator | No | -| [customButton](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/customButton.html) | Uses custom widget like icon,image,etc.. instead of the default button | Widget | No | -| [openWithLongPress](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/openWithLongPress.html) | Opens the dropdown menu on long-pressing instead of tapping | bool | No | -| [barrierDismissible](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/barrierDismissible.html) | Whether you can dismiss this route by tapping the modal barrier | bool | No | -| [barrierColor](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/barrierColor.html) | The color to use for the modal barrier. If this is null, the barrier will be transparent | Color | No | -| [barrierLabel](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/barrierLabel.html) | The semantic label used for a dismissible barrier | String | No | -| [barrierCoversButton](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/barrierCoversButton.html) | Specifies whether the modal barrier should cover the dropdown button or not. | bool | No | +| Option | Description | Type | Required | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | -------------------------- | :------: | +| [items](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/items.html) | The list of items the user can select | List> | Yes | +| [selectedItemBuilder](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/selectedItemBuilder.html) | A builder to customize how the selected item will be displayed on the button | DropdownButtonBuilder | No | +| [valueListenable](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/valueListenable.html) | A [ValueListenable] that represents the value of the currently selected [DropdownItem]. | ValueListenable? | No | +| [multiValueListenable](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/multiValueListenable.html) | A [ValueListenable] that represents a list of the currently selected [DropdownItem]s | ValueListenable>? | No | +| [hint](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/hint.html) | The placeholder displayed before the user choose an item | Widget | No | +| [disabledHint](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/disabledHint.html) | The placeholder displayed if the dropdown is disabled | Widget | No | +| [onChanged](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/onChanged.html) | Called when the user selects an item | ValueChanged | No | +| [onMenuStateChange](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/onMenuStateChange.html) | Called when the dropdown menu opens or closes | OnMenuStateChangeFn | No | +| [style](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/style.html) | The text style to use for text in the dropdown button and the dropdown menu | TextStyle | No | +| [underline](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/underline.html) | The widget to use for drawing the drop-down button's underline | Widget | No | +| [isDense](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/isDense.html) | Reduce the button's height | bool | No | +| [isExpanded](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/isExpanded.html) | Makes the button's inner contents expanded (set true to avoid long text overflowing) | bool | No | +| [alignment](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/alignment.html) | Defines how the hint or the selected item is positioned within the button | AlignmentGeometry | No | +| [buttonStyleData](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/buttonStyleData.html) | Used to configure the theme of the button | ButtonStyleData | No | +| [iconStyleData](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/iconStyleData.html) | Used to configure the theme of the button's icon | IconStyleData | No | +| [dropdownStyleData](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/dropdownStyleData.html) | Used to configure the theme of the dropdown menu | DropdownStyleData | No | +| [menuItemStyleData](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/menuItemStyleData.html) | Used to configure the theme of the dropdown menu items | MenuItemStyleData | No | +| [dropdownSearchData](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/dropdownSearchData.html) | Used to configure searchable dropdowns | DropdownSearchData | No | +| [dropdownSeparator](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/dropdownSeparator.html) | Adds separator widget to the dropdown menu | DropdownSeparator | No | +| [customButton](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/customButton.html) | Uses custom widget like icon,image,etc.. instead of the default button | Widget | No | +| [openWithLongPress](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/openWithLongPress.html) | Opens the dropdown menu on long-pressing instead of tapping | bool | No | +| [barrierDismissible](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/barrierDismissible.html) | Whether you can dismiss this route by tapping the modal barrier | bool | No | +| [barrierColor](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/barrierColor.html) | The color to use for the modal barrier. If this is null, the barrier will be transparent | Color | No | +| [barrierLabel](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/barrierLabel.html) | The semantic label used for a dismissible barrier | String | No | +| [barrierCoversButton](https://pub.dev/documentation/dropdown_button2/latest/dropdown_button2/DropdownButton2/barrierCoversButton.html) | Specifies whether the modal barrier should cover the dropdown button or not. | bool | No | #### Subclass ButtonStyleData: @@ -190,7 +191,7 @@ final List items = [ 'Item3', 'Item4', ]; -String? selectedValue; +final valueListenable = ValueNotifier(null); @override Widget build(BuildContext context) { @@ -218,11 +219,9 @@ Widget build(BuildContext context) { ), )) .toList(), - value: selectedValue, + valueListenable: valueListenable, onChanged: (String? value) { - setState(() { - selectedValue = value; - }); + valueListenable.value = value; }, buttonStyleData: const ButtonStyleData( padding: EdgeInsets.symmetric(horizontal: 16), @@ -251,7 +250,7 @@ final List items = [ 'Item7', 'Item8', ]; -String? selectedValue; +final valueListenable = ValueNotifier(null); @override Widget build(BuildContext context) { @@ -298,11 +297,9 @@ Widget build(BuildContext context) { ), )) .toList(), - value: selectedValue, + valueListenable: valueListenable, onChanged: (value) { - setState(() { - selectedValue = value; - }); + valueListenable.value = value; }, buttonStyleData: ButtonStyleData( height: 50, @@ -360,7 +357,7 @@ final List items = [ 'Item3', 'Item4', ]; -String? selectedValue; +final valueListenable = ValueNotifier(null); @override Widget build(BuildContext context) { @@ -398,11 +395,9 @@ Widget build(BuildContext context) { child: Divider(), ), ), - value: selectedValue, - onChanged: (String? value) { - setState(() { - selectedValue = value; - }); + valueListenable: valueListenable, + onChanged: (value) { + valueListenable.value = value; }, buttonStyleData: const ButtonStyleData( padding: EdgeInsets.symmetric(horizontal: 16), @@ -431,12 +426,13 @@ Widget build(BuildContext context) { ```dart final List items = [ + 'All', 'Item1', 'Item2', 'Item3', 'Item4', ]; -List selectedItems = []; +final multiValueListenable = ValueNotifier>([]); @override Widget build(BuildContext context) { @@ -458,16 +454,21 @@ Widget build(BuildContext context) { height: 40, //disable default onTap to avoid closing menu when selecting an item enabled: false, - child: StatefulBuilder( - builder: (context, menuSetState) { - final isSelected = selectedItems.contains(item); + child: ValueListenableBuilder>( + valueListenable: multiValueListenable, + builder: (context, multiValue, _) { + final isSelected = multiValue.contains(item); return InkWell( onTap: () { - isSelected ? selectedItems.remove(item) : selectedItems.add(item); - //This rebuilds the StatefulWidget to update the button's text - setState(() {}); - //This rebuilds the dropdownMenu Widget to update the check mark - menuSetState(() {}); + if (item == 'All') { + isSelected + ? multiValueListenable.value = [] + : multiValueListenable.value = List.from(items); + } else { + multiValueListenable.value = isSelected + ? ([...multiValue]..remove(item)) + : [...multiValue, item]; + } }, child: Container( height: double.infinity, @@ -495,23 +496,28 @@ Widget build(BuildContext context) { ), ); }).toList(), - //Use last selected item as the current value so if we've limited menu height, it scroll to last item. - value: selectedItems.isEmpty ? null : selectedItems.last, + multiValueListenable: multiValueListenable, onChanged: (value) {}, selectedItemBuilder: (context) { return items.map( (item) { - return Container( - alignment: AlignmentDirectional.center, - child: Text( - selectedItems.join(', '), - style: const TextStyle( - fontSize: 14, - overflow: TextOverflow.ellipsis, - ), - maxLines: 1, - ), - ); + return ValueListenableBuilder>( + valueListenable: multiValueListenable, + builder: (context, multiValue, _) { + return Container( + alignment: AlignmentDirectional.center, + child: Text( + multiValue + .where((item) => item != 'All') + .join(', '), + style: const TextStyle( + fontSize: 14, + overflow: TextOverflow.ellipsis, + ), + maxLines: 1, + ), + ); + }); }, ).toList(); }, @@ -546,7 +552,7 @@ final List items = [ 'B_Item4', ]; -String? selectedValue; +final valueListenable = ValueNotifier(null); final TextEditingController textEditingController = TextEditingController(); @override @@ -581,11 +587,9 @@ Widget build(BuildContext context) { ), )) .toList(), - value: selectedValue, + valueListenable: valueListenable, onChanged: (value) { - setState(() { - selectedValue = value; - }); + valueListenable.value = value; }, buttonStyleData: const ButtonStyleData( padding: EdgeInsets.symmetric(horizontal: 16), @@ -923,8 +927,7 @@ final List genderItems = [ 'Male', 'Female', ]; - -String? selectedValue; +final valueListenable = ValueNotifier(null); final _formKey = GlobalKey(); @@ -975,6 +978,7 @@ Widget build(BuildContext context) { ), )) .toList(), + valueListenable: valueListenable, validator: (value) { if (value == null) { return 'Please select gender.'; @@ -982,10 +986,7 @@ Widget build(BuildContext context) { return null; }, onChanged: (value) { - //Do something when selected item is changed. - }, - onSaved: (value) { - selectedValue = value.toString(); + valueListenable.value = value; }, iconStyleData: const IconStyleData( icon: Icon( @@ -1006,7 +1007,7 @@ Widget build(BuildContext context) { TextButton( onPressed: () { if (_formKey.currentState!.validate()) { - _formKey.currentState!.save(); + // Do something. } }, child: const Text('Submit Button'), @@ -1025,7 +1026,7 @@ Widget build(BuildContext context) { class CustomDropdownButton2 extends StatelessWidget { const CustomDropdownButton2({ required this.hint, - required this.value, + required this.valueListenable, required this.dropdownItems, required this.onChanged, this.selectedItemBuilder, @@ -1054,7 +1055,7 @@ class CustomDropdownButton2 extends StatelessWidget { super.key, }); final String hint; - final String? value; + final ValueListenable? valueListenable; final List dropdownItems; final ValueChanged? onChanged; final DropdownButtonBuilder? selectedItemBuilder; @@ -1097,7 +1098,7 @@ class CustomDropdownButton2 extends StatelessWidget { ), ), ), - value: value, + valueListenable: valueListenable, items: dropdownItems .map((String item) => DropdownItem( value: item, diff --git a/packages/dropdown_button2/lib/src/utils.dart b/packages/dropdown_button2/lib/src/utils.dart index ff8ba1f..6c43d5a 100644 --- a/packages/dropdown_button2/lib/src/utils.dart +++ b/packages/dropdown_button2/lib/src/utils.dart @@ -64,7 +64,7 @@ extension ExtendedIterable on Iterable { /// The last element of this iterable, or `null` if the iterable is empty. /// - /// TODO(Ahmed): use lastOrNull from Flutter [Dart>=v3.0.0]. + // TODO(Ahmed): use lastOrNull from Flutter [Dart>=v3.0.0]. E? get lastOrNull { if (isEmpty) { return null;