我有一个工作正常的DropdownMenu
,但我不需要它,我只是无法转换它。ListView
如下所示:
// Create the List of devices to be shown in Dropdown Menu
List<DropdownMenuItem<BluetoothDevice>> _getDeviceItems() {
List<DropdownMenuItem<BluetoothDevice>> items = [];
if (_devicesList.isEmpty) {
items.add(
DropdownMenuItem(
child: Text(allTranslations.text(StringConstant.none)),
)
);
} else {
_devicesList.forEach((device) {
items.add(
DropdownMenuItem(
child: Text(device.name),
value: device,
));
});
}
return items;
}
我这样称呼它
DropdownButton(
items: _getDeviceItems(),
onChanged: (value) => setState(() => _device = value),
value: _device,
),
我试着把它转换成这样的列表:
// Create the List of devices to be shown in Dropdown Menu
List<ListTile> _getDeviceListTiles() {
List<ListTile> items = [];
if (_devicesList.isEmpty) {
items.add(
ListTile(
title: Text(allTranslations.text(StringConstant.none)),
)
);
} else {
_devicesList.forEach((device) {
items.add(
ListTile(
title: Text(device.name),
));
});
}
return items;
}
正如您可能看到的,我设法将它转换为一个
DropdownMenu
列表,但问题是我现在不知道如何在ListTile
中调用这个列表。 最佳答案
您可以重新构造代码,或者对现有代码使用这两种简单的方法。
简单列表视图
ListView(
padding: const EdgeInsets.all(8.0),
children: _getDeviceListTiles()
);
列表视图.builder()
ListView.builder(
padding: const EdgeInsets.all(8.0),
itemCount: _getDeviceListTiles().length,
itemBuilder: (BuildContext context, int index) {
return _getDeviceListTiles()[index];
}
);