如何从 Provider 创建下拉列表? (扑)
How do I create a dropdownList from Provider ? (Flutter)
我创建了一个城市模型,并为此创建了一个提供商 class,
class CityModel {
String cityId;
String cityName;
CityModel({this.cityId, this.cityName});
}
这是提供商class
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;
}
}
我只是想从 citiesData 列表中获取城市名称并使用该名称列表创建下拉列表。
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(),现在可以使用了。
我创建了一个城市模型,并为此创建了一个提供商 class,
class CityModel {
String cityId;
String cityName;
CityModel({this.cityId, this.cityName});
}
这是提供商class
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;
}
}
我只是想从 citiesData 列表中获取城市名称并使用该名称列表创建下拉列表。
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(),现在可以使用了。