如何从 Provider 创建一个下拉列表? (扑)
Posted
技术标签:
【中文标题】如何从 Provider 创建一个下拉列表? (扑)【英文标题】:How do I create a dropdownList from Provider ? (Flutter) 【发布时间】:2020-06-15 00:57:10 【问题描述】:我创建了一个城市模型,并为此创建了一个提供者类,
class CityModel
String cityId;
String cityName;
CityModel(this.cityId, this.cityName);
这是提供者类
class CitiesProviders extends ChangeNotifier
List<CityModel> citiesData = [];
void addData(CityModel data)
citiesData.add(data);
notifyListeners();
List<String> get cityNames
List<String> names = [];
citiesData.map((value)
names.add(value.cityName);
);
return names;
我只是想从城市数据列表中获取城市名称,并使用该名称列表创建一个下拉列表。
DropdownButton<String>(
value: currVal,
items: Provider.of<CitiesProviders>(context)
.cityNames
.map<DropdownMenuItem<String>>((String value)
return DropdownMenuItem<String>(
value: value,
child: Text(value),
);
).toList(),
onChanged: (value)
currVal = value;
,
),
但我没有在屏幕上看到任何内容,也没有错误消息。我做的一切正确吗?还是有更好的方法来做到这一点?任何建议和答案都会有所帮助。谢谢!
【问题讨论】:
【参考方案1】:我认为问题在于您有:
class CitiesProviders extends ChangeNotifier
你应该有:
class CitiesProviders with ChangeNotifier
我在您的其余代码中没有看到任何其他问题,但我还是 Flutter 的新手。
【讨论】:
【参考方案2】:我的错!
List<String> get cityNames
List<String> names = [];
citiesData.map((value)
names.add(value.cityName);
).toList(); // Added here
return name)s;
我添加了 toList(),它现在可以工作了。
【讨论】:
以上是关于如何从 Provider 创建一个下拉列表? (扑)的主要内容,如果未能解决你的问题,请参考以下文章
如何创建多个从同一个数组中获取值的动态下拉列表,而无需更改 Javascript 中的其他下拉列表