Flutter Drop DownMenuItem Виджет - PullRequest
0 голосов
/ 02 мая 2020

Я хочу разработать кнопку выпадающего меню во Флаттере. Но я получаю следующее сообщение об ошибке.

════════ Исключение, обнаруженное библиотекой виджетов ════════════════════════ ═══════════════════════════════ Следующее NoSuchMethodError было сгенерировано при создании DefaultTextStyle (debugLabel: (englishLike body1 2014) .merge (whiteMountainView) body1), наследовать: false, цвет: Color (0xffffffff), семейство: Roboto, размер: 14.0, вес: 400, базовый уровень: алфавит c, украшение: TextDecoration.none, softWrap: перенос по ширине окна, переполнение: клип) :

Получатель 'value' был вызван в null. Получатель: null Пробный вызов: значение

Вот мой код.

String Selected_Category;
List<String>Categories=["C++","Java","Flutter","Kotlin","PHP","C#"];    
DropdownButton<String>(
        focusColor: Colors.redAccent,
        items: Categories.map(
            (String dropdownStringItem) {
             DropdownMenuItem<String>(
                   value: dropdownStringItem,
                   child:
                   Text(dropdownStringItem),
                   );
        }).toList(),
        onChanged: (value) {
                   setState(() {
                          this.Selected_Category = value;
                     });
               },
       value: Selected_Category,
    ),

Пожалуйста, помогите мне, как я могу решить эту проблему.

Заранее спасибо.

Ответы [ 4 ]

0 голосов
/ 02 мая 2020

Вы можете установить значение: 'c ++' или инициализировать selected_category в любой из вариантов, например

         Selected_category = 'c++'
0 голосов
/ 02 мая 2020

Вот как вы строите выпадающую кнопку:

String dropdownValue = 'One';

@override
Widget build(BuildContext context) {
  return DropdownButton<String>(
    value: dropdownValue,
    icon: Icon(Icons.arrow_downward),
    iconSize: 24,
    elevation: 16,
    style: TextStyle(
      color: Colors.deepPurple
    ),
    underline: Container(
      height: 2,
      color: Colors.deepPurpleAccent,
    ),
    onChanged: (String newValue) {
      setState(() {
        dropdownValue = newValue;
      });
    },
    items: <String>['One', 'Two', 'Free', 'Four']
      .map<DropdownMenuItem<String>>((String value) {
        return DropdownMenuItem<String>(
          value: value,
          child: Text(value),
        );
      })
      .toList(),
  );
}
0 голосов
/ 02 мая 2020

Вы получаете эту ошибку, потому что вы не возвращаете DropDownButton.

У вас просто отсутствует ключевое слово return.

return DropdownMenuItem<String>( // return keyword added
0 голосов
/ 02 мая 2020

Вы получаете эту ошибку, потому что ваша переменная Selected_Category не инициализирована.

Присвойте ей значение по умолчанию, и у вас все получится:)

...