Я хочу создать DropDownButton, в котором DropDownMenuItem имеет ListTile () в качестве дочернего элемента вместо обычного виджета Text (). Здесь задается аналогичный вопрос здесь , но, к сожалению, ответ, похоже, не работает.
Вот мой код:
class _MyHomePageState extends State<MyHomePage> {
String choice = 'Item 1';
@override
Widget build(BuildContext context) {
return Center(
child: Card(
child: DropdownButton(
value: choice,
items: stringItems.map<DropdownMenuItem<String>>((String value) {
return DropdownMenuItem<String>(
value: value,
child: getListTile(value),
// child: Text(value),
);
}).toList(),
onChanged: (String newValue) {
setState(() {
choice = newValue;
});
}
)
),
);
}
Widget getListTile(String value) {
return ListTile(
leading: Text('FooBar'),
title: Text(value),
trailing: Icon(Icons.euro_symbol),
);
}
List<String> stringItems = ['Item 1', 'Item 2', 'Item 3', 'Item 4'];
}
Выдается следующее исключение :
The following assertion was thrown during performLayout():
BoxConstraints forces an infinite width.
The offending constraints were:
BoxConstraints (w=Infinity, 0.0<=h<=48.0)
The relevant error-causing widget was:
ListTile
Я провел некоторое исследование об этом исключении, но все, что я нашел, это статьи / учебные пособия, касающиеся столбцов и строк. в чем именно проблема?: (Насколько я понимаю, ListTile будет растягиваться по ширине до бесконечности).
Решения, которые я пробовал до сих пор:
Я пытался установить "ширину" "ListTile к указанному c значению, но ListTile не имеет свойства" width ".
Я обернул ListTile-Widget в Expanded-Widget. Но это тоже не сработало.
Есть ли решение?
Заранее спасибо!