首页 > 解决方案 > Flutter中DropdownButton的列表理解(Dart)

问题描述

我目前正在学习 Flutter,并希望DropdownButton使用以下列表创建一个:

const List<String> currenciesList = [
  'AUD',
  'BRL',
  'CAD',
  'CNY',
  'EUR',
];

小部件的item属性DropdownButton需要一个列表。因此,我想通过使用列表理解来清理代码。我编写了以下函数来DropdownMenuItem根据给定的字符串创建一个:

DropdownMenuItem makeDropdownMenuItem (String currency) {
  DropdownMenuItem item = DropdownMenuItem(
    child: Text(currency),
    value: currency,
  );
  return item;
}

不幸的是,当我使用我在这里找到的列表理解语法时,我得到一个错误:

child: DropdownButton<String>(
              value: selectedCurrency,
              items: currenciesList.map((currency) => makeDropdownMenuItem(currency)).toList(),
              onChanged: (value) {
                setState(() {
                  selectedCurrency = value;
                });
            },

类型“List<DropdownMenuItem>”不是“List<DropdownMenuItem>”类型的子类型?

谁能帮我解决这个问题?非常感谢!

标签: flutterdartlist-comprehension

解决方案


DropdownMenuItem是一个泛型类,因此您必须在 makeDropdownMenuItem 函数中明确指定实际类型:

DropdownMenuItem<String> makeDropdownMenuItem(String currency) {
  final item = DropdownMenuItem(
    child: Text(currency),
    value: currency,
  );
  return item;
}

推荐阅读