我创建了城市模型,并为此创建了提供程序类,
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;
}
}
我只是想从citysData列表中获取城市的名称,并使用该名称列表创建一个下拉列表。
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;
},
),
但是我的屏幕上没有任何东西,也没有错误消息。我做的一切正确吗?还是有更好的方法来做到这一点?任何建议和答案都将有所帮助。谢谢!
我相信问题是您有:
class CitiesProviders extends ChangeNotifier {}
您应该拥有:
class CitiesProviders with ChangeNotifier {}
我在您的其余代码中没有看到其他任何问题,但我还是Flutter的新手。
我的错误!
List<String> get cityNames {
List<String> names = [];
citiesData.map((value) {
names.add(value.cityName);
}).toList(); // Added here
return name)s;
}
我添加了toList(),它现在正在工作。