gpt4 book ai didi

flutter - Flutter:如何创建一个将ListTile作为子项的DropdownMenuItem

转载 作者:行者123 更新时间:2023-12-03 04:55:43 26 4
gpt4 key购买 nike

我想创建一个DropDownButton,其中DropDownMenuItem具有ListTile()作为子项,而不是通常的Text()小部件。
还有一个类似的问题问here
,但不幸的是,该答案似乎无效。

这是我的代码:

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的“宽度”设置为特定值,但是
    ListTile没有属性“width”。
  • 我已经将ListTile-Widget包装在Expanded-Widget中。但是这个
    也没用

  • 有解决方案吗?

    提前致谢!

    最佳答案

    ListTile没有约束,将尝试使用尽可能多的空间。如果您将ListTile用固定了Containerheightwidth包装,您将不再有问题:

    Widget getListTile(String value) {
    return Container(
    height: 60,
    width: 100,
    child: ListTile(
    leading: Text('FooBar'),
    title: Text(value),
    trailing: Icon(Icons.euro_symbol),
    ),
    );
    }

    关于flutter - Flutter:如何创建一个将ListTile作为子项的DropdownMenuItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60637154/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com