Home > Net >  how to use dropdownbutton with same value?
how to use dropdownbutton with same value?

Time:05-12

There are few same values in the dropdown button , when i tap on that it show the error ,is there any way to use the use the dropdown with same values .I have tried using the value :

DropdownButtonHideUnderline(
                    child: DropdownButton2(
                      iconEnabledColor: primaryColor,
                      selectedItemHighlightColor: primaryColor,
                      hint: Text(
                        'User type',
                        style: TextStyle(
                          fontSize: 14,
                          color: Theme.of(context).hintColor,
                        ),
                      ),
                      items: _user_type
                          .map((item) => DropdownMenuItem<String>(
                                value: item,
                                child: Text(
                                  item,
                                  style: const TextStyle(
                                    fontSize: 14,
                                  ),
                                ),
                              ))
                          .toList(),
                      value: selectedValue,
                      onChanged: (value) {
                        setState(() {
                          selectedValue = value as String;
                        });
                      },
                      buttonHeight: 40,
                      // buttonWidth: doubl,
                      itemHeight: 40,
                    ),

still getting the error

CodePudding user response:

Value of every DropdownMenuItem should be unique. In order to make use of list which have repetitive values you should have unique identifier of it.

you can create model.

class Model {
  int id;
  String value;
  Model(this.id, this.value);
}

You can create list with repetitive values

 List<Model> list = [
    Model(0, "a"),
    Model(1, "a"),
    Model(2, "b"),
    Model(3, "b"),
    Model(4, "c"),
    Model(5, "c"),
  ];

and can use list like this in dropdownbutton.

DropdownButton(
  value: _selectedValue,
  items: list
     .map((value) => DropdownMenuItem(
      value: value.id, child: Text(value.value)))
      .toList(),
  onChanged: (value) {
      _selectedValue = value as int;
       setState(() {});
          },
      )

CodePudding user response:

Why don't you try adding a .toSet() before the .map(). The .toSet() should filter your list to unique values.

 DropdownButtonHideUnderline(
                    child: DropdownButton2(
                      iconEnabledColor: primaryColor,
                      selectedItemHighlightColor: primaryColor,
                      hint: Text(
                        'User type',
                        style: TextStyle(
                          fontSize: 14,
                          color: Theme.of(context).hintColor,
                        ),
                      ),
                      items: _user_type
                          .toSet()
                          .map((item) => DropdownMenuItem<String>(
                                value: item,
                                child: Text(
                                  item,
                                  style: const TextStyle(
                                    fontSize: 14,
                                  ),
                                ),
                              ))
                          .toList(),
                      value: selectedValue,
                      onChanged: (value) {
                        setState(() {
                          selectedValue = value as String;
                        });
                      },
                      buttonHeight: 40,
                      // buttonWidth: doubl,
                      itemHeight: 40,
                    ),

CodePudding user response:

Try below code, I have used image

Your Dropdown data result-> image

You can refer my answer here, here, here also for same using dropdown_below package

  • Related