首页 > 解决方案 > 如果我更改第一个下拉值,如何重置第二个下拉列表?

问题描述

我有两个下拉列表,第二个取决于第一个。

当我在选择第二个下拉值后更改第一个下拉值时,它会引发如下错误。

在此处输入图像描述

那么如果我更改第一个下拉值,如何重置第二个下拉列表?

下拉按钮如下。

DropdownButtonFormField<Standard>(
                      validator: (value) {
                        if (value == null) {
                          return "Select Standard";
                        }
                      },
                      isExpanded: true,
                      hint: Text('Select Standard'),
                      value: selectedStandard,
                      items: _standards.map((Standard standard) {
                        return DropdownMenuItem<Standard>(
                          value: standard,
                          child: Text(standard.standardName),
                        );
                      }).toList(),
                     
                      onChanged: (val) {
                        setState(() {
                          selectedStandard = val;
                          standardId = val?.standardId;
                          onMediumChange(val);
                        });
                      }),
                  SizedBox(height: 20),

                  DropdownButtonFormField<Medium>(
                      validator: (value) {
                        if (value == null) {
                          return "Select Medium";
                        }
                      },
                      isExpanded: true,
                      hint: Text('Select Medium'),
                      value: selectedMedium,
                      items: _mediums.map((Medium medium) {
                        return DropdownMenuItem<Medium>(
                          value: medium,
                          child: Text(medium.mediumName),
                        );
                      }).toList(),
                     
                      onChanged: (val) {
                        setState(() {
                          selectedMedium = val;
                          mediumId = val?.mediumId;
                        });
                      }),

并获取值代码如下。我使用的变量。

var _standards = <Standard>[];
  var _mediums = <Medium>[];
  Standard? selectedStandard;
  Medium? selectedMedium;

@override
  void initState() {
    super.initState();

    ApiManager().getStandards().then((standards) {
      setState(() {
        _standards = standards;
      });
    });
  }

  void onMediumChange(standard) {
    setState(() {
      selectedStandard = standard;
      _mediums = [];
    });
    String mediumUrl =
        "$baseUrl/medium/get_by_course_id?standard_id=${selectedStandard?.standardId}";
    ApiManager().getMediums(mediumUrl).then((List<Medium> value) => {
          setState(() {
            _mediums = value;
          })
        });
  }

标签: flutterapi

解决方案


首先,检查 _mediums 中的值,因为根据此错误,您必须在此处具有不同的 selectedMedium 值!!!


推荐阅读