我有无状态类包含表单4选项卡和其中一个选项卡包含3下拉选择地址上的国家和基于所选的值我想要第二个下拉(这是城市)来查看其项目。下拉列表中的所有项都来自本地sqlite数据库。问题是第二个下拉菜单不查看其项目,但当我使用调试器时,我发现列表成功地来自数据库,但列表值的更新无状态类不会发生。有办法解决这个问题吗?
DropdownButtonFormField<Region>(
decoration: InputDecoration(
isDense: true,
floatingLabelBehavior:
FloatingLabelBehavior.auto,
labelStyle: TextStyle(fontSize: 22),
contentPadding:
EdgeInsets.symmetric(vertical: 9),
),
value: regionList.isEmpty
? region
: helRegion.getReg(
user.regionAdresse, regionList),
//icon: Icon(Icons.arrow_downward),
iconSize: 24,
elevation: 16,
onChanged: (selectedRegion) {
onRegionSelected(context, user,
region, province, provinceList, selectedRegion);
},
items: regionList
.map((project) => DropdownMenuItem(
child: Text(project.Name),
value: project,
))
这里是onRegionSelected函数:
onRegionSelected(BuildContext context, User user, Region region, Province province, List<Province> provinceList, Region selectedRegion) async {try { showLoadingDialog(context);
final _provinceList = await getProvinceList(selectedRegion.id);
region = selectedRegion;
user.regionAdresse = selectedRegion.id;
province = null;
//provinceList.clear();
provinceList = _provinceList;
Navigator.pop(context);} catch (e) {
//TODO: handle error
rethrow; }}
首先,您应该使用一个有状态类,这样当您选择第一个下拉列表时,将在第二个下拉列表中显示的信息将被更新,依此类推。如果您的想法是保持格式无状态,您还可以将来自DB的响应保存在流中,并将下拉框包装在streambuilder中,以便在每个下拉框所指向的新数据更新时更新它们。我留下这个作为一个答案,因为我没有声誉添加它作为评论。