Несколько текстов в раскрывающемся меню

#android #ios #flutter #dart

Вопрос:

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

Мне нужно разработать расширенное выпадающее меню только на изображении чуть ниже текста «Уровень языка…» с 2 текстами внутри пункта выпадающего меню. Я поделюсь кодом выпадающего меню.

 DropdownButton<String>(
  underline: Container(),
  isExpanded: true,
  isDense: true,
  value: selected,
  icon: Icon(Icons.arrow_downward),
  iconSize: 24,
  elevation: 16,
  style: TextStyle(color: Colors.black),
  onChanged: (value) {
    selectedCallback(value);
    setState(() {
      selected = value;
    });
  },
  
  items: list.map<DropdownMenuItem<String>>((e) {
    return DropdownMenuItem<String>(
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        mainAxisAlignment: MainAxisAlignment.center,
        children: [Text(e)],
      ),
      value: e,
    );
  }).toList(),
  selectedItemBuilder: (context) => list
      .map((e) => Text(
            e,
            style: TextStyle(color: Colors.black),
          ))
      .toList(),
)
 

Пожалуйста, помогите мне.
Спасибо

Ответ №1:

Я нашел решение

 DropdownButton<LanguageModel>(
  underline: Container(),
  isExpanded: true,
  isDense: true,
  value: selected,
  icon: Icon(Icons.arrow_downward),
  iconSize: 24,
  elevation: 16,
  style: TextStyle(color: Colors.black),
  onChanged: (value) {
    selectedCallback(value);
    setState(() {
      selected = value;
    });
  },
  onTap: () {
    setState(() {
      check = true;
    });
  },
  selectedItemBuilder: (ctxt) {
    return list.map<DropdownMenuItem<LanguageModel>>((e) {
      return DropdownMenuItem<LanguageModel>(
        child: Text(e.level),
        value: e,
      );
    }).toList();
  },
  items: list.map((e) {
    return DropdownMenuItem(
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          Text(e.level,style: TextStyle(fontWeight: FontWeight.w400),),
          Text(e.description,style: TextStyle(color: Color.fromARGB(100, 166, 166, 166).withOpacity(1.0),fontSize: 12),),
          Divider(color: Colors.grey,thickness: 1,)
        ],
      ),
      value: e,
    );
  }).toList(),
);