Flutter - выпадающее значение - PullRequest
0 голосов
/ 13 мая 2019

Мне нужно использовать строку в качестве значения в раскрывающемся списке флаттера. Но возвращает

Было выброшено еще одно исключение: 'package: flutter / src / material / dropdown.dart': ошибочное утверждение: строка 609 поз. 15: 'items == null || items.isEmpty || значение == ноль || items.where ((DropdownMenuItem item) => item.value == значение) .length == 1 ': не соответствует действительности.

Полный журнал здесь .

Код

items: dataMaker.map((item) {
                          return new DropdownMenuItem<String>(
                            child: new Text(item['fabricante'],
                                textAlign: TextAlign.center),
                            value: item['fabricante'], //FAIL
                          );
                        }).toList(),

Итак, мой вопрос: Как я могу использовать строку в качестве значения элемента? Другое решение - получить текст выпадающего меню, но я не знаю, как.

- SOLUTION -

С помощью этого кода я могу найти все элементы в списке dataMaker, которые имеют тот же текст, что и раскрывающееся меню.

 var test =dataMaker.firstWhere((fabricante) => fabricante["id"].toString() == dropdownSelectionMaker);              
 dataModelo = dataMaker.where((modelo) => modelo["fabricante"] == test["fabricante"]).toList();   

Ответы [ 2 ]

0 голосов
/ 13 мая 2019

попробуйте эту надежду, это работает для вас:

 new DropdownButton(
                            value: _current,
    items: dataMaker.map((item) {
                              return new DropdownMenuItem<String>(
                                child: new Text(item.fabricante,
                                    textAlign: TextAlign.center),
                                value: item.fabricante, //FAIL
                              );
                            }).toList(),
                            onChanged: (selected) => setState(() {
      _current = selected;
    });
0 голосов
/ 13 мая 2019

Вы можете попробовать этот метод, Вот как я иногда использую.

Код может содержать некоторые проблемы. Я создал его в обычном TextEditor.

items: (){
    List<Widget> data = List<Widget>();
    for(int i=0;i<dataMaker.length;i++){
        data.add(
            DropdownMenuItem<String>(
                child: Text(item['fabricante'],
                textAlign: TextAlign.center),
                value: item['fabricante'],
            );
        );
    }
    return data;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...