我不熟悉如何进行波动编程,并且出现了一个问题,在这个论坛上阅读了很多之后,我还没有解决。
我有两个类,一个省和另一个城市,每个类都是通过API查询获得的。
首先,我通过网络服务获得了省份。然后我与Futurebuilder一起安装了各省的下拉菜单。
一旦选择了省份,并通过我们将省份传递到的另一个Web服务,我们将通过其他Web服务获得城市。
并且使用FutureBuilder,我用请求的省份的城市创建下拉列表。
一切似乎都正确....但是一旦有了城市列表,如果我们选择的省份不是选定的省份,则会出现以下错误:
================================================ ============================================>
应该只有一个具有[DropdownButton]值的项目:“ Municipio”的实例。
零个或两个或多个[DropdownMenuItem] s被检测为相同的值'package:flutter / src / material / dropdown.dart':
失败的断言:803行pos 15:'items == null || items.isEmpty ||值== null ||items.where(((DropdownMenuItem item){
返回item.value ==值;})。length == 1'
================================================ ============================================>
@override void initState() { _provincias = provinciasProvider.getProvincias(); super.initState(); } Widget _dropDownProvincias() { return FutureBuilder( future: _provincias, builder: (context, snapshot) { if (snapshot.hasError) return Text(snapshot.error); if (snapshot.hasData) { return DropdownButtonFormField( isExpanded: false, isDense: true, decoration: new InputDecoration( focusedBorder: OutlineInputBorder( borderSide: BorderSide(color: Colors.greenAccent, width: 5.0), ), enabledBorder: OutlineInputBorder( borderSide: BorderSide(color: Colors.teal, width: 1.0), ), labelText: 'Seleccione Provincia', labelStyle: TextStyle(color: Colors.black), //icon: Icon(Icons.language) ), //, color: Colors.white10 items: snapshot.data .map<DropdownMenuItem<Provincia>>((Provincia provincia) { return DropdownMenuItem<Provincia>( value: provincia, child: Text(provincia.nombreProvincia, style: TextStyle(color: Color.fromRGBO(58, 66, 46, .9))), ); }).toList(), onChanged: (Provincia newValue) { setState(() { selectedProvincia = newValue; codigoProvinciaSeleccionada = newValue.codigoProvincia; nombreProvinciaSeleccionada = newValue.nombreProvincia; _municipios = municipiosProvider .getMunicipios(codigoProvinciaSeleccionada); }); print(codigoProvinciaSeleccionada); print(newValue.nombreProvincia); }, ); } return Container(); }); Widget _dropDownPoblacion(String codigoProvinciaSeleccionada) { return FutureBuilder( future: _municipios, builder: (context, snapshot) { if (snapshot.hasError) return Text(snapshot.error); if (snapshot.hasData) { return DropdownButtonFormField( isExpanded: true, isDense: true, decoration: new InputDecoration( focusedBorder: OutlineInputBorder( borderSide: BorderSide(color: Colors.greenAccent, width: 5.0), ), enabledBorder: OutlineInputBorder( borderSide: BorderSide(color: Colors.teal, width: 1.0), ), labelText: 'Seleccione Localidad', labelStyle: TextStyle(color: Colors.black), //icon: Icon(Icons.language) ), //, color: Colors.white10 items: snapshot.data .map<DropdownMenuItem<Municipio>>((Municipio municipio) { return DropdownMenuItem<Municipio>( value: municipio, child: Text(municipio.nombreMunicipio, style: TextStyle(color: Color.fromRGBO(58, 66, 46, .9))), ); }).toList(), onChanged: (Municipio newValue) { setState(() => selectedMunicipio = newValue); codigomunicipioSeleccionado = newValue.codigoMunicipio; nombreMunicipioSeleccionado = newValue.nombreMunicipio; print(codigomunicipioSeleccionado); print(newValue.nombreMunicipio); }, ); } return Container(); });
感谢我们的帮助……
我对使用Flutter编程非常陌生,并且出现了一个问题,在这个论坛上阅读了很多之后,我还没有解决。我有两个班级,一个省和另一个城市,每个...
对我来说,解决方案是将DropdownButtonFormField更改为DropdownButton。
从那里开始一切正常。