Оставьте значение по умолчанию в раскрывающемся меню. - PullRequest
0 голосов
/ 03 августа 2020

У меня есть раскрывающееся меню с основной категорией также подкатегорией. В моей регистрации рабочего я вызываю это раскрывающееся меню с API, поэтому, если я открою страницу регистрации рабочего, мне нужно выбрать рабочий по умолчанию, также измените раскрывающееся меню подкатегории на основе значения по умолчанию в В этом случае рабочий, в основной категории всего 4 товара. Возврат

1: Рабочий 2: Магазин 3. Аренда оборудования 4. Подрядчик

Это 4 основные категории items.so, когда я открываю страницу регистрации работника, мне нужен работник по умолчанию в раскрывающемся списке. проблема в том, что если я инициализирую значение по умолчанию, раскрывающийся список подкатегорий не работает

Это то что я хочу

 Flexible(
              flex: 0,
              child: Padding(
                padding: EdgeInsets.only(left: 10, right: 10, top: 15),
                child: Container(
                  width: double.infinity,
                  height: 45,
                  decoration: BoxDecoration(
                      color: Colors.white,
                      borderRadius: BorderRadius.circular(5),
                      border: Border.all(color: Colors.blueGrey)),
                  child: DropdownButton(
                    isExpanded: true,
                    itemHeight: 50,
                    icon: Icon(Icons.arrow_drop_down),
                    iconSize: 40,
                    underline: SizedBox(),
                    hint: Padding(
                      padding: const EdgeInsets.all(8.0),
                      child: Text(
                        "Category",
                        style: TextStyle(fontSize: 15, color: Colors.black54),
                      ),
                    ),
                    value: _selectedmenu,
                    onChanged: (NewValues) {
                      _selectedmenu = NewValues;

                      setState(() {});
                    },
                    items: home_model.map((menu) {
                      return DropdownMenuItem(
                        child: Padding(
                          padding: const EdgeInsets.all(8.0),
                          child: language != "ml"
                              ? Text(menu.english)
                              : Text(menu.malayalam),
                        ),
                        value: menu.id,
                      );
                    }).toList(),
                  ),
                ),
              ),
            ),

Ответы [ 2 ]

1 голос
/ 03 августа 2020

Установите onChanged из DropDownButton на:

onChanged: (value) {
   setState(() {
     _selectedmenu = value;
   });
},

И инициализируйте _selectedmenu с идентификатором элемента Worker, например

var _selectedmenu = 'worker';
0 голосов
/ 03 августа 2020

Инициализировал _selectedmenu с идентификатором рабочего по умолчанию, удалил onchanged и DropdownMenuItem и добавил в текст с worker с условием, потому что у меня есть эта локализация, интегрированная в него. Передав инициализированное _selectedmenu подкатегории api и вызвав api в setState в основном классе

String _selectedmenu = "5ef1b61930def32b3cbe7890";
    
            Flexible(
                  flex: 0,
                  child: Padding(
                    padding: EdgeInsets.only(left: 10, right: 10, top: 15),
                    child: Container(
                      width: double.infinity,
                      height: 45,
                      decoration: BoxDecoration(
                          color: Colors.white,
                          borderRadius: BorderRadius.circular(5),
                          border: Border.all(color: Colors.blueGrey)),
                      child: DropdownButton(
                        isExpanded: true,
                        itemHeight: 50,
                        icon: Icon(Icons.arrow_drop_down),
                        iconSize: 40,
                        underline: SizedBox(),
                        hint: Padding(
                          padding: const EdgeInsets.all(8.0),
                          child: language != "ml"
                              ? Text(
                                  "Worker",
                                  style:
                                      TextStyle(fontSize: 15, color: Colors.black),
                                )
                              : Text(
                                  "ജോലിക്കാർ",
                                  style:
                                      TextStyle(fontSize: 15, color: Colors.black),
                                ),
                        ),
                        value: _selectedmenu,
                      ),
                    ),
                  ),
                ),
...