Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 颤振下拉按钮表单字段错误-有两个下拉按钮_Flutter_Dart_Drop Down Menu_Runtime Error_Future - Fatal编程技术网

Flutter 颤振下拉按钮表单字段错误-有两个下拉按钮

Flutter 颤振下拉按钮表单字段错误-有两个下拉按钮,flutter,dart,drop-down-menu,runtime-error,future,Flutter,Dart,Drop Down Menu,Runtime Error,Future,我是一个新的编程与颤振,出现了一个问题,在阅读了很多在这个论坛,我还没有设法解决 我有两个类,一个省和另一个市,每个都是通过API查询获得的 首先,我用一个webservices获取各省。我和一个未来的建设者一起登上了与各省的下拉列表 一旦选择了该省,并通过我们传递该省的另一个web服务,我们就可以通过不同的web服务获得这些城市 我用一个FutureBuilder创建了一个下拉列表,其中包含了被请求省份的城市 一切似乎都是正确的。。。。但是一旦我有了城市列表,如果我们选择了一个省而不是所选的省

我是一个新的编程与颤振,出现了一个问题,在阅读了很多在这个论坛,我还没有设法解决

我有两个类,一个省和另一个市,每个都是通过API查询获得的

首先,我用一个webservices获取各省。我和一个未来的建设者一起登上了与各省的下拉列表

一旦选择了该省,并通过我们传递该省的另一个web服务,我们就可以通过不同的web服务获得这些城市

我用一个FutureBuilder创建了一个下拉列表,其中包含了被请求省份的城市

一切似乎都是正确的。。。。但是一旦我有了城市列表,如果我们选择了一个省而不是所选的省,我会得到以下错误:

=============================================================================================

@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();
    });
应该只有一个项目具有[DropdownButton]的值:“市政”实例

检测到零个或2个或更多具有相同值的[DropdownMenuItem] “包装:颤振/src/material/dropdown.dart”:

断言失败:第803行第15位:“items==null | | items.isEmpty | value==null|| 项目。其中((DropdownMenuItem项目){

返回项。值==值; }).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();
    });
@覆盖
void initState(){
_provincias=provinciasProvider.getProvincias();
super.initState();
}
小部件_dropDownProvincias(){
回归未来建设者(
未来:_provincias,
生成器:(上下文,快照){
if(snapshot.hasrerror)返回文本(snapshot.error);
if(snapshot.hasData){
返回DropdownButtonFormField(
isExpanded:错,
是的,
装饰:新的输入装饰(
聚焦顺序:大纲输入边框(
borderSide:borderSide(颜色:Colors.greenAccent,宽度:5.0),
),
enabledBorder:OutlineInputBorder(
borderSide:borderSide(颜色:Colors.teal,宽度:1.0),
),
标签文字:“Seleccione Provincia”,
标签样式:文本样式(颜色:Colors.black),
//图标:图标(Icons.language)
),/,颜色:Colors.white10
项目:snapshot.data
.地图((省){
返回下拉菜单项(
价值:provincia,
子项:文本(provincia.nombreProvincia,
样式:TextStyle(颜色:color.fromRGBO(58,66,46,9)),
);
}).toList(),
变更后:(Provincia newValue){
设置状态(){
selectedProvincia=新值;
CodigoProvinciselectionada=newValue.codigoProvincia;
nombreprovinciaselectionada=newValue.nombreProvincia;
_市政服务提供者
.getMunicipios(CodigoProvincialeccionada);
});
打印(CodigoProvinciaselectionada);
印刷品(newValue.nombreProvincia);
},
);
}
返回容器();
});
小部件_dropdownpobalacion(字符串codigoprovincialeccionada){
回归未来建设者(
未来:_市政,
生成器:(上下文,快照){
if(snapshot.hasrerror)返回文本(snapshot.error);
if(snapshot.hasData){
返回DropdownButtonFormField(
是的,
是的,
装饰:新的输入装饰(
聚焦顺序:大纲输入边框(
borderSide:borderSide(颜色:Colors.greenAccent,宽度:5.0),
),
enabledBorder:OutlineInputBorder(
borderSide:borderSide(颜色:Colors.teal,宽度:1.0),
),
标签文字:“Seleccione Localidad”,
标签样式:文本样式(颜色:Colors.black),
//图标:图标(Icons.language)
),/,颜色:Colors.white10
项目:snapshot.data
.地图((市政){
返回下拉菜单项(
价值:市政,
子项:文本(municipio.nombreMunicipio,
样式:TextStyle(颜色:color.fromRGBO(58,66,46,9)),
);
}).toList(),
变更后:(市政新价值){
设置状态(()=>selectedMunicipio=newValue);
Codigomunicipioselecionado=newValue.Codigomunicipo;
nombremunicipioselecionado=newValue.nombreMunicipio;
印刷品(Codigomunicioseleccionado);
打印(newValue.nombreMunicipio);
},
);
}
返回容器();
});

感谢我们的帮助

我的解决方案是将DropdownButtonFormField更改为DropdownButton


从那以后,一切都正常了。

这些可能会对您有所帮助:,谢谢,我查看了此链接,但没有解决我的问题的方法,