【发布时间】:2019-07-26 22:24:57
【问题描述】:
我的 fetchCities() 方法返回 Future<List<City>> 并从 rest webservice 加载数据。填充项目的代码:
Widget buildCitiesSelector(){
return new Center(
child: FutureBuilder(
future: fetchCities() ,
builder: (context, snapshot){
if (snapshot.hasData) {
return new DropdownButton <City>(
hint: Text('Wybierz miasto'),
items: snapshot.data.map<DropdownMenuItem<City>>((City value) {
return DropdownMenuItem<City>(
value: value,
child: Text(value.name),
);
}).toList(),
onChanged: (value) {
setState(() {_selectedCity = value;});
},
value: _selectedCity,
);
}
else{
return CircularProgressIndicator();
}
}
)
);
}
结果:项目在选择器中正确显示。但是,在选择任何特定项目时,我会得到异常:
I/flutter (13910):══╡ 小部件库发现异常 ╞═════════════════════════════════════════════════ ══════════ I/颤振 (13910):以下断言被抛出构建 FutureBuilder>(脏,状态:I/flutter(13910): _FutureBuilderState>#dacd9): I/flutter (13910): 'package:flutter/src/material/dropdown.dart': 断言失败:行 560 位置 15: '项目 == 空 ||我/颤振(13910):items.isEmpty || 值 == 空 || items.where((DropdownMenuItem item) => item.value == I/flutter (13910): value).length == 1': 不正确。
如何正确选择项目?有什么想法吗?
【问题讨论】:
-
我觉得你的问题和我的很相似:stackoverflow.com/questions/61720324/…
标签: asynchronous combobox dart flutter