我有一个工作正常的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];
  }
);

10-08 12:33