0

I getting Failed assertion:'items == null || items.isEmpty || value == null || items.where((DropdownMenuItem item) return item.value == value;}).length == 1' this error

I am very new to coding and don't understand why this error encountered.

I am sharing my code

my list:

       fetchPrakrutiTypes() async {
        try {
       var response = await ApiProvider().fetchPrakrutiType(
       userId: (await MySharedPreferences()
        .getStringValue(key: LocalStorageStringConstants().userId))!,
       context: context,
        );
       if (response != "") {
        log("first response is: $response");
       Map decodedJson = jsonDecode(response);
       // Clear the list before adding new values
       prakrutiTypeList.clear();
      log("second response is: $response");
      // Add values directly to the list
      for (var prakrutiType in decodedJson['all-prakruti-types']) {
      prakrutiTypeList.add(prakrutiType);
      log("list response is: $prakrutiTypeList");
      }
      setState(() {});
      print('After API call: $prakrutiTypeList');
       }
        } catch (e) {
      customFalilureToastMessage(toastMessage: e.toString());
        }
       }`

and this is how i call custom manual dropdown in my code:

      _buildManualPrakrutiDropdown() {
return SingleChildScrollView(
  padding: EdgeInsets.symmetric(horizontal: 3.w),
  child: Column(
    crossAxisAlignment: CrossAxisAlignment.start,
    children: [
      Row(
        children: [
          Text("Your Prakruti is:",
              style:
                  TextStyle(fontSize: 15.sp, fontWeight: FontWeight.bold)),
          HoriVertiPadding(horizontalPadding: 2.w),
          Visibility(
              visible: userSelectedPrakruti != null,
              child: Padding(
                padding: EdgeInsets.symmetric(vertical: 1.h),
                child: Text(selectedPrakruti,
                    style: TextStyle(fontSize: 13.sp)),
              )),
          Visibility(
            visible: userSelectedPrakruti == null,
            child: Expanded(
              child: DropdownButton<String>(
                value: selectedPrakruti,
                elevation: 0,
                isExpanded: true,
                items: prakrutiTypeList.map((e) {
                  return DropdownMenuItem<String>(value: e, child: Text(e));
                }).toList(),
                onChanged: (value) {
                  setState(() {
                    selectedPrakruti = value!;
                    if (selectedPrakruti == "Select your prakruti") {
                      selectedVataValue = 0;
                      selectedPittaValue = 0;
                      selectedKaphaValue = 0;
                      enableVataSlider = false;
                      enablePittaSlider = false;
                      enableKaphaSlider = false;
                    }
                    if (selectedPrakruti == "Vata") {
                      selectedVataValue = 100;
                      selectedPittaValue = 0;
                      selectedKaphaValue = 0;
                      enableVataSlider = true;
                      enablePittaSlider = false;
                      enableKaphaSlider = false;
                    }
                    if (selectedPrakruti == "Vata Pitta") {
                      selectedVataValue = 50;
                      selectedPittaValue = 50;
                      selectedKaphaValue = 0;
                      enableVataSlider = true;
                      enablePittaSlider = true;
                      enableKaphaSlider = false;
                    }
                    if (selectedPrakruti == 'Vata Kapha') {
                      selectedVataValue = 50;
                      selectedKaphaValue = 50;
                      selectedPittaValue = 0;
                      enableVataSlider = true;
                      enablePittaSlider = false;
                      enableKaphaSlider = true;
                    }
                    if (selectedPrakruti == "Pitta") {
                      selectedVataValue = 0;
                      selectedPittaValue = 100;
                      selectedKaphaValue = 0;
                      enableVataSlider = false;
                      enablePittaSlider = true;
                      enableKaphaSlider = false;
                    }
                    if (selectedPrakruti == 'Pitta Vata') {
                      selectedVataValue = 50;
                      selectedPittaValue = 50;
                      selectedKaphaValue = 0;
                      enableVataSlider = true;
                      enablePittaSlider = true;
                      enableKaphaSlider = false;
                    }
                    if (selectedPrakruti == 'Pitta Kapha') {
                      selectedPittaValue = 50;
                      selectedKaphaValue = 50;
                      selectedVataValue = 0;
                      enableVataSlider = false;
                      enablePittaSlider = true;
                      enableKaphaSlider = true;
                    }
                    if (selectedPrakruti == "Kapha") {
                      selectedVataValue = 0;
                      selectedPittaValue = 0;
                      selectedKaphaValue = 100;
                      enableVataSlider = false;
                      enablePittaSlider = false;
                      enableKaphaSlider = true;
                    }
                    if (selectedPrakruti == 'Kapha Vata') {
                      selectedVataValue = 50;
                      selectedKaphaValue = 50;
                      selectedPittaValue = 0;
                      enableVataSlider = true;
                      enablePittaSlider = false;
                      enableKaphaSlider = true;
                    }
                    if (selectedPrakruti == 'Kapha Pitta') {
                      selectedPittaValue = 50;
                      selectedKaphaValue = 50;
                      selectedVataValue = 0;
                      enableVataSlider = false;
                      enablePittaSlider = true;
                      enableKaphaSlider = true;
                    }
                  });
                },
              ),
            ),
          ),
        ],
      ),
      Visibility(
        visible: userSelectedPrakruti == null,
        child: SingleChildScrollView(
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              const Text("Vata"),
              Slider(
                  value: selectedVataValue,
                  min: 0,
                  max: 100,
                  label: selectedVataValue.toString(),
                  divisions: 10,
                  onChanged: enableVataSlider
                      ? (val) {
                          if (selectedPrakruti == "Select your prakruti") {
                            showDialog(
                                context: context,
                                builder: (_) => CustomAlertDialog(
                                      title: "Select prakruti first",
                                      showOkButton: true,
                                      onOkButtonPressed: () =>
                                          Navigator.pop(context),
                                    ));
                          } else {
                            if (selectedPrakruti != "Vata") {
                              selectedVataValue = val;
                              if (selectedPrakruti.contains('Pitta'))
                                selectedPittaValue =
                                    100 - selectedVataValue;

                              if (selectedPrakruti.contains('Kapha'))
                                selectedKaphaValue =
                                    100 - selectedVataValue;
                            }
                          }
                          setState(() {});
                        }
                      : null),
              const Text("Pitta"),
              Slider(
                  value: selectedPittaValue,
                  min: 0,
                  max: 100,
                  label: selectedPittaValue.toString(),
                  divisions: 10,
                  onChanged: enablePittaSlider
                      ? (val) {
                          if (selectedPrakruti == "Select your prakruti") {
                            showDialog(
                                context: context,
                                builder: (_) => CustomAlertDialog(
                                      title: "Select prakruti first",
                                      showOkButton: true,
                                      onOkButtonPressed: () =>
                                          Navigator.pop(context),
                                    ));
                          } else {
                            if (selectedPrakruti != "Pitta") {
                              selectedPittaValue = val;
                              if (selectedPrakruti.contains('Vata'))
                                selectedVataValue =
                                    100 - selectedPittaValue;

                              if (selectedPrakruti.contains('Kapha'))
                                selectedKaphaValue =
                                    100 - selectedPittaValue;
                            }
                          }
                          setState(() {});
                        }
                      : null),
              const Text("Kapha"),
              Slider(
                  value: selectedKaphaValue,
                  min: 0,
                  max: 100,
                  label: selectedKaphaValue.toString(),
                  divisions: 10,
                  onChanged: enableKaphaSlider
                      ? (val) {
                          if (selectedPrakruti == "Select your prakruti") {
                            showDialog(
                                context: context,
                                builder: (_) => CustomAlertDialog(
                                      title: "Select prakruti first",
                                      showOkButton: true,
                                      onOkButtonPressed: () =>
                                          Navigator.pop(context),
                                    ));
                          } else {
                            if (selectedPrakruti != "Kapha") {
                              selectedKaphaValue = val;
                              if (selectedPrakruti.contains('Pitta'))
                                selectedPittaValue =
                                    100 - selectedKaphaValue;

                              if (selectedPrakruti.contains('Vata'))
                                selectedVataValue =
                                    100 - selectedKaphaValue;
                            }
                          }

                          setState(() {});
                        }
                      : null),
              Container(
                width: MediaQuery.of(context).size.width / 2,
                margin: EdgeInsets.only(left: 5.w),
                padding:
                    EdgeInsets.symmetric(horizontal: 5.w, vertical: 1.h),
                child: ButtonWidget(
                  buttonText: "Add Prakruti",
                  onButtonPressed: () async {
                    try {
                      if (selectedPrakruti != "Select your prakruti") {
                        var response = await ApiProvider()
                            .saveManuallySelectedPrakruti(
                          patientId: widget.patient.id!,
                          vataPercentage: selectedVataValue.toInt(),
                          pittaPercentage: selectedPittaValue.toInt(),
                          kaphaPercentage: selectedKaphaValue.toInt(),
                          selectedPrakrutiType: selectedPrakruti,
                          context: context,
                        );
                        if (response != null) {
                          Map decodedJson = jsonDecode(response);
                          if (decodedJson['Manual-Prakruti-Status'] ==
                              "1") {
                            userSelectedPrakruti = selectedPrakruti;
                            prakrutiAlreadyFilled = true;
                            widget.patient.patientPrakruti =
                                selectedPrakruti;
                            setState(() {});
                            customSuccessfullToastMessage(
                                toastMessage: decodedJson[
                                    'Manual-Prakruti-Description']);
                          } else {
                            customSuccessfullToastMessage(
                                toastMessage: decodedJson[
                                    'Manual-Prakruti-Description']);
                          }
                        }
                      } else {
                        showDialog(
                          context: context,
                          builder: (_) => CustomAlertDialog(
                            title: "Please select Prakruti first",
                            showOkButton: true,
                            onOkButtonPressed: () => Navigator.pop(context),
                          ),
                        );
                      }
                    } catch (e) {
                      customFalilureToastMessage(
                          toastMessage: e.toString());
                    }
                  },
                ),
              ),
            ],
          ),
        ),
      ),
    ],
  ),
);

}

when i click on card it shows report generated report

no one
  • 1
  • 1

1 Answers1

0

The problem inside the dropdown, you could try the following:

1: validate that the list to add to the dropdown is not empty or null.

2: that the start value of the dropdown is null or a data type.

Additional shows how the dropdown widget is created