我是Flutter的新手,如果问题听起来很傻,请原谅我。 我正在开发一个具有DropdownButtonFormField的Flutter应用程序。
jest.mock("./browser", () => {
const br = jest.requireActual("browser");
return {
...br,
browser: {id:'changed value'}
};
})
实际上,我可以从下拉列表中获取城市ID。问题是,我想获取城市ID和城市国家/地区,并将国家/地区存储在_selectedCountry中。
我尝试向onchanged添加第二个参数,但出现错误。
String _selectedCity;
String _selectedCountry;
DropdownButtonFormField(
value: _selectedCity,
hint: Container(
child: Text(
"Select City",
),
),
onChanged: (val) {
setState(() {
_selectedCity = val;
_selectedCountry = val;
//what i would like is : _selectedCountry = name
});
print(_selectedCity);
},
items: city.map((city) {
return DropdownMenuItem(
value: city.cityId,
child: Text(city.country),
);
}).toList(),
);
我不知道该怎么办,Flutter文档没有提供有关如何执行此操作的太多信息。
我将非常感谢我能获得的任何方法建议。
谢谢。
答案 0 :(得分:0)
onChanged
方法不能为您提供多个值,但是该值不必是字符串!
假设您有一个名为Region的类,如下所示:
class Region {
final String country;
final String city;
Region(this.country, this.city);
}
然后可以使用Region类来定义它,而不是使用DropdownButtonFormField中默认的String。现在,onChange方法也返回一个Region,您可以访问其中的所有数据。因此您的代码应如下所示:
Region _selectedRegion;
@override
Widget build(BuildContext context) {
return Scaffold(
body: DropdownButtonFormField<Region>(
value: _selectedRegion,
onChanged: (val) {
setState(() {
_selectedRegion = val;
});
},
items: {your data}.map((regionData) {
return DropdownMenuItem<Region>(
value: Region(regionData.country, regionData.city),
child: Text(regionData.city),
);
}).toList(),
));
}