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